public function actionIndex() { // header('Location: http://www.supernovacompanies.com/lending/'); //return $this->render('index'); if (Yii::$app->user->getIsGuest()) { return $this->redirect(Yii::$app->user->loginUrl); } $id_user_role = Yii::$app->user->getIdentity()->id_user_role; $id_user = Yii::$app->user->getIdentity()->id_user; $agree = Yii::$app->user->getIdentity()->agree; $url = '/user/login'; if ($id_user_role == Dict::USER_ROLE_BETTERDEBT) { $url = '/official/index'; } else { if ($id_user_role == Dict::USER_ROLE_INSTITUTION) { $url = '/institution/index'; } else { if ($id_user_role == Dict::USER_ROLE_ADVISOR) { //新增判断是否已读协议 if ($agree == Dict::USER_AGREE_NOT) { $url = '/user/login'; } else { $url = '/advisor/index'; } } else { if ($id_user_role == Dict::USER_ROLE_CLIENT) { if ($agree == Dict::USER_AGREE_NOT) { $url = '/user/login'; } //根据用户id_user查出是否有无数据 $applicant = AppApplicant::find()->where(['id_user' => Yii::$app->user->getIdentity()->id_user])->orderBy(['id_app_applicant' => SORT_DESC])->one(); if (is_null($applicant)) { $url = '/loan/application'; } else { $loan = Loan::find()->where(['id_application' => $applicant->id_application]); if (is_null($loan) && $loan->status == Dict::LOAN_STATUS_ACTIVE) { $url = '/loan/index'; } else { $url = '/loan/application'; } } } else { if ($id_user_role == Dict::USER_ROLE_BANK) { $url = '/bank/index'; } } } } } return $this->redirect([$url]); }
public function beforeAction($action) { parent::beforeAction($action); if ($action->id == 'index' && Yii::$app->user->getIdentity()->id_user_role != Dict::USER_ROLE_CLIENT) { throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page."); } if ($action->id == 'view' && Yii::$app->user->getIdentity()->id_user_role == Dict::USER_ROLE_CLIENT) { throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page."); } if ($action->id == 'view' && Yii::$app->user->getIdentity()->id_user_role == Dict::USER_ROLE_ADVISOR) { $advisor = Advisor::find()->andWhere(['id_user' => $this->user->id])->one(); //find related groups $id_groups = AdvisorGroup::find()->andWhere(['id_advisor' => $advisor['id_advisor']])->all(); $ids = []; foreach ($id_groups as $value) { $ids[] = $value['id_group']; } $applications = Application::find()->andWhere(['in', 'id_group', $ids])->all(); $id_applications = []; foreach ($applications as $value) { $id_applications[] = $value['id_application']; } $result = Loan::find()->andWhere(['in', 'id_application', $id_applications])->all(); if (count($result) == 0) { //没有与该advisor在同一个group中的line throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page."); } } $id_application = 0; //根据用户id查出是否有无数据 $applicant = AppApplicant::find()->where(['id_user' => $this->user->id])->orderBy(['id_app_applicant' => SORT_DESC])->one(); if (!is_null($applicant)) { $this->application = Application::findOne($applicant->id_application); $this->loan = Loan::find()->where(['id_application' => $applicant->id_application])->one(); } return true; }
public function actionIndex($id_app_task) { $model = AppTask::findOne($id_app_task); $loanModel = Loan::find()->where(['id_application' => $model->id_application])->one(); // 如果 loan 不存在,则新建 if (is_null($loanModel)) { $loanModel = new Loan(); $loanModel->loan_number = ''; $loanModel->id_application = $model->id_application; $loanModel->status = 0; $loanModel->loc = $model->application->loc; $loanModel->balance = 0; $loanModel->advance_rate = 50; $loanModel->maintainance_rate = 70; $loanModel->collateral_value = $model->application->collateral_value; $loanModel->save(false); } // 读取所以检查项 $checkPointsData = AppTaskCheckpoint::find()->where(['id_app_task' => $id_app_task])->all(); $checkPoints = []; $check_points_ctrl = true; foreach ($checkPointsData as $val) { $checkPoints[$val['id_app_task_checkpoint_type']] = $val; if (!$val->status) { $check_points_ctrl = false; } } // 判断是否可以 approve $loanModel->setScenario('review'); $loanCheck = clone $loanModel; $loan_ctrl = $loanCheck->validate(); if (Yii::$app->request->post()) { // 如果选择 wetsigned $post = Yii::$app->request->post(); if ($post['type'] == 'wetsigned') { //关闭sign agreements $task_e_sign_box = AppTask::findOne(['id_application' => $model->id_application, 'id_app_task_type' => DictTask::TYPE_SIGN_AGREEMENTS_BOX]); AppTask::close($task_e_sign_box->id_app_task); } // 确认 Application Review and Check 结束 $applicationModel = $model->application; //g3 AppDocument::createPdfByApplication($applicationModel, DictDocument::TYPE_G3); //control_agreement AppDocument::createPdfByApplication($applicationModel, DictDocument::TYPE_CONTROL_AGREEMENT); //line_agreements AppDocument::createPdfByApplication($applicationModel, DictDocument::TYPE_LINE_AGREEMENT); //w9 AppDocument::createPdfByApplication($applicationModel, DictDocument::TYPE_W9); $loanModel->id_application = $applicationModel->id_application; $id_application = $loanModel->id_application; //active log.loan officer approved the application. Active::operationLog($id_application, [Yii::$app->user->getIdentity()->first_name, Yii::$app->user->getIdentity()->last_name], DictActive::APPROVED_APPLICATION, Yii::$app->user->getIdentity()->id); AppTask::taskFinish($id_app_task); //find Control Agreement--type--schwab(control agreement->id_application->id_group->Coustidian) $application = Application::find()->andWhere(['id_application' => $id_application])->one(); $group = Group::find()->andWhere(['id_group' => $application->id_group])->one(); //judge for id_custodian //send application approval email to client and cc to advisor(email($email_type,[$task_type,$id_app_task,$loan,$group])) $res = SendEmail::email(DictEmail::EMAIL_LETTER_ABOUT_LINE, [DictEmail::LETTER_APPLICATION_APPROVAL, $id_app_task, $loanModel, $group]); if ($res) { //判断是否有两个client参与 $user = SendEmail::findUserByApplication($id_application); if (is_null($user['co_applicant'])) { Active::operationLog($id_application, [$user['applicant']->first_name, $user['applicant']->last_name, '', $user['advisor']->first_name, $user['advisor']->last_name], DictActive::SYSTEM_SEND_APPROVAL_LETTER, 0); } else { Active::operationLog($id_application, [$user['applicant']->first_name, $user['applicant']->last_name, ',' . $user['co_applicant']->first_name . ' ' . $user['co_applicant']->last_name, $user['advisor']->first_name, $user['advisor']->last_name], DictActive::SYSTEM_SEND_APPROVAL_LETTER, 0); } } //active.system geneerated all the line agreements Active::operationLog($id_application, [], DictActive::SYSTEM_GENERATED_LINE_AGREEMENTS, 0); //find user $user = SendEmail::findUserByApplication($id_application); //create a task line-agreement to loan officer Active::operationLog($model->id_application, [DictTask::$taskType[DictTask::TYPE_LINE_AGREEMENTS], $user['supernova']->first_name, $user['supernova']->last_name], DictActive::SYSTEM_CREATE_TASK_TO_USER, 0); //system created task line-agreements //System send email new task "Line Agrrements Notification" to betterdebt($email_type,[$task_type,$id_application,$id_app_task]) SendEmail::email(DictEmail::EMAIL_TASK_NOTIFICATION, [DictTask::TYPE_LINE_AGREEMENTS, $id_application, $id_app_task + 2]); if ($post['type'] != 'wetsigned') { // docusign $result_docusign = SendDocuSign::appReview($id_application); } //crate a task sign-line-agreement to client Active::operationLog($model->id_application, [DictTask::$taskType[DictTask::TYPE_SIGN_AGREEMENTS], $user['applicant']->first_name, $user['applicant']->last_name], DictActive::SYSTEM_CREATE_TASK_TO_USER, 0); //system created task line-agreements Active::operationLog($model->id_application, [DictTask::$taskType[DictTask::TYPE_LINE_AGREEMENTS], $user['applicant']->first_name, $user['applicant']->last_name], DictActive::SYSTEM_SEND_DOCUSIGN_EMAIL, 0); //system send sign agreement docusign email to client return $this->redirect(['/application/view', 'id' => $model->id_application]); } $data = CollateralAccount::find()->andWhere(['line_type' => 1, 'id_line' => $model->id_application])->orderBy(['data_date' => SORT_DESC])->one(); if ($data) { $account = CollateralAccount::find()->andWhere(['line_type' => 1, 'id_line' => $model->id_application, 'data_date' => $data['data_date']])->orderBy(['data_date' => SORT_DESC])->all(); $line_account = LineAccount::find()->andWhere(['line_type' => 1, 'id_line' => $model->id_application, 'data_date' => $data['data_date']])->orderBy(['data_date' => SORT_DESC])->one(); } else { $account = ''; $line_account = ''; } //credit score $applicant = AppApplicant::find()->andWhere(['id_application' => $model->id_application])->all(); return $this->render('index', ['model' => $model, 'loanModel' => $loanModel, 'checkPoints' => $checkPoints, 'approve_ctrl' => $check_points_ctrl && $loan_ctrl, 'collateral_account' => $account, 'line_account' => $line_account, 'date' => empty($data) ? '' : $data['data_date'], 'applicant' => empty($applicant) ? '' : $applicant]); }
public function getAppApplicants() { return $this->hasMany(AppApplicant::className(), ['id_application' => 'id_application']); }
public function getPrimaryAdvisor() { $a = AppApplicant::find()->andWhere(['id_user' => Yii::$app->user->getId()])->one(); return AppUser::find()->joinwith('appApplicant')->joinwith('user')->andWhere(['app_applicant.id_user' => Yii::$app->user->getId(), 'app_applicant.id_application' => $a['id_application'], 'is_primary_contact' => 1, 'id_user_role' => Dict::USER_ROLE_ADVISOR]); }
<?php use yii\helpers\Url; use yii\widgets\Breadcrumbs; use common\models\Loan; use common\models\AppApplicant; use common\models\Application; use common\models\Client; $id_application = 0; //根据用户id查出是否有无数据 $applicant = AppApplicant::find()->where(['id_user' => Yii::$app->user->getIdentity()->id])->orderBy(['id_app_applicant' => SORT_DESC])->one(); $application = null; $loan = null; if (!is_null($applicant)) { $application = Application::findOne($applicant->id_application); $loan = Loan::find()->where(['id_application' => $applicant->id_application])->one(); } //根据id_user查找出client(用于profile方法的传值)$id_client $client = Client::find()->andWhere(['id_user' => Yii::$app->user->getIdentity()->id_user])->one(); ?> <nav class="navbar navbar-default navbar-fixed-top nav-ma"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand h60" href="#"><img src="<?php echo Url::to(['@web/images/BetterDebt_logo.svg']);
public function checkAppForm() { $form = $this->appForm; $appModel = $this->primaryAppApplicant; $coAppModel = $this->coAppApplicant; $errorCount = 0; $totalCount = 1; $errorList = []; $tmpModel = new AppForm(['scenario' => 'complate-rate-check', 'id_application' => $this->id_application]); $tmpModel->validate(); $totalCount += count($tmpModel->getErrors()); $tmpModel = new AppApplicant(['scenario' => 'complate-rate-check']); $tmpModel->validate(); $totalCount += count($tmpModel->getErrors()); if ($coAppModel) { $tmpModel = new AppApplicant(['scenario' => 'co-complate-rate-check']); $tmpModel->validate(); $totalCount += count($tmpModel->getErrors()); } $form->setScenario('complate-rate-check'); $form->validate(); $errorCount += count($form->getErrors()); $errorList = array_merge($errorList, $form->getErrors()); $appModel->setScenario('complate-rate-check'); $appModel->validate(); $errorCount += count($appModel->getErrors()); $errorList = array_merge($errorList, $appModel->getErrors()); if ($coAppModel) { $coAppModel->setScenario('co-complate-rate-check'); $coAppModel->validate(); $errorCount += count($coAppModel->getErrors()); $errorList = array_merge($errorList, $coAppModel->getErrors()); } $collateralAccount = AppFormCollateralAccount::find()->andWhere(['id_application' => $this->id_application])->all(); if (!$collateralAccount) { $errorCount += 1; $errorList['collateral_account'] = ['need add one collateral account']; } return ['totalCount' => $totalCount, 'errorCount' => $errorCount, 'errorList' => $errorList]; }
/** * Creates a new Application model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Application(); $appModel = new AppApplicant(['scenario' => 'primary-create']); $coAppModel = new AppApplicant(['scenario' => 'co-create']); $appFormModel = new AppForm(); //加载数据并验证 if ($model->load(Yii::$app->request->post()) && $appModel->load(Yii::$app->request->post()) && $coAppModel->load(Yii::$app->request->post()) && $appFormModel->load(Yii::$app->request->post()) && $model->validate() && $appModel->validate() && ($model->is_joint_application == 1 ? $coAppModel->validate() : true) && ($model->is_joint_application == 1 ? $appModel->email_address != $coAppModel->email_address : true)) { //开启事务 $transaction = Yii::$app->db->beginTransaction(); try { if (!$appModel->id_user) { $user = User::createUser(Dict::USER_ROLE_CLIENT, ['User' => ['first_name' => $appModel->first_name, 'last_name' => $appModel->last_name, 'mid_name' => $appModel->mid_name, 'email' => $appModel->email_address], 'Client' => ['id_group' => $model->id_group]]); //设置applicant的id_user $appModel->id_user = $user->id_user; SendEmail::email(DictEmail::EMAIL_INVITE_USER, [$user]); } if ($model->is_joint_application && !$coAppModel->id_user) { $user = User::createUser(Dict::USER_ROLE_CLIENT, ['User' => ['first_name' => $coAppModel->first_name, 'last_name' => $coAppModel->last_name, 'mid_name' => $coAppModel->mid_name, 'email' => $coAppModel->email_address], 'Client' => ['id_group' => $model->id_group]]); //设置co-applicant的id_user $coAppModel->id_user = $user->id_user; SendEmail::email(DictEmail::EMAIL_INVITE_USER, [$user]); } $model->application_name = $appModel->first_name . ($model->is_joint_application ? ' and ' . $coAppModel->first_name : '') . "'s application"; $model->charge_fee = Advisor::findOne(['id_user' => Yii::$app->user->getId()])->will_charge_fee; if (!$model->save()) { $transaction->rollBack(); } $user = Yii::$app->user->getIdentity(); Active::operationLog($model->id_application, [$user->first_name, $user->last_name], DictActive::CREATE_APPLICATION, $user->id); $appModel->id_application = $model->id_application; $appModel->id_app_applicant_type = 1; if (!$appModel->save()) { $transaction->rollBack(); } if ($model->is_joint_application == 1) { $coAppModel->id_application = $model->id_application; $coAppModel->id_app_applicant_type = 2; if (!$coAppModel->save()) { $transaction->rollBack(); } } $appFormModel->id_application = $model->id_application; if (!$appFormModel->save()) { $transaction->rollBack(); } //初始化任务 AppTask::initialize($model->id_application); // 将AppTaskCheckpoint中的模板转换为实例 AppTaskCheckpoint::initialize($model->appTask); //创建AppUser记录 AppUser::createByApplication($model); //send email to notificate advisor create application success.method email([$task_type,$id_application,$id_app_owner_task],$notify_type) SendEmail::email(DictEmail::EMAIL_TASK_NOTIFICATION, [DictTask::TYPE_APPLICATION_FORM, $model->id_application, 0]); //id_app_owner_task_type:1(app-form);0:表示没有传递id_app_owner_task $transaction->commit(); } catch (Exception $e) { $transaction->rollBack(); } return $this->redirect(['/app-form/basic-info', 'id_application' => $model->id_application]); } return $this->render('create', ['model' => $model, 'appModel' => $appModel, 'coAppModel' => $coAppModel, 'appFormModel' => $appFormModel]); }
public function getClient() { return $this->hasOne(AppApplicant::className(), ['id_user' => 'id_user']); }
public function actionLogin($email = '', $come = '') { $this->enableCsrfValidation = false; $this->layout = '//home/yii'; $model = new LoginForm(); if ($model->load(Yii::$app->request->post()) && !$model->login($this->loginDuration)) { $a = ['errors' => $model['errors'], 'code' => 0]; exit(json_encode($a)); } if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post()) && $model->login($this->loginDuration)) { $id_user_role = Yii::$app->user->getIdentity()->id_user_role; $id_user = Yii::$app->user->getIdentity()->id_user; $agree = Yii::$app->user->getIdentity()->agree; $url = ''; if ($id_user_role == Dict::USER_ROLE_BETTERDEBT) { $url = '/official/index'; } else { if ($id_user_role == Dict::USER_ROLE_INSTITUTION) { $url = '/institution/index'; } else { if ($id_user_role == Dict::USER_ROLE_ADVISOR) { //新增判断是否已读协议 if ($agree == Dict::USER_AGREE_NOT) { exit($this->_agree($id_user, $id_user_role)); } else { $url = '/advisor/index'; } } else { if ($id_user_role == Dict::USER_ROLE_CLIENT) { if ($agree == Dict::USER_AGREE_NOT) { exit($this->_agree($id_user, $id_user_role)); } //根据用户id_user查出是否有无数据 $applicant = AppApplicant::find()->where(['id_user' => $id_user])->orderBy(['id_app_applicant' => SORT_DESC])->one(); if (is_null($applicant)) { $url = '/loan/application'; } else { $loan = Loan::find()->where(['id_application' => $applicant->id_application])->one(); if (isset($loan) && $loan->status == Dict::LOAN_STATUS_ACTIVE) { $url = '/loan/index'; } else { $url = '/loan/application'; } } } else { if ($id_user_role == Dict::USER_ROLE_BANK) { $url = '/bank/index'; } } } } } if ($come) { $return = ['code' => 2, 'url' => $come]; exit(json_encode($return)); //return $this->redirect([$come]); } else { $return = ['code' => 2, 'url' => $url]; exit(json_encode($return)); //return $this->redirect([$url]); } } return $this->render('login', ['model' => $model, 'email' => $email]); }
public function actionGetClientByIdGroup($selected = null) { if (isset($_POST['depdrop_all_params'])) { $id = $_POST['depdrop_all_params']['application-id_group']; $models = Client::find()->andWhere(['id_group' => $id])->all(); foreach ($models as $model) { //验证client是否无active application与loan $canAdd = true; if (Yii::$app->params['uniqueSelectClient']) { $applicants = AppApplicant::find()->andWhere(['id_user' => $model->id_user])->all(); foreach ($applicants as $applicant) { if (isset($applicant->application) && $applicant->application->id_application_status == 1 || isset($applicant->application->loan) && $applicant->application->loan->status == 1) { $canAdd = false; } } } if ($canAdd) { $output[] = ['id' => $model->id_user, 'name' => $model->user->first_name . ' ' . $model->user->last_name]; } } if (isset($output)) { echo json_encode(['output' => $output, 'selected' => $selected]); } else { echo json_encode(['output' => '', 'selected' => '']); } } }
use kartik\widgets\DatePicker; use common\models\AppFormStatus; use common\models\Application; use common\models\AppTask; use common\models\AppApplicant; use common\models\AppFormCollateralAccount; use yii\base\Object; $application = Application::findOne($model->id_application); $identity = Yii::$app->user->getIdentity(); // 获取与application有关的client用户id_users $id_users = $model->ownerUser; foreach ($id_users as $val) { $id_client[] = $val; } // 读取申请人身份信息 $applicants = AppApplicant::find()->andWhere(['id_application' => $model->id_application])->all(); // 生成 label 样式 $label_css = ''; switch ($model->status) { case 1: $label_css = 'label-default'; break; case 2: $label_css = 'label-warning'; break; case 3: $label_css = 'label-success'; break; } /* @var $this yii\web\View */ $this->title = Yii::t('app', 'Supplemental Materials');