<?php

namespace app\components;

use Yii;
use yii\helpers\Html;
use yii\base\Component;
use yii\base\Exception;
use mPDF;
use kartik\mpdf\Pdf;

class ResidenzComponent extends Component {

    public function getManagementUsers() {
        $session = Yii::$app->session;

        $role = \common\models\Role::find()
                ->where("condo_id = " . $session['currentCondoId'] . " AND name = '" . Yii::$app->params['role.name.management'] . "'")
                ->one();

        $users = \common\models\User::find()->joinWith('userRoles')->andWhere('user_role.role_id=' . $role->id)->andWhere('user_role.status= "A"')->all();

        return $users;
    }

    public function getManagementUsersForCondo($condoId) {
        $role = \common\models\Role::find()
                ->where("condo_id = " . $condoId . " AND name = '" . Yii::$app->params['role.name.management'] . "'")
                ->one();

        $users = \common\models\User::find()->joinWith('userRoles')->andWhere('user_role.role_id=' . $role->id)->andWhere('user_role.status= "A"')->all();

        return $users;
    }

    public function getDefaultManagementUser() {
        $session = Yii::$app->session;

        $role = \common\models\Role::find()
                ->where("condo_id = " . $session['currentCondoId'] . " AND name = '" . Yii::$app->params['role.name.default.management'] . "'")
                ->one();

        $users = \common\models\User::find()->joinWith('userRoles')->andWhere('user_role.role_id=' . $role->id)->one();

        return $users;
    }

    public function getSupportUsers() {
        $session = Yii::$app->session;

        $role = \common\models\Role::find()
                ->where("name = '" . Yii::$app->params['role.name.support'] . "'")
                ->one();

        $users = \common\models\User::find()->joinWith('userRoles')->andWhere('user_role.role_id=' . $role->id)->all();

        return $users;
    }

    public function getAdministrators() {
        $session = Yii::$app->session;

        $role = \common\models\Role::find()
                ->where("name = '" . Yii::$app->params['role.name.administrator'] . "'")
                ->one();

        $users = \common\models\User::find()->joinWith('userRoles')->andWhere('user_role.role_id=' . $role->id)->all();

        return $users;
    }

