File manager - Edit - /var/www/html/spdc/api/app/Http/Services/DonationQuestionnaireService.php
Back
<?php namespace App\Http\Services; use App\Classes\BaseServiceResponse; use App\Http\Requests\DonationQuestionnaireRequest; use App\Http\Resources\DonationQuestionnaireResource; use App\Models\DonationQuestionnaire; use App\Models\Donation; use App\Models\ShelterFamily; use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; class DonationQuestionnaireService extends BaseService { public function index(): BaseServiceResponse { if (request()->query->count() > 0) { $donations = $this->filteredDonations(new DonationQuestionnaire())->paginate(15); return $this->response( DonationQuestionnaireResource::collection($donations), JsonResponse::HTTP_OK ); } $donations = DonationQuestionnaire::paginate(15); return $this->response( DonationQuestionnaireResource::collection($donations), JsonResponse::HTTP_OK ); } public function filteredDonations(DonationQuestionnaire $query) { $filters = request()->except(['user', 'page']); if (request()->has('shelter_family_id')) { $query = $query->where('shelter_families_id', '=', request()->shelter_family_id) ->orWhereHas('shelterMemberFamily', function ($query) { $query->where('shelter_family_id', '=', request()->shelter_family_id); }); return $query; } foreach($filters as $key => $value) { if ($key == 'document') { $query = $query->whereHas('shelterFamilies', function ($query) use ($key, $value) { $query->where('cpf', 'like', '%' . $value . '%'); }) ->orWhereHas('shelterMemberFamily', function ($query) use ($key, $value) { $query->where('document', 'like', '%' . $value . '%'); }); continue; } $query = $query->whereHas('shelterFamilies', function ($query) use ($key, $value) { $query->where($key, 'like', '%' . $value . '%'); }) ->orWhereHas('shelterMemberFamily', function ($query) use ($key, $value) { $query->where($key, 'like', '%' . $value . '%'); }); } return $query; } public function show(string $id) { $donation = DonationQuestionnaire::where('id', '=', $id)->firstOrFail(); return $this->response( [ 'donation' => new DonationQuestionnaireResource($donation), ], JsonResponse::HTTP_OK ); } public function store(DonationQuestionnaireRequest $request): BaseServiceResponse { try { DB::beginTransaction(); $data = $request->all(); $questionnaire = DonationQuestionnaire::create($data); foreach ($request->donation as $donation) { $donationItem = Donation::firstOrCreate([ 'donation_questionnaire_id' => $questionnaire->id, 'name' => $donation['name'], 'quantity' => $donation['quantity'], ]); } $relationships = [ 'donation', ]; } catch (Exception $exception) { DB::rollBack(); return $this->response( ["error" => $exception->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } DB::commit(); return $this->response( new DonationQuestionnaireResource($questionnaire->load($relationships)), JsonResponse::HTTP_CREATED ); } public function update(DonationQuestionnaireRequest $request, string $id): BaseServiceResponse { try { DB::beginTransaction(); $donationQuestionnaire = DonationQuestionnaire::findOrFail($id); if (!$donationQuestionnaire) { return $this->response( null, JsonResponse::HTTP_NOT_FOUND, 'Donation Questionnaire not found' ); } $data = $request->all(); foreach ($data['donation'] as $donationData) { $donation = Donation::updateOrCreate( [ 'donation_questionnaire_id' => $id, 'name' => $donationData['name'], ], [ 'quantity' => $donationData['quantity'], ], ); } DB::commit(); return $this->response( new DonationQuestionnaireResource($donationQuestionnaire), JsonResponse::HTTP_OK ); } catch (Exception $exception) { DB::rollBack(); return $this->response( ["error" => $exception->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function delete(string $id): BaseServiceResponse { try{ DB::beginTransaction(); $donation = DonationQuestionnaire::findOrFail($id)->first(); $donation->delete(); $donation = DonationQuestionnaire::with('donation')->get(); }catch(Exception $exception){ DB::rollBack(); return $this->response( ["error" => $exception->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } DB::commit(); return $this->response( new DonationQuestionnaireResource(null), JsonResponse::HTTP_OK ); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings