%PDF- %PDF-
Direktori : /var/www/html/kpk/api/app/Http/Controllers/Api/ |
Current File : /var/www/html/kpk/api/app/Http/Controllers/Api/ProtocolsController.php |
<?php namespace App\Http\Controllers\Api; use App\Exports\ProtocolsExport; use App\Http\Requests\Protocols\ProtocolEditRequest; use App\Http\Requests\Protocols\ProtocolStoreRequest; use App\Models\Log; use App\Models\Protocol; use App\Transformers\ProtocolTransformer; use Barryvdh\DomPDF\Facade as PDF; use Carbon\Carbon; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; class ProtocolsController extends ApiController { protected $user; public function __construct() { $this->middleware('auth:api'); $this->user = auth()->guard('api')->user(); } public function incoming() { $result = Protocol::query()->Where([ ['type', 'incoming'], ['is_deleted', false], //['user_id',$user->id,]exportExcel ])->orderBy('created_at', 'desc'); $result = $result->paginate(20); return $this->withPaginated($result, new ProtocolTransformer()); } public function index(Request $request) { $result = $this->filterProtocols($request)->orderBy('created_at', 'desc')->paginate(10); try { $msg = 'Perdoruesi "' . $this->user->username . '" kerkoi per protokoll.'; Log::info($this->user->id, 'Search', $msg); } catch (\Exception $e) { } return $this->withPaginated($result, new ProtocolTransformer()); } public function show($id) { $item = Protocol::query()->Where([ ['id', $id], ['is_deleted', false], //['user_id',$user->id,] ])->first(); return $this->item($item, new ProtocolTransformer()); } public function store(ProtocolStoreRequest $request) { $item = Protocol::query()->create([ 'number' => $request->number, 'arrival_date' => $request->arrival_date, 'departure_date' => $request->departure_date, 'institution' => $request->institution, 'subject_of_reevaluation' => $request->subject_of_reevaluation, 'relator_id' => $request->relator_id, 'description' => $request->description, 'type' => $request->type, 'sent_to' => $request->sent_to, 'is_deleted' => false, 'has_confirmed_document_retrieval' => $request->has_confirmed_document_retrieval, 'user_id' => $this->user->id, ]); try { $msg = 'Perdoruesi "' . $this->user->username . '" shtoi nje protokoll te ri.'; Log::info($this->user->id, 'Add', $msg); } catch (\Exception $e) { } return $this->item($item, new ProtocolTransformer()); } public function destroy($id) { $item = Protocol::query()->where([ ['id', $id], ['is_deleted', false], ['user_id', $this->user->id,] ])->firstOrFail(); $item->is_deleted = true; $item->deleted_at = Carbon::now(); $item->save(); try { $msg = 'Perdoruesi "' . $this->user->username . '" fshiu protokollin me id=' . $id . '.'; Log::info($this->user->id, 'Delete', $msg); } catch (\Exception $e) { } return response()->json(null); } public function edit(ProtocolEditRequest $request, $id) { $item = Protocol::query()->where([ ['id', $id], ['is_deleted', false], ['user_id', $this->user->id] ])->firstOrFail(); $item->number = $request->number; $item->arrival_date = $request->arrival_date; $item->departure_date = $request->departure_date; $item->institution = $request->institution; $item->subject_of_reevaluation = $request->subject_of_reevaluation; $item->relator_id = $request->relator_id; $item->description = $request->description; $item->type = $request->type; $item->sent_to = $request->sent_to; $item->has_confirmed_document_retrieval = !!$request->has_confirmed_document_retrieval; $item->save(); try { $msg = 'Perdoruesi "' . $this->user->username . '" modifikoi protokollin me id=' . $id . '.'; Log::info($this->user->id, 'Edit', $msg); } catch (\Exception $e) { } return $this->item($item, new ProtocolTransformer()); } public function export(Request $request) { $result = $this->filterProtocols($request); $pdf = PDF::loadView('protocols.export', [ 'protocols' => $result->get() ]); return $pdf->download('protocols.pdf'); } public function exportExcel(Request $request) { return (new ProtocolsExport($this->filterProtocols($request)))->download('protocols.xlsx'); } private function filterProtocols(Request $request) { $result = Protocol::query()->where('is_deleted', false); if ($request->number) { $result = $result->where('number', 'like', "$request->number%"); } if ($request->type) { $result = $result->where('type', "$request->type"); } if ($request->arrival_date) { $result = $result->where('arrival_date', Carbon::parse($request->arrival_date)); } if ($request->institution) { $result = $result->where('institution', 'like', '%' . $request->institution . '%'); } if ($request->subject_of_reevaluation) { $result = $result->where('subject_of_reevaluation', 'like', '%' . $request->subject_of_reevaluation . '%'); } if ($request->relator_id) { $result = $result->where('relator_id', $request->relator_id); } return $result; } }