/**
  * Finds the Application model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Application the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Application::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
 public function run()
 {
     if ($this->id_application) {
         $model = Application::findOne($this->id_application);
         $result = $model->checkAppForm();
         $rate = round(($result['totalCount'] - $result['errorCount']) * 100.0 / $result['totalCount'], 2);
         $rate = (int) ($rate / 5) * 5;
         $view = $this->getView();
         $view->registerJs($this->circlyJs);
         $locIsMaximum = $model->loc_max == 1 && ($model->loc == null || $model->loc == 0);
         $locToolTip = $locIsMaximum ? 'Maximum amount based on collateral value' : '';
         $locValueLabel = $locIsMaximum ? 'Maximum' : ($model->loc != null && $model->loc != 0 ? number_format($model->loc) : '---,---,---');
         return strtr($this->template, ['{rate}' => $rate, '{locToolTip}' => $locToolTip, '{loc}' => $locValueLabel]);
     } else {
         return 'this widget need id_application!';
     }
 }
Beispiel #3
0
 public static function findUserByApplication($id_application)
 {
     // 获取 application
     $application = Application::findOne($id_application);
     // 获取 Primary AppApplicant
     $applicant = $application->primaryAppApplicant->user;
     // 获取 coAppApplicant
     $co_applicant = null;
     if (isset($application->coAppApplicant)) {
         $co_applicant = $application->coAppApplicant->user;
     }
     // 获取 Primary Advisor
     $primary_advisor = $application->primaryAdvisor;
     // 获取 Primary Supernova
     $primary_supernova = $application->primarySupernova;
     return ['supernova' => $primary_supernova, 'advisor' => $primary_advisor, 'applicant' => $applicant, 'co_applicant' => $co_applicant];
 }
 public function actionChange($id_application, $id_user, $id_user_role)
 {
     $model = Application::findOne($id_application);
     $users = $model->users;
     $roles = [Dict::USER_ROLE_BETTERDEBT => 'Loan Officer', Dict::USER_ROLE_ADVISOR => 'Advisor', Dict::USER_ROLE_CLIENT => 'Client'];
     $user = User::find()->where(['id_user' => $id_user])->one();
     $userName = $user['first_name'] . " " . $user['last_name'];
     $userRole = $roles[$user->id_user_role];
     if (Yii::$app->request->post()) {
         $oldPrimaryAdvisor = $model->primaryAdvisor;
         $id_oldAdvisor = $oldPrimaryAdvisor['id_user'];
         $oldPrimarySupernova = $model->primarySupernova;
         $id_oldSupernova = $oldPrimarySupernova['id_user'];
         if ($id_user_role == Dict::USER_ROLE_ADVISOR) {
             $id_newAdvisor = $id_user;
             $id_newSupernova = $id_oldSupernova;
             //active.
             Active::operationLog($id_application, [Yii::$app->user->getIdentity()->first_name, Yii::$app->user->getIdentity()->last_name, 'advisor', $oldPrimaryAdvisor['first_name'], $oldPrimaryAdvisor['last_name'], $user['first_name'], $user['last_name']], DictActive::CHANGE_PRIMARY_USER, Yii::$app->user->getIdentity()->id_user);
         } elseif ($id_user_role == Dict::USER_ROLE_BETTERDEBT) {
             $id_newAdvisor = $id_oldAdvisor;
             $id_newSupernova = $id_user;
             Active::operationLog($id_application, [Yii::$app->user->getIdentity()->first_name, Yii::$app->user->getIdentity()->last_name, 'loan officer', $oldPrimarySupernova['first_name'], $oldPrimarySupernova['last_name'], $user['first_name'], $user['last_name']], DictActive::CHANGE_PRIMARY_USER, Yii::$app->user->getIdentity()->id_user);
         }
         $model->changePrimaryAdvisor($id_oldAdvisor, $id_newAdvisor, $id_application);
         $model->changePrimarySupernova($id_oldSupernova, $id_newSupernova, $id_application);
         return $this->redirect(['application/view', 'id' => $id_application]);
     }
     return $this->renderAjax('change_primary', ['id_application' => $id_application, 'id_user' => $id_user, 'id_user_role' => $id_user_role, 'model' => $model, 'userName' => $userName, 'userRole' => $userRole]);
 }
use common\widgets\AppFormStatusBar;
use common\models\AppFormCollateralAccount;
use common\models\AppFormStatus;
use common\models\State;
/* @var $this yii\web\View */
/* @var $searchModel common\models\search\ApplicationSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
/* @var $this yii\web\View */
/* @var $model common\models\AppFormCollateralAccount */
$this->title = Yii::t('app', 'Application Form');
if (Yii::$app->user->getIdentity()->id_user_role == 4) {
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'My Application'), 'url' => ['/loan/application']];
    $this->params['breadcrumbs'][] = $this->title;
} else {
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Applications'), 'url' => ['/application/index']];
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', Application::findOne($this->context->actionParams['id_application'])->application_name), 'url' => ['/application/view', 'id' => $this->context->actionParams['id_application']]];
    $this->params['breadcrumbs'][] = $this->title;
}
$isRead = $this->context->AUTH == Dict::AUTH_READ;
?>

