Your IP : 216.73.216.79


Current Path : /var/www/html/mtdc/frontend/controllers/
Upload File :
Current File : /var/www/html/mtdc/frontend/controllers/SiteController.php

<?php

namespace frontend\controllers;

use Yii;
use common\models\LoginForm;
use frontend\models\PasswordResetRequestForm;
use frontend\models\ResetPasswordForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use frontend\models\application\DlsAiApplicationid;
use frontend\models\application\DlsAiApplication;
use frontend\models\application\DlsAiDirectorowner;
use frontend\models\application\DlsAiAuthorizeduser;
use backend\models\application\AiAppstatus;
use frontend\models\application\DlsAiDocupload;
use Hashids\Hashids;
use backend\models\Template;
use backend\models\Staff;
use backend\models\FrontendUser\FrontendUser;

/**
 * Site controller
 */
class SiteController extends Controller {

    public $csrfwhitelist = [
        'save-app-info',
        'save-app-director',
        'save-app-authorized-officer',
        'delete-director',
        'delete-officer',
    ];

    /**
     * @inheritdoc
     */
    public function beforeAction($action) {
        if (in_array($action->id, $this->csrfwhitelist)) {
            $this->enableCsrfValidation = false;
        }

        return parent::beforeAction($action);
    }

    /**
     * @inheritdoc
     */
    public function behaviors() {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['logout', 'signup'],
                'rules' => [
                    [
                        'actions' => ['signup', 'generateid', 'save-app-info', 'save-app-director', 'logout', 'get-form-data', 'get-director-data', 'get-appstatus', 'get-doc-upload-data', 'save-app-authorize-officer', 'get-authorized-officer-data', 'delete-officer'],
                        'allow' => true,
                        'roles' => ['?'],
                    ],
                    [
                        'actions' => ['logout'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    // 'logout' => ['post'],
                    'save-app-info' => ['post'],
                    'save-app-director' => ['post']
                ],
            ],
        ];
    }

    /* field map for input name and db col */

    private function fieldmap() {
        return [
            "kategori" => "aiap_transportcategory",
            "jenis_orang" => "aiap_persontype",
            "mod_pengangkutan" => "aiap_transportationmode",
            "no_syarikat_pemohon" => "aiap_businessno",
            "nama_pemohon" => "aiap_applicantname",
            "nama_pengendali" => "aiap_operatorname",
            "kod_pengendali" => "aiap_operatorcode",
            "negara_asal_pengendali" => "aiap_countryorigin",
            "alamat_1_perniagaan" => "aiap_businessaddress1",
            "alamat_2_perniagaan" => "aiap_businessaddress2",
            "alamat_3_perniagaan" => "aiap_businessaddress3",
            "alamat_poskod_perniagaan" => "aiap_businessposcode",
            "alamat_negeri_perniagaan" => "aiap_businessstate",
            "alamat_negara_perniagaan" => "aiap_businesscountry",
            "alamat_11_perniagaan" => "aiap_correspondenceaddress1",
            "alamat_12_perniagaan" => "aiap_correspondenceaddress2",
            "alamat_13_perniagaan" => "aiap_correspondenceaddress3",
            "alamat_poskod_perniagaan_1" => "aiap_correspondenceposcode",
            "alamat_negeri_perniagaan_1" => "aiap_correspondencestate",
            "alamat_negara_perniagaan_1" => "aiap_correspondencecountry",
            "nama_perdagangan_pengendali" => "aiap_operatortradename",
            "no_telefon" => "aiap_telno",
            "no_telefon_code" => "aiap_telnocode",
            "no_fax" => "aiap_faxno",
            "no_fax_code" => "aiap_faxnocode",
            "alamat_emel" => "aiap_email",
            "ahli_persatuan" => "aiap_memberassociate",
            "cukai_pendapatan" => "aiap_incometax",
            "tarikh_mula" => "aiap_datecommencement",
            "bilangan_orang_asean" => "aiap_estimatepersonasean",
            "bilangan_orang_lain" => "aiap_estimatepersonnotasean",
            "nama_akaun" => "aiap_acchaldername",
            "nama_bank" => "aiap_bankname",
            "jenis_akaun" => "aiap_accounttype",
            "nombor_swift" => "aiap_swiftcode",
            "alamat_bank" => "aiap_bankaddress",
            "nombor_akaun" => "aiap_noaccount",
            "hubungi_nama" => "aiap_contactname",
            "hubungi_tel" => "aiap_contacttelno",
            "hubungi_tel_code" => "aiap_contacttelnocode",
            "hubungi_fax" => "aiap_contactfaxno",
            "hubungi_fax_code" => "aiap_contactfaxnocode",
            "hubungi_emel" => "aiap_contactemail",
            "akuan_tarikh" => "aiap_declarationdate",
            "akuan_nama" => "aiap_nameofapplicant",
            "akuan_ic" => "aiap_icofapplicant",
            "akuan_jawatan" => "aiap_designationofapplicant",
            "akuan_warganegara" => "aiap_nationalityofapplicant",
            "alamat_11_pengendali" => "aiap_operatoraddress1",
            "alamat_12_pengendali" => "aiap_operatoraddress2",
            "alamat_13_pengendali" => "aiap_operatoraddress3",
            "alamat_poskod_pengendali" => "aiap_operatorpostcode",
            "alamat_negeri_pengendali" => "aiap_operatorstate",
            "alamat_negara_pengendali" => "aiap_operatorcountry",
            "alamat_negara_pengendali" => "aiap_operatorcountry",
            "hubungi_nama_surname" => "aiap_contactsurname",
        ];
    }

