diff --git a/app/Http/Controllers/InsuranceController.php b/app/Http/Controllers/InsuranceController.php index bd9d807..d723494 100644 --- a/app/Http/Controllers/InsuranceController.php +++ b/app/Http/Controllers/InsuranceController.php @@ -166,7 +166,7 @@ class InsuranceController extends Controller { $this->validate($request, [ 'user_id' => 'required|integer|exists:users,id', - 'type' => 'nullable|in:ALL,EDITABLE|STOPPED', + 'type' => 'nullable|in:ALL,EDITABLE,STOPPED', ]); $userId = $request->input('user_id'); @@ -523,6 +523,13 @@ class InsuranceController extends Controller ]); $newSubscription->created_at = $newSubscription->updated_at = $datetime; $newSubscription->save(); + + foreach ($insurance->beneficiaries as $beneficiary) { + NhInsurancesHavingRight::create([ + 'insurance_subscription_id' => $newSubscription->id, + 'having_right_id' => $beneficiary->id, + ]); + } Event::dispatch(new InsuranceEvent($newSubscription, trans('messages.insurance_stop'), trans('messages.insurance_stop_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]))); diff --git a/app/Http/Controllers/InsuranceSubscriptionController.php b/app/Http/Controllers/InsuranceSubscriptionController.php index e55a5e0..ce50407 100644 --- a/app/Http/Controllers/InsuranceSubscriptionController.php +++ b/app/Http/Controllers/InsuranceSubscriptionController.php @@ -54,6 +54,11 @@ class InsuranceSubscriptionController extends Controller * @OA\MediaType( * mediaType="application/json", * @OA\Schema( + * @OA\Property(property="insurance_id", + * type="integer", + * example = 2, + * description="ID de l'assurance" + * ), * @OA\Property(property="subscription_id", * type="integer", * example = 2, @@ -75,7 +80,7 @@ class InsuranceSubscriptionController extends Controller * example = {{"birthdate":"1998-10-05","affiliation":"CHILD"}} * ), * ), - * example = {"subscription_id":7,"network_id":250,"month_price_id":3,"beneficiaries":{{"birthdate":"1998-10-05","affiliation":"CHILD"}}} + * example = {"insurance_id":7,"subscription_id":7,"network_id":250,"month_price_id":3,"beneficiaries":{{"birthdate":"1998-10-05","affiliation":"CHILD"}}} * ) * ), * @OA\Response( @@ -91,21 +96,29 @@ class InsuranceSubscriptionController extends Controller public function calculateBonusAmount(Request $request) { $this->validate($request, [ + 'insurance_id' => 'nullable|integer|exists:nh_insurances,id', 'subscription_id' => 'nullable|integer|exists:nh_insurances_subscriptions,id', - 'network_id' => 'required_without:subscription_id|integer|exists:networks,id', - 'month_price_id' => 'required_without:subscription_id|integer|exists:nh_months_prices_grid,id', + 'network_id' => 'required_without_all::subscription_id,insurance_id|integer|exists:networks,id', + 'month_price_id' => 'required_without_all::subscription_id,insurance_id|integer|exists:nh_months_prices_grid,id', 'beneficiaries' => 'nullable|array', 'beneficiaries.*.birthdate' => 'required|date_format:Y-m-d|before:today', 'beneficiaries.*.affiliation' => 'required|in:CHILD,SPOUSE' ]); $subscription_id = $request->input('subscription_id'); - if (isset($subscription_id)) { - $subscription = NhInsurancesSubscription::findOrFail($request->input('subscription_id')); + $insurance_id = $request->input('insurance_id'); + if (!empty($subscription_id)) { + $subscription = NhInsurancesSubscription::findOrFail($subscription_id); $networkConfig = $subscription->nhNetworkConfig; $monthPrice = $networkConfig->monthsPricesGrid()->where('number_of_months', $subscription->number_of_months)->first(); $beneficiaries = array_merge($subscription->beneficiaries->toArray(), $request->input('beneficiaries', [])); + } elseif (!empty($insurance_id)) { + $insurance = NhInsurance::findOrFail($insurance_id); + $networkConfig = $insurance->nhNetworkConfig; + $monthPrice = $networkConfig->monthsPricesGrid()->where('number_of_months', $insurance->number_of_months)->first(); + + $beneficiaries = array_merge($insurance->beneficiaries->toArray(), $request->input('beneficiaries', [])); } else { $networkConfig = NhNetworksConfig::where('network_id', $request->input('network_id'))->first(); if (!isset($networkConfig) || $networkConfig->configWallet->type != 'ilink_sante')