<section class="content-wrap">
             <div class="container">
                 <?php 
echo $this->render('_header_tab', ['id_application' => $this->context->actionParams['id_application']]);
?>
<div class="row pt50">
                     <main class="col-md-9 main-content">
                           <div class="frame">
                                <div>
                                  <!-- Tab panes -->
 public function actionCheck($id_app_task)
 {
     $model = AppTask::findOne($id_app_task);
     // application
     $application = Application::findOne($model->id_application);
     // check points
     $checkPointsData = AppTaskCheckpoint::find()->where(['id_app_task' => $id_app_task])->all();
     $checkPoints = [];
     $check_ctrl = true;
     foreach ($checkPointsData as $val) {
         $checkPoints[$val['id_app_task_checkpoint_type']] = $val;
     }
     if (!$application->have_existing_loan) {
         unset($checkPoints[5]);
     }
     return $this->renderAjax('check', ['model' => $model, 'checkPoints' => $checkPoints]);
 }
Beispiel #7
0
<?php

use backend\components\SetColumn;
use common\models\Application;
use yii\helpers\Html;
use yii\grid\GridView;
/* @var $this yii\web\View */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = Yii::t('app', 'Applications');
$this->params['breadcrumbs'][] = $this->title;
?>

<div class="box">
    <div class="box-body table-responsive">
    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'time:datetime', 'name', 'phone', 'email:email', ['class' => SetColumn::className(), 'attribute' => 'status', 'filter' => Application::getStatusList(), 'name' => 'statusName', 'cssClasses' => [Application::STATUS_READ => 'default', Application::STATUS_NEW => 'danger']], ['class' => 'yii\\grid\\ActionColumn', 'headerOptions' => ['width' => '70'], 'template' => '{view} {delete}']]]);
?>
    </div>
</div>
Beispiel #8
0
<?php

