Edit File: TicketController.php
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\Api\Ticket\CancelRequest; use App\Http\Requests\Api\Ticket\EvaluateRequest; use App\Http\Requests\Api\Ticket\StoreRequest; use App\Http\Resources\TicketResource; use App\Http\Resources\TicketsResource; use App\Models\Order; use App\Models\Ticket; use App\Models\Ticketimage; use App\Traits\ApiTrait; use App\Traits\GeneralTrait; use App\Traits\Uploadable; use Illuminate\Http\Request; use App\Jobs\TicketJob; class TicketController extends Controller { use ApiTrait, GeneralTrait, Uploadable; public function createTicket(StoreRequest $request) { $user = auth('api')->user(); // create ticket $request['user_id'] = $user->id; $ticket = Ticket::create($request->validated() + ['user_id' => $user->id]); // store images if ($request['images']) { foreach ($request['images'] as $i) { $image = $this->uploadFile($i, 'tickets'); Ticketimage::create(['ticket_id' => $ticket->id, 'image' => $image]); } } dispatch(new TicketJob($user,$ticket)); $msg = trans('ticket.successfully_created'); $data['ticket_id'] = $ticket->id; return $this->successReturn($msg, $data); } public function getTickets(Request $request) { // user $user = auth('api')->user(); // fetch tickets $tickets = $user->tickets()->orderBy('created_at', 'desc')->get(); // response data $data = []; $data['tickets'] = TicketsResource::collection($tickets); return $this->dataReturn($data); } public function singleTicket(Request $request) { $user = auth('api')->user(); $ticket = $user->tickets()->where('id', $request['ticket_id'])->first(); if (!$ticket) { $msg = trans('ticket.not_available'); return $this->failMsg($msg); } $data['ticket'] = new TicketResource($ticket); return $this->dataReturn($data); } public function cancelTicket(CancelRequest $request) { $user = auth('api')->user(); $ticket = $user->tickets()->where('id', $request['ticket_id'])->where('status', 'open')->first(); if (!$ticket) { $msg = trans('ticket.not_available'); return $this->failMsg($msg); } $ticket->update(['status' => 'canceled']); $msg = trans('ticket.successfully_canceled'); return $this->successMsg($msg); } public function evaluateTicket(EvaluateRequest $request) { $user = auth('api')->user(); $ticket = $user->tickets()->where('id', $request['ticket_id'])->first(); if (!$ticket) { $msg = trans('ticket.not_available'); return $this->failMsg($msg); } $ticket->update(['satisfied' => $request['satisfied']]); $msg = trans('ticket.successfully_evaluated'); return $this->successMsg($msg); } }
Back to File Manager