validate($request, [ 'act_id' => 'required|integer|exists:nh_acts,id', 'user_id' => 'required|integer|exists:users,id', 'password' => 'required|string' ]); $user = User::find($request->input('user_id')); $act_id = $request->input('act_id'); $password = $request->input('password'); if (!checkPassword($password, $user->encrypted_password, $user->salt)) return $this->errorResponse(trans('messages.incorrect_user_password')); $act = NhAct::find($act_id); try { DB::beginTransaction(); NhAuthorizationOfCareRequest::create([ 'request_id' => $this->generateRequestID(), 'user_id' => $user->id, 'act_id' => $act_id, 'state' => InsuranceSubscriptionState::UNDER_VALIDATION ]); DB::commit(); $recipients = array_map(function ($email) { return preg_replace("/\s+/", "", $email); }, NhValidatingAgent::where('role', 'DOCTOR')->whereNotNull('password')->pluck('email')->toArray()); $title = __('messages.new_care_authorisation'); $message = __('messages.new_care_authorisation_email', ['insured' => $user->lastname . ' ' . $user->firstname, 'act' => $act->name]); Mail::mailer('smtp')->raw($message, function ($message) use ($recipients, $title) { $message->subject($title) ->to($recipients); }); } catch (Throwable $t) { DB::rollBack(); Log::error('-------- Authorization of care error -----------'); Log::error($t->getMessage() . " :\n" . $t->getTraceAsString()); } return $this->successResponse(__('messages.new_care_authorisation_sent')); } private function generateRequestID(): string { do { $code = generateTransactionCode(); $codeCorrect = NhAuthorizationOfCareRequest::where('request_id', $code)->count() < 0; } while ($codeCorrect); return $code; } }