use yii\helpers\Html;
use yii\helpers\Url;
use common\models\Application;
use common\models\AppUser;
use common\models\AppDocument;
use common\models\user\UserRole;
use yii\widgets\ActiveForm;
$model = Application::findOne($id_application);
$users = $model->users;
$user = Yii::$app->user->getIdentity()->id;
$user_role = Yii::$app->user->getIdentity()->id_user_role;
$UploadModel = new AppDocument();
// $documents = AppDocument::find()->andWhere(['id_application' => $id_application])->groupBy(['id_document_type'])->all();
$roles = [Dict::USER_ROLE_BETTERDEBT => 'Loan Officer', Dict::USER_ROLE_ADVISOR => 'Advisor', Dict::USER_ROLE_CLIENT => 'Client'];
$actives = $model->actives;
rsort($actives);
$form = ActiveForm::Begin(['options' => ['enctype' => 'multipart/form-data'], 'method' => 'post', 'action' => ['/documents/index', 'id_application' => $model->id_application], 'id' => 'asd_111']);
?>
<div class="layout mb20">
	<div class="" id="myCollapsible" role="tablist" aria-multiselectable="true">
		<div class="panel panel-default">
		<div class="panel-heading layout-your-list pl30 por" role="tab" id="headingNo1">
			<h4 class="panel-title">
			<a class="collapsed fwb panel-text fs18" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseNo1" aria-expanded="false" aria-controls="collapseNo1"> Documents </a>
			</h4>
			<i class="caret add-subtract-ico"></i>
		</div>

 public function beforeAction($action)
 {
     // ID
     $ctrl_id = $action->controller->id;
     $action_id = $action->id;
     $behaviour = $ctrl_id . '/' . $action_id;
     if (parent::beforeAction($action)) {
         // 判断 id_application 权限
         if (isset($_GET['id_application']) && !isset($_GET['id_app_task'])) {
             $application = Application::findOne($_GET['id_application']);
             if (!$application->checkOnwerAccess($this->user->id_user)) {
                 if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT) {
                     $this->AUTH = Dict::AUTH_READ;
                     $app_task = AppTask::findOne(['id_application' => $application->id_application, 'id_app_task_type' => DictTask::TYPE_APPLICATION_FORM]);
                     if (($app_task->status != DictTask::STATUS_ACTIVE || $app_task->application->id_application_status != DictApplication::STATUS_ACTIVE) && !in_array($behaviour, ['task-sign/close', 'task-supplemental-information/view-file'])) {
                         if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT || $this->user->id_user_role == Dict::USER_ROLE_ADVISOR) {
                             $this->redirect(['/application/view', 'id' => $app_task->id_application]);
                         } else {
                             if ($this->user->id_user_role == Dict::USER_ROLE_CLIENT) {
                                 $this->redirect(['/loan/application']);
                             }
                         }
                         return false;
                     }
                 } else {
                     throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page.");
                 }
             } else {
                 // app-form 特殊判断
                 if ($ctrl_id == 'app-form') {
                     $app_task = AppTask::findOne(['id_application' => $application->id_application, 'id_app_task_type' => DictTask::TYPE_APPLICATION_FORM]);
                     if ($app_task->status != DictTask::STATUS_ACTIVE || $app_task->application->id_application_status != DictApplication::STATUS_ACTIVE) {
                         if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT || $this->user->id_user_role == Dict::USER_ROLE_ADVISOR) {
                             $this->redirect(['/application/view', 'id' => $app_task->id_application]);
                         } else {
                             if ($this->user->id_user_role == Dict::USER_ROLE_CLIENT) {
                                 $this->redirect(['/loan/application']);
                             }
                         }
                         return false;
                     }
                     if ($app_task->owner_type == DictTask::$userRoleToOwner[$this->user->id_user_role]) {
                         $this->AUTH = Dict::AUTH_OPERATE;
                     } else {
                         $this->AUTH = Dict::AUTH_READ;
                     }
                 } else {
                     if ($behaviour == 'task-sign/close') {
                         $betterdebt = Betterdebt::findOne(['id_user' => $this->user->id_user]);
                         if ($betterdebt->is_in_service_team == Dict::BD_SERVICE_TEAM_YES) {
                             $this->AUTH = Dict::AUTH_OPERATE;
                         } else {
                             $this->AUTH = Dict::AUTH_READ;
                         }
                     } else {
                         $this->AUTH = Dict::AUTH_READ;
                     }
                 }
             }
         }
         // 判断 id_app_task 权限
         if (isset($_GET['id_app_task'])) {
             $app_task = AppTask::findOne($_GET['id_app_task']);
             if ($app_task->application->checkOnwerAccess($this->user->id_user)) {
                 if (!AppTask::checkOnwerAccess($app_task, $behaviour)) {
                     throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page.");
                 } else {
                     if (in_array($behaviour, ['task-sign/close', 'task/assign-to', 'task-sign/remind'])) {
                         $this->AUTH = Dict::AUTH_OPERATE;
                     } else {
                         if (DictTask::$ownerToUserRole[$app_task->owner_type] == $this->user->id_user_role) {
                             $this->AUTH = Dict::AUTH_OPERATE;
                         } else {
                             $this->AUTH = Dict::AUTH_READ;
                         }
                     }
                 }
             } else {
                 if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT) {
                     $this->AUTH = Dict::AUTH_READ;
                 } else {
                     throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page.");
                 }
             }
             $loan = Loan::findOne(['id_application' => $app_task->id_application]);
             // 如果任务不是正在进行中,则跳转
             if ($app_task->status != DictTask::STATUS_ACTIVE || $app_task->application->id_application_status != DictApplication::STATUS_ACTIVE || isset($loan) && $loan->status == Dict::LOAN_STATUS_CLOSED) {
                 if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT || $this->user->id_user_role == Dict::USER_ROLE_ADVISOR) {
                     $this->redirect(['/application/view', 'id' => $app_task->id_application]);
                 } else {
                     if ($this->user->id_user_role == Dict::USER_ROLE_CLIENT) {
                         $this->redirect(['/loan/application']);
                     }
                 }
                 return false;
             }
         }
         // 判断 id_app_form_collateral_account 权限
         if (isset($_GET['id_app_form_collateral_account'])) {
             $collateral_account = AppFormCollateralAccount::findOne($_GET['id_app_form_collateral_account']);
             if (!$collateral_account->application->checkOnwerAccess($this->user->id_user)) {
                 if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT) {
                     $this->AUTH = Dict::AUTH_READ;
                 } else {
                     throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page.");
                 }
             } else {
                 $this->AUTH = Dict::AUTH_OPERATE;
             }
         }
         // 判断 id_app_task_checkpoint 权限
         if (isset($_GET['id_app_task_checkpoint'])) {
             $checkpoint = AppTaskCheckpoint::findOne($_GET['id_app_task_checkpoint']);
             if (!$checkpoint->appTask->application->checkOnwerAccess($this->user->id_user) || !AppTask::checkOnwerAccess($checkpoint->appTask, $behaviour)) {
                 if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT) {
                     $this->AUTH = Dict::AUTH_READ;
                 } else {
                     throw new UnauthorizedHttpException("Sorry, you don't have permission to access this page.");
                 }
             } else {
                 $this->AUTH = Dict::AUTH_OPERATE;
             }
         }
     }
     return true;
 }