    /**
     * @inheritdoc
     */
    public function actions() {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

    /**
     * Displays homepage.
     *
     * @return mixed
     */
    public function actionIndex($id = '', $page_id = '') {
        $status = 1;
        if (!empty($page_id) && filter_var($page_id, FILTER_VALIDATE_INT) === false) {
            $status = 0;
        }
        if ($status == 1)
            return $this->render('index');
    }

    /**
     * Logs in a user.
     *
     * @return mixed
     */
    public function actionLogin() {
        /* if (!\Yii::$app->user->isGuest) {
          return $this->redirect(['site/index','id'=>'3','page_id'=>'11']);
          } */

        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->loginFrontend()) {

            $modeluser = FrontendUser::find()->where(['username' => $model->username])->one();

            if ($modeluser["role"] == 'RESEARCHER') {
                return $this->redirect(['site/index', 'id' => '9', 'page_id' => '56']);
            } else if ($modeluser["role"] == 'ADMINISTRATOR') {
                return $this->redirect(['site/index', 'id' => '9', 'page_id' => '56']);
            } else if ($modeluser["role"] == 'PUBLIC') {
                return $this->redirect(['site/index', 'id' => '9', 'page_id' => '56']);
            }
        } else {
            // return $this->render('login', [
            //     'model' => $model,
            // ]);
            yii::$app->session->setFlash('danger', 'Wrong Username Or Password. Please Try Again');
            return $this->redirect(['index']);
        }
    }

    /**
     * Logs out the current user.
     *
     * @return mixed
     */
    public function actionLogout() {
        Yii::$app->user->logout();

        return $this->goHome();
    }

    /**
     * Displays contact page.
     *
     * @return mixed
     */
    public function actionContact() {
        $model = new ContactForm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
                Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
            } else {
                Yii::$app->session->setFlash('error', 'There was an error sending email.');
            }

