status_code = config('constant.API_FAILED_CODE'); } public function createAccount(Request $request) { return view('client.manual_client_create'); } public function createManualAccount(ClientRegistration $request) { $inputData = $request->all(); $this->code = config('constant.API_FAILED_CODE'); $logData['action'] = "CREATE_ACCOUNT_MANUALLY"; $last_payment_date = getCurrentDateTime(); $user_access_date = getCurrentDateTime(); try { DB::beginTransaction(); $inputData['wave'] = 1; $inputData['subscription_status'] = 1; $inputData['last_payment_date'] = $last_payment_date; $inputData['user_access_end_date'] = $user_access_date; $inputData['credit_report_company_type'] = $inputData['source_type']; if (!$data = (new Register())->createAccount($inputData)) { throw new \Exception("Account creation failed.Please try again!"); } if (isset($data['id']) && $data['id'] > 0) { $creditReportData['user_id'] = $data['id']; $creditReportData['email'] = $inputData['email']; $creditReportData['password'] = $inputData['password']; $creditReportData['report_type'] = $inputData['source_type']; (new Creditreport())->insertCreditReport($creditReportData); } // Send Confirmation Email To Customer $mailData['email'] = $inputData['email']; $mailData['name'] = $inputData['first_name'] . ' ' . $inputData['last_name']; $mailData['password'] = $inputData['password']; (new Email())->clientConfirmationMail($mailData); $this->message = "Account is created successfully."; $this->code = config('constant.API_SUCCESS_CODE'); $this->type = 'success'; DB::commit(); } catch (\Exception $ex) { DB::rollback(); $this->message = $ex->getMessage(); } appLog($this->logDataCreate($logData, getModelDataMasking($inputData), $this->message, '', $this->code)); return back()->with([$this->type => $this->message]); } public function addProfile(AddProfileRequest $request) { $logData['action'] = "PROFILE_ADD"; $inputData = $request->all(); $data = []; try { DB::beginTransaction(); $user_id = getUserId(); if (!(new Register())->addProfile($inputData, $user_id)) { throw new \Exception("Profile update failed.Please try again!"); } DB::commit(); $message = "Profile updated successfully."; $code = config('constant.API_SUCCESS_CODE'); $data = $inputData; } catch (\Exception $ex) { DB::rollback(); $message = $ex->getMessage(); $code = config('constant.API_FAILED_CODE'); } appLog($this->logDataCreate($logData, $inputData, $message, $data, $code)); return $this->sendApiResponse( $data, $message, $code ); } public function addPackage(AddPackageRequest $request) { $logData['action'] = "PACKAGE_ADD"; $inputData = $request->all(); $data = []; try { DB::beginTransaction(); $user_id = getUserId(); if (!(new Register())->addPackage($inputData, $user_id)) { throw new \Exception("Package added failed.Please try again!"); } DB::commit(); $message = "Package added successfully."; $code = config('constant.API_SUCCESS_CODE'); $data = $inputData; } catch (\Exception $ex) { DB::rollback(); $message = $ex->getMessage(); $code = config('constant.API_FAILED_CODE'); } appLog($this->logDataCreate($logData, $inputData, $message, $data, $code)); return $this->sendApiResponse( $data, $message, $code ); } public function importCreditReportForUser(SetCreditReportRequest $request) { $logData['action'] = "IMPORT_CREDIT_REPORT"; $inputData = $request->all(); try { $package_id = $inputData['package_id']; $user_id = getUserId(); DB::beginTransaction(); $message = "Report not found"; $creditReport = new CreditReportService(); if (!(new Register())->addPackage($package_id, $user_id)) { throw new \Exception("Package added failed.Please try again!"); } $response = $creditReport->getSmartCreditHTML($inputData['email'], $inputData['password']); if (!$response['status']) { throw new \Exception($message); } $creditReportObj = app(\App\Models\Creditreport::class); $credit_reportData['user_id'] = $user_id; $credit_reportData['html_content'] = $response['html']; if (!$creditReportObj->addOrUpdateCreditReport($credit_reportData)) { throw new \Exception("Report upload problem."); } $message = "Your report has been saved successfully"; $code = config('constant.API_SUCCESS_CODE'); DB::commit(); } catch (\Exception $ex) { DB::rollback(); $message = $ex->getMessage(); $code = config('constant.API_FAILED_CODE'); } appLog($this->logDataCreate($logData, $inputData, $message, $inputData, $code)); return $this->sendApiResponse( [], $message, $code ); } public function getUserInfoById() { $logData['action'] = "GET_USER_INFO_BY_ID"; $userObj = app(User::class); $user_id = getUserId(); $userData = $userObj->getUserByUserId($user_id); $security_questions = (new SecurityQuestion())->getSecurityQuestion(); $userData->password = customDecrypt($userData->password); $message = "User not found"; $code = config('constant.API_FAILED_CODE'); $userData['questionList'] = $security_questions; if (!empty($userData)) { $message = "User info fetched successfully"; $code = config('constant.API_SUCCESS_CODE'); } appLog($this->logDataCreate($logData, $user_id, $message, $userData, $code)); return $this->sendApiResponse( $userData, $message, $code ); } public function makePaymentByUser(MakePaymentRequest $request): JsonResponse { $logData['action'] = "MAKE_PAYMENT_START"; $message = "Unknown error occurred."; $status_code = config('constant.API_FAILED_CODE'); $inputData = $request->all(); $userData = (new Register())->emailVarification($inputData['email']); if (!empty($userData)) { try { $user_id = $userData['id']; $inputData['user_id'] = $user_id; $inputData['amount'] = config('constant.PLAN_AMOUNT'); $package = (new Package()); $package->makePayment($inputData); if ($package->status_code == config('constant.API_SUCCESS_CODE')) { $inputData['email'] = $userData['email']; $inputData['name'] = $userData['first_name'] . ' ' . $userData['last_name']; $this->paymentMail($inputData); } $message = "Successfully Saved."; $status_code = config('constant.API_SUCCESS_CODE'); Auth::loginUsingId($user_id); } catch (\Exception $ex) { $logData['exception']['message'] = $ex->getMessage(); $logData['exception']['trace'] = $ex->getTraceAsString(); } $this->data = $userData; $this->message = $message; $this->status_code = $status_code; } appLog($this->logDataCreate($logData, getModelDataMasking($inputData), $this->message, getModelDataMasking($this->data), $this->status_code)); return $this->sendApiResponse( $this->data, $this->message, $this->status_code ); } public function makePayment(Request $request): JsonResponse { $postData = $request->all(); $logData['action'] = "MAKE_PAYMENT_START"; $data = []; $message = ''; $status_code = config('constant.API_FAILED_CODE'); $userData = (new User())->getUserByEmail($postData['email']); if (!empty($userData)) { $user_question_answer = (new UserSecurityQuestionAnswer())->getUserSecurityQuestionAnswer($userData['id']); $inputData = []; $inputData['id'] = $userData['id']; $inputData["first_name"] = $userData["first_name"]; $inputData["last_name"] = $userData["last_name"]; $inputData['answer'] = $user_question_answer['answer'] ?? ""; $inputData['question_id'] = $user_question_answer['question_id'] ?? 1; $inputData["email"] = $userData["email"]; $inputData["password"] = customDecrypt($userData["password"]); $inputData["street_no"] = $userData["street_no"]; $inputData["street_name"] = $userData["street_name"]; $inputData["city"] = $userData["city"]; $inputData["state"] = $userData["state"]; $inputData["birth_date"] = $userData["birth_date"]; $inputData["ssn"] = $userData["ssn"]; $inputData['card_number'] = $postData['card_number']; $inputData['expiry'] = $postData['expiry']; $inputData["amount"] = $postData["amount"]; $inputData['package_id'] = "2"; $inputData["full_ssn"] = $postData["full_ssn"]; $inputData["phone"] = $postData["phone"]; $inputData["zip_code"] = $postData["zip_code"]; $package = (new Package()); $package->purchasePackage($inputData); if ($package->status_code == config('constant.API_SUCCESS_CODE')) { Auth::loginUsingId($userData['id']); } $data = $package->data; $message = $package->message; $status_code = config('constant.API_SUCCESS_CODE'); appLog($this->logDataCreate($logData, $postData, $message, $data, $status_code)); } return $this->sendApiResponse( $data, $message, $status_code ); } public function emailVerification(CreateAccountRequest $request) { $logData['action'] = "EMAIL_VERIFICATION"; $inputData = $request->all(); $this->data = []; $this->message = ''; $this->status_code = config('constant.API_SUCCESS_CODE'); $result = []; if(config('app.REPORT_PROVIDER') == '3') { $result = (new Package())->checkIsEmailExistOnSmartCredit($inputData); } // elseif (config('app.REPORT_PROVIDER') == '2'){ // $result = $this->identityIQemailVerification(); // } if (isset($result['status']) && $result['status']) { $this->status_code = config('constant.API_FAILED_CODE'); $this->message = $result['message']; } return $this->sendApiResponse( $this->data, $this->message, $this->status_code ); } private function identityIQemailVerification() { $result['status'] = true; $result['message'] = "You already have an account with identityIQ"; return $result; } public function profileVerification(CustomerProfileRequest $request) { $logData['action'] = "SSN_VERIFICATION"; $inputData = $request->all(); $this->data = []; $this->message = ''; $this->status_code = config('constant.API_SUCCESS_CODE'); $smartCreditRequestData['ssn'] = $inputData['full_ssn']; $smartCreditRequestData['email'] = $inputData['email']; $result =[]; if(config('app.REPORT_PROVIDER') == '3') { $result = (new SmartCredit(config('app.CLIENT_KEY'))) ->setData($smartCreditRequestData) ->checkIsSsnExistOnSmartCredit(); } elseif (config('app.REPORT_PROVIDER') == '1'){ $result = $this->identityIQemailVerification(); } if (isset($result['status']) && $result['status']) { $this->status_code = config('constant.API_FAILED_CODE'); $this->message = $result['message']; } return $this->sendApiResponse( $this->data, $this->message, $this->status_code ); } public function getSecurityQuestion(Request $request): JsonResponse { $logData['action'] = "GET_SECURITY_QUESTION"; $questions = (new package())->securityQuestions(); return $this->sendApiResponse( $questions->data, $questions->message, $questions->status_code ); } public function createCustomer(CustomerProfileRequest $request): JsonResponse { $logData['action'] = "CREATE_CUSTOMER_START"; appLog($logData); $inputData = $request->all(); $inputData['status'] = 2; // status = 2 for inactive user, 1 for active // Insert User table $inputData['credit_report_company_type'] = config('app.REPORT_PROVIDER'); $userData = $this->addUser($inputData); $inputData['user_id'] = $userData['id']; $inputData['status_code'] = config('constant.API_SUCCESS_CODE'); // insert credit report table and user update (new Package())->purchasePackage($inputData); $this->status_code = config('constant.API_SUCCESS_CODE'); $this->message = ''; // Send Email To Admin,Employee and Customer $mailData['email'] = $inputData['email']; $mailData['name'] = $inputData['first_name'] . ' ' . $inputData['last_name']; (new Email())->clientRegistrationMail($mailData); $logData['action'] = "CREATE_CUSTOMER_END"; appLog($logData); return $this->sendApiResponse( $this->data, $this->message, $this->status_code ); } public function getIdentityQuestionAnswer(Request $request): JsonResponse { $logData['action'] = "GET_IDENTITY_QUESTION_ANSWER"; $questions = (new package())->identityQuestionAnswer(); return $this->sendApiResponse( $questions['data']['idVerificationCriteria'], $questions['message'], $questions['status_code'] ); } public function postIdentityQuestion(Request $request): JsonResponse { $inputData = $request->all(); $questions = (new package())->submitIdentityQuestionAnswer($inputData); if ($questions->status_code == config('constant.API_SUCCESS_CODE')) { $questions->data = $this->insertSecurityQuestionAnswer($inputData); } return $this->sendApiResponse( $questions->data, $questions->message, $questions->status_code ); } private function insertSecurityQuestionAnswer($inputData) { $userQuestion = []; $logData['action'] = "INSERT_USER_IDENTITY_QUESTION_ANSWER"; $userData = (new Register())->emailVarification($inputData['email']); if (!empty($userData)) { $userQuestion = ['user_id' => $userData['id'], 'data' => $inputData['security_question_answer']]; (new UserIdentityQuestionAnswer())->insertData($userQuestion); $this->status_code = config('constant.API_SUCCESS_CODE'); $this->message = 'successfully inserted user identity question answer'; } appLog($this->logDataCreate($logData, $userQuestion, $this->message, $this->data, $this->status_code)); return $userData; } public function insertEmployee(EmployeeRegistrationRequest $request) { $inputData = $request->all(); $inputData['user_type'] = 2; $userData = $this->addUser($inputData); if (!empty($userData)) { $inputData['employee_id'] = $userData['id']; (new Permission())->insertUserPermission($inputData); } return back()->with([$this->type => $this->message]); } public function userValidationInCreditReportProvider(Request $request) { $code = config('constant.API_FAILED_CODE'); $message = 'Email and Password is not valid in Identity IQ.'; $inputData = $request->all(); // $isValid = (new CreditReportService())->validateUserInCreditReportProvider($inputData); $isValid = true; // client told no need to check IQ if($isValid) { $message = 'Email and Password is valid.'; $code = config('constant.API_SUCCESS_CODE'); } return $this->sendApiResponse( $isValid, $message, $code ); } private function addUser($inputData) { $logData['action'] = "CREATE_ACCOUNT"; $this->data = []; try { DB::beginTransaction(); if (!$this->data = (new Register())->createAccount($inputData)) { throw new \Exception("Account creation failed.Please try again!"); } $this->message = "Account created successfully."; $this->type = 'success'; $this->status_code = config('constant.API_SUCCESS_CODE'); DB::commit(); } catch (\Exception $ex) { DB::rollback(); $this->message = $ex->getMessage(); $this->status_code = config('constant.API_FAILED_CODE'); } appLog($this->logDataCreate($logData, getModelDataMasking($inputData), $this->message, getModelDataMasking($this->data), $this->status_code)); return $this->data; } private function logDataCreate($logData, $request, $message, $response, $code) { $logData['data']['request'] = $request; $logData['data']['message'] = $message; $logData['data']['response'] = $response; $logData['data']['code'] = $code; return $logData; } }