Beispiel #10
0
<?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 #11
0
 public function getPrimaryApplications()
 {
     return $this->hasMany(Application::className(), ['primary_advisor' => 'id_user']);
 }
<?php

/* @var $this yii\web\View */
use yii\helpers\Html;
use yii\helpers\Url;
use common\models\Application;
use kartik\grid\GridView;
$line_id = 0;
$line_type_show = '';
$name = '';
$master_account = '';
if ($line_type == 1) {
    $application = Application::findOne($id_line);
    $this->title = $account_number == '' ? Yii::t('app', 'Collateral Accounts') : Yii::t('app', 'Collateral Accounts - Historical Data');
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Applications'), 'url' => ['/application/index']];
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', $application->application_name), 'url' => ['/application/view', 'id' => $application->id_application]];
    $this->params['breadcrumbs'][] = $this->title;
    $line_id = $id_line;
    $line_type_show = 'Application';
    $name = $application->application_name;
    $master_account = $application->group->group_id;
} else {
}
?>

<section class="content-wrap">
	<div class="container">
		<div class="row pt50">
			<main class="main-content">
				<div class="layout frame">
					<div class="layout-your-list">
Beispiel #13
0
 public function getApplications()
 {
     return $this->hasMany(Application::className(), ['id_group' => 'id_group']);
 }
 public function actionCollateralInformation($id_application)
 {
     $application = Application::findOne($id_application);
     $searchModel = new AppFormCollateralAccountSearch();
     $_GET[$searchModel->formName()]['id_application'] = $id_application;
     $dataProvider = $searchModel->search(Yii::$app->request->get());
     //初始化,写入默认数据
     $model = new AppFormCollateralAccount();
     $model->load([$model->formName() => $application->primaryAppApplicant->getAttributes()]);
     $model->trustee_phone_number = $application->primaryAppApplicant->cell_phone;
     $model->has_regular_distribution = 0;
     $model->is_trust_account = 0;
     $model->custodian = $model->application->group->custodian->name;
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         $appFormModel = AppForm::find()->andWhere(['id_application' => $id_application])->one();
         $appFormModel->save(false);
         //active
         Active::operationLog($id_application, [Yii::$app->user->getIdentity()->first_name, Yii::$app->user->getIdentity()->last_name, DictTask::$taskType[DictTask::TYPE_APPLICATION_FORM], DictActive::$form_type[DictActive::APP_FORM_COLLATERAL_INFO]], DictActive::USER_UPDATE_TASK, Yii::$app->user->getIdentity()->id);
         return $this->redirect(['collateral-information', 'id_application' => $model->id_application]);
     }
     if ($dataProvider->query->all()) {
         AppFormStatus::changeStatus($id_application, 3, 1);
     } else {
         AppFormStatus::changeStatus($id_application, 3, 0);
     }
     return $this->render('collateral_information', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'model' => $model]);
 }
 public function actionCheck($id_app_task)
 {
     $model = AppTask::findOne($id_app_task);
     //find by document type
     $loanStatements = AppDocument::find()->andWhere(['id_document_type' => DictDocument::TYPE_LOAN_STATEMENT, 'id_application' => $model->id_application])->orderBy(['id_app_document' => SORT_DESC])->all();
     //display loan statement?
     $application = Application::find()->andWhere(['id_application' => $model->id_application])->one();
     if ($application->have_existing_loan == 1) {
         $loanStatements_display = 'list-item';
         //method of display
     }
     $accountStatements = AppDocument::find()->andWhere(['id_document_type' => DictDocument::TYPE_ACCOUNT_STATEMENT, 'id_application' => $model->id_application])->orderBy(['id_app_document' => SORT_DESC])->all();
     $photos = AppDocument::find()->andWhere(['id_document_type' => DictDocument::TYPE_PHOTO_ID, 'id_application' => $model->id_application])->orderBy(['id_app_document' => SORT_DESC])->all();
     $certification = AppDocument::find()->andWhere(['id_document_type' => DictDocument::TYPE_TRUSTEE_CERTIFICATION, 'id_application' => $model->id_application])->orderBy(['id_app_document' => SORT_DESC])->all();
     $account = AppFormCollateralAccount::find()->andWhere(['id_application' => $model->id_application])->one();
     if ($account->is_trust_account == 1) {
         $certification_display = 'list-item';
         //method of display
     }
     return $this->renderAjax('check', ['model' => $model, 'loanStatements' => $loanStatements, 'accountStatements' => $accountStatements, 'photos' => $photos, 'certification' => $certification, 'loanStatements_display' => isset($loanStatements_display) ? $loanStatements_display : 'none', 'certification_display' => isset($certification_display) ? $certification_display : 'none']);
 }
