Example #1
0
    die("нет данных");
}
$uid = intval($_POST["uid"]);
$date = intval($_POST["date"]);
if ($uid == 0) {
    if (!isset($_POST["ml"])) {
        die("нет данных");
    }
    $_users = explode(":", $_POST["ml"]);
    if (!count($_users)) {
        die("1");
    }
    $users = array();
    // получить все встречи всех манагеров
    foreach ($_users as $u) {
        $employer = Employee::find($u);
        $users[$u] = array();
        $users[$u]['fio'] = $employer['fio'];
        $users[$u]["visits"] = array();
        $users[$u]["visits_sum"] = 0;
        foreach (db::get_arrays("SELECT tm_start, tm_finish FROM " . TABLE_VISITS . " WHERE user_id=" . $u . " AND date=" . $date) as $r) {
            $users[$u]["visits"][] = $r;
            $users[$u]["visits_sum"] += $r["tm_finish"] - $r["tm_start"];
        }
    }
    print "<div style='overflow:auto; background:white; border: 1px solid gray; height: 78px'>" . "<table cellpadding=0 cellspacing=0 style='font-size:8pt; margin-left:2px;'>" . "<tr style='color:gray'><td>Сотрудник</td><td style='width:10px' nowrap></td><td>Занятость</td></tr>";
    // Филиал сотрудника. Если нет филиала, то используем 8 часов раб день
    $worklong = 0;
    if ($_SESSION["user"]["data"]["filial_id"]) {
        $fil = fils_get($_SESSION["user"]["data"]["filial_id"]);
        $dweek = date("w", $date) - 1;
Example #2
0
         $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['author_paid'], 'company_paid_new' => $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);
     }
     $result[] = 0;
     break;
 case 'color':
     $bDoUpdate = false;
     $currentColors = db::get_single_value("SELECT conf_ord_colors FROM " . TBL_PREF . "data_users WHERE id = " . $_SESSION['user']['data']['id']);
     if (empty($currentColors)) {
         $currentColors = array();
     } else {
         $currentColors = unserialize($currentColors);
     }
     $currentColors[$_GET['order_id']] = $_GET['value'];
     $currentColors = serialize($currentColors);
     Employee::update($_SESSION['user']['data']['id'], array('conf_ord_colors' => $currentColors));
     $_SESSION['user']['data']['conf_ord_colors'] = $currentColors;
     break;
 case 'referrer_payment_status_all':
     $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);
         if ($order_info['referrer_payment_status'] == 0) {
             Order::update($order_id, array('referrer_payment_status' => 1, 'referrer_payment_date' => date('Y-m-d H:i:s')));
         }
     }
Example #3
0
 function loginform_exec($Frm, $Err)
 {
     if ($Err) {
         $Frm->_gui->Vars["login_message"] = "Ошибки при заполнении формы";
         return;
     }
     // clr
     db::delete(TABLE_LOGIN_HOST, "time < " . (time() - 900));
     $last_login_time = db::get_arrays("SELECT time FROM " . TABLE_LOGIN_HOST . " WHERE ip = '" . db::input($_SERVER["REMOTE_ADDR"]) . "' ORDER BY time");
     $cnt = count($last_login_time);
     $rowx["time"] = 0;
     if ($cnt) {
         $rowx = $last_login_time[0];
     }
     $user = Employee::findOneBy(array('email' => strtolower($Frm->GetValue(0)), 'hpwd' => md5($Frm->GetValue(1) . $Frm->GetValue(0))));
     if (!$user || $cnt > 2) {
         if ($cnt > 1) {
             $t = 900 - time() + $rowx["time"];
             if ($t > 60) {
                 $w = floor($t / 60) . " мин.";
             } else {
                 $w = " минуту";
             }
             $Frm->_gui->Vars["login_message"] = "Попытки исчерпаны. Подождите " . $w;
         } else {
             $Frm->_gui->Vars["login_message"] = "Ошибка. Осталось попыток: " . (2 - $cnt);
             db::insert(TABLE_LOGIN_HOST, array('ip' => $_SERVER['REMOTE_ADDR'], 'time' => time()));
         }
         return;
     } else {
         // ok
         if ($user["blocked"] || $user["black_list"]) {
             $Frm->_gui->Vars["login_message"] = "Доступ запрещен";
             return;
         }
         $ll = array();
         if ($user["last_login"]) {
             $ll = unserialize($user["last_login"]);
             while (count($ll) > 99) {
                 array_shift($ll);
             }
         }
         $ll[] = array("ip" => $_SERVER['REMOTE_ADDR'], "time" => time());
         Employee::update($user['id'], array('last_act' => time(), 'last_login' => serialize($ll)));
         unset($user["last_act"]);
         unset($user["last_login"]);
         $_SESSION["user"]["auth"] = true;
         $_SESSION["user"]["data"] = $user;
         page_reload();
     }
 }
