public function savePwd($userId)
 {
     if (!Auth::compareIds($userId, App::$instance)) {
         $this->error('403');
     }
     Token::checkToken();
     $request = Request::createFromGlobals();
     $request = $request->request;
     //check pass
     $this->validator->validate(['Старый пароль' => [$request->get('old_pwd'), 'required'], 'Новый_пароль' => [$request->get('new_pwd'), 'required|min(5)|max(25)|pwd'], 'Новый пароль подтверждение' => [$request->get('new_pwd_confirm'), 'required|matches(Новый_пароль)']]);
     //if no passes
     if (!$this->validator->passes()) {
         App::$instance->MQ->setMessage($this->validator->errors()->all());
         ST::redirect("back");
     }
     $oldPwd = md5($request->get('old_pwd'));
     if (User::where("id", $userId)->where('password', $oldPwd)->count()) {
         $user = User::find($userId);
         $user->password = md5($request->get('new_pwd'));
         try {
             $user->save();
         } catch (Exception $e) {
             App::$instance->MQ->setMessage('Ошибка при сохранении');
         }
         App::$instance->MQ->setMessage('Пароль обновлен');
         ST::redirect("back");
     } else {
         App::$instance->MQ->setMessage('Старый пароль введен не верно');
         ST::redirect("back");
     }
 }
 public function store()
 {
     Token::checkToken();
     $xml = new SimpleXMLElement('<root/>');
     //        dump($this->request->request->get('modules'));
     //        die;
     if ($this->request->request->has('modules')) {
         foreach ($this->request->request->get('modules') as $module) {
             $this->validator->validate(['name' => [$module['name'], 'required|max(255)'], 'description' => [$module['description'], 'required|max(560)'], 'help' => [$module['help'], 'required|max(1000)'], 'value' => [$module['value'], 'between(0,1)']]);
             //if no passes
             if (!$this->validator->passes()) {
                 $this->putUserDataAtBackPack($this->request);
                 App::$instance->MQ->setMessage($this->validator->errors()->all());
                 ST::redirect("back");
             }
             $srvXml = $xml->addChild('module');
             $srvXml->addAttribute('name', $module['name']);
             $srvXml->addAttribute('description', $module['name']);
             $srvXml->addAttribute('help', $module['help']);
             $srvXml->addAttribute('value', intval($module['value']));
         }
     }
     $xml->asXML("config/modules-cfg.xml");
     App::$instance->MQ->setMessage('Список обновлен');
     App::$instance->log->logWrite(LOG_CONFIG_CHANGE, 'Изменен список модулей системы');
     ST::redirect("back");
 }
 private function isDefaultUserIteractBlock($id)
 {
     Auth::isAdminOrDie(App::$instance);
     if (in_array($id, [1])) {
         App::$instance->MQ->setMessage('Нелья редактировать системныe записи');
         ST::redirect("back");
     }
 }
 public function unmark($caVksId)
 {
     Auth::isAdminOrDie(App::$instance);
     foreach (AdminCaNote::where('vks_id', $caVksId)->get() as $caVks) {
         $caVks->delete();
     }
     App::$instance->MQ->setMessage("У ВКС ЦА {$caVksId} удален флаг");
     ST::redirect('back');
 }
 public function delete($id)
 {
     Auth::isAdminOrDie(App::$instance);
     if ($id == 1) {
         App::$instance->MQ->setMessage("Это удалить нельзя, просто переименуйте как вам нужно");
         ST::redirect('back');
     }
     $department = Department::findorFail($id);
     $department->delete();
     App::$instance->MQ->setMessage("Успешно удалено");
     App::$instance->log->logWrite(LOG_CONFIG_CHANGE, 'Подразделение удалено' . $department->name);
     ST::redirectToRoute('Departments/index');
 }
 function pushToStack($vks_id, $force = false)
 {
     try {
         $vks = Vks::approved()->notEnded()->findOrFail($vks_id);
     } catch (Exception $e) {
         $this->error('404');
     }
     if (!OutlookCalendarRequest::where('user_id', App::$instance->user->id)->where('vks_id', $vks->id)->count()) {
         OutlookCalendarRequest::create(array('user_id' => App::$instance->user->id, 'vks_id' => $vks->id, 'request_type' => OutlookCalendarRequest::REQUEST_TYPE_NEW, 'send_status' => OutlookCalendarRequest::SEND_STATUS_REQUIRED));
         App::$instance->log->logWrite(LOG_OTHER_EVENTS, "New Outlook request create for " . App::$instance->user->login . ', vks: ' . $vks->id);
         App::$instance->MQ->setMessage("Приглашение сформировано, ожидайте, отправка будет произведена в течении 2х минут");
     } else {
         if ($force) {
             $reSend = OutlookCalendarRequest::where('user_id', App::$instance->user->id)->where('vks_id', $vks->id)->first();
             $reSend->send_status = OutlookCalendarRequest::SEND_STATUS_REQUIRED;
             $reSend->save();
             App::$instance->log->logWrite(LOG_OTHER_EVENTS, "New Outlook request create for " . App::$instance->user->login . ', vks: ' . $vks->id);
             App::$instance->MQ->setMessage("Приглашение сформировано, ожидайте, отправка будет произведена в течении 2х минут");
         } else {
             App::$instance->MQ->setMessage("Приглашение уже отправлялось в ваш календарь, <a class='confirmation' href='" . ST::route('OutlookCalendarRequest/pushToStack/' . $vks->id . '/forced') . "'>Отправить еще раз</a>");
         }
     }
     ST::redirect('back');
 }
 public function update($blocked_time_id)
 {
     $request = $this->request->request;
     $this->validator->validate(['Дата начала блокировки' => [$request->get('start_at_date'), 'required|date'], 'Дата окончания блокировки' => [$request->get('end_at_date'), 'required|date'], 'Время начала блокировки' => [$request->get('start_at_time'), 'required'], 'Время окончания блокировки' => [$request->get('end_at_time'), 'required'], 'Описание' => [$request->get('description'), 'required|max(360)']]);
     //if no passes
     if (!$this->validator->passes()) {
         $this->putUserDataAtBackPack($this->request);
         App::$instance->MQ->setMessage($this->validator->errors()->all());
         ST::redirect("back");
     }
     //prepare dates
     $start_at = date_create($request->get('start_at_date') . " " . $request->get('start_at_time') . ":00");
     $end_at = date_create($request->get('end_at_date') . " " . $request->get('end_at_time') . ":00");
     if ($end_at <= $start_at) {
         $this->putUserDataAtBackPack($this->request);
         App::$instance->MQ->setMessage('Дата начала не может быть больше или равна окончанию', 'danger');
         ST::redirect("back");
     }
     //        die;
     $block = BlockedTime::findOrFail($blocked_time_id);
     $block->start_at = $start_at;
     $block->end_at = $end_at;
     $block->vks_type_blocked = VKS::TYPE_SIMPLE;
     $block->description = $request->get('description');
     $block->save();
     App::$instance->log->logWrite(LOG_CONFIG_CHANGE, "Блокировка {$block->start_at} - {$block->end_at}, {$block->blocked_type_named} изменена");
     App::$instance->MQ->setMessage("Блокировка изменена");
     ST::redirectToRoute('BlockedTime/index');
 }
 public function storeHelp()
 {
     Token::checkToken();
     $xml = new SimpleXMLElement('<root/>');
     if ($this->request->request->has('help')) {
         foreach ($this->request->request->get('help') as $help) {
             $this->validator->validate([$help['humanized'] => [$help['content'], 'required|max(320)']]);
             //if no passes
             if (!$this->validator->passes()) {
                 $this->putUserDataAtBackPack($this->request);
                 App::$instance->MQ->setMessage($this->validator->errors()->all());
                 ST::redirect("back");
             }
             $srvXml = $xml->addChild('element');
             $srvXml->addChild('humanized', $help['humanized']);
             $srvXml->addChild('name', $help['name']);
             $srvXml->addChild('content', $help['content']);
         }
         $xml->asXML("config/help_standart.xml");
         App::$instance->MQ->setMessage('Список обновлен');
         App::$instance->log->logWrite(LOG_CONFIG_CHANGE, 'изменены сообщения помощи');
     } else {
         App::$instance->MQ->setMessage('Нет обязательного параметра');
     }
     return ST::redirectToRoute('index/index');
 }
 public function backWithData($message, $message_class = 'danger')
 {
     $this->putUserDataAtBackPack($this->request);
     App::$instance->MQ->setMessage($message, $message_class);
     ST::redirect("back");
 }
 static function ctrRedirAndShowMessage($location, $message)
 {
     //        @session_start();
     $_SESSION['pm'] = $message;
     ST::redirect($location);
 }
 public function restoreDefaultsColors()
 {
     $user = User::find(App::$instance->user->id);
     $user->colors = Null;
     $user->save();
     App::$instance->MQ->setMessage('Цветовая схема сброшена');
     ST::redirect("back");
 }
 public function makeExcel(array $collectVkses)
 {
     /** Error reporting */
     error_reporting(E_ALL);
     ini_set('display_errors', TRUE);
     ini_set('display_startup_errors', TRUE);
     if (PHP_SAPI == 'cli') {
         die('This example should only be run from a Web Browser');
     }
     /** Include PHPExcel */
     require_once CORE_REPOSITORY_REAL_PATH . 'phpExcel/PHPExcel.php';
     // Create new PHPExcel object
     $objPHPExcel = new PHPExcel();
     // Set document properties
     $objPHPExcel->getProperties()->setCreator("Vks")->setLastModifiedBy("Vks")->setTitle("Отчет о созданных ВКС")->setSubject("Отчет о созданных ВКС")->setDescription("")->setKeywords("office 2007 openxml php")->setCategory("VKS REPORT");
     // Add some data
     $number = '1';
     $letter = 'A';
     $sheet = $objPHPExcel->getActiveSheet();
     $sheet->getRowDimension($number)->setRowHeight(40);
     $sheet->getColumnDimension($letter)->setWidth(5);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'id');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Название');
     $sheet->getColumnDimension($letter)->setWidth(15);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Дата');
     $sheet->getColumnDimension($letter)->setWidth(15);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Начало');
     $sheet->getColumnDimension($letter)->setWidth(15);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Окончание');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Подразделение');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Заказчик ФИО');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Заказчик тел.');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Заказчик почта');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Статус');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Тип');
     $sheet->getColumnDimension($letter)->setWidth(15);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Участники с раб. мест');
     $sheet->getColumnDimension($letter)->setWidth(5);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Участники из справочника');
     $sheet->getColumnDimension($letter)->setWidth(5);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Владелец');
     $sheet->getColumnDimension($letter)->setWidth(25);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Утвердил админ');
     $sheet->getColumnDimension($letter)->setWidth(5);
     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, 'Запись ВКС');
     $sheet->getColumnDimension($letter)->setWidth(5);
     $style = array('alignment' => array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER, 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER));
     $sheet->getStyle("A1:Z500")->applyFromArray($style);
     $number = '2';
     foreach ($collectVkses as $vks) {
         $letter = 'A';
         //always start at A
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->id);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->title);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->humanized->date);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->humanized->startTime);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->humanized->endTime);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->department_rel ? $vks->department_rel->prefix . ". " . $vks->department_rel->name : '-');
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->init_customer_fio);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->init_customer_phone);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->init_customer_mail);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->humanized->status);
         $type = '';
         $type .= $vks->is_simple ? 'Простая' : 'Стандартная';
         $type .= $vks->other_tb_required ? '+ТБ-ТБ' : '';
         $type .= !$vks->other_tb_required && $vks->link_ca_vks_id ? '+По приглашению ЦА' : '';
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $type);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->in_place_participants_count);
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, count($vks->participants));
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->owner ? $vks->owner->login : '******');
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->approver ? $vks->approver->login : "******");
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($letter++ . $number, $vks->record_required ? 'да' : 'нет');
         $number++;
     }
     // Miscellaneous glyphs, UTF-8
     //        $objPHPExcel->setActiveSheetIndex(0)
     //            ->setCellValue('A4', 'Miscellaneous glyphs')
     //            ->setCellValue('A5', 'Что насчет русских букв!');
     // Rename worksheet
     //        $objPHPExcel->getActiveSheet()->setTitle('Simple');
     // Set active sheet index to the first sheet, so Excel opens this as the first sheet
     $objPHPExcel->setActiveSheetIndex(0);
     // Redirect output to a client’s web browser (Excel2007)
     header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     header('Content-Disposition: attachment;filename="vks_report' . date_create()->getTimestamp() . '.xlsx"');
     header('Cache-Control: max-age=0');
     // If you're serving to IE 9, then the following may be needed
     header('Cache-Control: max-age=1');
     // If you're serving to IE over SSL, then the following may be needed
     header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
     // Date in the past
     header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
     // always modified
     header('Cache-Control: cache, must-revalidate');
     // HTTP/1.1
     header('Pragma: public');
     // HTTP/1.0
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
     ob_end_clean();
     $objWriter->save('php://output');
     ST::redirect('Report/index');
 }
 public function delete($id)
 {
     $att = Attendance::findOrFail($id);
     $att->delete();
     App::$instance->MQ->setMessage("Успешно удалено");
     ST::redirect("?route=AttendanceNew/show/" . $att->parent_id);
 }
 public function publicStatusChange($vksId)
 {
     try {
         $vks = Vks::findorFail($vksId);
     } catch (Exception $e) {
         $this->error("404", $e->getMessage());
     }
     if (!$this->isThisUserCanEdit($vks)) {
         $this->error('403');
     }
     $vks->is_private = $vks->is_private ? 0 : 1;
     $vks->save();
     $m = $vks->is_private ? 'Скрыт' : 'Виден всем';
     App::$instance->MQ->setMessage("Вкс {$vks->id}, видимость кода изменена, теперь код - " . $m);
     OutlookCalendarRequest_controller::changeRequestTypeAndPutToResend($vks->id, OutlookCalendarRequest::REQUEST_TYPE_UPDATE);
     ST::redirect('back');
 }