Beispiel #16
0
        echo Url::to(['/task-supplemental-information/remove', 'id' => $value['id_app_document'], 'id_app_task' => $model->id_app_task]);
        ?>
" class="btn btn-default bordere-red" data-confirm="Are you sure to remove?">Remove</a></span>
                         <?php 
    }
    ?>
                       </li>
                    </ul>
            <?php 
}
?>
        </div>
    </div>

    <?php 
$list = Application::find()->andWhere(['id_application' => $model->id_application])->one();
if ($list->have_existing_loan == 1) {
    ?>
	<div class="account-form2 pb20">
          <div class="layout frame">
          <div class="layout-your-list por">
            <h2>LOAN STATEMENTS</h2>
            <p class="color-ba" style="padding-right: 135px">If paying off an existing securities-based line of credit/loan, please upload a copy of the loan statement.</p>
            <?php 
    if ($this->context->AUTH == Dict::AUTH_OPERATE) {
        ?>
            <i class="form-add-document but-user-mod"><a href="#"  data-toggle="modal" data-target="#myModal1" class="btn btn-default pl15" data-whatever="3">Add  Document</a></i>
            <?php 
    }
    ?>
          </div>
Beispiel #17
0
 public static function appReview($id_application)
 {
     if (Yii::$app->params['DocuSign']['run']) {
         // 文件路径
         $dir = Yii::$app->params['outpdfPath'];
         // 获取 application
         $application = Application::findOne($id_application);
         // 获取 Primary AppApplicant
         $applicant = $application->primaryAppApplicant->user;
         // 获取 coAppApplicant
         $co_applicant = null;
         if (isset($application->coAppApplicant)) {
             $co_applicant = $application->coAppApplicant->user;
         }
         // 获取 Primary Advisor
         $primary_advisor = $application->primaryAdvisor;
         // 获取 Primary Supernova
         $primary_supernova = $application->primarySupernova;
         //
         $users = [];
         $users['applicant'] = $applicant;
         $users['coapplicant'] = $co_applicant;
         $users['advisor'] = $primary_advisor;
         $users['betterdebt'] = $primary_supernova;
         // 读取 loan_agreements josn
         $positions_agreements = file_get_contents($dir . $id_application . "_signaure_spec_loan_agreements.json");
         $positions_agreements = json_decode($positions_agreements, true);
         // 读取 g3 josn
         $positions_g3 = file_get_contents($dir . $id_application . "_signaure_spec_app_g3.json");
         $positions_g3 = json_decode($positions_g3, true);
         // 读取 w9 josn
         $positions_w9 = file_get_contents($dir . $id_application . "_signaure_spec_app_w9.json");
         $positions_w9 = json_decode($positions_w9, true);
         // // 读取 Schwab josn
         // $positions_schwab = file_get_contents($dir.$id_application."_signaure_spec_app_control_schwab.json");
         // $positions_schwab = json_decode($positions_schwab, true);
         // clients
         $clients = [];
         $clients[] = $applicant->first_name . ' ' . $applicant->last_name;
         if (isset($co_applicant)) {
             $clients[] = $co_applicant->first_name . ' ' . $co_applicant->last_name;
         }
         $clients = implode(', ', $clients);
         // betterdebt
         $betterdebt = $primary_supernova->first_name . ' ' . $primary_supernova->last_name;
         $client = new DocuSign_Client();
         $service = new DocuSign_RequestSignatureService($client);
         $emailSubject = "BriteLine Agreements – Signature Required";
         // $emailBlurb = "Hi, {$clients}/{$betterdebt},
         // $emailBlurb = "Hi, {$clients}
         $emailBlurb = "Your BriteLine Application has been approved. Please review and sign line agreements to activate your BriteLine.\n                Sincerely,\n                The Supernova Lending Team";
         $status = "sent";
         $documents = [new DocuSign_Document("loan_agreements.pdf", "1", file_get_contents($dir . $id_application . "_loan_agreements.pdf", FILE_USE_INCLUDE_PATH)), new DocuSign_Document("g3.pdf", "2", file_get_contents($dir . $id_application . "_g3.pdf", FILE_USE_INCLUDE_PATH)), new DocuSign_Document("w9.pdf", "3", file_get_contents($dir . $id_application . "_w9.pdf", FILE_USE_INCLUDE_PATH))];
         // 定位签名位置
         $esigns = [];
         $esigns = DocusignRecipient::signPositions($positions_agreements, $users, '1', $esigns);
         $esigns = DocusignRecipient::signPositions($positions_g3, $users, '2', $esigns);
         $esigns = DocusignRecipient::signPositions($positions_w9, $users, '3', $esigns);
         // $esigns = DocusignRecipient::signPositions($positions_schwab, $users, '4', $esigns);
         // echo '<pre>';print_r($esigns);exit();
         $signers = [];
         $signer_number = 1;
         foreach ($esigns as $val) {
             $signers[] = new DocuSign_Recipient(1, $signer_number, $val['name'], $val['email'], NULL, 'signers', $val['tabs']);
             $signer_number++;
         }
         $eventNotifications = [];
         $response = $service->signature->createEnvelopeFromDocument($emailSubject, $emailBlurb, $status, $documents, $signers, $eventNotifications);
         // 增加 Docusign 记录
         $result_recipient = static::recipient($id_application, $response, DictTask::TYPE_SIGN_AGREEMENTS);
         // echo '<pre>';print_r($response);exit();
     }
     return false;
 }
Beispiel #18
0
 public function actionList()
 {
     $searchModel = new LoanSearch();
     if ($this->user->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'];
         }
         $query = Loan::find()->andWhere(['in', 'id_application', $id_applications])->andWhere(['status' => 1]);
         //->orderBy(['id_loan' => SORT_DESC]);
         $dataProvider = $searchModel->search(Yii::$app->request->get(), $query);
     } else {
         if ($this->user->id_user_role == Dict::USER_ROLE_BETTERDEBT) {
             $query = Loan::find()->andWhere(['status' => 1]);
             //->orderBy(['id_loan' => SORT_DESC]);
             $dataProvider = $searchModel->search(Yii::$app->request->get(), $query);
             // 			$query->orderBy(['id_loan' => SORT_DESC]);
             // 			$dataProvider = new ActiveDataProvider([
             // 				'query' => $query,
             // 			]);
         }
     }
     return $this->render('list', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]);
 }