Example #4
0
<?php

use Components\Classes\db;
use Components\Entity\Employee;
$id = intval($_REQUEST["zan"]);
$order_fields = array('id', 'klient_id', 'created', 'time_kln');
$order_by = ' ORDER BY id ASC';
if (isset($_REQUEST['sort_cgui_table_id_usotr_orders2'])) {
    $order_by = ' ORDER BY ' . $order_fields[$_REQUEST['sort_cgui_table_id_usotr_orders2']] . ' ASC';
} elseif (isset($_REQUEST['sort_cgui_table_id_usotr_orders2_up'])) {
    $order_by = ' ORDER BY ' . $order_fields[$_REQUEST['sort_cgui_table_id_usotr_orders2_up']] . ' DESC';
}
if (Employee::find($id)) {
    $orders = db::get_assoc_arrays("SELECT " . join(", ", $order_fields) . " FROM " . TABLE_ORDERS . " WHERE manager_id = " . $id . " OR author_id = " . $id . $order_by);
    $tbl = $GUI->Table("sotr_orders" . $n);
    $tbl->Width = "50%";
    $tbl->RowEvent2 = "document.location.href=\"?section=ord&subsection=2&order=%var%&p=1\"";
    $r = $tbl->NewColumn();
    $r->Caption = "Номер заказа";
    $r->DoSort = true;
    $r->Key = "id";
    $r = $tbl->NewColumn();
    $r->Caption = "Клиент";
    $r->DoSort = true;
    $r->Key = "klient_id";
    $r->Align = "left";
    $r->Process = "get_client_name";
    $r = $tbl->NewColumn();
    $r->Caption = "Принят";
    $r->DoSort = true;
    $r->Key = "created";
Example #5
0
<?php

use Components\Entity\Employee;
use Components\Classes\db;
use Components\Classes\Roles;
page_ScriptNeed("scripts.js", "modules/finances/referrer_system");
page_ScriptNeed("instant_edit.js", "js");
global $GUI;
if (isset($_REQUEST["ref_system_flds_cfg"])) {
    if (isset($_POST["flds"])) {
        $_SESSION["user"]["data"]["conf_ref_system_fld"] = serialize($_POST["flds"]);
    } else {
        $_SESSION["user"]["data"]["conf_ref_system_fld"] = serialize(array());
    }
    Employee::update($_SESSION["user"]["data"]["id"], array('conf_ref_system_fld' => $_SESSION["user"]["data"]["conf_ref_system_fld"]));
    $_SESSION["ref_system_flds_cfg"] = true;
    $GUI->OK("Выполнено");
    die("");
}
$temp_table = 'referrer_system_' . $_SESSION["user"]["data"]["id"];
$query = "\n  SELECT o.*, ref.id AS referrer_id, ref.fio AS referrer_fio, ref.email AS referrer_email, ref.telnum AS referrer_phone, ref.city AS referrer_city, ref.referrer_code\n  FROM " . TBL_PREF . "orders o\n  JOIN " . TBL_PREF . "clients c ON c.id = o.klient_id\n  JOIN " . TBL_PREF . "clients ref ON ref.id = c.ref_id\n  WHERE c.ref_id != 0\n  ORDER BY o.id ASC\n";
db::query("CREATE TEMPORARY TABLE " . TBL_PREF . $temp_table . " AS (" . $query . ")");
//Search panel
$sp = $GUI->UPanel();
$sp->Caption = "Поиск партнера";
$searchWhere = '';
if (!empty($_REQUEST["kln_search"])) {
    $sp->defOpen = true;
    if (!empty($_REQUEST['search_id'])) {
        if (!empty($searchWhere)) {
            $searchWhere .= ' OR';
Example #6
0
<?php

use Components\Classes\db;
use Components\Classes\Roles;
use Components\Entity\Order;
use Components\Entity\Employee;
use Components\Entity\OrderStatus;
if (isset($_REQUEST["ordfldscfg"])) {
    if (isset($_POST["flds"])) {
        $_SESSION["user"]["data"]["conf_ordfld"] = serialize($_POST["flds"]);
    } else {
        $_SESSION["user"]["data"]["conf_ordfld"] = serialize(array());
    }
    Employee::update($_SESSION["user"]["data"]["id"], array('conf_ordfld' => $_SESSION["user"]["data"]["conf_ordfld"]));
    $_SESSION["ordfldscfg"] = true;
    $GUI->OK("Выполнено");
    die("");
}
page_scriptNeed('instant_edit.js', '/js/');
page_scriptNeed('color_picker.js', '/js/');
page_scriptNeed('jquery.colorPicker.js', '/js/simpleColorPicker/');
page_styleNeed('colorPicker.css', '/js/simpleColorPicker/');
global $data_users, $data_filials, $data_vuz, $data_payments, $data_napravl, $data_worktypes, $data_discip;
//////////// Filters
$Filter = $GUI->FltrCol("ord", "data_users:conf_ordfltr");
$Filter->SrcTable = TABLE_ORDERS;
$Filter->DstTable = "orders_tmp_" . $_SESSION["user"]["data"]["id"];
// Добавляем фильтры
if (!is_author($_SESSION['user']['data']['id'])) {
    $f = $Filter->AddFilter("CGUI_FilterSelect");
    $f->name = "Клиент";
Example #7
0
/**
 * @deprecated
 * @param $group_id
 * @param null $filial_id
 * @return array
 */
function get_users_by_group($group_id, $filial_id = null)
{
    return Employee::findBy(array('group_id' => $group_id, 'filial_id' => $filial_id), array('fio' => 'ASC'));
}
Example #8
0
 public static function enqueue_message_to_email($message_id, $authors_ids, $notification_type = EmailNotification::TO_AUTHOR_ON_ASSIGN)
 {
     if (empty($message_id) || !is_numeric($message_id)) {
         return false;
     }
     assert(in_array($notification_type, EmailNotification::$NOTIFICATION_TYPES));
     // Если не надо уведомлять - выходим типа все ок
     if (!EmailNotificationType::isSendable($notification_type)) {
         return array();
     }
     $result = array();
     if (!is_array($authors_ids) && is_numeric($authors_ids)) {
         $authors_ids = array($authors_ids);
     }
     foreach ($authors_ids as $id) {
         if (is_numeric($id)) {
             try {
                 $author = Employee::find($id);
             } catch (Exception $e) {
                 $result['error'][] = $id;
                 continue;
             }
             $notification_id = EmailNotification::create(array('message_id' => $message_id, 'receiver_email' => $author['email'], 'type' => $notification_type));
             if ($notification_id) {
                 $result['success'][] = $id;
             }
         } else {
             $ids = explode(', ', $id);
             $temp_result = self::enqueue_message_to_email($message_id, $ids, $notification_type);
             if (count($temp_result['success'])) {
                 array_push($result['success'], $temp_result['success']);
             }
             if (count($temp_result['error'])) {
                 array_push($result['error'], $temp_result['error']);
             }
         }
     }
     return $result;
 }
Example #9
0
<?php

use Components\Exceptions\Exception;
use Components\Entity\Employee;
use Components\Classes\db;
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;">
Example #10
0
                $clients = Client::findBy(array('filial_id' => $_SESSION["user"]["data"]["filial_id"]));
            }
            $export->setData($clients);
            $export->writeData();
            $export->getOutput('Клиенты');
            die;
            break;
        case 'users':
            if (!Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Скачать базу сотрудников")) {
                $GUI->ERR('У вас нету прав');
                page_reloadSubSec();
            }
            $export = new MysqlToExcel();
            $export->setWorkSheetName('База сотрудников');
            $export->setModuleName('sotr');
            $export->setSubModuleName('Список');
            if (is_director($_SESSION["user"]["data"]["id"])) {
                $employers = Employee::findAll();
            } else {
                $employers = Employee::findBy(array('filial_id' => $_SESSION["user"]["data"]["filial_id"]));
            }
            $export->setData($employers);
            $export->writeData();
            $export->getOutput('Сотрудники');
            die;
            break;
        default:
            $GUI->ERR('У вас нету прав');
            page_reloadSubSec();
    }
}
Example #11
0
<?php

use Components\Entity\Employee;
use Components\Entity\EmployeeBlack;
use Components\Classes\Author;
if (!user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Редактировать")) {
    $GUI->informer->ERR(PERMISSION_DENIED);
    page_ReloadSubSec();
}
$id = intval($_REQUEST["edit"]);
$employer = Employee::find($id);
if (!$employer) {
    $GUI->informer->ERR("Запись не найдена");
    page_ReloadSubSec();
}
need_data('data_napravl');
if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Удалить")) {
    if ($_SESSION["user"]["data"]["id"] != $id) {
        $GUI->cmdmenu->AddItem("Удалить", "?section=sotr&subsection=2&del=" . $id);
    }
}
if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Написать")) {
    $GUI->cmdmenu->AddItem("Написать", "?section=mls&subsection=1&_to=u" . $id);
}
if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "История переписки")) {
    $GUI->cmdmenu->AddItem("История переписки", "?section=sotr&subsection=2&msgs=" . $id);
}
if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Занятость")) {
    $GUI->cmdmenu->AddItem("Занятость", "?section=sotr&subsection=2&zan=" . $id);
}
$c = text_lines_count($employer["comments"]);
Example #12
0
function tp_author_notification($value, $row, $table, &$info)
{
    global $GUI;
    try {
        $author = Employee::find($row['author_id']);
        $icon = '<div>';
        $icon .= $GUI->getIcon("?section=ord&subsection=2&order=" . $row['id'] . "&p=7&t=1", "msg", "Отправить напоминание");
        $icon .= '<span style="color:blue; position: relative; top: -2px;left:5px;">' . count(AuthorNotification::findBy(array('author_id' => $author['id'], 'order_id' => $row['id'], 'type' => 1))) . '</span>';
        $icon .= '</div>';
        $icon .= '<div>';
        $icon .= $GUI->getIcon("?section=ord&subsection=2&order=" . $row['id'] . "&p=7&t=2", "msg_red", "Отправить гневное напоминание");
        $icon .= '<span style="color:red; position: relative; top: -2px;left:5px;">' . count(AuthorNotification::findBy(array('author_id' => $author['id'], 'order_id' => $row['id'], 'type' => 2))) . '</span>';
        $icon .= '</div>';
    } catch (Exception $e) {
        $icon = '<div style="height: 20px;"></div>';
    }
    $offers_qt = '';
    if (!empty($row['manager_id']) && !empty($row['status_id'])) {
        $offers_qt = count(AuthorOffer::findBy(array('order_id' => $row['id'])));
    }
    return $icon . '<span style="color:red; position: relative; top: -26px;left:50px;">' . $offers_qt . '</span>';
}
Example #13
0
function deluser_exec($Frm, $Err)
{
    if (!$Err) {
        if (is_director($_SESSION["user"]['data']['id'])) {
            $id = $Frm->GetNmValueI('id');
            if (count(Order::findBy(array('manager_id' => $id)))) {
                $Frm->_gui->informer->ERR("У сотрудника есть назначенные заказы");
                return;
            }
            if (db::get_single_value("SELECT COUNT(id) FROM " . TBL_PREF . "data_visits WHERE user_id = '" . $id . "' AND status <> 1")) {
                $Frm->_gui->informer->ERR("У сотрудника есть назначенные встречи");
                return;
            }
            $resone = $Frm->GetNmValueH('reason');
            db::query("insert into " . TABLE_USERS_BLACK . " select * from " . TABLE_USERS . " where id= " . $id);
            EmployeeBlack::update($id, array('comments' => $resone, 'blocked' => 1, 'black_list' => 1, 'removed_by' => $_SESSION['user']['data']['id'], 'removed_time' => time()));
            Employee::delete($id);
            $Frm->_gui->informer->OK("Сотрудник перенесен в черный список");
        } else {
            $Frm->_gui->informer->ERR("Перемещать сотрудников в черный список может только руководитель");
        }
        page_reloadSec();
    }
}