%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/kpk/api/app/Http/Controllers/Api/
Upload File :
Create Path :
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;
    }

}

Zerion Mini Shell 1.0