Beispiel #19
0
 public static function insertTask($id_application, $task_type, $parent_id_app_task)
 {
     if ($task_type->owner_type == DictTask::OWNER_NULL && $task_type->id_user != DictTask::OWNER_USER_NULL) {
         // 非组身份
         $application = Application::findOne($id_application);
         $users = [];
         switch ($task_type->id_user) {
             case DictTask::OWNER_USER_ADVISOR_PRIMARY_AND_CLIENT_ALL:
                 // 查找到 Primary Advisor
                 $users[] = $application->primaryAdvisor->id_user;
                 // 查找到 applicants
                 $application->appApplicants;
                 foreach ($application->appApplicants as $applicant) {
                     $users[] = $applicant->id_user;
                 }
                 break;
             case DictTask::OWNER_USER_CLIENT_ALL:
                 // 查找到 applicants
                 foreach ($application->appApplicants as $applicant) {
                     $users[] = $applicant->id_user;
                 }
                 break;
         }
         // 逐个写入
         foreach ($users as $val) {
             $model = new static();
             $model->id_application = $id_application;
             $model->id_app_task_type = $task_type->id_app_task_type;
             $model->parent_id_app_task = $parent_id_app_task;
             $model->child_relation_type = $task_type->child_relation_type;
             $model->finish_type = $task_type->finish_type;
             $model->name = $task_type->name;
             $model->status = $task_type->status;
             $model->owner_type = $task_type->owner_type;
             $model->id_user = $val;
             $model->active = $task_type->active;
             $model->created_at = time();
             $model->updated_at = time();
             $model->save();
         }
         return 0;
     } else {
         // 组身份
         $model = new static();
         $model->id_application = $id_application;
         $model->id_app_task_type = $task_type->id_app_task_type;
         $model->parent_id_app_task = $parent_id_app_task;
         $model->child_relation_type = $task_type->child_relation_type;
         $model->finish_type = $task_type->finish_type;
         $model->name = $task_type->name;
         $model->status = $task_type->status;
         $model->owner_type = $task_type->owner_type;
         $model->id_user = 0;
         $model->active = $task_type->active;
         $model->created_at = time();
         $model->updated_at = time();
         $model->save();
         return $model->id_app_task;
     }
 }
