File manager - Edit - /var/www/html/spdc/api/app/Http/Services/MinuteBookService.php
Back
<?php namespace App\Http\Services; use App\Enums\ClassName; use App\Models\MinuteBook; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; use App\Classes\BaseServiceResponse; use App\Http\Requests\MinuteBookRequest; use App\Http\Resources\MinuteBookResource; use App\Http\Resources\MinuteBookCollection; use App\Http\Resources\UserResource; use App\Models\BDT; use App\Models\DonationQuestionnaire; use App\Models\Nupdec; use App\Models\NupdecActivity; use App\Models\NupdecActuation; use App\Models\Occurrency; use App\Models\OccurrencyMovement; use App\Models\Shelter; use App\Models\ShelterFamily; use App\Models\Transportation; use App\Models\User; class MinuteBookService extends BaseService { public function index(Request $request): BaseServiceResponse { $query = MinuteBook::query(); if ($request->has('date')) { $query->where('date', $request->date); } if ($request->has('type')) { $query->where('related_model', ClassName::getValueByKey($request->type)); } $minuteBooks = $query->paginate(); return $this->response( MinuteBookResource::collection($minuteBooks) ); } public function store(MinuteBookRequest $request): BaseServiceResponse { $data = [ ...$request->all(), 'user_id' => $request->user['id'], 'related_model' => ClassName::getValueByKey('entrada_manual') ]; $minuteBook = MinuteBook::create($data); return $this->response( new MinuteBookResource($minuteBook), JsonResponse::HTTP_CREATED ); } public function show(Request $request, MinuteBook $minuteBook): BaseServiceResponse { return $this->response( new MinuteBookResource($minuteBook), JsonResponse::HTTP_OK ); } public function update(MinuteBookRequest $request, MinuteBook $minuteBook): BaseServiceResponse { $minuteBook->fill($request->all()); $minuteBook->save(); return $this->response( new MinuteBookResource($minuteBook->load('forms.fields.validations')), JsonResponse::HTTP_OK ); } public function destroy(MinuteBook $minuteBook): BaseServiceResponse { $minuteBook->delete(); return $this->response( null, JsonResponse::HTTP_NO_CONTENT ); } public function destroyMany(Request $request): BaseServiceResponse { MinuteBook::destroy(treatArrayInput($request->minute_books)); return $this->response( null, JsonResponse::HTTP_NO_CONTENT ); } public function bookOfRecords(string $date): BaseServiceResponse { $occurrencesCreated = Occurrency::query() ->whereDate('created_at', $date) ->get() ->map(function ($oc) { return [ 'id' => $oc->id, 'user' => $oc?->user, 'numero' => $oc->code, 'solicitante' => $oc->requester?->name ?? $oc->requester?->social_name, 'categoria' => $oc->category?->name, 'data_hora' => $oc->created_at->toIsoString(), ]; }); $occurrenceMovements = OccurrencyMovement::query() ->whereDate('created_at', $date) ->get() ->map(function ($mov) { $oc = $mov->occurrency; return [ 'id' => $oc?->id, 'user' => $oc?->user_id ? new UserResource(User::find($oc?->user_id)) : null, 'numero' => $oc?->code, 'solicitante' => $oc?->requester?->name, 'categoria' => $oc?->category?->name, 'data_hora' => $mov->created_at->toIsoString(), 'sessao' => $mov->section, ]; }); $bdts = BDT::query() ->whereDate('created_at', $date) ->get(); $shelters = Shelter::query() ->whereDate('created_at', $date) ->orWhereDate('updated_at', $date) ->get() ->map(function ($sh) { return [ 'id' => $sh->id, 'name' => $sh->name, 'data_hora_criacao' => $sh->created_at->toIsoString(), 'data_hora_atualizacao' => $sh->updated_at->toIsoString(), ]; }); $nupdecs = Nupdec::query() ->whereDate('created_at', $date) ->get() ->map(function ($nup) { return [ 'id' => $nup?->id, 'neighborhood' => $nup?->neighborhood, 'data_hora' => $nup?->created_at->toIsoString(), ]; }); $nupdecActivities = NupdecActivity::query() ->whereDate('date', $date) ->get() ->map(function ($act) { return [ 'id' => $act?->id, 'nupdec_id' => $act?->nupdec_id, 'notes' => $act?->notes, 'date' => $act?->date, ]; }); $nupdecActuations = NupdecActuation::query() ->whereDate('date', $date) ->get() ->map(function ($act) { return [ 'id' => $act->id, 'nupdec_id' => $act->nupdec_id, 'notes' => $act->notes, 'date' => $act->date->toDateString(), ]; }); $families = ShelterFamily::query() ->whereDate('created_at', $date) ->orWhereDate('updated_at', $date) ->get() ->map(function ($fam) { return [ 'id' => $fam->id, 'name' => $fam->name, 'responsible' => $fam->responsible, 'data_hora_criacao' => $fam->created_at->toIsoString(), 'data_hora_atualizacao' => $fam->updated_at->toIsoString(), ]; }); $transportations = Transportation::query() ->whereDate('created_at', $date) ->orWhereDate('updated_at', $date) ->get() ->map(function ($trans) { return [ 'id' => $trans->id, 'model' => $trans->model, 'data_hora_criacao' => $trans->created_at->toIsoString(), 'data_hora_atualizacao' => $trans->updated_at->toIsoString(), ]; }); $questionnairesDonations = DonationQuestionnaire::query() ->whereDate('created_at', $date) ->orWhereDate('updated_at', $date) ->get() ->map(function ($donation) { return [ 'id' => $donation->id, 'shelter_families_id' => $donation->shelter_families_id, 'data_hora_criacao' => $donation->created_at->toIsoString(), 'data_hora_atualizacao' => $donation->updated_at->toIsoString(), ]; }); $acontecimentos = MinuteBook::query() ->where('related_model', ClassName::getValueByKey('entrada_manual')) ->whereDate('date', $date) ->get() ->map(fn($entry) => [ 'id' => $entry->id, 'user' => $entry?->user_id ? new UserResource(User::find($entry?->user_id)) : null, 'description' => $entry->description, 'type' => $entry->type, 'date' => $entry->date->toDateString(), ]); $payload = [ 'ocorrencias_criadas' => $occurrencesCreated, 'movimentacoes_ocorrencias' => $occurrenceMovements, 'boletins_transporte' => $bdts, 'abrigo' => $shelters, 'nupedecs' => $nupdecs, 'nupdecs_activities' => $nupdecActivities, 'nupdecs_actuations' => $nupdecActuations, 'families' => $families, 'transportations' => $transportations, 'questionnaires_donations' => $questionnairesDonations, 'acontecimentos' => $acontecimentos, ]; return $this->response($payload); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings