Add delete having right endpoints
This commit is contained in:
parent
ad1d22a7bd
commit
2c0df32542
|
@ -274,7 +274,7 @@ class InsuranceController extends Controller
|
||||||
|
|
||||||
$insurance = NhInsurance::findOrFail($id);
|
$insurance = NhInsurance::findOrFail($id);
|
||||||
$latestSubscription = NhInsurancesSubscription::where('network_id', $request->input('network_id'))->where('user_id', $request->input('user_id'))
|
$latestSubscription = NhInsurancesSubscription::where('network_id', $request->input('network_id'))->where('user_id', $request->input('user_id'))
|
||||||
->whereNotIn('state', [InsuranceSubscriptionState::REJECTED])->orderBy('created_at', 'DESC')->first();
|
->whereIn('state', [InsuranceSubscriptionState::UNDER_VALIDATION, InsuranceSubscriptionState::AWAITING_FURTHER_INFORMATION])->orderBy('created_at', 'DESC')->first();
|
||||||
|
|
||||||
if (isset($latestSubscription)) {
|
if (isset($latestSubscription)) {
|
||||||
return $this->errorResponse(trans('errors.subscription_cannot_be_submitted', ['state' => mb_strtolower(trans('states.' . $latestSubscription->state), 'UTF-8')]));
|
return $this->errorResponse(trans('errors.subscription_cannot_be_submitted', ['state' => mb_strtolower(trans('states.' . $latestSubscription->state), 'UTF-8')]));
|
||||||
|
@ -308,7 +308,8 @@ class InsuranceController extends Controller
|
||||||
'number_of_beneficiaries' => sizeof($request->input('beneficiaries', [])),
|
'number_of_beneficiaries' => sizeof($request->input('beneficiaries', [])),
|
||||||
'number_of_months' => $monthPrice->number_of_months,
|
'number_of_months' => $monthPrice->number_of_months,
|
||||||
'bonus_amount' => $monthPrice->min_amount,
|
'bonus_amount' => $monthPrice->min_amount,
|
||||||
'insurance_action' => InsuranceAction::ADDITION_OF_BENEFICIARY
|
'insurance_action' => InsuranceAction::ADDITION_OF_BENEFICIARY,
|
||||||
|
'state' => InsuranceSubscriptionState::UNDER_VALIDATION,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Ajouter les nouveaux ayant droit
|
// Ajouter les nouveaux ayant droit
|
||||||
|
@ -402,6 +403,13 @@ class InsuranceController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$insurance = NhInsurance::findOrFail($id);
|
$insurance = NhInsurance::findOrFail($id);
|
||||||
|
$latestSubscription = NhInsurancesSubscription::where('network_id', $insurance->network_id)->where('user_id', $insurance->user_id)
|
||||||
|
->whereIn('state', [InsuranceSubscriptionState::UNDER_VALIDATION, InsuranceSubscriptionState::AWAITING_FURTHER_INFORMATION])->orderBy('created_at', 'DESC')->first();
|
||||||
|
|
||||||
|
if (isset($latestSubscription)) {
|
||||||
|
return $this->errorResponse(trans('errors.subscription_cannot_be_submitted', ['state' => mb_strtolower(trans('states.' . $latestSubscription->state), 'UTF-8')]));
|
||||||
|
}
|
||||||
|
|
||||||
$user = $insurance->user;
|
$user = $insurance->user;
|
||||||
$identification = $insurance->user->identification;
|
$identification = $insurance->user->identification;
|
||||||
|
|
||||||
|
@ -411,51 +419,33 @@ class InsuranceController extends Controller
|
||||||
if (!checkPassword($request->password, $user->encrypted_password, $user->salt))
|
if (!checkPassword($request->password, $user->encrypted_password, $user->salt))
|
||||||
return $this->errorResponse(trans('messages.incorrect_user_password'));
|
return $this->errorResponse(trans('messages.incorrect_user_password'));
|
||||||
|
|
||||||
|
$current_beneficiaries_ids = array_map(function ($b) {
|
||||||
|
return $b['id'];
|
||||||
|
}, $insurance->beneficiaries->toArray());
|
||||||
|
|
||||||
|
foreach ($request->input('beneficiaries_ids') as $index => $id) {
|
||||||
|
if (!in_array($id, $current_beneficiaries_ids)) {
|
||||||
|
return $this->errorResponse(__('errors.beneficiary_not_part_in_insurance', ['id' => $index + 1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
$datetime = $this->getCurrentTimeByCountryCode($user->network->country->code_country);
|
$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();
|
$beneficiaries = NhInsurancesHavingRight::where('insurance_id', $insurance->id)->whereIn('having_right_id', $request->input('beneficiaries_ids'))->get();
|
||||||
$beneficiariesBonus = 0;
|
$beneficiariesBonus = 0;
|
||||||
foreach ($beneficiaries as $b) {
|
foreach ($beneficiaries as $b) {
|
||||||
$beneficiariesBonus += $b->bonus_amount;
|
$beneficiariesBonus += $b->beneficiary->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([
|
$insurance->number_of_beneficiaries -= sizeof($beneficiaries);
|
||||||
'action' => 'ADD',
|
$insurance->total_bonus_amount -= $beneficiariesBonus;
|
||||||
'insurance_subscription_id' => $newSubscription->insurance_subscription_id,
|
$insurance->updated_at = $datetime;
|
||||||
'insurance_subscription_state' => $newSubscription->state,
|
$insurance->save();
|
||||||
'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,
|
// Supprimer ces beneficiares de l'assurance
|
||||||
'bonus_amount' => $this->toMoneyWithNetwork($newSubscription->total_bonus_amount, $newSubscription->network_id), 'number_of_beneficiaries' => $newSubscription->number_of_beneficiaries,
|
$beneficiaries->each->delete();
|
||||||
'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();
|
DB::commit();
|
||||||
return $this->successResponse(trans('messages.insurance_deletion_beneficiary_successful'));
|
return $this->successResponse(trans('messages.insurance_deletion_beneficiary_successful'));
|
||||||
|
|
|
@ -39,4 +39,10 @@ class NhInsurancesHavingRight extends Pivot
|
||||||
'insurance_id',
|
'insurance_id',
|
||||||
'having_right_id',
|
'having_right_id',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function beneficiary()
|
||||||
|
{
|
||||||
|
return $this->hasOne(NhHavingRight::class, 'id', 'having_right_id');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,5 +42,8 @@ return [
|
||||||
"exam_not_belong_to_sheet" => "The exam: id does not belong to the care sheet",
|
"exam_not_belong_to_sheet" => "The exam: id does not belong to the care sheet",
|
||||||
"prescription_not_belong_to_sheet" => "The prescription: id does not belong to the care sheet",
|
"prescription_not_belong_to_sheet" => "The prescription: id does not belong to the care sheet",
|
||||||
"sheet_cannot_be_modified" => "This care sheet cannot be modified",
|
"sheet_cannot_be_modified" => "This care sheet cannot be modified",
|
||||||
"unauthorized_to_update_sheet" => "You are not authorized to modify this care sheet"
|
"unauthorized_to_update_sheet" => "You are not authorized to modify this care sheet",
|
||||||
|
"beneficiary_not_part_in_insurance" => "Beneficiary number :id is not part of this insurance",
|
||||||
|
'act_application_already_pending' => "You already have an application pending for this act",
|
||||||
|
'insurance_not_in_order' => "This insurance is not in order"
|
||||||
];
|
];
|
||||||
|
|
|
@ -137,15 +137,5 @@ A new consultation or prescription has been made with your insurance.
|
||||||
'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_successful' => "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
|
|
||||||
",
|
|
||||||
];
|
];
|
||||||
|
|
|
@ -42,5 +42,8 @@ return [
|
||||||
"exam_not_belong_to_sheet" => "L'examen :id n'appartient pas à la feuille de soins",
|
"exam_not_belong_to_sheet" => "L'examen :id n'appartient pas à la feuille de soins",
|
||||||
"prescription_not_belong_to_sheet" => "La prescription :id n'appartient pas à la feuille de soins",
|
"prescription_not_belong_to_sheet" => "La prescription :id n'appartient pas à la feuille de soins",
|
||||||
"sheet_cannot_be_modified" => "Cette feuille de soins ne peut être modifiée",
|
"sheet_cannot_be_modified" => "Cette feuille de soins ne peut être modifiée",
|
||||||
"unauthorized_to_update_sheet" => "Vous n'êtes pas autorisé à modifier cette feuille de soins"
|
"unauthorized_to_update_sheet" => "Vous n'êtes pas autorisé à modifier cette feuille de soins",
|
||||||
|
"beneficiary_not_part_in_insurance" => "Le bénéficiaire numéro :id ne fait pas partie de cette assurance",
|
||||||
|
'act_application_already_pending' => "Vous avez deja une demande en cours de validation pour cet acte.",
|
||||||
|
'insurance_not_in_order' => "Cette assurance n'est pas en règle"
|
||||||
];
|
];
|
||||||
|
|
|
@ -153,15 +153,5 @@ Une nouvelle execution de prescription vient d'etre effectuée sur votre assuran
|
||||||
'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_successful' => "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
|
|
||||||
",
|
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue