/home/smartonegroup/public_html/veroserv/system/controllers/handler.php
<?php

/*
|--------------------------------------------------------------------------
| Controller
|--------------------------------------------------------------------------
|
*/

_auth();
$ui->assign('selected_navigation', 'contacts');
$ui->assign('_title', $_L['Customers'] . '- ' . $config['CompanyName']);
$action = route(1);
$user = authenticate_admin();

Event::trigger('accounts');

switch ($action) {
    case 'email':
        $email = route(2);
        $ui->assign('email', $email);

        view('modal_send_email');

        break;

    case 'send_email_post':
        $msg = '';
        $data = request()->all();
        $email = _post('to');

        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            i_close($_L['Invalid Email']);
        }
        $email_e = explode('@', $email);
        $toname = $email_e[0];
        $subject = _post('subject');
        if ($subject == '') {
            $msg .= $_L['Subject is Empty'] . ' <br>';
        }
        $message = $data['message'] ?? '';
        if ($message == '') {
            $msg .= $_L['Message is Empty'] . ' <br>';
        }
        if ($msg == '') {
            Email::sendEmail($config, $_L, $toname, $email, $subject, $message);

            _msglog('s', $_L['Email Sent']);
            echo '1';
        } else {
            echo $msg;
        }

        break;

    case 'bulk_email':
        $ui->assign('_title', $_L['Email'] . '- ' . $config['CompanyName']);

        $data = request()->all();

        if (!isset($data['ids'])) {
            exit();
        }

        $ids_raw = $data['ids'];

        $ids = [];

        foreach ($ids_raw as $id_single) {
            $id = str_replace('row_', '', $id_single);
            $ids[] = $id;
        }

        $contacts = Contact::select(['id','account','email'])->whereIn('id', $ids)->get();

        $ui->assign('contacts', $contacts);

        view('handler_bulk_email');

        break;

    case 'bulk_email_post':
        $data = request()->all();
        $emails = $data['emails'];
        $emails = explode("\n", $emails);

        $subject = $data['subject'];
        $msg = $data['msg'];

        if ($subject == '') {
            echo $_L['Subject is Empty'];
            exit();
        }
        echo '1';

        break;

    case 'view_email_templates':
        $tpls = ORM::for_table('sys_email_templates')
            ->select('id')
            ->select('core')
            ->select('tplname')
            ->select('subject')
            ->order_by_desc('id')
            ->find_array();

        $ui->assign('tpls', $tpls);

        view('modal_view_email_templates');

        break;

    case 'json_eml_tpl':
        $id = route(2);
        $id = str_replace('es', '', $id);

        $contact_id = (int) route(3);
        $contact = false;

        if ($contact_id !== 0) {
            $contact = Contact::find($contact_id);
        }

        $eml = EmailTemplate::find($id);

        if ($eml) {
            $subject = $eml->subject;
            $message = $eml->message;

            if ($contact) {
                $subject_transform = new Template($subject);
                $subject_transform->set('name', $contact->account);
                $subject_transform->set('customer_name', $contact->account);
                $subject_transform->set('client_name', $contact->account);
                $subject_transform->set('company', $contact->company);
                $subject_transform->set(
                    'business_name',
                    $config['CompanyName']
                );
                $subject = $subject_transform->output();

                $message_transform = new Template($message);
                $message_transform->set('name', $contact->account);
                $message_transform->set('customer_name', $contact->account);
                $message_transform->set('client_name', $contact->account);
                $message_transform->set('company', $contact->company);
                $message_transform->set(
                    'business_name',
                    $config['CompanyName']
                );

                if ($contact->email) {
                    $message_transform->set('email', $contact->email);
                    $message_transform->set('client_email', $contact->email);
                }

                $message_transform->set(
                    'client_login_url',
                    BASE_URL . 'client/login/'
                );

                $message = $message_transform->output();
            }

            api_response([
                'subject' => $subject,
                'message' => $message,
            ]);
        }

        break;

    case 'groups':

        $gs = ContactGroup::all();

        $opt = '';

        foreach ($gs as $g) {
            $opt .=
                '<option value="' . $g->id . '">' . $g->gname . '</option>';
        }

        echo '<div class="mb-3">
    <label for="input_assign_group">' .
            $_L['Group'] .
            '</label>
    <select class="form-control" id="input_assign_group">
<option value="0">' .
            $_L['Select Group'] .
            '...</option>
<option value="0">' .
            $_L['None'] .
            '</option>
' .
            $opt .
            '
</select>
  </div>
  
';

        break;

    default:
        echo 'action not defined';
}