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()) {
         // 如果选择 wet­signed
         $post = Yii::$app->request->post();
         if ($post['type'] == 'wet­signed') {
             //关闭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'] != 'wet­signed') {
             // 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]);
 }
Beispiel #4
0
 public function getAppApplicants()
 {
     return $this->hasMany(AppApplicant::className(), ['id_application' => 'id_application']);
 }
Beispiel #5
0
 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']);
Beispiel #7
0
 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]);
 }
Beispiel #9
0
 public function getClient()
 {
     return $this->hasOne(AppApplicant::className(), ['id_user' => 'id_user']);
 }
Beispiel #10
0
 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' => '']);
         }
     }
 }
Beispiel #12
0
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');