            return $this->refresh();
        } else {
            return $this->render('contact', [
                        'model' => $model,
            ]);
        }
    }

    /**
     * Displays about page.
     *
     * @return mixed
     */
    public function actionAbout() {
        return $this->render('about');
    }

    /**
     * Signs user up.
     *
     * @return mixed
     */
    public function actionSignup() {
        $model = new SignupForm();
        if ($model->load(Yii::$app->request->post())) {
            if ($user = $model->signup()) {
                if (Yii::$app->getUser()->login($user)) {
                    return $this->goHome();
                }
            }
        }

        return $this->render('signup', [
                    'model' => $model,
        ]);
    }

    /**
     * Requests password reset.
     *
     * @return mixed
     */
    public function actionRequestPasswordReset() {
        $model = new PasswordResetRequestForm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            if ($model->sendEmail()) {
                Yii::$app->session->setFlash('success', 'Check your email for further instructions.');

                return $this->goHome();
            } else {
                Yii::$app->session->setFlash('error', 'Sorry, we are unable to reset password for email provided.');
            }
        }

        return $this->render('requestPasswordResetToken', [
                    'model' => $model,
        ]);
    }

    /**
     * Resets password.
     *
     * @param string $token
     * @return mixed
     * @throws BadRequestHttpException
     */
    public function actionResetPassword($token) {
        try {
            $model = new ResetPasswordForm($token);
        } catch (InvalidParamException $e) {
            throw new BadRequestHttpException($e->getMessage());
        }

        if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) {
            Yii::$app->session->setFlash('success', 'New password was saved.');

            return $this->goHome();
        }

        return $this->render('resetPassword', [
                    'model' => $model,
        ]);
    }

    public function actionFrontendDashboard() {
        return $this->render('frontend-dashboard');
    }

    public function actionGenerateid() {
        $result = [];

        /* generate id */
        $result = yii::$app->db->createCommand('SELECT UUID() AS UUID')->queryOne();

        /* insert id */
        $now = date('Y-m-d H:i:s');
        $model = new DlsAiApplicationid();
        $model->aiad_aiapid = $result['UUID'];
        $model->created_at = $now;

        if ($model->save()) {
            $result['PK'] = $model->aiad_id;
            $result['CREATED_AT'] = $now;

            return $this->asJson($result);
        }
    }

    public function actionSaveAppInfo(int $stat = null) {
        /* object */
        $result = [];

        /* flag */
        $isnewrecord = false;

        /* convert json to array */
        $formdata = json_decode($_POST['formJSON']);

        /* assign id */
        $id = $_POST['UUID'] ?? null;

        /* application */
        $model = DlsAiApplication::find()->where(['aiap_uuid' => $id])->one();


        if (empty($model)) {
            /* new instance if id no exist */
            $model = new DlsAiApplication();

            /* set uiid */
            $model->aiap_uuid = $id;

            /* created at */
            $model->created_at = date('Y-m-d H:i:s');

            /* flag */
            $isnewrecord = true;
        }

        /* map array to field send by form */
        $fieldmap = $this->fieldmap();

        /* date */
        $datefield = [
            'aiap_datecommencement',
            'aiap_declarationdate'
        ];

        /* loop trough each map */
        foreach ($formdata as $data) {
            if (isset($fieldmap[$data->name])) {

                if (in_array($fieldmap[$data->name], $datefield)) {
                    // $myDateTime = \DateTime::createFromFormat('d/m/Y', '22/02/2019');
                    $datetime = \DateTime::createFromFormat('d/m/Y', $data->value);

                    if (!$datetime == false) {
                        $model->{$fieldmap[$data->name]} = $datetime->format('Y-m-d');
                    }
                    continue;
                }

                $model->{$fieldmap[$data->name]} = $data->value;
            }
        }

        try {

            if (empty($id)) {
                throw new \Exception("NO UUID PRESENT", 1);
            }

            if ($model->save()) {


                /* app status */
                $chkappstat = AiAppstatus::find()->where(['aias_applicationid' => $model->aiap_id, 'aias_activeind' => '1'])->one();

                /* application id */
                $hashids = new Hashids(Yii::$app->params['urlidcryptokey'], 6);
                $result['APPID'] = $hashids->encode($model->aiap_id);

                /* if record is new  */
                if ($stat === 1 && empty($chkappstat)) {

                    /* set status for new application */
                    $appstat = new AiAppstatus();
                    $appstat->aias_applicationid = $model->aiap_id;
                    $appstat->aias_statuscode = 'N';
                    $appstat->aias_activeind = '1';

                    $appstat->save();

                    /* sent first time email */
                    $email = Template::find()->where(['dt_id' => 9])->one();

                    $content = $email->dt_header;
                    $content .= "<hr>";
                    $content .= $email->dt_title;
                    $content .= $email->dt_body;
                    $content .= $email->dt_footer;

                    $emailprop = [
                        '#NAMAPEMOHON#' => $model->aiap_applicantname,
                        '#NAMAOPERATOR#' => $model->aiap_operatorname,
                        '#NOPERNIAGAAN#' => $model->aiap_businessno,
                        '#IDPERMOHONAN#' => $result['APPID']
                    ];

                    $contentfinal = strtr($content, $emailprop);
                    $appemail = [
                        $model->aiap_email,
                        $model->aiap_contactemail
                    ];

                    /* email to applicant */
                    Yii::$app->mailer->compose()
                            ->setFrom('programmerost4490@gmail.com')
                            ->setTo($appemail)
                            ->setSubject($email->dt_title)
                            ->setTextBody('Plain text content')
                            ->setHtmlBody($contentfinal)
                            ->send();


                    /* email to admin */
                    $staff = Staff::find()->joinWith('roles')->where(['role_code' => 'SUP'])->all();
                    $staffemail = [];

                    foreach ($staff as $staffkey) {
                        $staffemail[] = $staffkey->user->email;
                    }

                    /* sent first time email */
                    $emailadmin = Template::find()->where(['dt_id' => 12])->one();

                    $contentadmin = $emailadmin->dt_header;
                    $contentadmin .= "<hr>";
                    $contentadmin .= $emailadmin->dt_title;
                    $contentadmin .= $emailadmin->dt_body;
                    $contentadmin .= $emailadmin->dt_footer;

                    $epropadmin = [
                        '#NAMAPEMOHON#' => $model->aiap_applicantname,
                        '#NAMAOPERATOR#' => $model->aiap_operatorname,
                        '#NOPERNIAGAAN#' => $model->aiap_businessno,
                        '#IDPERMOHONAN#' => $result['APPID']
                    ];

                    $contentfinaladmin = strtr($contentadmin, $epropadmin);


                    Yii::$app->mailer->compose()
                            ->setFrom('programmerost4490@gmail.com')
                            ->setTo($staffemail)
                            ->setSubject($email->dt_title)
                            ->setTextBody('Plain text content')
                            ->setHtmlBody($contentfinaladmin)
                            ->send();



                    /* if record come from reject status */
                } elseif (isset($chkappstat->aias_statuscode) && $chkappstat->aias_statuscode == 'R' && $stat === 1) {
                    /* check status */
                    $chkappstat->aias_activeind = '0';
                    $chkappstat->save(false);

                    /* set status for new application */
                    $appstat = new AiAppstatus();
                    $appstat->aias_applicationid = $model->aiap_id;
                    $appstat->aias_statuscode = 'U';
                    $appstat->aias_activeind = '1';

                    $appstat->save();
                }

                /* director reassign pk if exist */
                $director = DlsAiDirectorowner::find()->where(['aiad_uuid' => $id])->all();

                if (!empty($director)) {
                    foreach ($director as $dkey) {
                        $dkey->aiad_applicationid = $model->aiap_id;
                        $dkey->save();
                    }
                }


                /* officer reassign pk if exist */
                $officer = DlsAiAuthorizeduser::find()->where(['aiau_uuid' => $id])->all();

                if (!empty($officer)) {
                    foreach ($officer as $dkey) {
                        $dkey->aiau_applicationid = $model->aiap_id;
                        $dkey->save();
                    }
                }


                /* document upload reassign pk if exist */
                $docupload = DlsAiDocupload::find()->where(['aidu_uuid' => $id])->all();

                if (!empty($docupload)) {
                    foreach ($docupload as $dockey) {
                        $dockey->aidu_applicationid = $model->aiap_id;
                        $dockey->save();
                    }
                }

                /* status */
                $result['STATUS'] = "OK";
                $result['DATE'] = date('Y-m-d H:i:s');
                $result['ID'] = $model->aiap_id;

                return $this->asJson($result);
            } else {

                /* status */
                $result['DATE'] = date('Y-m-d H:i:s');
                $result['STATUS'] = "ERROR";
                $result['MESSAGE'] = $model->errors;
                return $this->asJson($result);
            }
        } catch (\Exception $e) {

            var_dump($e);
            /* status */
            $result['DATE'] = date('Y-m-d H:i:s');
            $result['STATUS'] = "ERROR";
            $result['MESSAGE'] = $e->getMessage();
            return $this->asJson($result);
        }
    }

    public function actionSaveAppDirector($rowid = null) {

        /* object */
        $result = [];

        /* convert json to array */
        $formdata = json_decode($_POST['formJSON']);

        /* assign id */
        $id = $_POST['UUID'];

        if (!empty($rowid)) {
            $model = DlsAiDirectorowner::findOne($rowid);
        } else {
            $model = new DlsAiDirectorowner();
        }

        $model->aiad_uuid = $id;

        /* map array to field send by form */
        $fieldmap = [
            "nama_pengarah" => "aiad_name",
            "alamat_pengarah" => "aiad_address",
            "tel_pengarah" => "aiad_notel",
            "ic_pengarah" => "aiad_ic",
            "warganegara_pengarah" => "aiad_citizenship",
            "tarikh_pengarah" => "aiad_appoinmentdate",
            "no_telefon_pengarah_code" => "aiad_notel",
        ];

        /* loop trough each map */
        foreach ($formdata as $data) {
            if (isset($fieldmap[$data->name])) {
                $model->{$fieldmap[$data->name]} = $data->value;

                if ($data->name == "tarikh_pengarah")
                    $model->{$fieldmap[$data->name]} = date('Y-m-d', strtotime($data->value));
            }
        }


        if ($model->save()) {
            $result['DATE'] = date('Y-m-d H:i:s');
            $result['STATUS'] = "OK";
            $result['UUID'] = $id;
            $result['ID'] = $model->aiad_id;
            return $this->asJson($result);
        } else {
            $result['DATE'] = date('Y-m-d H:i:s');
            $result['STATUS'] = "ERROR";
            $result['MESSAGE'] = $model->errors;
            return $this->asJson($result);
        }
    }

    public function actionSaveAppAuthorizedOfficer($rowid = null) {

        /* object */
        $result = [];

        /* convert json to array */
        $formdata = json_decode($_POST['formJSON']);

        /* assign id */
        $id = $_POST['UUID'];

        if (!empty($rowid)) {
            $model = DlsAiAuthorizeduser::findOne($rowid);
        } else {
            $model = new DlsAiAuthorizeduser();
        }

        $model->aiau_uuid = $id;

        /* map array to field send by form */
        $fieldmap = [
            "nama_individu_dibenarkan" => "aiau_name",
            "ic_individu_dibenarkan" => "aiau_ic",
            "kod_notel_dibenarkan" => "aiau_notelcode",
            "notel_dibenarkan" => "aiau_notel",
            "emel_dibenarkan" => "aiau_email",
            "jawatan_dibenarkan" => "aiau_designation",
        ];

        /* loop trough each map */
        foreach ($formdata as $data) {
            if (isset($fieldmap[$data->name])) {
                $model->{$fieldmap[$data->name]} = $data->value;
            }
        }


        if ($model->save()) {
            $result['DATE'] = date('Y-m-d H:i:s');
            $result['STATUS'] = "OK";
            $result['UUID'] = $id;
            $result['ID'] = $model->aiau_id;
            return $this->asJson($result);
        } else {
            $result['DATE'] = date('Y-m-d H:i:s');
            $result['STATUS'] = "ERROR";
            $result['MESSAGE'] = $model->errors;
            return $this->asJson($result);
        }
    }

    public function actionDeleteDirector($id) {
        /* model */
        $director = DlsAiDirectorowner::findOne($id);
        $director->delete();

        return $this->asJson(['STATUS' => 'OK', 'DATE' => date('Y-m-d H:i:s'), 'ID' => $id]);
    }

    public function actionDeleteOfficer($id) {
        /* model */
        $director = DlsAiAuthorizeduser::findOne($id);
        $director->delete();

        return $this->asJson(['STATUS' => 'OK', 'DATE' => date('Y-m-d H:i:s'), 'ID' => $id]);
    }

    public function actionGetFormData(string $uuid) {
        /* application */
        $model = DlsAiApplication::find()->where(['aiap_uuid' => $uuid])->one();

        if (!empty($model)) {
            /* status */
            $appstat = AiAppstatus::find()->where(['aias_applicationid' => $model->aiap_id, 'aias_activeind' => '1'])->one();

            if (!empty($appstat)) {
                if ($appstat->aias_statuscode != 'N' && $appstat->aias_statuscode != 'U') {
                    $result['STATUS'] = "DATA_PROCESS_EXCEPTION";
                    $result['MESSAGE'] = "Data anda sudah pun diproses. Anda akan memulakan pengisian permohonan yang baru";

                    $this->asJson($result);
                }
            }

            /* flip array */
            $fieldmap = array_flip($this->fieldmap());

            /* date */
            $datefield = [
                'aiap_datecommencement',
                'aiap_declarationdate'
            ];

            $i = 0;
            foreach ($model->attributes as $mkey => $mval) {


                if (isset($fieldmap[$mkey]))
                    $result['APPDATA'][$i]['fieldname'] = $fieldmap[$mkey];

                $result['APPDATA'][$i]['dbcolname'] = $mkey;
                $result['APPDATA'][$i]['value'] = $mval;

                if (in_array($mkey, $datefield)) {
                    // $myDateTime = \DateTime::createFromFormat('d/m/Y', '22/02/2019');
                    $datetime = new \DateTime($mval);

                    if (!$datetime == false) {
                        $result['APPDATA'][$i]['value'] = $datetime->format('d/m/Y');
                    }
                }

                $i++;
            }

            /* application id */
            $hashids = new Hashids(Yii::$app->params['urlidcryptokey'], 6);
            $result['APPID'] = $hashids->encode($model->aiap_id);
            $result['ID'] = $model->aiap_id;

            //debug
            // $result['APPIDDECODE'] = $hashids->decode($result['APPID']);
            if (!empty($appstat)) {
                $result['APPSTATUS'] = $appstat->aias_statuscode;
            } else {
                $result['APPSTATUS'] = null;
            }

            $result['STATUS'] = "OK";
        } else {
            $result['STATUS'] = "NULL_RECORD";
            $result['MESSAGE'] = "NO DATA FOUND FOR APPLICATION ";
        }

        $result['DATE'] = date('Y-m-d H:i:s');
        $result['UUID'] = $uuid;

        return $this->asJson($result);
    }

    public function actionGetDirectorData(string $uuid) {

        /* model */
        $director = DlsAiDirectorowner::find()->where(['aiad_uuid' => $uuid])->all();

        if (!empty($director)) {
            foreach ($director as $dkey) {
                /* change date format */
                $appointdate = new \DateTime($dkey->aiad_appoinmentdate);
                $dkey->aiad_appoinmentdate = $appointdate->format('d/m/Y');

                /* put result into array */
                $result['DIRECTOR'][] = $dkey->attributes;
            }

            $result['STATUS'] = "OK";
        } else {
            $result['STATUS'] = "NULL_RECORD";
            $result['MESSAGE'] = "NO DATA FOUND FOR DIRECTOR";
        }

        return $this->asJson($result);
    }

    public function actionGetAuthorizedOfficerData(string $uuid) {

        /* model */
        $officer = DlsAiAuthorizeduser::find()->where(['aiau_uuid' => $uuid])->all();

        if (!empty($officer)) {
            foreach ($officer as $dkey) {
                $result['OFFICER'][] = $dkey->attributes;
            }

            $result['STATUS'] = "OK";
        } else {
            $result['STATUS'] = "NULL_RECORD";
            $result['MESSAGE'] = "NO DATA FOUND FOR DIRECTOR";
        }

        return $this->asJson($result);
    }

    public function actionGetAppstatus(string $appid) {

        $result = [];

        if (!empty($appid)) {

            /* decode */
            $hashids = new Hashids(Yii::$app->params['urlidcryptokey'], 6);
            $id = $hashids->decode($appid);

            $appstat = AiAppstatus::find()->where(['aias_applicationid' => $id, 'aias_activeind' => '1'])->one();
            $appdata = DlsAiApplication::findOne($id);

            if (!empty($appstat)) {
                $result['UUID'] = $appdata->aiap_uuid;
                $result['STATUS'] = 'OK';
                $result['APPSTAT'] = $appstat->attributes;
            } else {

                if (!empty($appdata)) {
                    $result['UUID'] = $appdata->aiap_uuid;
                    $result['STATUS'] = 'OK';
                    $result['APPSTAT'] = ['aias_statuscode' => 'N'];
                } else {
                    $result['STATUS'] = 'NULL_RECORD';
                    $result['MESSAGE'] = 'NO DATA FOR THIS APPID';
                }
            }
        }

        return $this->asJson($result);
    }

    public function actionGetDocUploadData(string $uuid) {

        /* model */
        $director = DlsAiDocupload::find()->where(['aidu_uuid' => $uuid])->all();

        if (!empty($director)) {
            foreach ($director as $dkey) {
                $result['DOCUPLOAD'][] = $dkey->attributes;
            }

            $result['STATUS'] = "OK";
        } else {
            $result['STATUS'] = "NULL_RECORD";
            $result['MESSAGE'] = "NO DATA FOUND FOR UPLOAD";
        }

        return $this->asJson($result);
    }

    public function actionGetAppidbyid($id) {
        $hashids = new Hashids(Yii::$app->params['urlidcryptokey'], 6);
        return $hashids->encode($id);
    }

    public function actionStub() {

        $staff = Staff::find()->joinWith('roles')->where(['role_code' => 'SUP'])->all();
        $staffemail = [];

        foreach ($staff as $staffkey) {
            $staffemail[] = $staffkey->user->email;
        }

        var_dump($staffemail);
    }

}