Beispiel #20
0
// 生成 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 */
/* @var $model common\models\Application */
$application = Application::findOne($model->id_application);
$identity = Yii::$app->user->getIdentity();
$this->title = Yii::t('app', 'Line Agreements');
if ($identity->id_user_role == Dict::USER_ROLE_CLIENT) {
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'My Application'), 'url' => ['/loan/application']];
} else {
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Applications'), 'url' => ['/application/index']];
    $this->params['breadcrumbs'][] = ['label' => Yii::t('app', $application->application_name), 'url' => ['application/view', 'id' => $application->id_application]];
}
$this->params['breadcrumbs'][] = $this->title;
?>
<section class="content-wrap">
	<div class="container">
		<?php 
echo $this->render('../application/_status', ['model' => $model->application]);
?>
Beispiel #21
0
 /**
  * Displays send page.
  *
  * @return mixed
  */
 public function actionSend()
 {
     $model = new Application();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         Yii::$app->session->setFlash('success', Yii::t('app', 'Thank you for contacting us.'));
         return $this->redirect('contact');
     } else {
         return $this->renderAjax('modalSend', ['model' => $model]);
     }
 }
Beispiel #22
0
 public function getApplication()
 {
     return $this->hasOne(Application::className(), ['id_application' => 'id_application']);
 }
