Example #1
0
function addsotr_exec($Frm, $Err)
{
    if (!$Err) {
        $fil = $Frm->GetNmValueI('filial');
        $grp = $Frm->GetNmValueI('group');
        $password = $Frm->GetNmValue('password');
        $email = strtolower($Frm->GetNmValueH('email'));
        if (Employee::exist($email)) {
            $Frm->_gui->informer->ERR("Сотрудник с таким email существует");
            return;
        }
        $ryk_group_id = get_role_id_by_name('Руководитель');
        $author_group_id = get_role_id_by_name('Автор');
        if ($fil == 0 && $grp != $ryk_group_id && $grp != $author_group_id) {
            $Frm->_gui->informer->ERR("Для данной группы необходимо указать филиал");
            return;
        }
        if (TEST_MODE) {
            $password = TEST_PASSWORD;
        }
        $user_id = Employee::create(array('filial_id' => $fil, 'fio' => $Frm->GetNmValueH('fio'), 'email' => $email, 'password' => $password, 'telnum' => $Frm->GetNmValueH('phone'), 'cont' => $Frm->GetNmValueH('contacts'), 'group_id' => $grp, 'comments' => $Frm->GetNmValueH('comments'), 'payment_requisites' => $Frm->GetNmValueH('payment_requisites')));
        if ($author_group_id == $grp) {
            Author::add_napravl($user_id, $Frm->GetNmValue('author_napravl'));
        }
        if (TEST_MODE) {
            $Frm->_gui->informer->OK("Добавлено (тестовый режим - пароль " . TEST_PASSWORD . ")");
        } else {
            $Frm->_gui->informer->OK("Добавлено");
        }
        page_reloadSec();
    }
}
Example #2
0
 public static function makeAuthorsDefault($napravl_id)
 {
     self::deleteAllAuthors($napravl_id);
     foreach (db::get_single_values_array("SELECT author_id FROM " . TABLE_AUTHOR_TO_NAPRAVL . " WHERE napravl_id = " . db::input($napravl_id)) as $author_id) {
         Author::addToNaprav($author_id, self::getDefaultID());
     }
 }
Example #3
0
 case 'cost_kln':
 case 'cost_auth':
 case 'author_paid':
 case 'company_paid':
 case 'about_mng':
     //коментарий
     $result[] = $value = $_GET['value'];
     break;
 case 'time_auth':
     $value = utils_cvt_date2i(str_replace('.', '-', $_GET['value']));
     $result[] = $_GET['value'];
     $author_info = db::get_single_row("\n              SELECT u.id, u.email, u.fio\n              FROM " . TABLE_USERS . " u\n              JOIN " . TABLE_ORDERS . " o ON o.author_id = u.id\n              WHERE o.id = " . db::input($_GET['order_id']) . "\n            ");
     if ($author_info) {
         //              Author::sendEmail($_GET['order_id'], array($author_info['id']), '№' . $_GET['order_id'] . ' ИЗМЕНИЛАСЬ ДАТА', '№' . $_GET['order_id'] . ' ИЗМЕНИЛАСЬ ДАТА на ' . $_GET['value']);
         $message_id = mls_Send("u" . $author_info['id'], "u" . $_SESSION["user"]["data"]["id"], '№' . $_GET['order_id'] . ' ИЗМЕНИЛАСЬ ДАТА', '№' . $_GET['order_id'] . ' ИЗМЕНИЛАСЬ ДАТА на ' . $_GET['value'], 1, 0);
         Author::enqueue_message_to_email($message_id, array($author_info['id']), \Components\Entity\EmailNotification::TO_AUTHOR_ON_ORDER_CHANGE);
     }
     break;
 case 'debt_to_author':
     $bDoUpdate = false;
     $orders = explode(',', $_GET['order_id']);
     foreach ($orders as $order_id) {
         $order_id = trim($order_id);
         if (empty($order_id)) {
             continue;
         }
         $order_info = get_order_info($order_id);
         Order::update($order_id, array('author_paid' => $order_info['cost_auth']));
         $data = array('change_date' => time(), 'change_user_id' => $_SESSION['user']['data']['id'], 'order_id' => $order_id, 'filial_id_new' => $order_info['filial_id'], 'klient_id_new' => $order_info['klient_id'], 'vuz_id_new' => $order_info['vuz_id'], 'vuz_user_new' => $order_info['vuz_user'], 'type_id_new' => $order_info['type_id'], 'type_user_new' => $order_info['type_user'], 'napr_id_new' => $order_info['napr_id'], 'disc_id_new' => $order_info['disc_id'], 'disc_user_new' => $order_info['disc_user'], 'time_kln_new' => $order_info['time_kln'], 'cost_kln_new' => $order_info['cost_kln'], 'payment_id_new' => $order_info['payment_id'], 'subject_new' => $order_info['subject'], 'about_kln_new' => $order_info['about_kln'], 'about_mng_new' => $order_info['about_mng'], 'kurs_new' => $order_info['kurs'], 'prakt_pc_new' => $order_info['prakt_pc'], 'pages_min_new' => $order_info['pages_min'], 'pages_max_new' => $order_info['pages_max'], 'src_min_new' => $order_info['src_min'], 'src_max_new' => $order_info['src_max'], 'from_id_new' => $order_info['from_id'], 'oform_new' => $order_info['oform'], 'next_rel_date_new' => $order_info['next_rel_date'], 'status_id_new' => $order_info['status_id'], 'ok_comment_new' => $order_info['ok_comment'], 'ok_comment_date_new' => $order_info['ok_comment_date'], 'payment_comment_new' => $order_info['payment_comment'], 'cost_auth_new' => $order_info['cost_auth'], 'time_auth_new' => $order_info['time_auth'], 'oplata_kln_new' => $order_info['oplata_kln'], 'author_paid_new' => $order_info['cost_auth'], 'company_paid_new' => $order_info['company_paid'], 'filial_id_old' => $order_info['filial_id'], 'klient_id_old' => $order_info['klient_id'], 'vuz_id_old' => $order_info['vuz_id'], 'vuz_user_old' => $order_info['vuz_user'], 'type_id_old' => $order_info['type_id'], 'type_user_old' => $order_info['type_user'], 'napr_id_old' => $order_info['napr_id'], 'disc_id_old' => $order_info['disc_id'], 'disc_user_old' => $order_info['disc_user'], 'time_kln_old' => $order_info['time_kln'], 'cost_kln_old' => $order_info['cost_kln'], 'payment_id_old' => $order_info['payment_id'], 'subject_old' => $order_info['subject'], 'about_kln_old' => $order_info['about_kln'], 'about_mng_old' => $order_info['about_mng'], 'kurs_old' => $order_info['kurs'], 'prakt_pc_old' => $order_info['prakt_pc'], 'pages_min_old' => $order_info['pages_min'], 'pages_max_old' => $order_info['pages_max'], 'src_min_old' => $order_info['src_min'], 'src_max_old' => $order_info['src_max'], 'from_id_old' => $order_info['from_id'], 'oform_old' => $order_info['oform'], 'next_rel_date_old' => $order_info['next_rel_date'], 'status_id_old' => $order_info['status_id'], 'ok_comment_old' => $order_info['ok_comment'], 'ok_comment_date_old' => $order_info['ok_comment_date'], 'payment_comment_old' => $order_info['payment_comment'], 'cost_auth_old' => $order_info['cost_auth'], 'time_auth_old' => $order_info['time_auth'], 'oplata_kln_old' => $order_info['oplata_kln'], 'author_paid_old' => $order_info['author_paid'], 'company_paid_old' => $order_info['company_paid']);
         OrderHistory::create($data);
     }