    public function sendEmail($userId, $emailTo, $emailTemplateCode, $data = null, $subject = null) {
        $session = Yii::$app->session;

        $condo = \common\models\Condo::findOne($session['currentCondoId']);
        $temp = $condo->cust_email;
        $siteUrl = Yii::$app->params['siteUrl'];

        $user = \common\models\User::findOne($userId);

        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['condo_id' => $session['currentCondoId'], 'code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        /*$emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();*/
        if ($temp == 'Y') {
            $emailTemplate = \common\models\EmailTemplate::find()
                    ->where(['condo_id' => $session['currentCondoId'], 'code' => $emailTemplateCode])
                    ->one();
        } else {
            $emailTemplate = \common\models\EmailTemplateGlobal::find()
                    ->where(['code' => $emailTemplateCode])
                    ->one();
        }

        try {
            if ($subject) {
                $emailSubject = $subject;
            } else {
                $emailSubject = $emailTemplate->subject;
            }

            $emailBody = $emailTemplate->template;

            if ($data != null) {
                $data2 = \yii\helpers\Json::decode($data);
            }
            $verification_id = isset($data2['verification_id']) ? $data2['verification_id'] : null;
            $vccode = isset($data2['vccode']) ? $data2['vccode'] : null;
            $password = isset($data2['password']) ? $data2['password'] : null;

            $message = isset($data2['message']) ? $data2['message'] : null;
            $booking_no = isset($data2['booking_no']) ? $data2['booking_no'] : null;
            $facility_name = isset($data2['facility_name']) ? $data2['facility_name'] : null;
            $submission_date = isset($data2['submission_date']) ? $data2['submission_date'] : null;
            $booking_date = isset($data2['booking_date']) ? $data2['booking_date'] : null;
            $booking_period = isset($data2['booking_period']) ? $data2['booking_period'] : null;
            $deposit = isset($data2['deposit']) ? "RM " . $data2['deposit'] : null;
            $rental = isset($data2['rental']) ? "RM " . $data2['rental'] : null;
            $total = isset($data2['total']) ? "RM " . $data2['total'] : null;
            $amount = isset($data2['molpay_amount']) ? number_format($data2['molpay_amount'],2) : null;

            $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
            $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
            $owner_or_tenant = isset($data2['owner_or_tenant']) ? $data2['owner_or_tenant'] : null;

            $renovation_no = isset($data2['renovation_no']) ? $data2['renovation_no'] : null;
            $start_date = isset($data2['start_date']) ? $data2['start_date'] : null;
            $end_date = isset($data2['end_date']) ? $data2['end_date'] : null;

            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);

            $emailBody = str_replace('{name}', $user->username, $emailBody);
            $emailBody = str_replace('{email}', $user->email, $emailBody);
            $emailBody = str_replace('{password}', $password, $emailBody);
            $emailBody = str_replace('{verification_id}', $verification_id, $emailBody);
            $emailBody = str_replace('{vccode}', $vccode, $emailBody);
            $emailBody = str_replace('{site_url}', "https://" . $siteUrl, $emailBody);

            $emailBody = str_replace('{message}', $message, $emailBody);
            $emailBody = str_replace('{booking_no}', $booking_no, $emailBody);
            $emailBody = str_replace('{facility_name}', $facility_name, $emailBody);
            $emailBody = str_replace('{submission_date}', $submission_date, $emailBody);
            $emailBody = str_replace('{booking_date}', $booking_date, $emailBody);
            $emailBody = str_replace('{booking_period}', $booking_period, $emailBody);
            $emailBody = str_replace('{deposit}', $deposit, $emailBody);
            $emailBody = str_replace('{rental}', $rental, $emailBody);
            $emailBody = str_replace('{total}', $total, $emailBody);
            $emailBody = str_replace('{paid}', $amount, $emailBody);
            $emailBody = str_replace('{renovation_no}', $renovation_no, $emailBody);
            $emailBody = str_replace('{start_date}', $start_date, $emailBody);
            $emailBody = str_replace('{end_date}', $end_date, $emailBody);

            if ($condo_id) {
                $condo = \common\models\Condo::findOne($condo_id);
                $condoLogo = "<img src='https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo) . "'>";
                $condoLogoUrl = "https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo);
                if($condo->id == 16){
                    $condoUrl = $condo->url;
                }else{
                    $condoUrl = "https://" . $condo->url;
                }
                $emailBody = str_replace('{condo_name}', $condo->name, $emailBody);
                $emailBody = str_replace('{condo_logo}', $condoLogo, $emailBody);
                $emailBody = str_replace('{condo_logo_url}', $condoLogoUrl, $emailBody);
                $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);

                $emailSubject = str_replace('{condo_name}', $condo->name, $emailSubject);
                $emailSubject = str_replace('{condo_url}', $condoUrl, $emailSubject);
            }

            if ($condo_unit_id) {
                $condoUnit = \common\models\CondoUnit::findOne($condo_unit_id);
                $emailBody = str_replace('{condo_unit_house_no}', $condoUnit->house_no, $emailBody);
            }

            $emailBody = str_replace('{owner/tenant}', $owner_or_tenant, $emailBody);
            if (!empty($condo->name)){
                $sender_name = \Yii::$app->name.' [' .$condo->name. ']';
            } else {
                $sender_name = \Yii::$app->name;
                //$sender_name = "((".\Yii::$app->name.$condo->name."l))";
            }

             Yii::$app->mailer->compose()
                    ->setTo($emailTo)
                    //->setFrom([\Yii::$app->params['adminIresidenzMail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom([\Yii::$app->params['adminIresidenzMail'] => $sender_name])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->send();


            if (Yii::$app->user->isGuest) {
                $connection = \Yii::$app->db;
                $connection->createCommand()->insert('email_queue', [
                    //'email_template_id' => $emailTemplate->id,
                    //Change to Global
                    'email_template_global_id' => $emailTemplate->id,
                    'user_id' => $user->id,
                    'name' => $user->username,
                    'email' => $emailTo,
                    'data' => $data,
                    'status' => 'C',
                    'created_by' => 0,
                    'updated_by' => 0,
                    'created_datetime' => new \yii\db\Expression('NOW()'),
                    'updated_datetime' => new \yii\db\Expression('NOW()'),
                ])->execute();
            } else {
                $emailQueue = new \common\models\EmailQueue();
                //$emailQueue->email_template_id = $emailTemplate->id;
                //Change to Global
                $emailQueue->email_template_global_id = $emailTemplate->id;
                $emailQueue->user_id = $user->id;
                $emailQueue->name = $user->username;
                $emailQueue->email = $emailTo;
                if ($data != null) {
                    $emailQueue->data = $data;
                }
                $emailQueue->status = 'C';
                $emailQueue->save();
            }

            return true;
        } catch (Exception $ex) {
            if (Yii::$app->user->isGuest) {
                $connection = \Yii::$app->db;
                $connection->createCommand()->insert('email_queue', [
                    //'email_template_id' => $emailTemplate->id,
                    //Change to Global
                    'email_template_global_id' => $emailTemplate->id,
                    'user_id' => $user->id,
                    'name' => $user->username,
                    'email' => $emailTo,
                    'data' => $data,
                    'status' => 'P',
                    'created_by' => 0,
                    'updated_by' => 0,
                    'created_datetime' => new \yii\db\Expression('NOW()'),
                    'updated_datetime' => new \yii\db\Expression('NOW()'),
                ])->execute();
            } else {
                $emailQueue = new \common\models\EmailQueue();
                //$emailQueue->email_template_id = $emailTemplate->id;
                //Change to Global
                $emailQueue->email_template_global_id = $emailTemplate->id;
                $emailQueue->user_id = $user->id;
                $emailQueue->name = $user->username;
                $emailQueue->email = $emailTo;
                if ($data != null) {
                    $emailQueue->data = $data;
                }
                $emailQueue->status = 'P';
                $emailQueue->save();
            }

            return false;
        }
    }

    public function sendEmailwithoutcondo($userId, $emailTo, $emailTemplateCode, $data = null, $subject = null, $vcondoid = null) {
        //echo $userId.'-'.$emailTo.'-'.$emailTemplateCode;
        //die();
        $session = Yii::$app->session;
        $condo = \common\models\Condo::findOne($vcondoid);
        $temp = $condo->cust_email;
        $siteUrl = Yii::$app->params['siteUrl'];

        $user = \common\models\User::findOne($userId);

        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['condo_id' => $session['currentCondoId'], 'code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        /*$emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();*/
        /*if ($temp == 'Y') {
            $emailTemplate = \common\models\EmailTemplate::find()
                    ->where(['condo_id' => $session['currentCondoId'], 'code' => $emailTemplateCode])
                    ->one();
        } else {
            $emailTemplate = \common\models\EmailTemplateGlobal::find()
                    ->where(['code' => $emailTemplateCode])
                    ->one();
        }*/
        $emailTemplate = \common\models\EmailTemplate::find()
                    ->where(['condo_id' => $vcondoid, 'code' => $emailTemplateCode])
                    ->one();

        try {
            if ($subject) {
                $emailSubject = $subject;
            } else {
                $emailSubject = $emailTemplate->subject;
            }

            $emailBody = $emailTemplate->template;

            if ($data != null) {
                $data2 = \yii\helpers\Json::decode($data);
            }
            $verification_id = isset($data2['verification_id']) ? $data2['verification_id'] : null;
            $vccode = isset($data2['vccode']) ? $data2['vccode'] : null;
            $password = isset($data2['password']) ? $data2['password'] : null;

            $message = isset($data2['message']) ? $data2['message'] : null;
            $booking_no = isset($data2['booking_no']) ? $data2['booking_no'] : null;
            $facility_name = isset($data2['facility_name']) ? $data2['facility_name'] : null;
            $submission_date = isset($data2['submission_date']) ? $data2['submission_date'] : null;
            $booking_date = isset($data2['booking_date']) ? $data2['booking_date'] : null;
            $booking_period = isset($data2['booking_period']) ? $data2['booking_period'] : null;
            $deposit = isset($data2['deposit']) ? "RM " . $data2['deposit'] : null;
            $rental = isset($data2['rental']) ? "RM " . $data2['rental'] : null;
            $total = isset($data2['total']) ? "RM " . $data2['total'] : null;
            $amount = isset($data2['molpay_amount']) ? $data2['molpay_amount'] : null;

            $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
            $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
            $owner_or_tenant = isset($data2['owner_or_tenant']) ? $data2['owner_or_tenant'] : null;

            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);

            $emailBody = str_replace('{name}', $user->username, $emailBody);
            $emailBody = str_replace('{email}', $user->email, $emailBody);
            $emailBody = str_replace('{password}', $password, $emailBody);
            $emailBody = str_replace('{verification_id}', $verification_id, $emailBody);
            $emailBody = str_replace('{vccode}', $vccode, $emailBody);
            $emailBody = str_replace('{site_url}', "https://" . $siteUrl, $emailBody);

            $emailBody = str_replace('{message}', $message, $emailBody);
            $emailBody = str_replace('{booking_no}', $booking_no, $emailBody);
            $emailBody = str_replace('{facility_name}', $facility_name, $emailBody);
            $emailBody = str_replace('{submission_date}', $submission_date, $emailBody);
            $emailBody = str_replace('{booking_date}', $booking_date, $emailBody);
            $emailBody = str_replace('{booking_period}', $booking_period, $emailBody);
            $emailBody = str_replace('{deposit}', $deposit, $emailBody);
            $emailBody = str_replace('{rental}', $rental, $emailBody);
            $emailBody = str_replace('{total}', $total, $emailBody);
            $emailBody = str_replace('{paid}', $amount, $emailBody);

            if ($condo_id) {
                $condo = \common\models\Condo::findOne($condo_id);
                $condoLogo = "<img src='https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo) . "'>";
                $condoLogoUrl = "https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo);
                if($condo->id == 16){
                    $condoUrl = $condo->url;
                }else{
                    $condoUrl = "https://" . $condo->url;
                }
                $emailBody = str_replace('{condo_name}', $condo->name, $emailBody);
                $emailBody = str_replace('{condo_logo}', $condoLogo, $emailBody);
                $emailBody = str_replace('{condo_logo_url}', $condoLogoUrl, $emailBody);
                $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);

                $emailSubject = str_replace('{condo_name}', $condo->name, $emailSubject);
                $emailSubject = str_replace('{condo_url}', $condoUrl, $emailSubject);
            }

            if ($condo_unit_id) {
                $condoUnit = \common\models\CondoUnit::findOne($condo_unit_id);
                $emailBody = str_replace('{condo_unit_house_no}', $condoUnit->house_no, $emailBody);
            }

            $emailBody = str_replace('{owner/tenant}', $owner_or_tenant, $emailBody);
            if (!empty($condo->name)){
                $sender_name = \Yii::$app->name.' [' .$condo->name. ']';
            } else {
                $sender_name = \Yii::$app->name;
            }

            Yii::$app->mailer->compose()
                    ->setTo($emailTo)
                    //->setFrom([\Yii::$app->params['adminIresidenzMail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom([\Yii::$app->params['adminIresidenzMail'] => $sender_name])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->send();


            if (Yii::$app->user->isGuest) {
                $connection = \Yii::$app->db;
                $connection->createCommand()->insert('email_queue', [
                    //'email_template_id' => $emailTemplate->id,
                    //Change to Global
                    'email_template_global_id' => $emailTemplate->id,
                    'user_id' => $user->id,
                    'name' => $user->username,
                    'email' => $emailTo,
                    'data' => $data,
                    'status' => 'C',
                    'created_by' => 0,
                    'updated_by' => 0,
                    'created_datetime' => new \yii\db\Expression('NOW()'),
                    'updated_datetime' => new \yii\db\Expression('NOW()'),
                ])->execute();
            } else {
                $emailQueue = new \common\models\EmailQueue();
                //$emailQueue->email_template_id = $emailTemplate->id;
                //Change to Global
                $emailQueue->email_template_global_id = $emailTemplate->id;
                $emailQueue->user_id = $user->id;
                $emailQueue->name = $user->username;
                $emailQueue->email = $emailTo;
                if ($data != null) {
                    $emailQueue->data = $data;
                }
                $emailQueue->status = 'C';
                $emailQueue->save();
            }

            return true;
        } catch (Exception $ex) {
            if (Yii::$app->user->isGuest) {
                $connection = \Yii::$app->db;
                $connection->createCommand()->insert('email_queue', [
                    //'email_template_id' => $emailTemplate->id,
                    //Change to Global
                    'email_template_global_id' => $emailTemplate->id,
                    'user_id' => $user->id,
                    'name' => $user->username,
                    'email' => $emailTo,
                    'data' => $data,
                    'status' => 'P',
                    'created_by' => 0,
                    'updated_by' => 0,
                    'created_datetime' => new \yii\db\Expression('NOW()'),
                    'updated_datetime' => new \yii\db\Expression('NOW()'),
                ])->execute();
            } else {
                $emailQueue = new \common\models\EmailQueue();
                //$emailQueue->email_template_id = $emailTemplate->id;
                //Change to Global
                $emailQueue->email_template_global_id = $emailTemplate->id;
                $emailQueue->user_id = $user->id;
                $emailQueue->name = $user->username;
                $emailQueue->email = $emailTo;
                if ($data != null) {
                    $emailQueue->data = $data;
                }
                $emailQueue->status = 'P';
                $emailQueue->save();
            }

            return false;
        }
    }

    public function sendEmailverify($userId, $emailTo, $emailTemplateCode, $data = null, $subject = null,$vcondoid = null) {
        $session = Yii::$app->session;

        $condo = \common\models\Condo::findOne($vcondoid);
        $temp = $condo->cust_email;
        $siteUrl = Yii::$app->params['siteUrl'];

        $user = \common\models\User::findOne($userId);


        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        try {
            if ($subject) {
                $emailSubject = $subject;
            } else {
                $emailSubject = $emailTemplate->subject;
            }

            $emailBody = $emailTemplate->template;

            if ($data != null) {
                $data2 = \yii\helpers\Json::decode($data);
            }
            $verification_id = isset($data2['verification_id']) ? $data2['verification_id'] : null;
            $vccode = isset($data2['vccode']) ? $data2['vccode'] : null;
            $password = isset($data2['password']) ? $data2['password'] : null;

            $message = isset($data2['message']) ? $data2['message'] : null;
            $booking_no = isset($data2['booking_no']) ? $data2['booking_no'] : null;
            $facility_name = isset($data2['facility_name']) ? $data2['facility_name'] : null;
            $submission_date = isset($data2['submission_date']) ? $data2['submission_date'] : null;
            $booking_date = isset($data2['booking_date']) ? $data2['booking_date'] : null;
            $booking_period = isset($data2['booking_period']) ? $data2['booking_period'] : null;
            $deposit = isset($data2['deposit']) ? "RM " . $data2['deposit'] : null;
            $rental = isset($data2['rental']) ? "RM " . $data2['rental'] : null;
            $total = isset($data2['total']) ? "RM " . $data2['total'] : null;
            $amount = isset($data2['molpay_amount']) ? $data2['molpay_amount'] : null;

            $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
            $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
            $owner_or_tenant = isset($data2['owner_or_tenant']) ? $data2['owner_or_tenant'] : null;

            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);

            $emailBody = str_replace('{name}', $user->username, $emailBody);
            $emailBody = str_replace('{email}', $user->email, $emailBody);
            $emailBody = str_replace('{password}', $password, $emailBody);
            $emailBody = str_replace('{verification_id}', $verification_id, $emailBody);
            $emailBody = str_replace('{vccode}', $vccode, $emailBody);
            $emailBody = str_replace('{site_url}', "https://" . $siteUrl, $emailBody);

            $emailBody = str_replace('{message}', $message, $emailBody);
            $emailBody = str_replace('{booking_no}', $booking_no, $emailBody);
            $emailBody = str_replace('{facility_name}', $facility_name, $emailBody);
            $emailBody = str_replace('{submission_date}', $submission_date, $emailBody);
            $emailBody = str_replace('{booking_date}', $booking_date, $emailBody);
            $emailBody = str_replace('{booking_period}', $booking_period, $emailBody);
            $emailBody = str_replace('{deposit}', $deposit, $emailBody);
            $emailBody = str_replace('{rental}', $rental, $emailBody);
            $emailBody = str_replace('{total}', $total, $emailBody);
            $emailBody = str_replace('{paid}', $amount, $emailBody);

            if ($condo_id) {
                $condo = \common\models\Condo::findOne($condo_id);
                $condoLogo = "<img src='https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo) . "'>";
                $condoLogoUrl = "https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo);
                if($condo->id == 16){
                    $condoUrl = $condo->url;
                }else{
                    $condoUrl = "https://" . $condo->url;
                }
                $emailBody = str_replace('{condo_name}', $condo->name, $emailBody);
                $emailBody = str_replace('{condo_logo}', $condoLogo, $emailBody);
                $emailBody = str_replace('{condo_logo_url}', $condoLogoUrl, $emailBody);
                $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);

                $emailSubject = str_replace('{condo_name}', $condo->name, $emailSubject);
                $emailSubject = str_replace('{condo_url}', $condoUrl, $emailSubject);
            }

            if ($condo_unit_id) {
                $condoUnit = \common\models\CondoUnit::findOne($condo_unit_id);
                $emailBody = str_replace('{condo_unit_house_no}', $condoUnit->house_no, $emailBody);
            }

            $emailBody = str_replace('{owner/tenant}', $owner_or_tenant, $emailBody);
            if (!empty($condo->name)){
                $sender_name = \Yii::$app->name.' [' .$condo->name. ']';
            } else {
                $sender_name = \Yii::$app->name;
            }

            Yii::$app->mailer->compose()
                    ->setTo($emailTo)
                    //->setFrom([\Yii::$app->params['adminIresidenzMail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom([\Yii::$app->params['adminIresidenzMail'] => $sender_name])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->send();


            if (Yii::$app->user->isGuest) {
                $connection = \Yii::$app->db;
                $connection->createCommand()->insert('email_queue', [
                    //'email_template_id' => $emailTemplate->id,
                    //Change to Global
                    'email_template_global_id' => $emailTemplate->id,
                    'user_id' => $user->id,
                    'name' => $user->username,
                    'email' => $emailTo,
                    'data' => $data,
                    'status' => 'C',
                    'created_by' => 0,
                    'updated_by' => 0,
                    'created_datetime' => new \yii\db\Expression('NOW()'),
                    'updated_datetime' => new \yii\db\Expression('NOW()'),
                ])->execute();
            } else {
                $emailQueue = new \common\models\EmailQueue();
                //$emailQueue->email_template_id = $emailTemplate->id;
                //Change to Global
                $emailQueue->email_template_global_id = $emailTemplate->id;
                $emailQueue->user_id = $user->id;
                $emailQueue->name = $user->username;
                $emailQueue->email = $emailTo;
                if ($data != null) {
                    $emailQueue->data = $data;
                }
                $emailQueue->status = 'C';
                $emailQueue->save();
            }

            return true;
        } catch (Exception $ex) {
            if (Yii::$app->user->isGuest) {
                $connection = \Yii::$app->db;
                $connection->createCommand()->insert('email_queue', [
                    //'email_template_id' => $emailTemplate->id,
                    //Change to Global
                    'email_template_global_id' => $emailTemplate->id,
                    'user_id' => $user->id,
                    'name' => $user->username,
                    'email' => $emailTo,
                    'data' => $data,
                    'status' => 'P',
                    'created_by' => 0,
                    'updated_by' => 0,
                    'created_datetime' => new \yii\db\Expression('NOW()'),
                    'updated_datetime' => new \yii\db\Expression('NOW()'),
                ])->execute();
            } else {
                $emailQueue = new \common\models\EmailQueue();
                //$emailQueue->email_template_id = $emailTemplate->id;
                //Change to Global
                $emailQueue->email_template_global_id = $emailTemplate->id;
                $emailQueue->user_id = $user->id;
                $emailQueue->name = $user->username;
                $emailQueue->email = $emailTo;
                if ($data != null) {
                    $emailQueue->data = $data;
                }
                $emailQueue->status = 'P';
                $emailQueue->save();
            }

            return false;
        }
    }

    /*
      public function importFromResidenceUpload() {
      $session = Yii::$app->session;
      $smstenant = '';

      $owners = \common\models\ResidenceUpload::find()
      ->where(['condo_id' => $session['currentCondoId'], 'status' => 'P', 'residence_type' => 'O'])
      ->orderBy('id ASC')
      ->all();

      $condo = \common\models\Condo::findOne($session['currentCondoId']);

      foreach ($owners as $owner) {

      $condoUnit = new \common\models\CondoUnit();
      $condoUnit->condo_id = $session['currentCondoId'];
      $condoUnit->house_no = $owner->house_no;
      $condoUnit->block = $owner->block;
      $condoUnit->level = $owner->level;
      $condoUnit->unit = $owner->unit;
      $condoUnit->status = "A";
      $countUnits = \common\models\CondoUnit::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $owner->house_no . "' AND block = '" . $owner->block . "' AND level = '" . $owner->level . "' AND unit = '" . $owner->unit . "'")
      ->count();

      if ($countUnits == 0) {
      $condoUnit->save();
      } else {
      $condoUnit = \common\models\CondoUnit::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $owner->house_no . "' AND block = '" . $owner->block . "' AND level = '" . $owner->level . "' AND unit = '" . $owner->unit . "'")
      ->one();
      }

      $random_str = md5(uniqid(rand()));
      $generatedPassword = substr($random_str, 0, 6);

      $user = new \common\models\User();
      $user->username = $owner->name;
      $user->email = $owner->email;
      $user->mobile = $owner->mobile;
      $user->status = "A";
      $user->setPassword($generatedPassword);
      $user->password_generated = $generatedPassword;
      $user->generateAuthKey();
      $countUsers = \common\models\User::find()
      ->where("username = '" . $user->username . "' AND email = '" . $user->email . "'")
      ->count();

      if ($countUsers == 0) {
      $user->save(false);
      $userProfile = new \common\models\UserProfile();
      $userProfile->user_id = $user->id;
      //$userProfile->salutation = 'Mr.';
      $userProfile->salutation_id = 1;
      $userProfile->name = $user->username;
      $userProfile->save(false);
      } else {
      $user = \common\models\User::find()
      ->where("username = '" . $user->username . "' AND email = '" . $user->email . "'")
      ->one();
      }

      //get roleid
      $role = \common\models\Role::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND name = '" . Yii::$app->params['role.name.owner'] . "'")
      ->one();

      $userRole = new \common\models\UserRole();
      $userRole->user_id = $user->id;
      $userRole->role_id = $role->id;
      $userRole->condo_id = $session['currentCondoId'];
      $userRole->condo_unit_id = $condoUnit->id;
      $userRole->save();

      $userCondoUnit = new \common\models\UserCondoUnit();
      $userCondoUnit->user_id = $user->id;
      $userCondoUnit->owner_id = $user->id;
      $userCondoUnit->condo_unit_id = $condoUnit->id;
      $userCondoUnit->condo_id = $session['currentCondoId'];
      $userCondoUnit->residence_type = $owner->residence_type;
      $userCondoUnit->status = "A";
      $userCondoUnit->save();

      $residenceUpload = \common\models\ResidenceUpload::find()
      ->where("id = " . $owner->id)
      ->one();
      $residenceUpload->status = "C";
      $residenceUpload->save();

      $emailTemplate = \common\models\EmailTemplate::find()
      ->where(['condo_id' => $session['currentCondoId'], 'code' => Yii::$app->params['email.template.code.uploadcsv.send.password']])
      ->one();

      if ($countUsers == 0) {
      //$smsmsg = 'Dear Owner, pls b informed Bistari has launched its residents portal. Visit http://bistari.theresidenz.co, login info : ';
      $smsmsg = 'Dear Owner, pls b informed ' . $condo->name . ' has launched its residents portal. Visit http://' . $condo->subdomain . '.theresidenz.co, login info :' . $user->email . '';
      $smsowner = str_replace(' ', '%20', $smsmsg);
      $data = \yii\helpers\Json::encode(array(
      'password' => $generatedPassword,
      'mysms' => $smsowner,
      ));

      $emailQueue = new \common\models\EmailQueue();
      $emailQueue->email_template_id = $emailTemplate->id;
      $emailQueue->user_id = $user->id;
      $emailQueue->name = $user->username;
      $emailQueue->email = $user->email;
      $emailQueue->data = $data;
      $emailQueue->status = 'P';
      $emailQueue->mobile = $user->mobile;
      $emailQueue->save();

      //$returnedValue = Yii::$app->residenz->sendEmail($user->id, $user->email, Yii::$app->params['email.template.code.uploadcsv.send.password'], $data);
      }
      }


      $tenants = \common\models\ResidenceUpload::find()
      ->where(['condo_id' => $session['currentCondoId'], 'status' => 'P', 'residence_type' => 'T'])
      ->orderBy('id ASC')
      ->all();

      foreach ($tenants as $tenant) {

      $condoUnit = new \common\models\CondoUnit();
      $condoUnit->condo_id = $session['currentCondoId'];
      $condoUnit->house_no = $tenant->house_no;
      $condoUnit->block = $tenant->block;
      $condoUnit->level = $tenant->level;
      $condoUnit->unit = $tenant->unit;
      $condoUnit->status = "A";
      $countUnits = \common\models\CondoUnit::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $tenant->house_no . "' AND block = '" . $tenant->block . "' AND level = '" . $tenant->level . "' AND unit = '" . $tenant->unit . "'")
      ->count();

      if ($countUnits == 0) {
      $condoUnit->save();
      } else {
      $condoUnit = \common\models\CondoUnit::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $tenant->house_no . "' AND block = '" . $tenant->block . "' AND level = '" . $tenant->level . "' AND unit = '" . $tenant->unit . "'")
      ->one();
      }

      $random_str = md5(uniqid(rand()));
      $generatedPassword = substr($random_str, 0, 6);

      $user = new \common\models\User();
      $user->username = $tenant->name;
      $user->email = $tenant->email;
      $user->mobile = $tenant->mobile;
      $user->status = "A";
      $user->setPassword($generatedPassword);
      $user->password_generated = $generatedPassword;
      $user->generateAuthKey();
      $countUsers = \common\models\User::find()
      ->where("username = '" . $user->username . "' AND email = '" . $user->email . "'")
      ->count();

      if ($countUsers == 0) {
      $user->save(false);
      $userProfile = new \common\models\UserProfile();
      $userProfile->user_id = $user->id;
      //$userProfile->salutation = 'Mr.';
      $userProfile->salutation_id = 1;
      $userProfile->name = $user->username;
      $userProfile->save(false);
      } else {
      $user = \common\models\User::find()
      ->where("username = '" . $user->username . "' AND email = '" . $user->email . "'")
      ->one();
      }

      //get roleid
      $role = \common\models\Role::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND name = '" . Yii::$app->params['role.name.tenant'] . "'")
      ->one();

      $userRole = new \common\models\UserRole();
      $userRole->user_id = $user->id;
      $userRole->role_id = $role->id;
      $userRole->condo_id = $session['currentCondoId'];
      $userRole->condo_unit_id = $condoUnit->id;
      $userRole->save();

      //get condo unit owner
      $condoUnitTemp = \common\models\CondoUnit::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $condoUnit->house_no . "' AND block = '" . $condoUnit->block . "' AND level = '" . $condoUnit->level . "' AND unit = '" . $condoUnit->unit . "'")
      ->one();
      $userCondoUnitTemp = \common\models\UserCondoUnit::find()
      ->where("condo_id = " . $session['currentCondoId'] . " AND condo_unit_id = '" . $condoUnitTemp->id . "' AND residence_type = 'O' AND status = 'A'")
      ->one();

      $userCondoUnit = new \common\models\UserCondoUnit();
      $userCondoUnit->user_id = $user->id;
      $userCondoUnit->owner_id = $userCondoUnitTemp->owner_id;
      $userCondoUnit->condo_unit_id = $condoUnit->id;
      $userCondoUnit->condo_id = $session['currentCondoId'];
      $userCondoUnit->residence_type = $tenant->residence_type;
      $userCondoUnit->status = "A";
      $userCondoUnit->save();

      $residenceUpload = \common\models\ResidenceUpload::find()
      ->where("id = " . $tenant->id)
      ->one();
      $residenceUpload->status = "C";
      $residenceUpload->save();

      if ($countUsers == 0) {
      //$smsmsg2 = 'Dear Owner, pls b informed Bistari has launched its residents portal. Visit http://bistari.theresidenz.co, login info : ';
      $smsmsg2 = 'Dear Tenant, pls2 b informed ' . $condo->name . ' has launched its residents portal. Visit http://' . $condo->subdomain . '.theresidenz.co, login info :' . $user->email . '';
      $smstenant = str_replace(' ', '%20', $smsmsg2);
      $data = \yii\helpers\Json::encode(array(
      'password' => $generatedPassword,
      'mysms' => $smstenant,
      ));

      $returnedValue = Yii::$app->residenz->sendEmail($user->id, $user->email, Yii::$app->params['email.template.code.uploadcsv.send.password.mysms'], $data);
      //$returnedValue = Yii::$app->residenz->sendSms($user->id, $user->email, Yii::$app->params['email.template.code.uploadcsv.send.password'], $data);
      }
      }

      return true;
      }
     */

    public function importFromResidenceUpload() {
        $session = Yii::$app->session;
        $errorMessage = "";

        $prelaunchEmailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.prelaunch']])
                ->one();

        $welcomeEmailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.uploadcsv.send.password']])
                ->one();

        $welcomeEmailExistingUserTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.uploadcsv.welcome.existing.user']])
                ->one();

        $owners = \common\models\ResidenceUpload::find()
                ->where(['condo_id' => $session['currentCondoId'], 'status' => 'P', 'residence_type' => 'O'])
                ->orderBy('id ASC')
                ->all();

        foreach ($owners as $owner) {
            $condoUnit = \common\models\CondoUnit::find()
                    ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $owner->house_no . "'")
                    ->one();

            if(!empty($owner->auto_debit)){
                $auto_debit = $owner->auto_debit;
            }else{
                $auto_debit = '';
            }

            if(!empty($owner->nric)){
                $nric = $owner->nric;
            }else{
                $nric = '';
            }
            if(!empty($owner->address1)){
               $address1 = $owner->address1;
            }else{
               $address1 = '' ;
            }
            if(!empty($owner->address2)){
               $address2 = $owner->address2;
            }else{
               $address2 = '';
            }
            if(!empty($owner->others)){
               $others = $owner->others;
            }else{
               $others = '';
            }

            if ($condoUnit) { //unit exist
                $random_str = md5(uniqid(rand()));
                $generatedPassword = substr($random_str, 0, 6);

                $user = new \common\models\User();
                $user->username = $owner->name;
                $user->email = trim($owner->email);
                $user->mobile = $owner->mobile;
                $user->status = "A";
                $user->setPassword($generatedPassword);
                $user->password_generated = $generatedPassword;
                $user->generateAuthKey();

                $countUsers = \common\models\User::find()
                        ->where("email = '" . $user->email . "' AND email IS NOT NULL AND email != ''")
                        ->count();

                if (($countUsers == 0)) {
                    $user->save(false);
                    $userProfile = new \common\models\UserProfile();
                    $userProfile->user_id = $user->id;
                    $userProfile->salutation_id = 0;
                    $userProfile->name = $user->username;
                    $userProfile->nric = $nric;
                    $userProfile->residential_address = $address1;
                    $userProfile->mailing_address = $address2;
                    $userProfile->save(false);
                } else {
                    $user = \common\models\User::find()
                            ->where("email = '" . $user->email . "' AND email IS NOT NULL AND email != ''")
                            ->one();

                    $mycurrentprofile = \common\models\UserProfile::find()
                            ->where("user_id = " . $user->id . "")
                            ->one();
                    if(empty($mycurrentprofile->nric)){
                        $nric = $nric;
                    }else{
                        $nric = $mycurrentprofile->nric;
                    }

                    if(empty($mycurrentprofile->residential_address)){
                        $address1 = $address1;
                    }else{
                        $address1 = $mycurrentprofile->residential_address;
                    }

                    if(empty($mycurrentprofile->mailing_address)){
                        $address2 = $address2;
                    }else{
                        $address2 = $mycurrentprofile->mailing_address;
                    }

                    $updateprofile = \common\models\UserProfile::updateAll(['nric' => $nric, 'residential_address' => $address1, 'mailing_address' => $address2], 'user_id = '.$user->id);
                }

                $countUserCondoUnit = \common\models\UserCondoUnit::find()
                        ->where("user_id = " . $user->id . " AND condo_unit_id = " . $condoUnit->id . " AND status = 'A' and condo_id = " . $session['currentCondoId'] . " AND residence_type = '" . $owner->residence_type . "'")
                        ->count();

                if ($countUserCondoUnit == 0) { //user not tied into unit yet
                    //get roleid
                    $role = \common\models\Role::find()
                            ->where("condo_id = " . $session['currentCondoId'] . " AND name = '" . Yii::$app->params['role.name.owner'] . "'")
                            ->one();

                    $userRole = new \common\models\UserRole();
                    $userRole->user_id = $user->id;
                    $userRole->role_id = $role->id;
                    $userRole->condo_id = $session['currentCondoId'];
                    $userRole->condo_unit_id = $condoUnit->id;
                    $userRole->save();

                    $userCondoUnit = new \common\models\UserCondoUnit();
                    $userCondoUnit->user_id = $user->id;
                    $userCondoUnit->owner_id = $user->id;
                    $userCondoUnit->condo_unit_id = $condoUnit->id;
                    $userCondoUnit->condo_id = $session['currentCondoId'];
                    $userCondoUnit->residence_type = $owner->residence_type;
                    $userCondoUnit->auto_debit = $auto_debit;
                    $userCondoUnit->status = "A";
                    $userCondoUnit->save();

                    $residenceUpload = \common\models\ResidenceUpload::find()
                            ->where("id = " . $owner->id)
                            ->one();
                    $residenceUpload->status = "C";
                    $residenceUpload->save();

                    $data = \yii\helpers\Json::encode(array(
                                'condo_id' => $session['currentCondoId'],
                                'condo_unit_id' => $condoUnit->id,
                    ));

                    //send prelaunch email
                    Yii::$app->residenz->sendPrelaunchEmail($user->id, $user->username, $user->email, $session['currentCondoId'], $prelaunchEmailTemplate->id, $data);

                    //send welcome email 2 days after today
                    $next2Days = new \DateTime('now');
                    $next2Days->add(new \DateInterval('P1D'));

                    if ($countUsers == 0) {
                        $data = \yii\helpers\Json::encode(array(
                                    'password' => $generatedPassword,
                                    'condo_id' => $session['currentCondoId'],
                                    'condo_unit_id' => $condoUnit->id,
                        ));

                        $emailQueue = new \common\models\EmailQueue();
                        $emailQueue->email_template_global_id = $welcomeEmailTemplate->id;
                        $emailQueue->user_id = $user->id;
                        $emailQueue->name = $user->username;
                        $emailQueue->email = $user->email;
                        $emailQueue->data = $data;
                        $emailQueue->status = 'P';
                        $emailQueue->date_to_send = $next2Days->format('Y-m-d');
                        $emailQueue->save();

                        $user->password_sent_status = "Y";
                        $user->save(false);
                    } else {
                        //user already exist thus we send welcome email for existing user
                        //use $data above
                        //$data = \yii\helpers\Json::encode(array(
                        //            'condo_id' => $session['currentCondoId'],
                        //            'condo_unit_id' => $condoUnit->id,
                        //));

                        $emailQueue = new \common\models\EmailQueue();
                        $emailQueue->email_template_global_id = $welcomeEmailExistingUserTemplate->id;
                        $emailQueue->user_id = $user->id;
                        $emailQueue->name = $user->username;
                        $emailQueue->email = $user->email;
                        $emailQueue->data = $data;
                        $emailQueue->status = 'P';
                        $emailQueue->date_to_send = $next2Days->format('Y-m-d');
                        $emailQueue->save();
                    }
                } else {
                    $errorMessage = $errorMessage . "Unit " . $owner->house_no . " already activated to:" . $owner->name . "<BR>";
                    $residenceUpload = \common\models\ResidenceUpload::find()
                            ->where("id = " . $owner->id)
                            ->one();
                    $residenceUpload->status = "F";
                    $residenceUpload->save();
                }
            } else {
                $errorMessage = $errorMessage . "Unit not exist: " . $owner->house_no . "<BR>";
                $residenceUpload = \common\models\ResidenceUpload::find()
                        ->where("id = " . $owner->id)
                        ->one();
                $residenceUpload->status = "F";
                $residenceUpload->save();
            }
        }


        $tenants = \common\models\ResidenceUpload::find()
                ->where(['condo_id' => $session['currentCondoId'], 'status' => 'P', 'residence_type' => 'T'])
                ->orderBy('id ASC')
                ->all();

        foreach ($tenants as $tenant) {
            $condoUnit = \common\models\CondoUnit::find()
                    ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $tenant->house_no . "'")
                    ->one();
            if(!empty($tenant->auto_debit)){
                $auto_debit = $tenant->auto_debit;
            }else{
                $auto_debit = '';
            }

            if(!empty($tenant->nric)){
                $nric = $tenant->nric;
            }else{
                $nric = '';
            }
            if(!empty($tenant->address1)){
               $address1 = $tenant->address1;
            }else{
               $address1 = '' ;
            }
            if(!empty($tenant->address2)){
               $address2 = $tenant->address2;
            }else{
               $address2 = '';
            }
            if(!empty($tenant->others)){
               $others = $tenant->others;
            }else{
               $others = '';
            }

            if ($condoUnit) { //unit exist
                //get condo unit owner
                $userCondoUnitTemp = \common\models\UserCondoUnit::find()
                        ->where("condo_id = " . $session['currentCondoId'] . " AND condo_unit_id = '" . $condoUnit->id . "' AND residence_type = 'O' AND status = 'A'")
                        ->one();

                if ($userCondoUnitTemp) { //owner exist
                    $random_str = md5(uniqid(rand()));
                    $generatedPassword = substr($random_str, 0, 6);

                    $user = new \common\models\User();
                    $user->username = $tenant->name;
                    $user->email = trim($tenant->email);
                    $user->mobile = $tenant->mobile;
                    $user->status = "A";
                    $user->setPassword($generatedPassword);
                    $user->password_generated = $generatedPassword;
                    $user->generateAuthKey();

                    $countUsers = \common\models\User::find()
                            ->where("email = '" . $user->email . "' AND email IS NOT NULL AND email != ''")
                            ->count();

                    if ($countUsers == 0) {
                        $user->save(false);
                        $userProfile = new \common\models\UserProfile();
                        $userProfile->user_id = $user->id;
                        $userProfile->salutation_id = 1;
                        $userProfile->name = $user->username;
                        $userProfile->nric = $nric;
                        $userProfile->residential_address = $address1;
                        $userProfile->mailing_address = $address2;
                        $userProfile->save(false);
                    } else {
                        $user = \common\models\User::find()
                            ->where("email = '" . $user->email . "' AND email IS NOT NULL AND email != ''")
                            ->one();
                    }

                    $countUserCondoUnit = \common\models\UserCondoUnit::find()
                            ->where("user_id = " . $user->id . " AND condo_unit_id = " . $condoUnit->id . " AND status = 'A' and condo_id = " . $session['currentCondoId'] . " AND residence_type = '" . $tenant->residence_type . "'")
                            ->count();

                    if ($countUserCondoUnit == 0) { //user not tied into unit yet
                        //get roleid
                        $role = \common\models\Role::find()
                                ->where("condo_id = " . $session['currentCondoId'] . " AND name = '" . Yii::$app->params['role.name.tenant'] . "'")
                                ->one();

                        $userRole = new \common\models\UserRole();
                        $userRole->user_id = $user->id;
                        $userRole->role_id = $role->id;
                        $userRole->condo_id = $session['currentCondoId'];
                        $userRole->condo_unit_id = $condoUnit->id;
                        $userRole->save();

                        $userCondoUnit = new \common\models\UserCondoUnit();
                        $userCondoUnit->user_id = $user->id;
                        $userCondoUnit->owner_id = $userCondoUnitTemp->owner_id;
                        $userCondoUnit->condo_unit_id = $condoUnit->id;
                        $userCondoUnit->condo_id = $session['currentCondoId'];
                        $userCondoUnit->residence_type = $tenant->residence_type;
                        $userCondoUnit->status = "A";
                        $userCondoUnit->auto_debit = $auto_debit;
                        $userCondoUnit->save();

                        $residenceUpload = \common\models\ResidenceUpload::find()
                                ->where("id = " . $tenant->id)
                                ->one();
                        $residenceUpload->status = "C";
                        $residenceUpload->save();

                        $data = \yii\helpers\Json::encode(array(
                                    'condo_id' => $session['currentCondoId'],
                                    'condo_unit_id' => $condoUnit->id,
                        ));

                        //send prelaunch email
                        Yii::$app->residenz->sendPrelaunchEmail($user->id, $user->username, $user->email, $session['currentCondoId'], $prelaunchEmailTemplate->id, $data);

                        //send welcome email 2 days after today
                        $next2Days = new \DateTime('now');
                        $next2Days->add(new \DateInterval('P1D'));

                        if ($countUsers == 0) {
                            $data = \yii\helpers\Json::encode(array(
                                        'password' => $generatedPassword,
                                        'condo_id' => $session['currentCondoId'],
                                        'condo_unit_id' => $condoUnit->id,
                            ));

                            $emailQueue = new \common\models\EmailQueue();
                            $emailQueue->email_template_global_id = $welcomeEmailTemplate->id;
                            $emailQueue->user_id = $user->id;
                            $emailQueue->name = $user->username;
                            $emailQueue->email = $user->email;
                            $emailQueue->data = $data;
                            $emailQueue->status = 'P';
                            $emailQueue->date_to_send = $next2Days->format('Y-m-d');
                            $emailQueue->save();

                            $user->password_sent_status = "Y";
                            $user->save(false);
                        } else {
                            //user already exist thus we send welcome email for existing user
                            //$data = \yii\helpers\Json::encode(array(
                            //            'condo_id' => $session['currentCondoId'],
                            //            'condo_unit_id' => $condoUnit->id,
                            //));

                            $emailQueue = new \common\models\EmailQueue();
                            $emailQueue->email_template_global_id = $welcomeEmailExistingUserTemplate->id;
                            $emailQueue->user_id = $user->id;
                            $emailQueue->name = $user->username;
                            $emailQueue->email = $user->email;
                            $emailQueue->data = $data;
                            $emailQueue->status = 'P';
                            $emailQueue->date_to_send = $next2Days->format('Y-m-d');
                            $emailQueue->save();
                        }
                    } else {
                        $errorMessage = $errorMessage . "Unit " . $tenant->house_no . " already activated to:" . $tenant->name . "<BR>";
                        $residenceUpload = \common\models\ResidenceUpload::find()
                                ->where("id = " . $tenant->id)
                                ->one();
                        $residenceUpload->status = "F";
                        $residenceUpload->save();
                    }
                } else {
                    $errorMessage = $errorMessage . "Owner for unit not exist: " . $tenant->house_no . "<BR>";
                    $residenceUpload = \common\models\ResidenceUpload::find()
                            ->where("id = " . $tenant->id)
                            ->one();
                    $residenceUpload->status = "F";
                    $residenceUpload->save();
                }
            } else {
                $errorMessage = $errorMessage . "Unit not exist: " . $tenant->house_no . "<BR>";
                $residenceUpload = \common\models\ResidenceUpload::find()
                        ->where("id = " . $tenant->id)
                        ->one();
                $residenceUpload->status = "F";
                $residenceUpload->save();
            }
        }

        return $errorMessage;
    }

    public function sendPrelaunchEmail($userId, $userName, $userEmail, $condoId, $emailTemplateId, $data = null) {

        //find if prelaunch email already inserted,
        //if yes, do not insert
        //only send prelaunch email once per user per condo
        $countEmailQueue = \common\models\EmailQueue::find()
                ->where("user_id = " . $userId . " AND condo_id = " . $condoId . " AND email_template_global_id = " . $emailTemplateId)
                ->count();

        $condoEmail = \common\models\Condo::find()
                ->where (['id'=>$condoId])
                ->one();
        if($condoEmail != NULL){
            $sentFrom = $condoEmail->mngr_email;
        }else {
           $sentFrom = Yii::$app->params['adminIresidenzMail'];
        }

        if ($countEmailQueue == 0) {

            Yii::$app->mailer->compose()
                    //->setTo($userEmail)
                    //->setFrom([\Yii::$app->params['adminIresidenzMail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom($sentFrom)
                    ->setReplyTo($sentFrom)
                    //->setSubject($emailSubject)
                   // ->setHtmlBody($emailBody)
                    ->send();

            $emailQueue = new \common\models\EmailQueue();
            $emailQueue->email_template_global_id = $emailTemplateId;
            $emailQueue->condo_id = $condoId;
            $emailQueue->user_id = $userId;
            $emailQueue->name = $userName;
            $emailQueue->email = $userEmail;
            $emailQueue->data = $data;
            $emailQueue->status = 'P';
            $emailQueue->save();
        }
    }

    public function importFromCondoUnitUpload() {
        $session = Yii::$app->session;

        $units = \common\models\CondoUnitUpload::find()
                ->where(['condo_id' => $session['currentCondoId'], 'status' => 'P'])
                ->orderBy('id ASC')
                ->all();

        foreach ($units as $unit) {
            $condoUnitUpload = \common\models\CondoUnitUpload::find()
                    ->where("id = " . $unit->id)
                    ->one();

            //Check if unit already exist
            $countUnits = \common\models\CondoUnit::find()
                    ->where("condo_id = " . $session['currentCondoId'] . " AND house_no = '" . $unit->house_no . "' AND block = '" . $unit->block . "' AND level = '" . $unit->level . "' AND unit = '" . $unit->unit . "'")
                    ->count();

            if ($countUnits == 0) {
                $condoUnit = new \common\models\CondoUnit();
                $condoUnit->condo_id = $session['currentCondoId'];
                $condoUnit->house_no = $unit->house_no;
                $condoUnit->block = $unit->block;
                $condoUnit->level = $unit->level;
                $condoUnit->unit = $unit->unit;
                $condoUnit->status = "A";
                $condoUnit->save();

                $condoUnitUpload->status = "C";
                $condoUnitUpload->save();
            } else {
                //unit already exist, so cancel import
                $condoUnitUpload->status = "X";
                $condoUnitUpload->save();
            }
        }

        return true;
    }

    public function sendFirstTimeLoginEmail() {
        $session = Yii::$app->session;

        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['code' => Yii::$app->params['email.template.code.first.time.login']])
        //        ->one();
        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.first.time.login']])
                ->one();

        $user = \common\models\User::findOne(Yii::$app->user->id);

        $userCondoUnit = \common\models\UserCondoUnit::find()
                ->where(['user_id' => Yii::$app->user->id, 'condo_unit_id' => $session['currentCondoUnitId']])
                ->one();

        $data = \yii\helpers\Json::encode(array(
                    'user_id' => Yii::$app->user->id,
                    'condo_id' => $session['currentCondoId'],
                    'condo_unit_id' => $session['currentCondoUnitId'],
                    'owner_or_tenant' => ($userCondoUnit->residence_type == "O" ? "owner" : "tenant"),
        ));

        $emailQueue = new \common\models\EmailQueue();
        //$emailQueue->email_template_id = $emailTemplate->id;
        //Change to Global
        $emailQueue->email_template_global_id = $emailTemplate->id;
        $emailQueue->user_id = $user->id;
        $emailQueue->name = $user->username;
        $emailQueue->email = trim($user->email);
        $emailQueue->data = $data;
        $emailQueue->status = 'P';
        $emailQueue->save();
    }

    public function createPath($path) {
        if (is_dir($path))
            return true;
        $prev_path = substr($path, 0, strrpos($path, '/', -2) + 1);
        $return = Yii::$app->residenz->createPath($prev_path);
        return ($return && is_writable($prev_path)) ? mkdir($path) : false;
    }

    public function generateReceipt($emailTemplateCode, $data, $condoUnitBillPayment) {
        $session = Yii::$app->session;

        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();
        $emailBody = $emailTemplate->template;

        if (count($data) > 0) {
            $address = "";
            $fulladdress = explode(",", $data["address"]);
            foreach ($fulladdress as $ads) {
                $address .= $ads . ",<br>";
            }
            $address = substr($address, 0, -5) . "<br>";

            //$billtype = $data["billtype"] . " Charges for " . $data["month"] . " " . $data["year"];
            //$paymentDescription = 'Payment for ' . $data["house_no"] . ' on ' . date("F j, Y");
            $paymentDescription = nl2br($condoUnitBillPayment->notes);
        }

        $path = Yii::getAlias('@frontend') . '/web/upload/receipt/' . $session['currentCondoId'] . '/' . $data["receipt"] . '.pdf';
        if($data["payment_method"] == 'Credit'){
            $paymentMethod = 'Credit/Debit Card';
        }else {
            $paymentMethod = 'FPX';
        }
        //Added by Nurrul - Improve Currency Formatting
        $amount = number_format($data['amount'],2);
        $total = number_format($data["total"],2);
        $fee = number_format($data["fee"],2);

        $siteUrl = Yii::$app->params['siteUrl'];
        $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
        $emailBody = str_replace('{message}', "", $emailBody);
        $emailBody = str_replace('{owner_name}', $data["ownername"], $emailBody);
        $emailBody = str_replace('{house_no}', $data["house_no"], $emailBody);
        $emailBody = str_replace('{condo_name}', $data["condoname"], $emailBody);
        $emailBody = str_replace('{condo_address}', $address, $emailBody);
        $emailBody = str_replace('{no}', "1", $emailBody);
        $emailBody = str_replace('{payment_desc}', $paymentDescription, $emailBody);
        $emailBody = str_replace('{amount}', $amount, $emailBody);
        $emailBody = str_replace('{fee}', $fee, $emailBody);
        $emailBody = str_replace('{sub_total}', $amount, $emailBody);
        $emailBody = str_replace('{total}', $total, $emailBody);
        $emailBody = str_replace('{payment_method}', $paymentMethod, $emailBody);
        $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($data["paydate"])), $emailBody);
        $emailBody = str_replace('{receipt_no}', $data["receipt"], $emailBody);

        $mpdf = new mPDF();
        $mpdf->WriteHTML($emailBody);
        $mpdf->Output($path, 'F');
        $connection = \Yii::$app->db;
        $connection->createCommand()->update('condo_unit_bill_payment', [
            'receipt' => $data["receipt"],
                ], 'id =' . $data["bill_id"])->execute();

        return true;
    }

    public function generateReceiptRent($emailTemplateCode, $vemail, $data, $condoUnitBillPayment) {
        $session = Yii::$app->session;

        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();
        $emailBody = $emailTemplate->template;
        $emailSubject = $emailTemplate->subject;

        if (count($data) > 0) {
            $address = "";
            $fulladdress = explode(",", $data["address"]);
            foreach ($fulladdress as $ads) {
                $address .= $ads . ",<br>";
            }
            $address = substr($address, 0, -5) . "<br>";

            //$billtype = $data["billtype"] . " Charges for " . $data["month"] . " " . $data["year"];
            //$paymentDescription = 'Payment for ' . $data["house_no"] . ' on ' . date("F j, Y");
            //$paymentDescription = nl2br($condoUnitBillPayment->notes);
        }

        $path = Yii::getAlias('@frontend') . '/web/upload/receipt/' . $session['currentCondoId'] . '/' . $data["receipt"] . '.pdf';

        $siteUrl = Yii::$app->params['siteUrl'];
        $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
        $emailBody = str_replace('{message}', "", $emailBody);
        $emailBody = str_replace('{tenant_name}', $data["tenantname"], $emailBody);
        $emailBody = str_replace('{owner_name}', $data["ownername"], $emailBody);
        $emailBody = str_replace('{house_no}', $data["house_no"], $emailBody);
        $emailBody = str_replace('{condo_name}', $data["condoname"], $emailBody);
        $emailBody = str_replace('{condo_address}', $address, $emailBody);
        $emailBody = str_replace('{no}', "1", $emailBody);
        $emailBody = str_replace('{payment_desc}', $data["payment_desc"], $emailBody);
        $emailBody = str_replace('{amount}', $data["amount"], $emailBody);
        $emailBody = str_replace('{fee}', $data["fee"], $emailBody);
        $emailBody = str_replace('{sub_total}', $data["amount"], $emailBody);
        $emailBody = str_replace('{total}', $data["total"], $emailBody);
        $emailBody = str_replace('{payment_method}', $data["payment_method"], $emailBody);
        $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($data["paydate"])), $emailBody);
        $emailBody = str_replace('{receipt_no}', $data["receipt"], $emailBody);
        $emailBody = str_replace('{trans_id}', $data["trans_id"], $emailBody);

        /*$mpdf = new mPDF();
        $mpdf->WriteHTML($emailBody);
        $mpdf->Output($path, 'F');*/

        $connection = \Yii::$app->db;
        $connection->createCommand()->update('condo_unit_bill_payment_rent', [
            'receipt' => $data["receipt"],
        ], 'condo_unit_bill_payment_rent_id =' . $data["bill_id"])->execute();

        Yii::$app->mailer->compose()
            ->setTo($vemail)
            //->setCc($data["owneremail"])
            //->setTo('rameshagnichakra@gmail.com')
            //->setCc('shihanagni@gmail.com')

            //->setBcc($data["managementemails"])
            //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
            //->setReplyTo(\Yii::$app->params['replyTo'])
            ->setFrom([\Yii::$app->params['paymentIresidenzMail'] => \Yii::$app->name])
            ->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            //->attach($path)
            ->send();
        return true;
    }

    public function generateReceiptForCallback($emailTemplateCode, $data, $condoUnitBillPayment) {
        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailBody = $emailTemplate->template;

        if (count($data) > 0) {
            $address = "";
            $fulladdress = explode(",", $data["address"]);
            foreach ($fulladdress as $ads) {
                $address .= $ads . ",<br>";
            }
            $address = substr($address, 0, -5) . "<br>";

            $paymentDescription = nl2br($condoUnitBillPayment->notes);
        }

        $path = Yii::getAlias('@webroot') .'/upload/receipt/' . $data["condoid"] . '/' . $data["receipt"] . '.pdf';

        if($data["payment_method"] == 'Credit'){
            $paymentMethod = 'Credit/Debit Card';
        }else {
            $paymentMethod = 'FPX';
        }
        //Added by Nurrul - Improve Currency Formatting
            $amount = number_format($data["amount"],2);
            $fee = number_format($data["fee"],2);
            $total = number_format($data["total"],2);
        $siteUrl = Yii::$app->params['siteUrl'];
        $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
        $emailBody = str_replace('{message}', "", $emailBody);
        $emailBody = str_replace('{owner_name}', $data["ownername"], $emailBody);
        $emailBody = str_replace('{house_no}', $data["house_no"], $emailBody);
        $emailBody = str_replace('{condo_name}', $data["condoname"], $emailBody);
        $emailBody = str_replace('{condo_address}', $address, $emailBody);
        $emailBody = str_replace('{no}', "1", $emailBody);
        $emailBody = str_replace('{payment_desc}', $paymentDescription, $emailBody);
        $emailBody = str_replace('{amount}', $amount, $emailBody);
        $emailBody = str_replace('{fee}', $fee, $emailBody);
        $emailBody = str_replace('{sub_total}', $amount, $emailBody);
        $emailBody = str_replace('{total}', $total, $emailBody);
        $emailBody = str_replace('{payment_method}', $paymentMethod, $emailBody);
        $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($data["paydate"])), $emailBody);
        $emailBody = str_replace('{receipt_no}', $data["receipt"], $emailBody);

        $mpdf = new mPDF();
        $mpdf->WriteHTML($emailBody);
        $mpdf->Output($path, 'F');
        $connection = \Yii::$app->db;
        $connection->createCommand()->update('condo_unit_bill_payment', [
            'receipt' => $data["receipt"],
                ], 'id =' . $data["bill_id"])->execute();

        //send email
        $emailBody = $emailTemplate->template;

        if ($condoUnitBillPayment->notification_sent == null) {
            try {

                $emailSubject = " Payment received for " . $data["house_no"] . ", " . $data["condoname"] . " - " . date("F j, Y");
                $path = Yii::getAlias('@webroot') .'/upload/receipt/' . $data["condoid"] . '/' . $data["receipt"] . '.pdf';
                $message = "Thank you for your payment. <br />Your online transaction receipt is attached.";

                $siteUrl = Yii::$app->params['siteUrl'];
                $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
                $emailBody = str_replace('{message}', $message, $emailBody);
                $emailBody = str_replace('{owner_name}', $data["ownername"], $emailBody);
                $emailBody = str_replace('{house_no}', $data["house_no"], $emailBody);
                $emailBody = str_replace('{condo_name}', $data["condoname"], $emailBody);
                $emailBody = str_replace('{condo_address}', $address, $emailBody);
                $emailBody = str_replace('{no}', "1", $emailBody);
                $emailBody = str_replace('{payment_desc}', $paymentDescription, $emailBody);
                $emailBody = str_replace('{amount}', $amount, $emailBody);
                $emailBody = str_replace('{fee}', $fee, $emailBody);
                $emailBody = str_replace('{sub_total}', $amount, $emailBody);
                $emailBody = str_replace('{total}', $total, $emailBody);
                $emailBody = str_replace('{payment_method}', $data["payment_method"], $emailBody);
                $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($data["paydate"])), $emailBody);
                $emailBody = str_replace('{receipt_no}', $data["receipt"], $emailBody);

                Yii::$app->mailer->compose()
                        ->setTo($data["useremail"])
                        ->setCc($data["owneremail"])
                        //->setBcc($data["managementemails"])
                        //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
                        //->setReplyTo(\Yii::$app->params['replyTo'])
                        ->setFrom([\Yii::$app->params['paymentIresidenzMail'] => \Yii::$app->name])
                        ->setReplyTo(\Yii::$app->params['replyTo'])
                        ->setSubject($emailSubject)
                        ->setHtmlBody($emailBody)
                        ->attach($path)
                        ->send();


                //encode to json
                $jsonData = \yii\helpers\Json::encode(array(
                            'condoid' => $data["condoid"],
                            'condoname' => $data["condoname"],
                            'address' => $data["address"],
                            'ownername' => $data["ownername"],
                            'useremail' => $data["useremail"],
                            'owneremail' => $data["owneremail"],
                            'payment_method' => $data["payment_method"],
                            'paydate' => $data["paydate"],
                            'amount' => $data["amount"],
                            'total' => $data["total"],
                            'fee' => $data["fee"],
                            'receipt' => $data["receipt"],
                            'house_no' => $data["house_no"],
                            'month' => $data["month"],
                            'year' => $data["year"],
                            'bill_id' => $data["bill_id"],
                ));

                $connection->createCommand()->insert('email_queue', [
                    //'email_template_id' => $emailTemplate->id,
                    //Change to Global
                    'email_template_global_id' => $emailTemplate->id,
                    'user_id' => $condoUnitBillPayment->created_by,
                    'name' => $condoUnitBillPayment->name,
                    'email' => $condoUnitBillPayment->email,
                    'data' => $jsonData,
                    'status' => 'C',
                    'created_by' => 0,
                    'updated_by' => 0,
                    'created_datetime' => new \yii\db\Expression('NOW()'),
                    'updated_datetime' => new \yii\db\Expression('NOW()'),
                ])->execute();


                return true;
            } catch (Exception $ex) {
                return false;
            }
        }

        return true;
    }

    public function sendEmailWithReceipt($emailTemplateCode, $data = null, $condoUnitBillPayment) {
        $session = Yii::$app->session;

        //$condo = \common\models\Condo::findOne($session['currentCondoId']);

        $userId = Yii::$app->user->id;
        $user = \common\models\User::findOne($userId);

        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailBody = $emailTemplate->template;

        if (count($data) > 0) {
            $address = "";
            $fulladdress = explode(",", $data["address"]);
            foreach ($fulladdress as $ads) {
                $address .= $ads . ",<br>";
            }
            $address = substr($address, 0, -5) . "<br>";

            //$billtype = $data["billtype"] . " Charges for " . $data["month"] . " " . $data["year"];
            //$paymentDescription = 'Payment for ' . $data["house_no"] . ' on ' . date("F j, Y");
            $paymentDescription = nl2br($condoUnitBillPayment->notes);
        }

        try {

            $emailSubject = " Payment received for " . $data["house_no"] . ", " . $data["condoname"] . " - " . date("F j, Y");
            //$receipt = $data["receipt"];

            $path = Yii::getAlias('@frontend') . '/web/upload/receipt/' . $session['currentCondoId'] . '/' . $data["receipt"] . '.pdf';
            $pathimg = Yii::$app->params['siteUrl'];
            $message = "Dear" .$data["ownername"]. "<br /><strong>CONGRATULATIONS!</strong><br /><br />Your payment has been received and you now in the running to win <strong>RM100 Cash Back</strong>. 10 lucky winners will be annouced in our monthly newsletter. The more you pay, the luckier you get!<br /><br />
                    <hr />";
            if($data["payment_method"] == 'Credit'){
            $paymentMethod = 'Credit/Debit Card';
            }else {
                $paymentMethod = 'FPX';
            }
            //Added by Nurrul - Improve Currency Formatting
            $amount = number_format($data["amount"],2);
            $fee = number_format($data["fee"],2);
            $total = number_format($data["total"],2);
            //$message = "Thank you for your payment. <br />Your online transaction receipt is attached.";

            //$emailBody = str_replace('{site_url}', $siteUrl, $emailBody);
            //$emailBody = str_replace('{name}', $user->username, $emailBody);
            //$emailBody = str_replace('{bills_id}', $billId, $emailBody);
            $siteUrl = Yii::$app->params['siteUrl'];
            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
            $emailBody = str_replace('{message}', $message, $emailBody);
            $emailBody = str_replace('{owner_name}', $data["ownername"], $emailBody);
            $emailBody = str_replace('{house_no}', $data["house_no"], $emailBody);
            $emailBody = str_replace('{condo_name}', $data["condoname"], $emailBody);
            $emailBody = str_replace('{condo_address}', $address, $emailBody);
            $emailBody = str_replace('{no}', "1", $emailBody);
            $emailBody = str_replace('{payment_desc}', $paymentDescription, $emailBody);
            $emailBody = str_replace('{amount}', $amount, $emailBody);
            $emailBody = str_replace('{fee}', $fee, $emailBody);
            $emailBody = str_replace('{sub_total}', $amount, $emailBody);
            $emailBody = str_replace('{total}', $total, $emailBody);
            $emailBody = str_replace('{payment_method}', $paymentMethod, $emailBody);
            $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($data["paydate"])), $emailBody);
            $emailBody = str_replace('{receipt_no}', $data["receipt"], $emailBody);

            Yii::$app->mailer->compose()
                    ->setTo($data["useremail"])
                    ->setCc($data["owneremail"])
                    //->setBcc($data["managementemails"])
                    //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
                    ->setFrom([\Yii::$app->params['paymentIresidenzMail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->attach($path)
                    ->send();

            //encode to json
            $jsonData = \yii\helpers\Json::encode(array(
                        'condoid' => $data["condoid"],
                        'condoname' => $data["condoname"],
                        'address' => $data["address"],
                        'ownername' => $data["ownername"],
                        'useremail' => $data["useremail"],
                        'owneremail' => $data["owneremail"],
                        'payment_method' => $data["payment_method"],
                        'paydate' => $data["paydate"],
                        'amount' => $data["amount"],
                        'total' => $data["total"],
                        'fee' => $data["fee"],
                        'receipt' => $data["receipt"],
                        'house_no' => $data["house_no"],
                        'month' => $data["month"],
                        'year' => $data["year"],
                        'bill_id' => $data["bill_id"],
            ));

            $emailQueue = new \common\models\EmailQueue();
            //$emailQueue->email_template_id = $emailTemplate->id;
            //Change to Global
            $emailQueue->email_template_global_id = $emailTemplate->id;
            $emailQueue->user_id = $user->id;
            $emailQueue->name = $user->username;
            $emailQueue->email = $user->email;
            $emailQueue->data = $jsonData;
            $emailQueue->status = 'C';
            $emailQueue->save();

            return true;
        } catch (Exception $ex) {
            return false;
        }
    }
    public function sendEmailWithReceiptToManagement($emailTemplateCode, $data = null, $condoUnitBillPayment) {
        $session = Yii::$app->session;
        $userId = Yii::$app->user->id;
        $user = \common\models\User::findOne($userId);

        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailBody = $emailTemplate->template;

        if (count($data) > 0) {
            $address = "";
            $fulladdress = explode(",", $data["address"]);
            foreach ($fulladdress as $ads) {
                $address .= $ads . ",<br>";
            }
            $address = substr($address, 0, -5) . "<br>";

            //$billtype = $data["billtype"] . " Charges for " . $data["month"] . " " . $data["year"];
            //$paymentDescription = 'Payment for ' . $data["house_no"] . ' on ' . date("F j, Y");
            $paymentDescription = nl2br($condoUnitBillPayment->notes);
        }

        try {

            $emailSubject = " Payment for " . $data["house_no"] . ", " . $data["condoname"] . " - " . date("F j, Y");
            //$receipt = $data["receipt"];

            $path = Yii::getAlias('@frontend') . '/web/upload/receipt/' . $session['currentCondoId'] . '/' . $data["receipt"] . '.pdf';

            $message = "Dear Management Office <br /><br />You have received a payment. View the details below or in the transaction receipt attached.<br /><br /><strong>Save Time & Effort by Easily Issuing an Official Receipt in iResidenz</strong><br />Update the Official Receipt No. in iResidenz. Residents will be notified via email and will be able to download/print a copy. View our quick guide <a href='https://iresidenz.freshdesk.com/support/solutions/articles/9000088229-issue-an-official-receipt'>here</a>.<br />";

            if($data["payment_method"] == 'Credit'){
            $paymentMethod = 'Credit/Debit Card';

            }else {
                $paymentMethod = 'FPX';
            }
            //Added by Nurrul - Improve Currency Formatting
            $amount = number_format($data["amount"],2);
            $fee = number_format($data["fee"],2);
            $total = number_format($data["total"],2);
            //$emailBody = str_replace('{site_url}', $siteUrl, $emailBody);
            //$emailBody = str_replace('{name}', $user->username, $emailBody);
            //$emailBody = str_replace('{bills_id}', $billId, $emailBody);
            $siteUrl = Yii::$app->params['siteUrl'];
            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
            $emailBody = str_replace('{message}', $message, $emailBody);
            $emailBody = str_replace('{owner_name}', $data["ownername"], $emailBody);
            $emailBody = str_replace('{house_no}', $data["house_no"], $emailBody);
            $emailBody = str_replace('{condo_name}', $data["condoname"], $emailBody);
            $emailBody = str_replace('{condo_address}', $address, $emailBody);
            $emailBody = str_replace('{no}', "1", $emailBody);
            $emailBody = str_replace('{payment_desc}', $paymentDescription, $emailBody);
            $emailBody = str_replace('{amount}', $amount, $emailBody);
            $emailBody = str_replace('{fee}', $fee, $emailBody);
            $emailBody = str_replace('{sub_total}', $amount, $emailBody);
            $emailBody = str_replace('{total}', $total, $emailBody);
            $emailBody = str_replace('{payment_method}', $paymentMethod, $emailBody);
            $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($data["paydate"])), $emailBody);
            $emailBody = str_replace('{receipt_no}', $data["receipt"], $emailBody);

            $managementEmails = array();
            $managementUsers = Yii::$app->residenz->getManagementUsersForCondo($data["condoid"]);
            foreach ($managementUsers as $managementUser) {
                $result = \Swift_Validate::email($managementUser->email);
                if($result == 1){
                    $sentTo = $managementUser->email;
                    array_push($managementEmails, $sentTo);

                    //encode to json
                    $jsonData = \yii\helpers\Json::encode(array(
                                'condoid' => $data["condoid"],
                                'condoname' => $data["condoname"],
                                'address' => $data["address"],
                                'ownername' => $data["ownername"],
                                'useremail' => $data["useremail"],
                                'owneremail' => $data["owneremail"],
                                'payment_method' => $data["payment_method"],
                                'paydate' => $data["paydate"],
                                'amount' => $data["amount"],
                                'total' => $data["total"],
                                'fee' => $data["fee"],
                                'receipt' => $data["receipt"],
                                'house_no' => $data["house_no"],
                                'month' => $data["month"],
                                'year' => $data["year"],
                                'bill_id' => $data["bill_id"],
                    ));

                    $emailQueue = new \common\models\EmailQueue();
                    //$emailQueue->email_template_id = $emailTemplate->id;
                    //Change to Global
                    $emailQueue->email_template_global_id = $emailTemplate->id;
                    $emailQueue->user_id = $managementUser->id;
                    $emailQueue->name = $managementUser->username;
                    $emailQueue->email = $managementUser->email;
                    $emailQueue->data = $jsonData;
                    $emailQueue->status = 'C';
                    $emailQueue->save();
                }
            }
            $data["managementemail"] = $managementEmails;

            Yii::$app->mailer->compose()
                  ->setTo ($data["managementemail"])
                  ->setBcc(Yii::$app->params['adminIresidenzEmail2'])
                    ->setFrom([\Yii::$app->params['paymentIresidenzMail'] => \Yii::$app->name])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->attach($path)
                    ->send();


            return true;
        } catch (Exception $ex) {
            return false;
        }
    }

    public function exportData($title = '', $filename = 'iResidenz Pdf', $html = NULL) {
        $session = Yii::$app->session;
        $mpdf = new mPDF('utf-8', 'A4', 0, '', 15, 15, 25, 16, 4, 9, 'P');
        $mpdf->autoScriptToLang = true;
        $mpdf->autoLangToFont = true;

        $condo = \common\models\Condo::findOne($session['currentCondoId']);
        //$org = Organization::find()->asArray()->one();
        if (!empty($condo->logo)) {
            $src = Yii::$app->urlManager->createAbsoluteUrl('/images/logo/' . $condo->logo);
        } else {
            $src = Yii::$app->urlManager->createAbsoluteUrl('/images/logo/theresidenz_logo.jpg');
        }

        $org_image = Html::img($src, ['alt' => 'No Image', 'width' => 90, 'height' => 70]);
        $org_name = $condo->name;
        $org_add = $condo->address;

        $mpdf->SetHTMLHeader('<table style="clear: both;margin-bottom: 150px;border-bottom:1.6px solid #999998;border-top:hidden;border-left:hidden;border-right:hidden;width:100%;"><tr style="border:hidden"><td valign="top" style="width:35px;border:hidden;padding:0px 10px 0px 0px;" align="left">' . $org_image . '</td><td valign="top" style="border:hidden;text-align:left;color:#555555;"><b style="font-size:22px;">' . $org_name . '</b><br/><span style="font-size:10.2px">' . $org_add . '</td></tr></table>');
        //$stylesheet = file_get_contents(Yii::$app->request->baseUrl.'/web/themes/caplettheme/css/print.css'); // external css
        //$stylesheet = file_get_contents(Yii::getAlias('@webroot/themes/caplettheme/css/print.css')); // external css
        $mpdf->WriteHTML($stylesheet, 0);
        $mpdf->WriteHTML('<watermarkimage src=' . $src . ' alpha="0.33" size="50,30"/>');
        $mpdf->showWatermarkImage = false;
        $arr = [
            'odd' => [
                'L' => [
                    'content' => $title,
                    'font-size' => 10,
                    'font-style' => 'B',
                    'font-family' => 'serif',
                    'color' => '#27292b'
                ],
                'C' => [
                    'content' => 'Page - {PAGENO}/{nbpg}',
                    'font-size' => 10,
                    'font-style' => 'B',
                    'font-family' => 'serif',
                    'color' => '#27292b'
                ],
                'R' => [
                    'content' => 'Printed @ {DATE j-m-Y}',
                    'font-size' => 10,
                    'font-style' => 'B',
                    'font-family' => 'serif',
                    'color' => '#27292b'
                ],
                'line' => 1,
            ],
            'even' => []
        ];
        $mpdf->SetFooter($arr);
        //$mpdf->WriteHTML('<sethtmlpageheader name="main" page="ALL" value="on" show-this-page="1">');
        $mpdf->WriteHTML($html);
        $mpdf->Output($filename . '.pdf', "I");
        /* $emailBody = 'test';
          $filename = 'ABC';
          $mpdf = new mPDF();
          $mpdf->WriteHTML($html);
          //$mpdf->Output();
          $mpdf->Output($filename.'.pdf',"I"); */
    }
    public function exportDatapdf($title = NULL, $filename = 'iResidenz Pdf', $html = NULL, $orientation = NULL) {

        $pdf = new Pdf([
            // set to use core fonts only
            'mode' => Pdf::MODE_CORE,
            // A4 paper format
            'format' => Pdf::FORMAT_A4,
            // portrait orientation
            'orientation' => $orientation,
            // stream to browser inline
            'destination' => Pdf::DEST_BROWSER,
            // your html content input
            'content' => $html,
            // format content from your own css file if needed or use the
            // enhanced bootstrap css built by Krajee for mPDF formatting
            //'cssFile' => '@webroot/themes/caplettheme/css/bootstrappdf.css',
            'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
            // any css to be embedded if required
            'cssInline' => '.kv-heading-1{font-size:18px}.invoice-box{max-width:800px;margin:auto;padding:10px;border:1px solid #eee;font-size:16px;line-height:24px;color:#555}.invoice-box table{width:100%;line-height:inherit;text-align:left}.invoice-box table td{padding:5px;vertical-align:top}.invoice-box table tr td:nth-child(2){text-align:right}.invoice-box table tr.top table td{padding-bottom:20px}.invoice-box table tr.top table td.title{font-size:45px;line-height:45px;color:#333}.invoice-box table tr.information table td{padding-bottom:40px}.invoice-box table tr.heading td{background:#eee;border-bottom:1px solid #ddd;font-weight:bold}.invoice-box table tr.details td{padding-bottom:20px}.invoice-box table tr.item td{border-bottom:1px solid #eee}.invoice-box table tr.item.last td{border-bottom:none}.invoice-box table tr.total td:nth-child(2){border-top:2px solid #eee;font-weight:bold}@media only screen and (max-width: 600px){.invoice-box table tr.top table td{width:100%;display:block;text-align:center}.invoice-box table tr.information table td{width:100%;display:block;text-align:center}}',
            // set mPDF properties on the fly
            'options' => ['title' => $title],
            // call mPDF methods on the fly
            'methods' => [
                //'SetHeader'=>['Generated By: Krajee Pdf Component||Generated On: ' . date("r")'],
                //'SetHeader' => ['Report Generated by: ' . ucwords(Yii::$app->user->identity->username) . ' ||Generated On ' . date("j F Y")],
                //'SetFooter' => ['{PAGENO}'],
            ]
        ]);


        // return the pdf output as per the destination setting
        /* ------------------------------------ */
        Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
        $headers = Yii::$app->response->headers;
        $headers->add('Content-Type', 'application/pdf');
        /* ------------------------------------ */
        return $pdf->render();
    }

    public function exportDatapdfwithlogo($title = NULL, $filename = 'iResidenz Pdf', $html = NULL) {
        $session = Yii::$app->session;
        $condo = \common\models\Condo::findOne($session['currentCondoId']);
        //$org = Organization::find()->asArray()->one();
        if (!empty($condo->logo)) {
            $src = Yii::$app->urlManager->createAbsoluteUrl('/images/logo/' . $condo->logo);
        } else {
            $src = Yii::$app->urlManager->createAbsoluteUrl('/images/logo/theresidenz_logo.jpg');
        }

        $org_image = Html::img($src, ['alt' => 'No Image', 'width' => 90, 'height' => 70]);
        $org_name = $condo->name;
        $org_add = $condo->address;

        $pdf = new Pdf([
            // set to use core fonts only
            'mode' => Pdf::MODE_CORE,
            // A4 paper format
            'format' => Pdf::FORMAT_A4,
            // portrait orientation
            'orientation' => Pdf::ORIENT_PORTRAIT,
            // stream to browser inline
            'destination' => Pdf::DEST_BROWSER,
            // your html content input
            'content' => $html,
            // format content from your own css file if needed or use the
            // enhanced bootstrap css built by Krajee for mPDF formatting
            //'cssFile' => '@webroot/themes/caplettheme/css/bootstrappdf.css',
            'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
            // any css to be embedded if required
            'cssInline' => '.kv-heading-1{font-size:18px} .abcd{padding: 28px 5px !important;}',
            // set mPDF properties on the fly
            'options' => ['title' => $title],
            // call mPDF methods on the fly
            'methods' => [
                'SetHeader' => ['<table style="clear: both;border-top:hidden;border-left:hidden;border-right:hidden;width:100%;"><tr style="border:hidden"><td valign="top" style="width:35px;border:hidden;padding:0px 10px 0px 0px;" align="left">' . $org_image . '</td><td valign="top" style="border:hidden;text-align:left;color:#555555;"><b style="font-size:22px;">' . $org_name . '</b><br/><span style="font-size:10.2px">' . $org_add . '</td></tr></table>'],
                //'SetHeader' => ['Report Generated by: ' . ucwords(Yii::$app->user->identity->username) . ' ||Generated On ' . date("j F Y")],
                //'SetFooter' => ['{PAGENO}'],
            ]
        ]);

        // return the pdf output as per the destination setting
        /* ------------------------------------ */
        Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
        $headers = Yii::$app->response->headers;
        $headers->add('Content-Type', 'application/pdf');
        /* ------------------------------------ */
        return $pdf->render();
    }

    public function exportDatapdfwithoutlogo($title = NULL, $filename = 'iResidenz Pdf', $html = NULL) {
        $session = Yii::$app->session;
        $condo = \common\models\Condo::findOne($session['currentCondoId']);
        //$org = Organization::find()->asArray()->one();
        if (!empty($condo->logo)) {
            $src = Yii::$app->urlManager->createAbsoluteUrl('/images/logo/' . $condo->logo);
        } else {
            $src = Yii::$app->urlManager->createAbsoluteUrl('/images/logo/theresidenz_logo.jpg');
        }

        $org_image = Html::img($src, ['alt' => 'No Image', 'width' => 90, 'height' => 70]);
        $org_name = $condo->name;
        $org_add = $condo->address;

        $pdf = new Pdf([
            // set to use core fonts only
            'mode' => Pdf::MODE_CORE,
            // A4 paper format
            'format' => Pdf::FORMAT_A4,
            // portrait orientation
            'orientation' => Pdf::ORIENT_PORTRAIT,
            // stream to browser inline
            'destination' => Pdf::DEST_BROWSER,
            // your html content input
            'content' => $html,
            // format content from your own css file if needed or use the
            // enhanced bootstrap css built by Krajee for mPDF formatting
            //'cssFile' => '@webroot/themes/caplettheme/css/bootstrappdf.css',
            'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
            // any css to be embedded if required
            'cssInline' => '.kv-heading-1{font-size:18px} .abcd{padding: 28px 5px !important;}',
            // set mPDF properties on the fly
            'options' => ['title' => $title],
            // call mPDF methods on the fly
            'methods' => [
               // 'SetHeader' => ['<table style="clear: both;border-top:hidden;border-left:hidden;border-right:hidden;width:100%;"><tr style="border:hidden"><td valign="top" style="width:35px;border:hidden;padding:0px 10px 0px 0px;" align="left">' . $org_image . '</td><td valign="top" style="border:hidden;text-align:left;color:#555555;"><b style="font-size:22px;">' . $org_name . '</b><br/><span style="font-size:10.2px">' . $org_add . '</td></tr></table>'],
                //'SetHeader' => ['Report Generated by: ' . ucwords(Yii::$app->user->identity->username) . ' ||Generated On ' . date("j F Y")],
                //'SetFooter' => ['{PAGENO}'],
            ]
        ]);

        // return the pdf output as per the destination setting
        /* ------------------------------------ */
        Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
        $headers = Yii::$app->response->headers;
        $headers->add('Content-Type', 'application/pdf');
        /* ------------------------------------ */
        return $pdf->render();
    }

    public function sendEmailAfterOwnerDeactivateTenant($userId, $emailTo, $emailTemplateCode, $data) {
        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;

        $siteUrl = Yii::$app->params['siteUrl'];

        $tenant = \common\models\User::findOne($userId);

        $owner = \common\models\User::findOne($data2['ownerId']);

        $tenantCondoUnit = \common\models\UserCondoUnit::findOne($data2['tenantCondoUnitId']);

        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailSubject = "Condo unit has been deactivated";
        $emailBodyTemp = $emailTemplate->template;
        $emailBody = $emailBodyTemp;

        try {

            $messagePart1 = "Your condo unit has been deactivated by the owner. Below are the details.<BR>";
            $messagePart2 = "Name: " . $tenant->username . "<BR>";
            $messagePart2 = $messagePart2 . "Email: " . $tenant->email . "<BR>";
            $messagePart2 = $messagePart2 . "House No.: " . $tenantCondoUnit->condoUnit->house_no . "<BR>";
            $messagePart2 = $messagePart2 . "Condo: " . $tenantCondoUnit->condo->name . "<BR>";
            $message = $messagePart1 . $messagePart2;

            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
            $emailBody = str_replace('{name}', $tenant->username, $emailBody);
            $emailBody = str_replace('{message}', $message, $emailBody);

            if ($condo_id) {
                $condo = \common\models\Condo::findOne($condo_id);
                $condoLogo = "<img src='https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo) . "'>";
                $condoLogoUrl = "https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo);
                if($condo->id == 16){
                    $condoUrl = $condo->url;
                }else{
                    $condoUrl = "https://" . $condo->url;
                }
                $emailBody = str_replace('{condo_name}', $condo->name, $emailBody);
                $emailBody = str_replace('{condo_logo}', $condoLogo, $emailBody);
                $emailBody = str_replace('{condo_logo_url}', $condoLogoUrl, $emailBody);
                $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);

                $emailSubject = str_replace('{condo_name}', $condo->name, $emailSubject);
                $emailSubject = str_replace('{condo_url}', $condoUrl, $emailSubject);
            }
            if (!empty($condo->name)){
                $sender_name = \Yii::$app->name.' [' .$condo->name. ']';
                } else {
                    $sender_name = \Yii::$app->name;
                }

            Yii::$app->mailer->compose()
                    ->setTo($emailTo)
                    //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => $sender_name])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->send();


            $emailQueue = new \common\models\EmailQueue();
            //$emailQueue->email_template_id = $emailTemplate->id;
            //Change to Global
            $emailQueue->email_template_global_id = $emailTemplate->id;
            $emailQueue->user_id = $tenant->id;
            $emailQueue->name = $tenant->username;
            $emailQueue->email = $emailTo;
            if ($data != null) {
                $emailQueue->data = $data;
            }
            $emailQueue->status = 'C';
            $emailQueue->save();

            //send to owner and bcc to managements
            $managementEmails = array();
            $managementUsers = Yii::$app->residenz->getManagementUsers();
            foreach ($managementUsers as $managementUser) {
                array_push($managementEmails, $managementUser->email);
            }

            $messagePart1 = "Condo unit has been deactivated. Below are the details.<BR>";
            $message = $messagePart1 . $messagePart2;

            $emailBody = $emailBodyTemp;
            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
            $emailBody = str_replace('{name}', 'Sir/Madam', $emailBody);
            $emailBody = str_replace('{message}', $message, $emailBody);

            Yii::$app->mailer->compose()
                    ->setTo($owner->email)
                    ->setBcc($managementEmails)
                    //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->send();

            return true;
        } catch (Exception $ex) {

            $emailQueue = new \common\models\EmailQueue();
            //$emailQueue->email_template_id = $emailTemplate->id;
            //Change to Global
            $emailQueue->email_template_global_id = $emailTemplate->id;
            $emailQueue->user_id = $tenant->id;
            $emailQueue->name = $tenant->username;
            $emailQueue->email = $emailTo;
            if ($data != null) {
                $emailQueue->data = $data;
            }
            $emailQueue->status = 'P';
            $emailQueue->save();

            return false;
        }
    }

    public function sendEmailAfterActivateNewTenant($userId, $emailTo, $emailTemplateCode, $data) {
        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
        $password = isset($data2['password']) ? $data2['password'] : null;
        $siteUrl = Yii::$app->params['siteUrl'];

        $tenant = \common\models\User::findOne($userId);
        $userprofile = \common\models\UserProfile::find()->where(['user_id' => $userId])->one();

        $owner = \common\models\User::findOne($data2['ownerId']);
        $userprofileowner = \common\models\UserProfile::find()->where(['user_id' => $owner->id])->one();

        $tenantCondoUnit = \common\models\UserCondoUnit::findOne($data2['tenantCondoUnitId']);


        //$emailTemplate = \common\models\EmailTemplate::find()
        //        ->where(['code' => $emailTemplateCode])
        //        ->one();
        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailSubject = $emailTemplate->subject;
        $emailBodyTemp = $emailTemplate->template;
        $emailBody = $emailBodyTemp;

        try {

            $messagePart1 = "Your condo unit has been activated by the owner. Below are the details.<BR>";
            $messagePart2 = "Name: " . $tenant->username . "<BR>";
            $messagePart2 = $messagePart2 . "Email: " . $tenant->email . "<BR>";
            $messagePart2 = $messagePart2 . "House No.: " . $tenantCondoUnit->condoUnit->house_no . "<BR>";
            $messagePart2 = $messagePart2 . "Condo: " . $tenantCondoUnit->condo->name . "<BR>";
            $message = $messagePart1 . $messagePart2;

            $emailBody = str_replace('/upload', "https://" . $siteUrl . "/upload", $emailBody);
            $emailBody = str_replace('{name}', $tenant->username, $emailBody);
            $emailBody = str_replace('{message}', $message, $emailBody);

            if ($condo_id) {
                $condo = \common\models\Condo::findOne($condo_id);
                $condoLogo = "<img src='https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo) . "'>";
                $condoLogoUrl = "https://" . $siteUrl . "/images/logo/" . rawurlencode($condo->logo);
                if($condo->id == 16){
                    $condoUrl = $condo->url;
                }else{
                    $condoUrl = "https://" . $condo->url;
                }
                $emailBody = str_replace('{condo_name}', $condo->name, $emailBody);
                $emailBody = str_replace('{condo_logo}', $condoLogo, $emailBody);
                $emailBody = str_replace('{condo_logo_url}', $condoLogoUrl, $emailBody);
                $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);

                $emailSubject = str_replace('{condo_name}', $condo->name, $emailSubject);
                $emailSubject = str_replace('{condo_url}', $condoUrl, $emailSubject);
                $emailBody = str_replace('{condo_unit_house_no}', $tenantCondoUnit->condoUnit->house_no, $emailBody);
                $emailBody = str_replace('{owner}', $userprofileowner->name, $emailBody);
            }
            $emailBody = str_replace('{password}', $password, $emailBody);
            $emailBody = str_replace('{email}', $emailTo, $emailBody);

             if (!empty($condo->name)){
                $sender_name = \Yii::$app->name.' [' .$condo->name. ']';
                } else {
                    $sender_name = \Yii::$app->name;
                }
            Yii::$app->mailer->compose()
                    ->setTo($emailTo)
                    //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => $sender_name])
                    ->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->send();


            $emailQueue = new \common\models\EmailQueue();
            //$emailQueue->email_template_id = $emailTemplate->id;
            //Change to Global
            $emailQueue->email_template_global_id = $emailTemplate->id;
            $emailQueue->user_id = $tenant->id;
            $emailQueue->name = $tenant->username;
            $emailQueue->email = $emailTo;
            if ($data != null) {
                $emailQueue->data = $data;
            }
            $emailQueue->status = 'C';
            $emailQueue->save();

            //send to owner and bcc to managements
            /*$managementEmails = array();
            $managementUsers = Yii::$app->residenz->getManagementUsers();
            foreach ($managementUsers as $managementUser) {
                array_push($managementEmails, $managementUser->email);
            }

            $messagePart1 = "Condo unit has been activated. Below are the details.<BR>";
            $message = $messagePart1 . $messagePart2;

            $emailBody = $emailBodyTemp;
            $emailBody = str_replace('/upload', "http://" . $siteUrl . "/upload", $emailBody);
            $emailBody = str_replace('{name}', 'Sir/Madam', $emailBody);
            $emailBody = str_replace('{message}', $message, $emailBody);

            Yii::$app->mailer->compose()
                    ->setTo($owner->email)
                    ->setBcc($managementEmails)
                    //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
                    //->setReplyTo(\Yii::$app->params['replyTo'])
                    ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
                    ->setReplyTo(\Yii::$app->params['notificationIresidenzMail'])
                    ->setSubject($emailSubject)
                    ->setHtmlBody($emailBody)
                    ->send();

            return true;*/
        } catch (Exception $ex) {

            $emailQueue = new \common\models\EmailQueue();
            //$emailQueue->email_template_id = $emailTemplate->id;
            //Change to Global
            $emailQueue->email_template_global_id = $emailTemplate->id;
            $emailQueue->user_id = $tenant->id;
            $emailQueue->name = $tenant->username;
            $emailQueue->email = $emailTo;
            if ($data != null) {
                $emailQueue->data = $data;
            }
            $emailQueue->status = 'P';
            $emailQueue->save();

            return false;
        }
    }

    public function sendEmailownersubscribe($userId)
    {
        $tenant = \common\models\User::findOne($userId);
        $emailTemplateCode = 'PR03';
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailSubject = $emailTemplate->subject;
        $emailBodyTemp = $emailTemplate->template;
        $emailBody = $emailBodyTemp;

        $siteUrl = Yii::$app->params['siteUrl'];
        $emailSubject = str_replace('{tenant_name}', $tenant->username, $emailSubject);

        //$emailBody = str_replace('{owner_name}', $ownername, $emailBody);
        $emailBody = str_replace('{tenant_name}', $tenant->username, $emailBody);
        //$emailBody = str_replace('{condo_name}', $condoname, $emailBody);
        //$emailBody = str_replace('{condo_unit_house_no}', $house_no, $emailBody);
        //$emailBody = str_replace('{message}', $comment, $emailBody);
        $emailBody = str_replace('{condo_url}', "https://" . $siteUrl, $emailBody);

        //$emailSubject = 'Good news! You can now pay rent via iResidenz';
        Yii::$app->mailer->compose()
            ->setTo($tenant->email)
            //->setBcc($managementEmails)
            //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
            //->setReplyTo(\Yii::$app->params['replyTo'])
            ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
            ->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            ->send();

    }

    public function sendEmailrequestownersubscribe($userId, $emailTo, $emailTemplateCode, $data) {
        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
        $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;


        $condoname = isset($data2['condoname']) ? $data2['condoname'] : null;
        $house_no = isset($data2['house_no']) ? $data2['house_no'] : null;
        $comment = isset($data2['comment']) ? $data2['comment'] : null;
        $tenantname = isset($data2['tenant_name']) ? $data2['tenant_name'] : null;
        $ownername = isset($data2['ownername']) ? $data2['ownername'] : null;
        $tenantemail = isset($data2['tenantemail']) ? $data2['tenantemail'] : null;

        //Change to Global
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailSubject = $emailTemplate->subject;
        $emailBodyTemp = $emailTemplate->template;
        $emailBody = $emailBodyTemp;

        $siteUrl = Yii::$app->params['siteUrl'];
        $emailSubject = str_replace('{tenant_name}', $tenantname, $emailSubject);

        $emailBody = str_replace('{owner_name}', $ownername, $emailBody);
        $emailBody = str_replace('{tenant_name}', $tenantname, $emailBody);
        $emailBody = str_replace('{condo_name}', $condoname, $emailBody);
        $emailBody = str_replace('{condo_unit_house_no}', $house_no, $emailBody);
        $emailBody = str_replace('{message}', $comment, $emailBody);
        $emailBody = str_replace('{condo_url}', "https://" . $siteUrl, $emailBody);

        Yii::$app->mailer->compose()
            ->setTo($emailTo)
            ->setCc($tenantemail)
            //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
            //->setReplyTo(\Yii::$app->params['replyTo'])
            ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
            ->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            ->send();
        $emailQueue = new \common\models\EmailQueue();
        //$emailQueue->email_template_id = $emailTemplate->id;
        //Change to Global
        $emailQueue->email_template_global_id = $emailTemplate->id;
        $emailQueue->user_id = $userId;
        $emailQueue->name = $ownername;
        $emailQueue->email = $emailTo;
        if ($data != null) {
            $emailQueue->data = $data;
        }
        $emailQueue->status = 'C';
        $emailQueue->save();
    }

    public function sendRequestToManagement($data) {
        $session = Yii::$app->session;
        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
        $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
        $condoname = isset($data2['condoname']) ? $data2['condoname'] : null;
        $house_no = isset($data2['house_no']) ? $data2['house_no'] : null;


        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.daily.notification']])
                ->one();

        $emailBody = $emailTemplate->template;

        $emailSubject = "Renovation Request";
        $name = 'Management Office';
        $message = "Owner from unit " . $house_no . "has request for a renovation.<br /><br />Kindly provide your renovation information to iResidenz.";

        $emailBody = str_replace('{notifications}', $message, $emailBody);
        $emailBody = str_replace('{name}', $name, $emailBody);

        if ($condo_id) {
                $condo = \common\models\Condo::findOne($condo_id);
                if($condo->id == 16){
                    $condoUrl = $condo->url;
                }else{
                    $condoUrl = "https://" . $condo->url;
                }
                $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);
            }


        $managementUsers = Yii::$app->residenz->getManagementUsers();
        foreach ($managementUsers as $managementUser) {

         Yii::$app->mailer->compose()
            ->setTo($managementUser->email)
            ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
            ->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            ->send();
        $emailQueue = new \common\models\EmailQueue();
        //$emailQueue->email_template_id = $emailTemplate->id;
        //Change to Global
        $emailQueue->email_template_global_id = $emailTemplate->id;
        $emailQueue->user_id = $managementUser->id;
        $emailQueue->name = $managementUser->username;
        $emailQueue->email = $managementUser;
        if ($data != null) {
            $emailQueue->data = $data;
        }
        $emailQueue->status = 'C';
        $emailQueue->save();
        }


    }


	public function sendRequestToServices($data, $model) {
        $session = Yii::$app->session;

        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
        $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
        $condo_name = isset($data2['condo_name']) ? $data2['condo_name'] : null;
        $house_no = isset($data2['house_no']) ? $data2['house_no'] : null;
		$service = isset($data2['service']) ? $data2['service'] : null;
		$service_option = isset($data2['service_option']) ? $data2['service_option'] : null;
		if($model->$service_option == '') {
			$model->$service_option = array('-' => '-');
		}

/*
        $name = isset($data2['name']) ? $data2['name'] : null;
		$location = isset($data2['location']) ? $data2['location'] : null;
		$user_type = isset($data2['user_type']) ? $data2['user_type'] : null;
		$planned_start  = isset($data2['planned_start']) ? $data2['planned_start'] : null;
		$preferred_day  = isset($data2['preferred_day']) ? $data2['preferred_day'] : null;
		$preferred_time  = isset($data2['preferred_time']) ? $data2['preferred_time'] : null;


        $message = isset($data2['message']) ? $data2['message'] : null;

		$sub_repair = isset($data2['sub_repair']) ? $data2['sub_repair'] : null;
		$sub_electricity = isset($data2['$sub_electricity']) ? $data2['$sub_electricity'] : null;
		$sub_ac = isset($data2['sub_ac']) ? $data2['sub_ac'] : null;
		$sub_intercom = isset($data2['sub_intercom']) ? $data2['sub_intercom'] : null;
		$sub_cleaning = isset($data2['sub_cleaning']) ? $data2['sub_cleaning'] : null;
		$sub_security = isset($data2['sub_security']) ? $data2['sub_security'] : null;
		*/
        $user = \common\models\User::findOne(Yii::$app->user->id);

        $mobile_no = 'N/A';
        if(!empty($user->userProfile->mobile_no)){
            $mobile_no = $user->userProfile->mobile_no;
        }

        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.requestforservices']])
                ->one();

        $emailBody = $emailTemplate->template;

        $emailSubject = $emailTemplate->subject;
        //$name = 'Support';
        //$message = "Owner from " . $condo_name .  " unit " . $house_no . " has request for a renovation information";

        //$emailBody = str_replace('{notifications}', $message, $emailBody);

		$find = array(
			'{name}', '{mobile_no}', '{email}', '{condo_name}', '{unit}',
			'{service}', '{service_option}', '{message}',
			'{location}', '{user_type}', '{planned_start}', '{preferred_day}', '{preferred_time}',
		);

		$rep = array(
			$model->name, $mobile_no, $user->email, $condo_name, $house_no,
			$service, '- ' . implode('<br>- ', $model->$service_option), $model->msg,
			$model->location, $model->user_type, $model->planned_start, $model->preferred_day, $model->preferred_time,
		);

		$emailBody = str_replace($find, $rep, $emailBody);

        if ($condo_id) {
            $condo = \common\models\Condo::findOne($condo_id);
            // if($condo->id == 16){
            //     $condoUrl = $condo->url;
            // }else{
            //     $condoUrl = "https://" . $condo->url;
            // }
			$condoUrl = $condoUrl = "https://" . $condo->url;
            $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);
        }

		//edit john 20180720
         $message = Yii::$app->mailer->compose()
            ->setTo(\Yii::$app->params['customerEmail'])
            ->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])
            ->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody);

		if(isset(Yii::$app->params['rfs.bccEmail']) && Yii::$app->params['rfs.bccEmail'] != '') {
			$message->setBcc(Yii::$app->params['rfs.bccEmail']);
		}

		$message->send();
		//end john 20180720
    }

    public function sendPublicRequestToServices($data, $model) {
        $session = Yii::$app->session;

        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
        $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
        $condo_name = isset($data2['condo_name']) ? $data2['condo_name'] : null;
        $house_no = isset($data2['house_no']) ? $data2['house_no'] : null;
		$service = isset($data2['service']) ? $data2['service'] : null;
		$service_option = isset($data2['service_option']) ? $data2['service_option'] : null;
		if($model->$service_option == '') {
			$model->$service_option = array();
		}

        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.requestforservicespublic']])
                ->one();

        $emailBody = $emailTemplate->template;
        $emailSubject = $emailTemplate->subject;

		$find = array(
			'{name}', '{mobile_no}', '{email}', '{condo_name}', '{unit}',
			'{service}', '{service_option}', '{message}',
			'{location}', '{user_type}', '{planned_start}', '{preferred_day}', '{preferred_time}',
		);

		$rep = array(
			$model->name, $model->mobile_no, $model->email, $condo_name, $house_no,
			$service, '- ' . implode('<br>- ', $model->$service_option), $model->msg,
			$model->location, $model->user_type, $model->planned_start, $model->preferred_day, $model->preferred_time,
		);

		$emailBody = str_replace($find, $rep, $emailBody);

		$message = Yii::$app->mailer->compose()
			->setTo(\Yii::$app->params['customerEmail'])
			->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])
			->setReplyTo(\Yii::$app->params['replyTo'])
			->setSubject($emailSubject)
			->setHtmlBody($emailBody);

		if(isset(Yii::$app->params['rfs.bccEmail']) && Yii::$app->params['rfs.bccEmail'] != '') {
			$message->setBcc(Yii::$app->params['rfs.bccEmail']);
		}

		$message->send();

    }


    public function sendLaundryBooking($data) {

        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
        $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
        $laundry_no = isset($data2['laundry_no']) ? $data2['laundry_no'] : null;
        $pickup_date = isset($data2['pickup_date']) ? $data2['pickup_date'] : null;
        $contact_no = isset($data2['contact_no']) ? $data2['contact_no'] : null;
        $name = isset($data2['name']) ? $data2['name'] : null;
        $emailTo = isset($data2['emailTo']) ? $data2['emailTo'] : null;
        $contact_mode = isset($data2['contact_mode']) ? $data2['contact_mode'] : null;

        $houseNo = \common\models\CondoUnit::find()
                ->where (['id' => $condo_unit_id])
                ->one();

        $condoName = \common\models\Condo::find()
                ->where (['id' => $condo_id])
                ->one();
        if($condoName->id == 16){
            $condoUrl = $condoName->url;
        }else{
            $condoUrl = "https://" . $condoName->url;
        }

        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.laundry.booking']])
                ->one();
        if($contact_mode == 'S'){
            $mode = 'SMS';
        }elseif($contact_mode == 'W'){
            $mode = 'WhatsApp';
        }else {
            $mode = 'Email';
        }
        $emailSubject = $emailTemplate->subject;
        $emailBodyTemp = $emailTemplate->template;
        $emailBody = $emailBodyTemp;

        $emailBody = str_replace('{name}', $name, $emailBody);
        $emailBody = str_replace('{house_no}', $houseNo->house_no, $emailBody);
        $emailBody = str_replace('{condo_name}', $condoName->name, $emailBody);
        $emailBody = str_replace('{contact_no}', $contact_no, $emailBody);
        $emailBody = str_replace('{pickup_date}', $pickup_date, $emailBody);
        $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);
        $emailBody = str_replace('{mode}',$mode, $emailBody);
        $emailBody = str_replace('{cust_email}', $emailTo, $emailBody);

        Yii::$app->mailer->compose()
            ->setTo('nurrul.iresidenz@gmail.com')
            ->setCc($emailTo)
            ->setBcc('ramesh@iresidenz')
            ->setFrom([\Yii::$app->params['adminIresidenzMail'] => \Yii::$app->name])
            ->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            ->send();
        $emailQueue = new \common\models\EmailQueue();
        //$emailQueue->email_template_id = $emailTemplate->id;
        //Change to Global
        $emailQueue->email_template_global_id = $emailTemplate->id;
        $emailQueue->name = $name;
        $emailQueue->email = 'nurrul.iresidenz@gmail.com';
        if ($data != null) {
            $emailQueue->data = $data;
        }
        $emailQueue->status = 'C';
        $emailQueue->save();
    }

    public function sendRequestToSupport($data) {
        $session = Yii::$app->session;
        $data2 = \yii\helpers\Json::decode($data);

        $condo_id = isset($data2['condo_id']) ? $data2['condo_id'] : null;
        $condo_unit_id = isset($data2['condo_unit_id']) ? $data2['condo_unit_id'] : null;
        $condo_name = isset($data2['condo_name']) ? $data2['condo_name'] : null;
        $house_no = isset($data2['house_no']) ? $data2['house_no'] : null;


        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => Yii::$app->params['email.template.code.daily.notification']])
                ->one();

        $emailBody = $emailTemplate->template;

        $emailSubject = "Renovation Request";
        $name = 'Support';
        $message = "Owner from " . $condo_name .  " unit " . $house_no . " has request for a renovation information";

        $emailBody = str_replace('{notifications}', $message, $emailBody);
        $emailBody = str_replace('{name}', $name, $emailBody);

        if ($condo_id) {
                $condo = \common\models\Condo::findOne($condo_id);
                if($condo->id == 16){
                    $condoUrl = $condo->url;
                }else{
                    $condoUrl = "https://" . $condo->url;
                }
                $emailBody = str_replace('{condo_url}', $condoUrl, $emailBody);
            }

         Yii::$app->mailer->compose()
            ->setTo(\Yii::$app->params['supportEmail'])
            ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
            ->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            ->send();


    }

    public static function addtolog($status = null, $message = null, $uID = 0)
    {
        \common\models\ActionLog::add($status, $message, $uID);
    }

    function url_encode($string) {
        $data = base64_encode($string);
        $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data);
        return $data;
    }

    function url_decode($string) {
        $data = str_replace(array('-', '_'), array('+', '/'), $string);
        $mod4 = strlen($data) % 4;
        if ($mod4) {
            $data .= substr('====', $mod4);
        }
        return base64_decode($data);
    }

    function ismscURL($link) {
        $http = curl_init($link);
        curl_setopt($http, CURLOPT_RETURNTRANSFER, TRUE);
        $http_result = curl_exec($http);
        $http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
        curl_close($http);

        return $http_result;
    }

    public function sendEmailGenericPayment($data, $payeeemail=null)
    {
        $data2 = \yii\helpers\Json::decode($data);

        $molpay_status = isset($data2['molpay_status']) ? $data2['molpay_status'] : null;
        $molpay_amount = isset($data2['molpay_amount']) ? $data2['molpay_amount'] : null;
        $molpay_payment_method= isset($data2['molpay_payment_method']) ? $data2['molpay_payment_method'] : null;

        $molpay_transaction_id = isset($data2['molpay_transaction_id']) ? $data2['molpay_transaction_id'] : null;
        $molpay_order_id = isset($data2['molpay_order_id']) ? $data2['molpay_order_id'] : null;
        $molpay_paydate = isset($data2['molpay_paydate']) ? $data2['molpay_paydate'] : null;
        $ownername = isset($data2['name']) ? $data2['name'] : null;
        $tenantemail = isset($data2['tenantemail']) ? $data2['tenantemail'] : null;
        $house_no = isset($data2['house_no']) ? $data2['house_no'] : null;
        $condo_name = isset($data2['condo_name']) ? $data2['condo_name'] : null;
        $condo_address = isset($data2['condo_address']) ? $data2['condo_address'] : null;
        $payment_desc = isset($data2['payment_desc']) ? $data2['payment_desc'] : null;
        $receipt = isset($data2['receipt']) ? $data2['receipt'] : null;
        $bill_id = isset($data2['bill_id']) ? $data2['bill_id'] : null;

        $emailTemplateCode = 'GP01';
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailSubject = $emailTemplate->subject;
        $emailBodyTemp = $emailTemplate->template;
        $emailBody = $emailBodyTemp;

        $siteUrl = Yii::$app->params['siteUrl'];
        //$emailSubject = str_replace('{receipt_no}', $tenant->username, $emailSubject);

        $emailBody = str_replace('{receipt_no}', $molpay_order_id, $emailBody);
        $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($molpay_paydate)), $emailBody);
        $emailBody = str_replace('{payment_method}', $molpay_payment_method, $emailBody);
        $emailBody = str_replace('{no}', "1", $emailBody);
        $emailBody = str_replace('{payment_desc}', $payment_desc, $emailBody);
        $emailBody = str_replace('{amount}', $molpay_amount, $emailBody);
        $emailBody = str_replace('{sub_total}', $molpay_amount, $emailBody);
        $emailBody = str_replace('{fee}', "0.00", $emailBody);
        $emailBody = str_replace('{total}', $molpay_amount, $emailBody);
        $emailBody = str_replace('{transaction_id}', $molpay_transaction_id, $emailBody);

        $emailBody = str_replace('{owner_name}', $ownername, $emailBody);
        $emailBody = str_replace('{house_no}', $house_no, $emailBody);
        $emailBody = str_replace('{condo_name}', $condo_name, $emailBody);
        $emailBody = str_replace('{condo_address}', $condo_address, $emailBody);

        //$emailBody = str_replace('{condo_url}', "https://" . $siteUrl, $emailBody);
        $path = Yii::getAlias('@frontend') . '/web/upload/receipt/' .$receipt.'.pdf';
        //$emailSubject = 'Good news! You can now pay rent via iResidenz';
        Yii::$app->mailer->compose()
            ->setTo('nurrulamalina@gmail.com')
            //->setBcc($managementEmails)
            //->setFrom([\Yii::$app->params['posterMasterEmail'] => \Yii::$app->name])
            //->setReplyTo(\Yii::$app->params['replyTo'])
            ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
            //->setReplyTo(\Yii::$app->params['replyTo'])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            ->send();

        if(!empty($payeeemail)){
            Yii::$app->mailer->compose()
            ->setTo($payeeemail)
            ->setFrom([\Yii::$app->params['notificationIresidenzMail'] => \Yii::$app->name])
            ->setSubject($emailSubject)
            ->setHtmlBody($emailBody)
            ->attach($path)
            ->send();
        }
    }

    public function sendEmailGenericPaymentReceipt($data, $payeeemail=null)
    {
        $data2 = \yii\helpers\Json::decode($data);

        $molpay_status = isset($data2['molpay_status']) ? $data2['molpay_status'] : null;
        $molpay_amount = isset($data2['molpay_amount']) ? $data2['molpay_amount'] : null;
        $molpay_payment_method= isset($data2['molpay_payment_method']) ? $data2['molpay_payment_method'] : null;

        $molpay_transaction_id = isset($data2['molpay_transaction_id']) ? $data2['molpay_transaction_id'] : null;
        $molpay_order_id = isset($data2['molpay_order_id']) ? $data2['molpay_order_id'] : null;
        $molpay_paydate = isset($data2['molpay_paydate']) ? $data2['molpay_paydate'] : null;
        $ownername = isset($data2['name']) ? $data2['name'] : null;
        $tenantemail = isset($data2['tenantemail']) ? $data2['tenantemail'] : null;
        $house_no = isset($data2['house_no']) ? $data2['house_no'] : null;
        $condo_name = isset($data2['condo_name']) ? $data2['condo_name'] : null;
        $condo_address = isset($data2['condo_address']) ? $data2['condo_address'] : null;
        $payment_desc = isset($data2['payment_desc']) ? $data2['payment_desc'] : null;
        $receipt = isset($data2['receipt']) ? $data2['receipt'] : null;
        $bill_id = isset($data2['bill_id']) ? $data2['bill_id'] : null;

        $emailTemplateCode = 'GP01';
        $emailTemplate = \common\models\EmailTemplateGlobal::find()
                ->where(['code' => $emailTemplateCode])
                ->one();

        $emailSubject = $emailTemplate->subject;
        $emailBodyTemp = $emailTemplate->template;
        $emailBody = $emailBodyTemp;

        $siteUrl = Yii::$app->params['siteUrl'];
        //$emailSubject = str_replace('{receipt_no}', $tenant->username, $emailSubject);
        $path = Yii::getAlias('@frontend') . '/web/upload/receipt/' .$receipt.'.pdf';
        $emailBody = str_replace('{receipt_no}', $molpay_order_id, $emailBody);
        $emailBody = str_replace('{payment_date}', date("F j, Y", strtotime($molpay_paydate)), $emailBody);
        $emailBody = str_replace('{payment_method}', $molpay_payment_method, $emailBody);
        $emailBody = str_replace('{no}', "1", $emailBody);
        $emailBody = str_replace('{payment_desc}', $payment_desc, $emailBody);
        $emailBody = str_replace('{amount}', $molpay_amount, $emailBody);
        $emailBody = str_replace('{sub_total}', $molpay_amount, $emailBody);
        $emailBody = str_replace('{fee}', "0.00", $emailBody);
        $emailBody = str_replace('{total}', $molpay_amount, $emailBody);
        $emailBody = str_replace('{transaction_id}', $molpay_transaction_id, $emailBody);

        $emailBody = str_replace('{owner_name}', $ownername, $emailBody);
        $emailBody = str_replace('{house_no}', $house_no, $emailBody);
        $emailBody = str_replace('{condo_name}', $condo_name, $emailBody);
        $emailBody = str_replace('{condo_address}', $condo_address, $emailBody);

        $mpdf = new mPDF();
        $mpdf->WriteHTML($emailBody);
        $mpdf->Output($path, 'F');
        $connection = \Yii::$app->db;
        $connection->createCommand()->update('condo_unit_bill_payment', [
            'receipt' => $receipt,
            ], 'id =' . $bill_id)->execute();

        return true;
    }
}