Beispiel #23
0
 public static function changePrimarySupernova($id_oldSupernova, $id_newSupernova, $id_application)
 {
     $tasks = Application::find()->andWhere(['id_application' => $id_application, 'primary_supernova' => $id_oldSupernova])->all();
     foreach ($tasks as $val) {
         $val->primary_supernova = $id_newSupernova;
         $val->save();
     }
 }
 public function actionSave($id_app_task)
 {
     $model = AppTask::findOne($id_app_task);
     if (Yii::$app->request->post()) {
         // save loan
         $loan = Loan::find()->where(['id_application' => $model->id_application])->one();
         $loan->setScenario('review');
         if (Yii::$app->request->isAjax && $loan->load(Yii::$app->request->post())) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ActiveForm::validate($loan);
         }
         if ($loan->load(Yii::$app->request->post()) && $loan->validate()) {
             if ((int) $loan->total_capacity == 0 && Yii::$app->params['capacity_test_initialize']) {
                 $loan->total_capacity = $loan->loc;
             }
             $loan->save();
         }
         // save application
         $app = Application::findOne($model->id_application);
         $app->loc = $loan->loc;
         $app->interest_rate = $loan->interest_rate;
         $app->advance_rate = $loan->advance_rate;
         $app->maintainance_rate = $loan->maintainance_rate;
         $app->margin_rate = $loan->margin_rate;
         $app->total_capacity = $loan->total_capacity;
         $app->save(false);
         //send email to client(s)---application approval letter
         $data = AppUser::find()->andWhere(['id_application' => $model->id_application, 'is_primary_contact' => 1])->all();
         $users_id = [];
         foreach ($data as $val) {
             if ($val->user->id_user_role == Dict::USER_ROLE_BETTERDEBT) {
                 $users_id[] = $val->id_user;
             }
         }
     }
     return $this->redirect(['/task-app-review/index', 'id_app_task' => $id_app_task]);
 }
 public function safeUp()
 {
     $tableOptions = null;
     if ($this->db->driverName === 'mysql') {
         // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
         $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
     }
     // 读取 application
     $application_list = Application::find()->all();
     // application添加的2个字段primaty_advisor和primary_supernova补充完整
     foreach ($application_list as $application) {
         $id_application = $application->id_application;
         // 读取advisor
         $user_advisor = AppUser::find()->andWhere(['id_application' => $id_application, 'is_primary_contact' => 1])->joinWith('user')->andWhere(['id_user_role' => Dict::USER_ROLE_ADVISOR])->one();
         // 读取 supernova
         $user_supernova = AppUser::find()->andWhere(['id_application' => $id_application, 'is_primary_contact' => 1])->joinWith('user')->andWhere(['id_user_role' => Dict::USER_ROLE_BETTERDEBT])->one();
         $application->primary_advisor = $user_advisor->id_user;
         $application->primary_supernova = $user_supernova->id_user;
         $application->save();
         // 读取application初始化新的app_task和app_task_checkpoint
         AppTask::initialize($id_application);
         $app_task_list = AppTask::find()->andWhere(['id_application' => $id_application])->all();
         AppTaskCheckpoint::initialize($app_task_list);
         //读取app_owner_task_back和app_owner_task_checkpoint_back
         $app_owner_task_list = Yii::$app->db->createCommand("SELECT O.* FROM app_task_back AS T, app_owner_task_back as O where T.id_app_task = O.id_app_task and T.id_application = {$id_application}")->queryAll();
         $app_owner_task_checkpoint_list = Yii::$app->db->createCommand("SELECT B.* FROM app_task_back AS T, app_owner_task_checkpoint_back as B, app_owner_task_back as O where B.id_app_owner_task = O.id_app_owner_task and T.id_app_task = O.id_app_task and T.id_application = {$id_application}")->queryAll();
         // app_owner_task_back
         foreach ($app_owner_task_list as $app_owner_task_key => $app_owner_task) {
             $back_to_now = ['1' => DictTask::TYPE_APPLICATION_FORM, '2' => DictTask::TYPE_SIGN_APPLICATION_FORM, '3' => DictTask::TYPE_UPLOAD_WET­SIGNED_FORM, '4' => DictTask::TYPE_SUPPLEMENTAL_MATERIALS, '5' => DictTask::TYPE_APPLICATION_REVIEW, '6' => DictTask::TYPE_LINE_AGREEMENTS, '7' => DictTask::TYPE_SIGN_AGREEMENTS, '8' => DictTask::TYPE_LINE_SETUP];
             // 读取对应的 app_task
             $app_task_where = ['id_application' => $id_application, 'id_app_task_type' => $back_to_now[$app_owner_task['id_app_owner_task_type']]];
             if (in_array($app_owner_task['id_app_owner_task_type'], array('2', '7'))) {
                 $app_task_where['id_user'] = $app_owner_task['id_user'];
             }
             $app_task = AppTask::findOne($app_task_where);
             // 逻辑修正
             if ($app_owner_task['id_app_owner_task_type'] == 6 && $app_owner_task_list[$app_owner_task_key + 1]['delete'] == Dict::DELETE_NOT && $app_owner_task_list[$app_owner_task_key + 1]['id_app_owner_task_status'] != DictTask::STATUS_NOT_ACTIVE) {
                 AppTask::close($app_task->id_app_task);
             } else {
                 // 变更完成状态
                 switch ($app_owner_task['id_app_owner_task_status']) {
                     case DictTask::STATUS_ACTIVE:
                         $app_task->nextStart($app_task->id_app_task);
                         break;
                     case DictTask::STATUS_FINISH:
                         if ($app_task->active == DictTask::INACTIVE) {
                             $app_task->active = DictTask::ACTIVE;
                             $app_task->save();
                         }
                         $app_task->taskFinish($app_task->id_app_task);
                         break;
                 }
             }
             // 变更结束状态
             if ($app_owner_task['delete'] == Dict::DELETE_YES) {
                 AppTask::close($app_task->id_app_task);
             }
             // 变更任务所属人角色
             if ($app_task['id_app_task_type'] != DictTask::TYPE_SIGN_APPLICATION_FORM) {
                 if ($app_task['id_app_task_type'] != DictTask::TYPE_SIGN_AGREEMENTS) {
                     $id_user = $app_owner_task['id_user'];
                     $user = User::findOne(['id_user' => $id_user]);
                     $app_task->owner_type = DictTask::$userRoleToOwner[$user->id_user_role];
                     $app_task->save();
                 }
             }
             // 判断是否是签名任务
             if (in_array($app_owner_task['id_app_owner_task_type'], array('2', '7'))) {
                 // 找到对应的签名记录
                 $docusign_recipient = DocusignRecipient::find(false)->andWhere(['id_application' => $id_application, 'id_app_task' => $app_owner_task['id_app_owner_task']])->one();
                 if (isset($docusign_recipient)) {
                     // 找到新的 id_app_task
                     $app_task_new = AppTask::findOne(['id_application' => $id_application, 'id_user' => $app_owner_task['id_user'], 'id_app_task_type' => $back_to_now[$app_owner_task['id_app_owner_task_type']]]);
                     // 变更 id_app_task
                     $docusign_recipient->id_app_task = $app_task_new->id_app_task;
                     $docusign_recipient->save();
                 }
             }
         }
         // 变更app_task_checkpoint里面的status
         foreach ($app_owner_task_checkpoint_list as $app_owner_task_checkpoint) {
             $app_task_checkpoint = AppTaskCheckpoint::findOne(['id_application' => $id_application, 'id_app_task_checkpoint_type' => $app_owner_task_checkpoint['id_app_owner_task_checkpoint_type']]);
             $app_task_checkpoint->status = $app_owner_task_checkpoint['status'];
             $app_task_checkpoint->save();
         }
     }
 }