Example #4
0
use Components\Classes\Author;
use Components\Classes\Napravls;
use Components\Classes\Disciplines;
use Components\Entity\Napravl;
use Components\Entity\Discipline;
$author_id = $_SESSION['user']['data']['id'];
if (!empty($_POST['save'])) {
    $disciplines = isset($_POST['discipline']) ? $_POST['discipline'] : array();
    Author::delete_napravl_all($author_id);
    Author::addDisciplines($author_id, array_keys($disciplines));
    $GUI->OK('Сохранено');
}
$napravlAll = Napravl::findAll();
$authorNapravls = Author::get_napravl($author_id);
$authorDisciplines = Author::getDisciplines($author_id);
$result[] = '<table style="width: 100%;">';
if (count($napravlAll)) {
    foreach ($napravlAll as $napravl) {
        $disciplines = Napravls::getDisciplines($napravl['id']);
        $checked = in_array($napravl['id'], $authorNapravls);
        $result[] = '<tr style="background-color: #d3d3d3;">';
        $result[] = '<td colspan="100">';
        $result[] = '<div class="module_name">
    <label for="napravl[' . $napravl['id'] . ']">' . Napravls::getName($napravl['id']) . '</label>
    </div>';
        if (count($disciplines)) {
            $result[] = '&nbsp;&nbsp;';
            $result[] = '<span style="vertical-align: middle;line-height: 1.9;" data-toggle="select" data-target="napravl_' . $napravl['id'] . '">выбрать все</span>';
            $result[] = '&nbsp;&nbsp;&nbsp;&nbsp;';
            $result[] = '<span style="vertical-align: middle;line-height: 1.9;" data-toggle="collapse" data-target="napravl_' . $napravl['id'] . '">' . ($checked ? 'скрыть' : 'показать') . ' дисциплины<span>';
Example #5
0
use Components\Entity\Order;
//$GUI->Vars["page_hdr"] = "Распределение. Тут назначаем менеджера (если нет то можно назначить себя, а если рук, то любого манагера и переопределить потом), задаем параметры  для авторов";
$GUI->Vars["page_hdr"] = "Распределение заказа №" . $order_id;
$order_status = get_order_status($order_id);
if (!empty($order_status) && !empty($order_info['manager_id'])) {
    if ($_SESSION["user"]["data"]["group_id"] <= 2) {
        //назначить автора
        $h = 120;
        if ($order_info['author_id'] != 0) {
            $h = 220;
        }
        $frm = $GUI->Form("Назначить автора", 300, $h, CGUI_FORM_FLAG_MODAL);
        $frm->OnExecute = "assign_order_to_author";
        $ypos = 0;
        $frm->Label("Автор: ", 10, $ypos += 10);
        $s = $frm->Select(10, $ypos, 280, array(0 => "-выберите-") + \Components\Classes\Author::getActiveAuthorsId_Fio(), "");
        $s->linkName = "author_id";
        if ($order_info['author_id'] != 0) {
            $frm->Label("У этого заказа уже есть автор.<br/>Укажите причину смены автора", 10, 40);
            $t = $frm->TextArea(10, 80, 275, 60);
            $t->linkName = "reason";
            $t->AddValidator(new CGUI_VALIDATOR_NOEMPTY());
            $ypos += 100;
        }
        $orderHiddenField = $frm->Hidden($order_id);
        $orderHiddenField->linkName = "order_id";
        $h = $frm->Hidden(1);
        $h->linkName = "need_offer";
        $h = $frm->Hidden($order_info['author_id']);
        $h->linkName = "old_author_id";
        $frm->VLine(10, $ypos += 40, 280);
Example #6
0
function sendmessage_exec($Frm, $Err)
{
    global $data_users;
    if (!$Err) {
        // Авторам запрещено писать клиентам
        $to_kln = $_SESSION["user"]["data"]["group_id"] != 6;
        //Декодирование адресатов
        $adrs = strtolower($Frm->GetNmValue("to"));
        $adrs = preg_replace("[^uk0-9;]", "", $adrs);
        $adrs = explode(";", $adrs);
        $adrs_k = array();
        $adrs_u = array();
        foreach ($adrs as $v) {
            $ind = intval(substr($v, 1));
            $s = substr($v, 0, 1);
            if ($to_kln && $s == 'k' && $ind) {
                $adrs_k[] = $ind;
            } else {
                if ($s == 'u' && $ind) {
                    $adrs_u[] = $ind;
                }
            }
        }
        if (!count($adrs_u) && !count($adrs_k)) {
            $Frm->_gui->informer->ERR("Неверно указан получатель");
            return;
        }
        foreach ($adrs_u as $v) {
            if (!isset($data_users[$v])) {
                $Frm->_gui->informer->ERR("Указан несуществующий получатель");
                return;
            }
        }
        $srok = 0;
        if (strlen($Frm->GetNmValue("date"))) {
            $d = explode("-", $Frm->GetNmValue("date"));
            $srok = mktime(0, 0, 0, $d[1], $d[0], $d[2]);
            if ($srok < mktime(0, 0, 0, date("n"), date("j"), date("Y"))) {
                $Frm->_gui->informer->ERR("Неверно указан срок ответа");
                return;
            }
        }
        $subj = $Frm->GetNmValueH("subj");
        $text = $Frm->GetNmValueH("txt");
        $prior = $Frm->GetNmValueI("prior");
        $parent_id = 0;
        if ($Frm->GetNmValue("ans")) {
            $parent_id = $Frm->GetNmValue("ans");
        }
        // Для каждого получателя формирутеся свой экземпляр
        foreach ($adrs_k as $a) {
            $message_id = mls_Send("k" . $a, "u" . $_SESSION["user"]["data"]["id"], $subj, $text, $prior, $srok, $parent_id, 0, $a, 0, 0);
            $client = \Components\Entity\Client::find($a);
            if (!empty($message_id) && !empty($client['email'])) {
                enqueue_message_to_email($message_id, $client['email'], EmailNotification::TO_RECEIVER_ON_MESSAGE_COMMON);
            }
        }
        foreach ($adrs_u as $a) {
            $message_id = mls_Send("u" . $a, "u" . $_SESSION["user"]["data"]["id"], $subj, $text, $prior, $srok, $parent_id, 0, 0, 0, 0);
            \Components\Classes\Author::enqueue_message_to_email($message_id, array($a), EmailNotification::TO_RECEIVER_ON_MESSAGE_COMMON);
        }
        $Frm->_gui->informer->OK("Сообщение создано");
        page_reloadToSec(3);
    }
}
Example #7
0
 function add_order($client_id, &$err)
 {
     $err = "";
     try {
         $client = Client::find($client_id);
     } catch (Exception $e) {
         $err = "Ошибка - не указан клиент";
         return false;
     }
     try {
         $filial = Filial::find($client['filial_id']);
     } catch (Exception $e) {
         $filial = Filials::getDefault();
         Client::update($client['id'], array('filial_id' => $filial['id']));
         db::update(TABLE_ORDERS, array('filial_id' => $filial['id']), 'klient_id = ' . $client['id']);
     }
     $pgs = get_min_max_from_str($_SESSION["zf_work_pages"]);
     // disc id
     try {
         $discipline = Discipline::find($_SESSION["zf_work_predm"]);
         $disc_id = $discipline['id'];
     } catch (Exception $e) {
         $discipline = Discipline::findOneBy(array('name' => $_SESSION["zf_work_predm"]));
         if ($discipline) {
             $disc_id = $discipline['id'];
         } else {
             $disc_id = Discipline::create(array('name' => $_SESSION["zf_work_predm"]));
         }
     }
     $info = $_SESSION["zf_work_dopinfo"];
     $worktype_custom = '';
     $worktype = null;
     try {
         $worktype = Worktypes::find($_SESSION["zf_work_type"]);
     } catch (Exception $e) {
         $worktype = Worktypes::findOneBy(array('name' => $_SESSION["zf_work_type"]));
         if (!$worktype) {
             $worktype_custom = $_SESSION["zf_work_type"];
             $worktype['id'] = null;
         }
     }
     $id = Order::create(array("filial_id" => $filial['id'], "klient_id" => $client['id'], "type_id" => $worktype['id'], "type_user" => $worktype_custom, "disc_id" => $disc_id, "time_kln" => strtotime($_SESSION["zf_work_date"]), "subject" => $_SESSION["zf_work_tema"], "about_kln" => $info, "pages_min" => $pgs["min"], "pages_max" => $pgs["max"]));
     if ($id > 0) {
         ////////////////////////
         // Текст клиенту
         $txt = "<p>Здравствуйте, " . $client["fio"] . "!</p>";
         // Если первый раз
         if (@$_SESSION["new_klient_added"]) {
             $txt .= "<p>Мы очень рады, что Вы решили воспользоваться нашими услугами и высоко ценим Ваше доверие!</p>" . "<p>Теперь Вы можете войти в личный кабинет:<br>" . "&nbsp;Логин: " . $client["email"] . "<br>" . "&nbsp;Пароль: " . $client["password"] . "<br></p>";
         } else {
             $txt .= "<p>Спасибо, что Вы с нами! Для постоянных клиентов у нас всегда есть интересные и выгодные предложения!</p>";
         }
         $zak = "<p>Номер заказа: " . $id . "<br>" . "Дата: " . date("d.m.Y") . "<br>";
         $zak .= "Вид работы: ";
         if (!empty($worktype_custom)) {
             $zak .= $worktype_custom . "<br>";
         } else {
             $zak .= $worktype["name"] . "<br>";
         }
         $zak .= "Дисциплина: ";
         if ($discipline) {
             $zak .= $discipline['name'] . "<br>";
         } else {
             $zak .= $_SESSION["zf_work_predm"] . "<br>";
         }
         $zak .= "Тема работы: " . $_SESSION["zf_work_tema"] . "<br>" . "Требования: " . $_SESSION["zf_work_dopinfo"] . "<br>" . "Дата сдачи: " . $_SESSION["zf_work_date"] . "<br>" . "Число страниц: " . $_SESSION["zf_work_pages"] . "<br>" . ($txt .= "<p>Ваш заказ принят, и в ближайшее время наш менеджер свяжется с Вами.</p>" . "<p>Содержание заказа: <br>" . $zak . "</p>");
         $txt .= "<p><i>С уважением, компания по написанию студенческих работ.</i></p>";
         $email = new Email();
         $email->setData(array('email' => $client['email'], 'name' => $client['fio']), "Ваш заказ принят!", $txt, array(), true, array(), array('email' => $filial['email'], 'name' => $filial['name']));
         //$m->SMTPDebug = true;
         if ($email->send()) {
             $user_send_res = "Письмо клиенту отправлено";
         } else {
             $user_send_res = "Ошибки при отправке письма клиенту: " . $email->ErrorInfo;
         }
         ////////////////////////
         // Текст в приемную заказов
         $zak .= "<p>Заказчик:<br>";
         if (@$_SESSION["new_klient_added"]) {
             $zak .= "Новая регистрация<br>";
         }
         $zak .= "id: " . $client["id"] . "<br>" . "Имя: " . $client["fio"] . "<br>" . "Почта: " . $client["email"] . "<br>" . "Телефон: " . $client["telnum"] . "<br>" . "Город: " . $client["city"] . "<br>" . "Другие контакты: " . $client["contacts"] . "<br>";
         $zak .= $user_send_res;
         // Прикалываем файлы
         $files = check_user_files();
         $message_id = \Components\Entity\Message::create(array('parent_id' => 0, 'order_id' => $id, 'klient_id' => $client["id"], 'visit_id' => 0, 'tender_id' => 0, 'created' => time(), 'creator_id' => 'k' . $client["id"], 'addr' => 'u' . $filial['id'], 'subject' => "Поступил новый заказ #" . $id, 'text' => $zak, 'prior' => 1, 'uvedom' => 1, 'readed' => 0, 'needansv' => 0, 'basket' => 0));
         if (!empty($message_id)) {
             \Components\Classes\Author::enqueue_message_to_email($message_id, $filial['id'], EmailNotification::TO_MANAGER_ON_CLIENT_CREATED_ORDER);
         }
         /* ОТПРАВИТЬ В РЕАЛЬНОМ ВРЕМЕНИ
            $email = new Email();
            $email->setData(array(
              'email' => FIRM_ORD_MAIL,
              'name' => 'Приемная заказов',
            ), "Поступил новый заказ #" . $id, $zak, $files, true, array(), array(
              'email' => $filial['email'],
              'name' => $filial['name'],
            ));
            $email->send();
            ENDOF ОТПРАВИТЬ В РЕАЛЬНОМ ВРЕМЕНИ */
         // move file
         if (count($files)) {
             $path = DIR_FS_ORDER_FILES . $id;
             if (!file_exists($path)) {
                 mkdir($path);
             }
             foreach ($files as $f) {
                 $fid = OrderFile::create(array('order_id' => $id, 'creator_id' => 0, 'created' => time(), 'name' => $f["name"], 'size' => $f["size"]));
                 if ($fid > 0) {
                     $ext = substr($f["name"], strrpos($f["name"], ".") + 1);
                     $f_s = fopen($f["path"], "r");
                     $f_d = fopen($path . "/" . $fid . "." . $ext, "w");
                     fwrite($f_d, fread($f_s, $f["size"]));
                     fclose($f_s);
                     fclose($f_d);
                 }
                 unlink($f["path"]);
             }
         }
         $path = TMPFILES_PATH . session_id();
         if (file_exists($path)) {
             rmdir($path);
         }
         return true;
     } else {
         return false;
     }
 }
Example #8
0
use Components\Entity\Message;
if (!is_client_logged() || $_SESSION["frame"]["client"]["blocked"]) {
    echo 'Доступ запрещен.';
} else {
    if (!empty($_REQUEST['new']) && !empty($_REQUEST['r'])) {
        try {
            $receiver = Employee::find($_REQUEST['r']);
        } catch (Exception $e) {
            redirect("?type=cabinet&messages");
        }
        if (!empty($_REQUEST['send'])) {
            if ($receiver['id'] != $_REQUEST['receiver']) {
                redirect("?type=cabinet&messages");
            }
            $message_id = mls_Send('u' . $receiver['id'], 'k' . $_SESSION['frame']['client']['id'], $_REQUEST['subject'], $_REQUEST['text'], 1, 0);
            \Components\Classes\Author::enqueue_message_to_email($message_id, array($receiver['id']), \Components\Entity\EmailNotificationType::TO_RECEIVER_ON_MESSAGE_COMMON);
            redirect("?type=cabinet&messages");
        }
        $receiver_full_name = db::get_single_value("SELECT sname FROM " . TABLE_ROLES . " WHERE id = " . $receiver['group_id']) . ' ' . $receiver['fio'];
        $subject = '';
        if (!empty($_REQUEST['o'])) {
            $subject = 'Вопрос по заказу №' . $_REQUEST['o'];
        }
        echo "<div style='margin-bottom: 5px'><a href='?type=cabinet&messages'><< к списку сообщений</a></div>";
        echo <<<HTML
<div id="cgui_form_0" class="cgui_form_box" style="width:600px; height: 270px; margin: 0 auto;">
<div class="cgui_form_capt">Новое сообщение</div>
<form class="cgui_form" method="post">
<input type="hidden" name="send" value="1"/>
<div class="cgui_form_text" style="width: 530px; height: 50px; margin-left:50px; margin-top: 10px;">
  <input type="text" value="{$receiver_full_name}" style="position: absolute; width:530px;">
Example #9
0
                case NOTIFICATION_TYPE_NORMAL:
                default:
                    if (!\Components\Entity\EmailNotificationType::isPersistable(\Components\Entity\EmailNotification::TO_AUTHOR_ON_REMIND_NORMAL)) {
                        $GUI->ERR("Напоминание отключено!");
                        page_ReloadSec();
                        return;
                    }
                    $failed_emails = Author::saveMessageAndEnqueueEmail($order_id, array($order_info['author_id']), 'u' . $_SESSION['user']['data']['id'], 'Напоминание по заказу №' . $order_id . ' ' . $order_info['subject'], 'Уважаемый автор, напоминаем Вам о том, что данный заказ должен быть прислан Вами на почту или прикреплен на сайте в личном кабинете сегодня. Сообщите о состоянии заказа.
С уважением, ' . sotr_getFullName($_SESSION['user']['data']['id']), \Components\Entity\EmailNotification::TO_AUTHOR_ON_REMIND_NORMAL);
                    break;
                case NOTIFICATION_TYPE_URGENT:
                    if (!\Components\Entity\EmailNotificationType::isPersistable(\Components\Entity\EmailNotification::TO_AUTHOR_ON_REMIND_URGENT)) {
                        $GUI->ERR("Напоминание отключено!");
                        page_ReloadSec();
                        return;
                    }
                    $failed_emails = Author::saveMessageAndEnqueueEmail($order_id, array($order_info['author_id']), 'u' . $_SESSION['user']['data']['id'], 'СРОЧНО ответьте по заказу №' . $order_id . ' ' . $order_info['subject'], 'Срочно ответьте о состоянии данного заказа, по которому дата сдачи Вами сорвана. Предупреждаем что срыв срока заказа позволит нам не выплатить Вам гонорар и/или наложить штраф. Мы всегда выполняем свои обязательства по оплате перед Вами и ждем с Вашей стороны того же, а именно соблюдение сроков и требований. Спасибо за понимание. С уважением, ' . sotr_getFullName($_SESSION['user']['data']['id']), \Components\Entity\EmailNotification::TO_AUTHOR_ON_REMIND_URGENT);
                    break;
            }
            if (!empty($failed_emails)) {
                $GUI->ERR("Не удалось отправить заказ на " . $failed_emails[0]['email']);
                page_ReloadSec();
            }
            AuthorNotification::create(array('author_id' => $order_info['author_id'], 'order_id' => $order_id, 'date' => date('Y-m-d H:i:s'), 'type' => $type));
            $GUI->OK("Напоминание отправлено");
            page_ReloadSec();
            break;
    }
} else {
    require_once 'listing/list.php';
}
Example #10
0
$frm->Label("Группа", 260, $ypos);
$t = $frm->Text(10, $ypos += 20, 230, $employer["telnum"]);
$t->linkName = 'phone';
$t->AddValidator(new CGUI_VALIDATOR_NOEMPTY());
$t->AddValidator(new CGUI_VALIDATOR_TELNUM());
$group_field = $frm->Select(260, $ypos, 230, $groups, "name", $employer["group_id"]);
$group_field->linkName = 'group';
$group_field->AddValidator(new CGUI_VALIDATOR_NOZERO());
$frm->Label("Филиал", 10, $ypos += 30);
$l = $frm->Label("Направление автора", 260, $ypos);
$l->display = 'none';
$d = $data_filials;
$d[0] = array("name" => "- выберите");
$t = $frm->Select(10, $ypos += 20, 230, $d, "name", $employer["filial_id"]);
$t->linkName = 'filial';
$t = $frm->Select(260, $ypos, 230, $data_napravl, "name", Author::get_napravl($id));
$t->linkName = 'author_napravl';
$t->display = 'none';
$t->Multiple = true;
$t->RowSize = 4;
if ($employer["group_id"] == $author_group_id) {
    $t->display = 'block';
    $l->display = 'block';
    $ypos += 45;
}
$group_field->AddJsEvent('change', 'check_is_author(' . $author_group_id . ', ' . $group_field->idname . ', ' . $t->idname . ')');
$frm->Label("Дополнительные контакты", 10, $ypos += 30);
$t = $frm->TextArea(10, $ypos += 20, 480, $wcn, $employer["cont"]);
$t->linkName = 'contacts';
$frm->Label("Комментарии", 10, $ypos += $wcn + 30);
$t = $frm->TextArea(10, $ypos += 20, 480, $wc, $employer["comments"]);
Example #11
0
 public static function create_order($order_parameters)
 {
     $result = array('status' => false, 'msg' => '');
     $message = array();
     if (empty($order_parameters['client_id'])) {
         $result['msg'] = "Id клиента не указан";
         return $result;
     }
     if ($order_parameters['work'] == 0 && !strlen($order_parameters['work_usr'])) {
         $order_parameters['work_usr'] = "******";
         //            $message[] = "Не указан вид работы";
     }
     if ($order_parameters['disc'] == 0 && !strlen($order_parameters['disc_usr'])) {
         $order_parameters['disc_usr'] = "******";
         //          $message[] = "Не указана дисциплина";
     }
     if ($order_parameters['pgmax'] && $order_parameters['pgmax'] < $order_parameters['pgmin']) {
         $message[] = "Неверно указано макс. число страниц";
     }
     if ($order_parameters['srcmax'] && $order_parameters['srcmax'] < $order_parameters['srcmin']) {
         $message[] = "Неверно указано макс. число источников";
     }
     if (count($message)) {
         $result['msg'] = join("\n", $message);
         return $result;
     }
     $date = mktime();
     $filial_id = db::get_single_value("SELECT filial_id FROM " . TBL_PREF . "clients WHERE id = " . db::input($order_parameters['client_id']) . "");
     if (!$filial_id) {
         $filial_id = $order_parameters['filial_id'];
     }
     if (!$filial_id) {
         $query = "SELECT ftc.filial_id FROM " . TBL_PREF . "clients c  JOIN " . TBL_PREF . "data_city dc ON dc.name = c.city JOIN " . TBL_PREF . "filial_to_city ftc ON ftc.city_id = dc.id" . " WHERE c.id = " . db::input($order_parameters['client_id']) . "";
         $filial_id = db::get_single_value($query);
     }
     $order_id = Order::create(array("filial_id" => $filial_id, "klient_id" => $order_parameters['client_id'], "vuz_id" => $order_parameters['vuz'], "vuz_user" => $order_parameters['vuz_usr'], "type_id" => $order_parameters['work'], "type_user" => $order_parameters['work_usr'], "napr_id" => $order_parameters['napr'], "disc_id" => $order_parameters['disc'], "disc_user" => $order_parameters['disc_usr'], "time_kln" => $order_parameters['time_kln'], "payment_id" => $order_parameters['opl'], "subject" => $order_parameters['subj'], "about_kln" => $order_parameters['treb'], "kurs" => $order_parameters['kurs'], "prakt_pc" => $order_parameters['prakt'], "pages_min" => $order_parameters['pgmin'], "pages_max" => $order_parameters['pgmax'], "src_min" => $order_parameters['srcmin'], "src_max" => $order_parameters['srcmax'], "from_id" => 4));
     //        foreach ($_FILES as $file) {
     //            if (is_uploaded_file($file["tmp_name"])) {
     //                $extension = pathinfo($file['name']);
     //                $extension = strtolower($extension['extension']);
     //
     //                $file_id = \Components\Entity\OrderFile::create() ::attachFile($order_id, 0, $file["name"], $file["size"]);
     //
     //                if (!$file_id) {
     //                    $result['msg'] = "Ошибка при загрузке файла";
     //                    return $result;
     //                } else {
     //                    $dir = DIR_FS_ORDER_FILES . $order_id . '/';
     //                    if (!is_dir(DIR_FS_ORDER_FILES)) {
     //                        create_path('order_files', DIR_FS_DOCUMENT_ROOT);
     //                    }
     //                    if (!is_dir($dir)) {
     //                        create_path($order_id, DIR_FS_ORDER_FILES);
     //                    }
     //
     //                    $file_name = $file_id . '.' . $extension;
     //
     //                    if (!move_uploaded_file($file['tmp_name'], $dir . $file_name)) {
     //                        Order::deleteAttachedFile($file_id);
     //                        $result['msg'] = "Ошибка при сохранении файла";
     //                        return $result;
     //                    }
     //                }
     //            }
     //        }
     if ($order_id) {
         ////////////////////////
         // Текст клиенту
         $client = Client::find($order_parameters['client_id']);
         $filial = \Components\Entity\Filial::find($filial_id);
         $txt = "<p>Здравствуйте" . (empty($client["fio"]) ? "" : ", " . $client["fio"]) . "!</p>";
         // Если первый раз
         if (@$_SESSION["new_klient_added"]) {
             $txt .= "<p>Мы очень рады, что Вы решили воспользоваться нашими услугами и высоко ценим Ваше доверие!</p>";
         } else {
             $txt .= "<p>Спасибо, что Вы с нами! Для постоянных клиентов у нас всегда есть интересные и выгодные предложения!</p>";
         }
         $zak = "<p>Номер заказа: " . $order_id . "<br>" . "Дата: " . date("d.m.Y") . "<br>";
         $zak .= "Вид работы: ";
         if (!empty($order_parameters['work_usr'])) {
             $zak .= $order_parameters['work_usr'] . "<br>";
         } else {
             $worktype = \Components\Entity\Worktypes::find($order_parameters['work']);
             $zak .= $worktype['name'] . "<br>";
         }
         $zak .= "Дисциплина: ";
         if ($order_parameters['disc_usr']) {
             $zak .= $order_parameters['disc_usr'] . "<br>";
         } else {
             $discipline = \Components\Entity\Discipline::find($order_parameters['disc']);
             $zak .= $discipline['name'] . "<br>";
             //                $zak .= $_SESSION["zf_work_predm"] . "<br>";
         }
         if ($order_parameters['subj']) {
             $zak .= "Тема работы: " . $order_parameters['subj'] . "<br>";
         }
         if ($order_parameters['treb']) {
             $zak .= "Требования: " . $order_parameters['treb'] . "<br>";
         }
         if ($order_parameters['time_kln']) {
             $zak .= "Дата сдачи: " . $order_parameters['time_kln'] . "<br>";
         }
         if ($order_parameters['pgmin'] && $order_parameters['pgmax']) {
             $zak .= "Число страниц: " . $order_parameters['pgmin'] . "-" . $order_parameters['pgmax'] . "<br>";
         }
         $txt .= "<p>Ваш заказ принят, и в ближайшее время наш менеджер свяжется с Вами.</p>" . "<p>Содержание заказа: <br>" . $zak . "</p>";
         $txt .= "<p><i>С уважением, компания по написанию студенческих работ.</i></p>";
         $email = new \Components\Classes\Email();
         $email->setData(array('email' => $client['email'], 'name' => $client['fio']), "Ваш заказ принят!", $txt, array(), true, array(), array('email' => $filial['email'], 'name' => $filial['name']));
         //$m->SMTPDebug = true;
         $mailErrors = array();
         if (!$email->send()) {
             $mailErrors[] = "Ошибки при отправке письма клиенту: " . $email->ErrorInfo;
         }
         ////////////////////////
         // Текст в приемную заказов
         $zak .= "<p>Заказчик:<br>";
         if (@$_SESSION["new_klient_added"]) {
             $zak .= "Новая регистрация<br>";
         }
         $zak .= "id: " . $client["id"] . "<br>" . "Имя: " . $client["fio"] . "<br>" . "Почта: " . $client["email"] . "<br>" . "Телефон: " . $client["telnum"] . "<br>" . "Город: " . $client["city"] . "<br>" . "Другие контакты: " . $client["contacts"] . "<br>";
         if (!empty($mailErrors)) {
             $zak .= join('<br>', $mailErrors);
         }
         $message_id = \Components\Entity\Message::create(array('parent_id' => 0, 'order_id' => $order_id, 'klient_id' => $client["id"], 'visit_id' => 0, 'tender_id' => 0, 'created' => time(), 'creator_id' => 'k' . $client["id"], 'addr' => 'u' . $filial['user_id'], 'subject' => "Поступил новый заказ #" . $order_id, 'text' => $zak, 'prior' => 1, 'uvedom' => 1, 'readed' => 0, 'needansv' => 0, 'basket' => 0));
         if (!empty($message_id)) {
             \Components\Classes\Author::enqueue_message_to_email($message_id, $filial['user_id'], \Components\Entity\EmailNotification::TO_MANAGER_ON_CLIENT_CREATED_ORDER);
         }
         // Прикалываем файлы
         $files = $_FILES;
         // move file
         if (count($files)) {
             $path = DIR_FS_ORDER_FILES . $order_id;
             if (!file_exists($path)) {
                 mkdir($path);
             }
             foreach ($files as $f) {
                 $fid = \Components\Entity\OrderFile::create(array('order_id' => $order_id, 'creator_id' => 0, 'created' => time(), 'name' => $f["name"], 'size' => $f["size"]));
                 if ($fid > 0) {
                     $ext = substr($f["name"], strrpos($f["name"], ".") + 1);
                     $f_s = fopen($f["tmp_name"], "r");
                     $f_d = fopen($path . "/" . $fid . "." . $ext, "w");
                     fwrite($f_d, fread($f_s, $f["size"]));
                     fclose($f_s);
                     fclose($f_d);
                 }
                 //                    unlink($f["path"]);
             }
         }
     }
     return self::generate_response(true, "OK", array('id' => $order_id, 'date' => $date));
 }
Example #12
0
function send_order_by_email($Frm, $Err, $_authors = null)
{
    global $data_courses, $data_practica;
    if (!$Err) {
        $order_id = $Frm->GetNmValueI("order_id");
        $changes = array();
        $order_info = get_order_info($order_id);
        if ($order_info['vuz_id'] == 0) {
            $changes[] = "'вуз' " . $order_info['vuz_user'];
        } else {
            $vuz1 = get_vuz_name($order_info['vuz_id']);
            $changes[] = "'вуз' " . $vuz1['sname'] . "(" . $vuz1['name'] . ")";
        }
        if ($order_info['type_id'] == 0) {
            $changes[] = "'вид работы' " . $order_info['type_user'];
        } else {
            $changes[] = "'вид работы' " . get_worktype_name($order_info['type_id']);
        }
        $changes[] = "'факультет' " . get_naprav_name($order_info['napr_id']);
        if ($order_info['disc_id'] == 0) {
            $spec = $order_info['disc_user'];
        } else {
            $spec = get_discipline_name($order_info['disc_id']);
        }
        $changes[] = "Специальность: " . $spec;
        $changes[] = "Тема работы: " . $order_info['subject'];
        $changes[] = "Требования: " . $order_info['about_kln'];
        $changes[] = "Курс: " . $data_courses[$order_info['kurs']]['name'];
        $changes[] = "Практика: " . $data_practica[$order_info['prakt_pc']]['name'];
        $changes[] = "Минимальное число страниц: " . $order_info['pages_min'];
        $changes[] = "Максимальное число страниц: " . $order_info['pages_max'];
        $changes[] = "Минимальное число источников: " . $order_info['src_min'];
        $changes[] = "Максимальное число источников: " . $order_info['src_max'];
        $changes[] = "Гонорар автора: " . $order_info['cost_auth'];
        $changes[] = "Дата сдачи для автора: " . format_date($order_info['time_auth']);
        $changes[] = "";
        try {
            $manager = Employee::find($order_info['manager_id']);
        } catch (Exception $e) {
            $Frm->_gui->ERR("У заказа не указан менеджер");
            page_reloadAll();
        }
        try {
            $filial = Filial::find($order_info['filial_id']);
        } catch (Exception $e) {
            $Frm->_gui->ERR("У заказа не указан филиал");
            page_reloadAll();
        }
        if (empty($filial['email'])) {
            $Frm->_gui->ERR("У филиала к которому принадлежит заказ не указан email");
            page_reloadAll();
        }
        $changes[] = "Менеджер: " . $manager['fio'] . ". По данному заказу писать на почту " . $filial['email'];
        $changes[] = "Если заказ по данной дисциплине/специальности для Вас не является профильным, то Вы в любой момент можете отписаться от данной дисциплины/специальности в своем личном кабинете, расположенном по адресу: sessia-online.ru. Там же Вы так же можете подписаться на другие, интересные Вам дисциплины.";
        $msg_for_author = "Детали заказа №" . $order_id . ":\n";
        $msg_for_author .= join($changes, "<br>");
        $authors = array();
        if (is_array($_authors) && count($_authors)) {
            $authors = $_authors;
        } else {
            if (isset($_POST['authors'])) {
                $authors = $_POST['authors'];
            }
        }
        $failed = Author::saveMessageAndEnqueueEmail($order_id, $authors, 'u' . $_SESSION['user']['data']['id'], '№' . $order_id . ' ' . ucfirst($spec), str_replace(array('http://', 'https://'), '', $msg_for_author), \Components\Entity\EmailNotification::TO_SUBSCRIBED_AUTHORS_ON_DISTRIBUTION);
        //    $failed = Author::sendEmail($order_id, $authors, '№' . $order_id . ' ' . ucfirst($spec), str_replace(array('http://', 'https://'), '', $msg_for_author), true, true);
        if (!count($failed)) {
            $Frm->_gui->OK("Заказ отправлен");
        } else {
            $failed_receivers = array();
            foreach ($failed as $receiver) {
                $failed_receivers[] = $receiver['name'] . ' - ' . $receiver['email'];
            }
            $Frm->_gui->ERR("Вовремя отправки заказа возникли ошибки. Заказ не отправлен: " . join("\n", $failed_receivers));
        }
    }
}
Example #13
0
function editvisit_exec($Frm, $Err)
{
    global $vis_statuses;
    if (!$Err) {
        $changes = array();
        $vis = Meeting::find($Frm->GetNmValueI("vid"));
        if (!$vis) {
            $Frm->_gui->ERR("Встреча не найдена");
            return false;
        }
        $sum = $Frm->GetNmValueI("summa");
        $sumf = $Frm->GetNmValueI("summaf");
        $targ = $Frm->GetNmValueH("about");
        $stat = $Frm->GetNmValueI("status");
        $rep = $Frm->GetNmValueH("report");
        $dt = explode("-", $Frm->GetNmValue("date"));
        $dt = mktime(0, 0, 0, $dt[1], $dt[0], $dt[2]);
        $tms = $Frm->GetNmValueI("start");
        $tme = $Frm->GetNmValueI("finish");
        if ($stat != 1 && $sumf > 0) {
            $Frm->_gui->ERR("Фактическая сумма не может быть изменена, если встреча не проведена");
            return false;
        }
        if ($stat == 1 && $sum > $sumf) {
            $Frm->_gui->ERR("Фактическая сумма " . $sumf . " " . $GLOBALS["ofc_currency"] . " меньше суммы, которую нужно получить " . $sum . " " . $GLOBALS["ofc_currency"]);
            return false;
        }
        if ($sum != $vis["summa"]) {
            $changes[] = "'деньги' с " . $vis["summa"] . " на " . $sum . " " . $GLOBALS["ofc_currency"];
        }
        if ($sumf != $vis["summaf"]) {
            $changes[] = "'деньги фактически' с " . $vis["summaf"] . " на " . $sumf . " " . $GLOBALS["ofc_currency"];
        }
        if ($targ != $vis["about"]) {
            $changes[] = "'цель'";
        }
        if ($stat != $vis["status"]) {
            $changes[] = "'статус' с '" . $vis_statuses[$vis["status"]] . "' на '" . $vis_statuses[$stat] . "'";
        }
        if ($rep != $vis["report"]) {
            $changes[] = "'отчет'";
        }
        if ($dt != $vis["date"]) {
            $changes[] = "'дата встречи' с " . date("d-m-Y", $vis["date"]) . " на " . date("d-m-Y", $dt);
        }
        if ($tms != $vis["tm_start"]) {
            $changes[] = "'начало' с " . utils_cvt_i2times($vis["tm_start"]) . " на " . utils_cvt_i2times($tms);
        }
        if ($tme != $vis["tm_finish"]) {
            $changes[] = "'окончание' с " . utils_cvt_i2times($vis["tm_finish"]) . " на " . utils_cvt_i2times($tme);
        }
        $station_id = 0;
        $opisanie_klienta = "";
        $opisanie_pyti = "";
        if ($vis['filial_id'] == -1) {
            $station_id = $Frm->GetNmValueI("station");
            $opisanie_klienta = $Frm->GetNmValueH("opisanie_klienta");
            $opisanie_pyti = $Frm->GetNmValueH("opisanie_pyti");
            if ($station_id != $vis["station_id"]) {
                $changes[] = "'станция' с " . get_station_name($vis["station_id"]) . " на " . get_station_name($station_id);
            }
            if ($opisanie_klienta != $vis["opisanie_klienta"]) {
                $changes[] = "'описание клиента' с '" . $vis["opisanie_klienta"] . "' на '" . $opisanie_klienta . "'";
            }
            if ($opisanie_pyti != $vis["opisanie_pyti"]) {
                $changes[] = "'описание пути' с '" . $vis["opisanie_pyti"] . "' на '" . $opisanie_pyti . "'";
            }
        }
        if ($sumf > $sum) {
            $Frm->_gui->ERR("Фактическая сумма не может превышать " . $sum . " " . $GLOBALS["ofc_currency"]);
            return;
        }
        if ($tms > $tme) {
            $Frm->_gui->ERR("Некорректно задано время");
            return;
        }
        if ($stat && !$rep) {
            $Frm->_gui->ERR("Необходим отчет о встрече");
            return;
        }
        $msg = "Произошли следующие изменения по встрече №" . $vis["id"] . ":<br>";
        foreach ($changes as $c) {
            $msg .= $c . "<br>";
        }
        $msg .= "<a href='?section=vis&subsection=2&visit=" . $vis["id"] . "'>Перейти к просмотру</a>";
        Meeting::update($vis["id"], array("date" => $dt, "status" => $stat, "tm_start" => $tms, "tm_finish" => $tme, "about" => $targ, "summa" => $sum, "summaf" => $sumf, "report" => $rep, "opisanie_klienta" => $opisanie_klienta, "opisanie_pyti" => $opisanie_pyti, "station_id" => $station_id));
        Order::update($vis["order_id"], array('oplata_kln' => $sumf));
        $Frm->_gui->OK("Сохранено");
        // Письмо тому кто проводит если статус 0
        if (count($changes) && $vis["status"] == 0) {
            //$to, $from, $subj, $text, $prior, $srok, $parent=0, $order=0, $klient=0, $visit=0, $tender=0
            $msg_id = mls_Send("u" . $vis["user_id"], "u" . $_SESSION["user"]["data"]["id"], "Изменение параметров встречи №" . $vis["id"], $msg, 1, 0, 0, $vis["order_id"], $vis["client_id"], $vis["id"], 0);
            \Components\Classes\Author::enqueue_message_to_email($msg_id, array($vis["user_id"]), \Components\Entity\EmailNotificationType::TO_AUTHOR_ON_ORDER_CHANGE);
        }
    }
}
Example #14
0
			<div>Если имеются методические указания и материалы прикрепите файл (макс. размер 1го файла = ' . ini_get("upload_max_filesize") . ')</div>
			<div id="add_file_field" style="margin-top: 5px">
           		<input type=file name="zf_work_file" value="Выбрать" onchange="mkorder_add_file_change(this)">
			</div>
		</div>
		</form>';
        if ($order["manager_id"]) {
            if (isset($_REQUEST["cab_msg_answer"])) {
                $t = clearText($_REQUEST["cab_msg_answer"]);
                $t = substr($t, 0, 1000);
                if (strlen($t)) {
                    $cid = $_SESSION["frame"]["client"]["id"];
                    $sbj = "Сообщение от клиента по заказу " . $order["id"];
                    $message_id = Message::create(array("klient_id" => $cid, "order_id" => $order["id"], "created" => time(), "addr" => "u" . $order["manager_id"], "creator_id" => "k" . $cid, "subject" => $sbj, "text" => $t, "prior" => 1));
                    if ($message_id) {
                        \Components\Classes\Author::enqueue_message_to_email($message_id, $order['manager_id'], \Components\Entity\EmailNotificationType::TO_MANAGER_ON_ORDER_CHANGE);
                        $_SESSION["cab_ord_answer_info"] = "<span style='color:green'>Сообщение отправлено</span>";
                    } else {
                        $_SESSION["cab_ord_answer_info"] = "<span style='color:red'>Не удалось отправить сообщение</span>";
                    }
                    header("location: ?type=cabinet&order=" . $order["id"]);
                    die;
                } else {
                    $_SESSION["cab_ord_answer_info"] = "<span style='color:red;'>Введите текст сообщения</span>";
                }
            }
            print "<script>\n\tjQuery(function(){\n\tjQuery('#cab_msg_answer').bind('focus', function(){\n\t\tjQuery('#cab_msg_answer_btn').removeAttr('disabled');\n\t\tjQuery('#cab_msg_answer').css('color', 'black');\n\t\tjQuery('#cab_msg_answer').text('');\n\t\tjQuery('#cab_msg_answer').unbind('focus');\n\t});\n});\n</script>\n<div style='margin-top: 10px'>";
            if (strlen(@$_SESSION["cab_ord_answer_info"])) {
                print "<div style='margin-bottom: 5px;'>" . $_SESSION["cab_ord_answer_info"] . "</div>";
                $_SESSION["cab_ord_answer_info"] = "";
            } else {