diff --git a/app/Http/Controllers/AuthorizationCareRequestController.php b/app/Http/Controllers/AuthorizationCareRequestController.php index 1dbdf56..ca40ca6 100755 --- a/app/Http/Controllers/AuthorizationCareRequestController.php +++ b/app/Http/Controllers/AuthorizationCareRequestController.php @@ -106,13 +106,15 @@ class AuthorizationCareRequestController extends Controller $act = NhAct::find($act_id); try { + $datetime = $this->getCurrentTimeByCountryCode($user->network->country->code_country); DB::beginTransaction(); NhAuthorizationOfCareRequest::create([ 'request_id' => $this->generateRequestID(), 'user_id' => $user->id, 'act_id' => $act_id, - 'state' => InsuranceSubscriptionState::UNDER_VALIDATION + 'state' => InsuranceSubscriptionState::UNDER_VALIDATION, + 'created_at' => $datetime, 'updated_at' => $datetime ]); DB::commit(); @@ -183,7 +185,7 @@ class AuthorizationCareRequestController extends Controller $body->date = $datetime; $data = new stdClass(); - $data->screen = "notificationview"; + $data->screen = "demandeAutorisationSoinScreen"; $data->data = new stdClass(); $body->data = $data; $client->request('POST', '/onesignal/pushToUser', ['json' => $body, 'headers' => $headers]); diff --git a/app/Http/Controllers/HealthCareSheetController.php b/app/Http/Controllers/HealthCareSheetController.php index 416b5d6..9a47049 100755 --- a/app/Http/Controllers/HealthCareSheetController.php +++ b/app/Http/Controllers/HealthCareSheetController.php @@ -618,6 +618,7 @@ class HealthCareSheetController extends Controller 'accident_date' => (!empty($accident_date)) ? $accident_date : null, 'pregnancy_start_at' => (!empty($pregnancy_start_at)) ? $pregnancy_start_at : null, 'pregnancy_end_at' => (!empty($pregnancy_end_at)) ? $pregnancy_end_at : null, + 'created_at' => $datetime, 'updated_at' => $datetime ]); foreach ($request->input('performances', []) as $p) { @@ -849,6 +850,7 @@ class HealthCareSheetController extends Controller $healthCareSheet->type = HealthCareSheetType::EXECUTION; $healthCareSheet->state = InsuranceSubscriptionState::UNDER_VALIDATION; $healthCareSheet->prescription_sheet_id = $sheet->id; + $healthCareSheet->created_at = $healthCareSheet->update_at = $datetime; $healthCareSheet->push(); $insurance = $sheet->insurance; diff --git a/app/Http/Controllers/InsuranceController.php b/app/Http/Controllers/InsuranceController.php index a3fea73..a59d22d 100644 --- a/app/Http/Controllers/InsuranceController.php +++ b/app/Http/Controllers/InsuranceController.php @@ -8,6 +8,7 @@ use App\InsuranceState; use App\InsuranceSubscriptionState; use App\Models\CountriesCurrency; use App\Models\NhInsurance; +use App\Models\NhInsurancesHavingRight; use App\Models\NhInsurancesSubscription; use App\Models\NhInsurancesSubscriptionsHistory; use App\Models\NhNetworksConfig; @@ -337,4 +338,132 @@ class InsuranceController extends Controller } } + + /** + * @OA\Put( + * path="/insurances/{id}/delete-beneficiaries", + * summary="Supprimer des ayants droits ou beneficiaires à une assurance", + * tags={"Assurances"}, + * security={{"api_key":{}}}, + * @OA\Parameter( + * parameter="id", + * name="id", + * description="ID de l'assurance", + * in="path", + * required=true, + * @OA\Schema( + * type="integer", + * default=12 + * ) + * ), + * @OA\RequestBody( + * description="Corps de la requete", + * required=true, + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema(ref="#/components/schemas/delete_beneficiaries"), + * example = {"password" : "1234", "beneficiaries_ids":{ 1, 4, 5}} + * ) + * ), + * @OA\Response( + * response=200, + * description="OK", + * @OA\JsonContent( + * ref="#/components/schemas/ApiResponse", + * example = {"status":200,"response":"Suprresion réussie","error":null} + * ) + * ) + * ) + */ + public function deleteBeneficiaries(Request $request, $id) + { + /** + * @OA\Schema( + * schema="delete_beneficiaries", + * title = "Supprimer des beneficiaires à une assurance", + * required={"password", "beneficiaries"}, + * @OA\Property(property="password", + * type="string", + * example="2021469", + * description="Mot de passe de l'utilisateur assuré" + * ), + * @OA\Property(property="beneficiaries_ids", + * type="array", + * description="Listes des IDs beneficiaires ou ayants droit", + * @OA\Items(type="integer", format="binary") + * ) + * ) + * + */ + $this->validate($request, [ + 'password' => 'required|string', + 'beneficiaries_ids' => 'required|array', + 'beneficiaries_ids.*' => 'required|integer|exists:nh_having_rights,id', + ]); + + $insurance = NhInsurance::findOrFail($id); + $user = $insurance->user; + $identification = $insurance->user->identification; + + if (!isset($identification) || $identification->status == 0) + return $this->errorResponse(trans('errors.user_identification_required')); + + if (!checkPassword($request->password, $user->encrypted_password, $user->salt)) + return $this->errorResponse(trans('messages.incorrect_user_password')); + + try { + DB::beginTransaction(); + $datetime = $this->getCurrentTimeByCountryCode($user->network->country->code_country); + + // Creer une nouvelle subscription + $newSubscription = NhInsurancesSubscription::create([ + 'network_id' => $insurance->network_id, + 'user_id' => $insurance->user_id, + 'insurance_subscription_id' => $this->generateSubscriptionID(), + 'number_of_beneficiaries' => sizeof($request->input('beneficiaries_ids', [])), + 'number_of_months' => $insurance->number_of_months, + 'bonus_amount' => $insurance->min_amount, + 'insurance_action' => InsuranceAction::DELETION_OF_BENEFICIARY, + 'created_at' => $datetime, 'updated_at' => $datetime + ]); + + $beneficiaries = NhInsurancesHavingRight::where('insurance_id', $insurance->id)->whereIn('having_right_id', $request->input('beneficiaries_ids'))->get(); + $beneficiariesBonus = 0; + foreach ($beneficiaries as $b) { + $beneficiariesBonus += $b->bonus_amount; + NhInsurancesHavingRight::create([ + 'insurance_subscription_id' => $newSubscription->id, + 'having_right_id' => $b->having_right_id, + 'created_at' => $datetime, 'updated_at' => $datetime + ]); + } + $newSubscription->total_bonus_amount = -$beneficiariesBonus; + $newSubscription->save(); + + NhInsurancesSubscriptionsHistory::create([ + 'action' => 'ADD', + 'insurance_subscription_id' => $newSubscription->insurance_subscription_id, + 'insurance_subscription_state' => $newSubscription->state, + 'created_at' => $datetime, 'updated_at' => $datetime, + ]); + + Event::dispatch(new InsuranceEvent($newSubscription, trans('messages.insurance_deletion_beneficiary'), trans('messages.insurance_deletion_beneficiary_mail', ['name' => $newSubscription->user->lastname, 'subscription_id' => $newSubscription->insurance_subscription_id, + 'bonus_amount' => $this->toMoneyWithNetwork($newSubscription->total_bonus_amount, $newSubscription->network_id), 'number_of_beneficiaries' => $newSubscription->number_of_beneficiaries, + 'gender' => trans('states.' . $identification->gender), 'insurance_name' => $insurance->network->name]))); + +// $beneficiaries = $insurance->beneficiaries; +// $insurance->number_of_beneficiaries = sizeof($beneficiaries); +// $insurance->total_bonus_amount = $insurance->bonus_amount + $beneficiariesBonus; +// $insurance->updated_at = $datetime; +// $insurance->save(); + + DB::commit(); + return $this->successResponse(trans('messages.insurance_deletion_beneficiary_successful')); + } catch (Throwable $e) { + Log::error($e->getMessage() . '\n' . $e->getTraceAsString()); + DB::rollBack(); + return $this->errorResponse(trans('errors.unexpected_error'), 500); + } + } + } diff --git a/resources/lang/en/messages.php b/resources/lang/en/messages.php index a8b859c..3b0c508 100755 --- a/resources/lang/en/messages.php +++ b/resources/lang/en/messages.php @@ -136,5 +136,16 @@ A new consultation or prescription has been made with your insurance. 'care_request_rejected' => "Care request refused", 'care_request_rejected_notification' => "Your request for care authorisation :request_id has been refused", 'care_request_accepted_notification' => "Your care request :request_id has been accepted", - 'generated_invoice_mail' => "Invoice issued by :agent for the period :period" + 'generated_invoice_mail' => "Invoice issued by :agent for the period :period", + 'insurance_deletion_beneficiary_successful' => "Request for deletion of your insurance beneficiary successful", + 'insurance_deletion_beneficiary' => "Request for deletion of beneficiary from your insurance", + 'insurance_deletion_beneficiary_mail' => ":gender :name , + +Your request for deletion of entitlement to your insurance is being validated. + Request information : + - ID: :subscription_id + - Name of the insurance: :insurance_name + - Premium amount: :bonus_amount + - Number of beneficiaries : :number_of_beneficiaries + ", ]; diff --git a/resources/lang/fr/messages.php b/resources/lang/fr/messages.php index 3a4ec93..45f659d 100755 --- a/resources/lang/fr/messages.php +++ b/resources/lang/fr/messages.php @@ -152,5 +152,16 @@ Une nouvelle execution de prescription vient d'etre effectuée sur votre assuran 'care_request_rejected' => "Demande de soins refusée", 'care_request_rejected_notification' => "Votre demande d'autorisation de soins :request_id a été refusée", 'care_request_accepted_notification' => "Votre demande d'autorisation de soins :request_id a été acceptée", - 'generated_invoice_mail' => "Facture émise par :agent pour la période :period" + 'generated_invoice_mail' => "Facture émise par :agent pour la période :period", + 'insurance_deletion_beneficiary_successful' => "Demande de suppression d'ayant droit à votre assurance réussie", + 'insurance_deletion_beneficiary' => "Demande de suppression d'ayant droit à votre assurance", + 'insurance_deletion_beneficiary_mail' => ":gender :name , + +Votre demande de suppression d'ayant droit à votre assurance est en cours de validation. + Informations de la demande : + - ID : :subscription_id + - Nom de l'assurance : :insurance_name + - Montant de la prime : :bonus_amount + - Nombre d'ayants droit : :number_of_beneficiaries + ", ]; diff --git a/routes/web.php b/routes/web.php index 84c0ff3..d821d04 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,6 +18,7 @@ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($route $router->get('', 'InsuranceController@getInsurances'); $router->get('networks', 'InsuranceController@getInsurancesNetworks'); $router->put('{id}/add-beneficiaries', 'InsuranceController@addBeneficiaries'); + $router->put('{id}/delete-beneficiaries', 'InsuranceController@deleteBeneficiaries'); // Subscriptions $router->group(['prefix' => '/subscriptions'], function () use ($router) {