Add delete having right endpoints

This commit is contained in:
Djery-Tom 2022-02-01 18:19:29 +01:00
parent eb3afacf63
commit ad1d22a7bd
6 changed files with 160 additions and 4 deletions

View File

@ -106,13 +106,15 @@ class AuthorizationCareRequestController extends Controller
$act = NhAct::find($act_id); $act = NhAct::find($act_id);
try { try {
$datetime = $this->getCurrentTimeByCountryCode($user->network->country->code_country);
DB::beginTransaction(); DB::beginTransaction();
NhAuthorizationOfCareRequest::create([ NhAuthorizationOfCareRequest::create([
'request_id' => $this->generateRequestID(), 'request_id' => $this->generateRequestID(),
'user_id' => $user->id, 'user_id' => $user->id,
'act_id' => $act_id, 'act_id' => $act_id,
'state' => InsuranceSubscriptionState::UNDER_VALIDATION 'state' => InsuranceSubscriptionState::UNDER_VALIDATION,
'created_at' => $datetime, 'updated_at' => $datetime
]); ]);
DB::commit(); DB::commit();
@ -183,7 +185,7 @@ class AuthorizationCareRequestController extends Controller
$body->date = $datetime; $body->date = $datetime;
$data = new stdClass(); $data = new stdClass();
$data->screen = "notificationview"; $data->screen = "demandeAutorisationSoinScreen";
$data->data = new stdClass(); $data->data = new stdClass();
$body->data = $data; $body->data = $data;
$client->request('POST', '/onesignal/pushToUser', ['json' => $body, 'headers' => $headers]); $client->request('POST', '/onesignal/pushToUser', ['json' => $body, 'headers' => $headers]);

View File

@ -618,6 +618,7 @@ class HealthCareSheetController extends Controller
'accident_date' => (!empty($accident_date)) ? $accident_date : null, 'accident_date' => (!empty($accident_date)) ? $accident_date : null,
'pregnancy_start_at' => (!empty($pregnancy_start_at)) ? $pregnancy_start_at : null, 'pregnancy_start_at' => (!empty($pregnancy_start_at)) ? $pregnancy_start_at : null,
'pregnancy_end_at' => (!empty($pregnancy_end_at)) ? $pregnancy_end_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) { foreach ($request->input('performances', []) as $p) {
@ -849,6 +850,7 @@ class HealthCareSheetController extends Controller
$healthCareSheet->type = HealthCareSheetType::EXECUTION; $healthCareSheet->type = HealthCareSheetType::EXECUTION;
$healthCareSheet->state = InsuranceSubscriptionState::UNDER_VALIDATION; $healthCareSheet->state = InsuranceSubscriptionState::UNDER_VALIDATION;
$healthCareSheet->prescription_sheet_id = $sheet->id; $healthCareSheet->prescription_sheet_id = $sheet->id;
$healthCareSheet->created_at = $healthCareSheet->update_at = $datetime;
$healthCareSheet->push(); $healthCareSheet->push();
$insurance = $sheet->insurance; $insurance = $sheet->insurance;

View File

@ -8,6 +8,7 @@ use App\InsuranceState;
use App\InsuranceSubscriptionState; use App\InsuranceSubscriptionState;
use App\Models\CountriesCurrency; use App\Models\CountriesCurrency;
use App\Models\NhInsurance; use App\Models\NhInsurance;
use App\Models\NhInsurancesHavingRight;
use App\Models\NhInsurancesSubscription; use App\Models\NhInsurancesSubscription;
use App\Models\NhInsurancesSubscriptionsHistory; use App\Models\NhInsurancesSubscriptionsHistory;
use App\Models\NhNetworksConfig; 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);
}
}
} }

View File

@ -136,5 +136,16 @@ A new consultation or prescription has been made with your insurance.
'care_request_rejected' => "Care request refused", 'care_request_rejected' => "Care request refused",
'care_request_rejected_notification' => "Your request for care authorisation :request_id has been 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", '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
",
]; ];

View File

@ -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' => "Demande de soins refusée",
'care_request_rejected_notification' => "Votre demande d'autorisation de soins :request_id a été 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", '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
",
]; ];

View File

@ -18,6 +18,7 @@ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($route
$router->get('', 'InsuranceController@getInsurances'); $router->get('', 'InsuranceController@getInsurances');
$router->get('networks', 'InsuranceController@getInsurancesNetworks'); $router->get('networks', 'InsuranceController@getInsurancesNetworks');
$router->put('{id}/add-beneficiaries', 'InsuranceController@addBeneficiaries'); $router->put('{id}/add-beneficiaries', 'InsuranceController@addBeneficiaries');
$router->put('{id}/delete-beneficiaries', 'InsuranceController@deleteBeneficiaries');
// Subscriptions // Subscriptions
$router->group(['prefix' => '/subscriptions'], function () use ($router) { $router->group(['prefix' => '/subscriptions'], function () use ($router) {