public function sendAdminNotice(Vks $vks)
 {
     $vksArray = $vks->toArray();
     $admins = User::whereIn('role', [ROLE_ADMIN, ROLE_ADMIN_MODERATOR])->get(['login', 'email']);
     if (count($admins)) {
         foreach ($admins as $admin) {
             $message = App::$instance->twig->render('mails/v2/newVksAdminNotificate.twig', array('vks' => $vksArray, 'http_path' => HTTP_BASE_PATH, 'appHttpPath' => NODE_HTTP_PATH));
             Mail::sendMailToStack($admin->email, "Новая заявка на ВКС #{$vks['id']}", $message);
             App::$instance->log->logWrite(LOG_MAIL_SENDED, "Новая заявка на ВКС #{$vks['id']}");
         }
     }
 }
 public function pullVersion($vksId, $versionId)
 {
     if ($versionId == 0) {
         $vks = Vks::full()->findOrFail($vksId);
         $vks->version = new stdClass();
         $vks->version->version = null;
     } else {
         $vksD = unserialize(VksVersion::where("vks_id", $vksId)->where("version", $versionId)->first(['dump'])->dump);
         $vks = new Vks();
         foreach ((array) $vksD as $param => $value) {
             $vks->{$param} = $value;
         }
         $vks->version = VksVersion::where("vks_id", $vksId)->with('changer')->where("version", $versionId)->first(['vks_id', 'version', 'created_at', 'changed_by'])->toArray();
     }
     $vksCtrl = new Vks_controller();
     $vksCtrl->humanize($vks);
     $res = array();
     foreach ($vks->toArray() as $key => $val) {
         if (!is_object($val)) {
             $res[$key] = $val;
         } else {
             $res[$key] = (array) $val;
         }
     }
     return $res;
 }
 public function isCodeInUse($code, $period_start, $period_end, $force_no_ajax = false)
 {
     $use = false;
     $period_start = $period_start instanceof DateTime ? $period_start : date_create($period_start);
     $period_end = $period_end instanceof DateTime ? $period_end : date_create($period_end);
     //        dump($period_start, $period_end);
     $vc = new Vks_controller();
     //how much digits in num
     $digits = strlen((string) $code);
     $vkses = Vks::with('connection_codes')->where('start_date_time', '<=', $period_end->modify("+" . Settings_controller::getOther('pause_gap') . " minutes"))->where('end_date_time', '>=', $period_start->modify("-" . Settings_controller::getOther('pause_gap') . " minutes"))->approved()->get(['id', 'title', 'start_date_time', 'end_date_time', 'date']);
     //        dump($vkses);
     foreach ($vkses as $vks) {
         if (count($vks->connection_codes)) {
             foreach ($vks->connection_codes as $vcode) {
                 if (substr($vcode->value, -$digits) == $code) {
                     $vks = $vc->humanize($vks);
                     $use = $vks;
                     break;
                 }
             }
         }
     }
     if ($force_no_ajax) {
         return $use;
     }
     //        ST::makeDebug($use);
     if (ST::isAjaxRequest()) {
         if ($use) {
             $use = $use->toJson();
         }
         print json_encode($use);
     } else {
         return $use;
     }
 }
 function show()
 {
     //        $this->render("test/
     $s = ST::microtime_float();
     $start = '2015-11-30';
     $end = '2016-01-11';
     $events = Vks::where('start_date_time', ">=", $start)->where('start_date_time', '<=', $end)->where('status', VKS_STATUS_APPROVED)->get();
     $e = ST::microtime_float();
     print $e - $s;
 }
 public function search($phrase)
 {
     if (ST::isAjaxRequest()) {
         $vksWSC = new Vks_controller();
         $result = [];
         $result['ws'] = Vks::where("id", $phrase)->whereIn('status', [VKS_STATUS_APPROVED, VKS_STATUS_PENDING])->take(1)->get();
         foreach ($result['ws'] as $vks) {
             $vksWSC->humanize($vks);
         }
         print json_encode($result);
     }
 }
Esempio n. 6
0
 /**
  * Define the application's command schedule.
  *
  * @param  \Illuminate\Console\Scheduling\Schedule $schedule
  * @return void
  */
 protected function schedule(Schedule $schedule)
 {
     $schedule->call(function () {
         $vksList = Vks::where('is_verified_by_user', 0)->with('owner', 'location')->get();
         //
         foreach ($vksList as $vks) {
             if ($vks->is_verified_by_user == 0 && date_create($vks->start_date_time) > date_create($vks->update_at) && date_create($vks->start_date_time)->getTimestamp() - date_create($vks->update_at)->getTimestamp() <= 86400) {
                 $t = view('verificationMail', ['vks' => $vks]);
                 \Mail::sendMailToStack($vks->owner->login, "Просим подтвердить проведение ВКС #{$vks->id}", $t->render());
                 $vks->is_verified_by_user = USER_VERIFICATION_MAIL_SENDED;
                 $vks->save();
                 \App::$instance->log->logWrite(LOG_MAIL_SENDED, "Верификационное письмо по ВКС {$vks->id}, отправлено {$vks->owner->login}");
             }
         }
     })->everyMinute()->sendOutputTo('verification_log.txt');
 }
 public function pullAndSendRequests()
 {
     $vc = new Vks_controller();
     $requests = TechSupportRequest::where("status", TechSupportRequest::STATUS_READY_FOR_SEND)->with('attendance', 'owner')->get();
     $temp_mails = 'Tomarov1-iv@mail.ca.sbrf.ru; DenisovDE@ab.srb.local';
     if (count($requests)) {
         foreach ($requests as $request) {
             $vks = Vks::full()->find($request->vks_id);
             $vc->humanize($vks);
             $appHttpPath = NODE_HTTP_PATH;
             $message = App::$instance->twig->render('mails/v2/tech_support/new.twig', compact('request', 'vks', 'appHttpPath'));
             Mail::sendMailToStack($temp_mails, 'Запрос тех. поддержки для точки ' . $request->attendance->name . ' на ВКС #' . $vks->id, $message);
             $request->status = TechSupportRequest::STATUS_DELIVERED;
             $request->save();
         }
     }
 }
 public function collect()
 {
     $vc = new Vks_controller();
     $request = $this->request->request;
     //        dump($request);
     $this->validator->validate(['Начало' => [$request->get('dates')['start'], 'required|date'], 'Окончание' => [$request->get('dates')['end'], 'required|date']]);
     if (!$this->validator->passes()) {
         $this->putUserDataAtBackPack($this->request);
         App::$instance->MQ->setMessage($this->validator->errors()->all(), 'danger');
         ST::redirect("back");
     }
     $start = date_create($request->get('dates')['start']);
     $end = date_create($request->get('dates')['end']);
     if ($start > $end) {
         $this->putUserDataAtBackPack($this->request);
         App::$instance->MQ->setMessage("Дата начала больше даты окончания", 'danger');
         ST::redirect("back");
     }
     if (date_diff($end, $start)->days > 90) {
         $this->putUserDataAtBackPack($this->request);
         App::$instance->MQ->setMessage("Задан слишком большой диапазон для выборки, максимум 60 дней", 'danger');
         ST::redirect("back");
     }
     //prepare filter
     $statuses = [];
     if ($request->has('filter') && isset($request->get('filter')['status']) && count($request->get('filter')['status'])) {
         foreach ($request->get('filter')['status'] as $status => $indicator) {
             $statuses[] = $status;
         }
     }
     //        dump($statuses);
     $collectVkses = [];
     $collectVksesRaw = Vks::where('start_date_time', '>=', $start)->where('start_date_time', "<=", $end)->whereIn('status', $statuses)->full()->get();
     if (count($collectVksesRaw)) {
         foreach ($collectVksesRaw as $vks) {
             $collectVkses[] = $vc->humanize($vks);
         }
     } else {
         $this->putUserDataAtBackPack($this->request);
         App::$instance->MQ->setMessage("ВКС в запрашиваемом периоде не найдено, попробуйте изменить запрос", 'info');
         ST::redirect("back");
     }
     //        dump($collectVkses);
     $this->makeExcel($collectVkses);
 }
 function pullAndSendFromStack()
 {
     $vc = new Vks_controller();
     $pullMails = OutlookCalendarRequest::notSended()->get();
     if (count($pullMails)) {
         foreach ($pullMails as $outlookRequest) {
             $vks = Vks::full()->find($outlookRequest->vks_id);
             if ($vks) {
                 $vc->humanize($vks);
                 Mail::sendIcalEvent($vks, $outlookRequest->request_type, $outlookRequest->user);
                 App::$instance->log->logWrite(LOG_MAIL_SENDED, 'Outlook event invite sended to: ' . $outlookRequest->user->email);
                 $outlookRequest->send_status = OutlookCalendarRequest::SEND_STATUS_COMPLETED;
                 $outlookRequest->save();
             } else {
                 App::$instance->log->logWrite(LOG_MAIL_SENDED, 'Outlook event invite can\'t be sended, vks not found, vks_id:' . $outlookRequest->vks_id . ', request_id:' . $outlookRequest->id);
             }
         }
     }
 }
Esempio n. 10
0
 public function show($filter = 'all')
 {
     Auth::isLoggedOrDie(App::$instance);
     $selectedFilter = mb_strtolower($filter);
     $filters = ['all', 'meaning', 'pending', 'status', 'invited', 'deleted'];
     if (!in_array($selectedFilter, $filters)) {
         App::$instance->MQ->setMessage("Фильтр не определен, вам будут показаны все записи");
     }
     $statusesForSelect = [];
     switch ($selectedFilter) {
         case 'all':
             $statusesForSelect = [VKS_STATUS_DELETED, VKS_STATUS_APPROVED, VKS_STATUS_PENDING, VKS_STATUS_DROP_BY_USER];
             break;
         case 'meaning':
             $statusesForSelect = [VKS_STATUS_APPROVED, VKS_STATUS_PENDING];
             break;
         case 'pending':
             $statusesForSelect = [VKS_STATUS_PENDING];
             break;
         case 'status':
             $statusesForSelect = [VKS_STATUS_APPROVED];
             break;
         case 'deleted':
             $statusesForSelect = [VKS_STATUS_DELETED, VKS_STATUS_DROP_BY_USER];
             break;
         default:
             $statusesForSelect = [VKS_STATUS_DELETED, VKS_STATUS_APPROVED, VKS_STATUS_PENDING, VKS_STATUS_DROP_BY_USER];
             break;
     }
     $vksList = Vks::where('owner_id', App::$instance->user->id)->whereIn('status', $statusesForSelect)->full()->take($this->getQlimit(30))->skip($this->getQOffset())->orderBy($this->getQOrder(), $this->getQVector())->get();
     $vksCtrl = new Vks_controller();
     foreach ($vksList as &$vks) {
         $vks->manipulatable = VKSTimeAnalizator::isManipulatable($vks);
         $vks->dayBeforeStart = VKSTimeAnalizator::is24ForBegin($vks);
         $vks = $vksCtrl->humanize($vks);
         //            dump($vks);
     }
     $recordsCount = Vks::where('owner_id', App::$instance->user->id)->whereIn('status', $statusesForSelect)->count();
     //pages
     $pages = RenderEngine::makePagination($recordsCount, $this->getQlimit(30), 'route');
     $this->render("lk/index", compact('vksList', 'pages', 'filter'));
 }
Esempio n. 11
0
 public function showLocalVks($caVksId)
 {
     Auth::isAdminOrDie(App::$instance);
     $vkses = Vks::with('participants')->where('link_ca_vks_id', $caVksId)->get();
     foreach ($vkses as $vks) {
         $this->humanize($vks);
     }
     $this->render('Vks/showLocalRelativeToCa', compact('vkses', 'caVksId'));
 }
$app->node = MY_NODE;
//------------------------ !main load end!------------------
ini_set("max_execution_time", 0);
$connection = new AMQPConnection($credentials);
$connection->connect();
//Create and declare channel
$channel = new AMQPChannel($connection);
//AMQPC Exchange is the publishing mechanism
$vc = new Vks_controller();
$callback_func = function (AMQPEnvelope $message, AMQPQueue $q) use(&$max_consume, $vc) {
    $data = json_decode($message->getBody());
    print '---------------query--------------' . "\r\n";
    echo sprintf(" QueueName: %s", $q->getName()), PHP_EOL;
    print '---------------received!--------------' . "\r\n";
    try {
        $vks = Vks::approved()->notEnded()->findOrFail($data->vks_id);
        $vc->humanize($vks);
        $user = User::find($data->user_id);
        if (!OutlookCalendarRequest::where('user_id', $user->id)->where('vks_id', $vks->id)->count()) {
            $reSend = OutlookCalendarRequest::create(array('user_id' => $user->id, 'vks_id' => $vks->id, 'request_type' => $data->request_type, 'send_status' => OutlookCalendarRequest::SEND_STATUS_COMPLETED));
            App::$instance->log->logWrite(LOG_OTHER_EVENTS, "New Outlook request create for " . $user->id . ', vks: ' . $vks->id);
        } else {
            if ($data->force) {
                $reSend = OutlookCalendarRequest::where('user_id', $user->id)->where('vks_id', $vks->id)->first();
                $reSend->request_type = $data->request_type;
                $reSend->send_status = OutlookCalendarRequest::SEND_STATUS_COMPLETED;
                $reSend->save();
                App::$instance->log->logWrite(LOG_OTHER_EVENTS, "New Outlook request create for " . $user->id . ', vks: ' . $vks->id);
            } else {
                echo sprintf("Outlook Request to: user_id %s, and vks_id %s already sended, no force KEY detected", $data->user_id, $data->vks_id), PHP_EOL;
            }
Esempio n. 13
0
$app->tbId = CAAttendance::where('name', 'like', '%' . TB_PATTERN . '%')->where('is_tb', 1)->first()->id;
header($app->opt->header);
date_default_timezone_set($app->opt->timezone);
//require_once('../init.php');
//start schedule here
//-----------------------------------------------------------------------------
$now = date_create()->setTimezone(new DateTimeZone(NODE_TIME_ZONE));
$now->modify("+25 minutes");
$now->setTime($now->format('H'), $now->format('i'), 0);
$mskTime = clone $now;
//dump($now);
$mskTime->setTimezone(new DateTimeZone(App::$instance->opt->ca_timezone));
$CaNotes = new NotesCa_controller();
if ($now->format('i') % 15 == 0) {
    $events = Vks::where(function ($query) use($now) {
        $query->where('start_date_time', $now)->whereIn('status', [VKS_STATUS_APPROVED]);
    })->where(function ($query) {
        $query->where('flag', 1)->orWhere('record_required', 1);
    })->get(['id', 'start_date_time', 'end_date_time', 'title', 'record_required', 'status', 'approved_by', 'owner_id', 'is_simple', 'flag'])->toArray();
    $CaEventsTmp = CAInsideParticipant::where('attendance_id', App::$instance->tbId)->with(['vks' => function ($query) use($mskTime) {
        $query->where('start_date_time', $mskTime)->whereIn('status', [VKS_STATUS_APPROVED]);
    }])->get(['vks_id']);
    //add to events container
    $CaEvents = [];
    foreach ($CaEventsTmp as $CAVks) {
        if ($CAVks->vks) {
            $CAVks->vks->fromCa = true;
            $CAVks->vks->tbFlag = $CaNotes->checkFlag($CAVks->vks->id);
            $CAVks->vks->start_date_time = $CAVks->vks->start_date_time instanceof DateTime ? $CAVks->vks->start_date_time : date_create($CAVks->vks->start_date_time);
            $CAVks->vks->end_date_time = $CAVks->vks->end_date_time instanceof DateTime ? $CAVks->vks->end_date_time : date_create($CAVks->vks->end_date_time);
            if ($CAVks->vks->tbFlag) {
Esempio n. 14
0
 public function fillRelationEntity(Request $request, Vks $vks)
 {
     //create relation records for transport vks
     //create counter
     $vksToCAInPlaceParticipant = new VksToCAInPlaceParticipant(array('vks_id' => $vks->id, 'participants_count' => intval($request->get('ca_participants'))));
     $vks->CaInPlaceParticipantCount()->save($vksToCAInPlaceParticipant);
     //create tb ids
     $tb_ids = array();
     //loop all tb participants
     foreach ($request->get('ca_participants_ids') as $tb_id) {
         $tb_ids[] = new VksToCAIdParticipant(array('vks_id' => $vks->id, 'ca_att_id' => intval($tb_id)));
     }
     $vks->CaIdParticipants()->saveMany($tb_ids);
 }
 public function feedAtParticipant()
 {
     $start = date_create($this->request->query->get('start'))->setTime(0, 0);
     $end = date_create($this->request->query->get('end'))->setTime(23, 59);
     $requested_participant_id = intval($this->request->query->get('requested_participant_id'));
     $vkses = Vks::where('start_date_time', ">=", $start)->where('start_date_time', '<=', $end)->whereIn('status', [VKS_STATUS_PENDING, VKS_STATUS_APPROVED])->notSimple()->with('participants')->get();
     $filtered_vkses = array();
     if (count($vkses)) {
         foreach ($vkses as $vks) {
             if (count($vks->participants)) {
                 foreach ($vks->participants as $participant) {
                     if ($participant->id === $requested_participant_id) {
                         $filtered_vkses[] = $vks;
                     }
                 }
             }
         }
     }
     //        dump($vkses);
     $filtered_vkses = $this->prepareEvents($filtered_vkses);
     print json_encode($filtered_vkses);
     //output
 }
 public function showCACodes($date, $partial = false)
 {
     $pullFromCa = $this->aksForCaTransportVksInDate($date);
     $collected = [];
     $pool = App::$instance->callService("vks_ca_negotiator")->askForPool();
     foreach ($pool as $code) {
         $collected[$code] = [];
     }
     foreach ($collected as $key => $val) {
         foreach ($pullFromCa as $caVks) {
             $caVks->v_room_num == $key ? $collected[$key][] = $caVks : false;
             $caVks->tbVks = Vks::where('link_ca_vks_id', $caVks->id)->first();
         }
     }
     //        dump($collected);
     $date = date_create($date)->format('d.m.Y');
     //        dump($collected);
     $this->render('Dashboards/showCaPoolCodes', compact('collected', 'date', 'partial'));
 }
Esempio n. 17
0
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$app->get('show', function () {
    //    $vksList = Vks::where('is_verified_by_user',0)->with('owner','location')->get();
    //
    //    foreach ($vksList as $vks) {
    //        $t = view('verificationMail',['vks'=>$vks]);
    //        Mail::sendMailToStack($vks->owner->login, "Просим подтвердить проведение ВКС #{$vks->id}", $t->render());
    //    }
    $vks = Vks::find(532);
    if ($vks->is_verified_by_user == 0 && date_create($vks->start_date_time) > date_create($vks->update_at) && date_create($vks->start_date_time)->getTimestamp() - date_create($vks->update_at)->getTimestamp() <= 86400) {
        $t = view('verificationMail', ['vks' => $vks]);
        Mail::sendMailToStack($vks->owner->login, "Просим подтвердить проведение ВКС #{$vks->id}", $t->render());
        $vks->is_verified_by_user = USER_VERIFICATION_MAIL_SENDED;
        $vks->save();
        App::$instance->log->logWrite(LOG_MAIL_SENDED, "Верификационное письмо по ВКС {$vks->id}, отправлено {$vks->owner->login}");
    }
});
 public function showSchedule($showType, $date, $attendance_id)
 {
     try {
         $attendance = Attendance::findOrFail($attendance_id);
     } catch (Exception $e) {
         $this->error('404');
     }
     $filename = NODE_REAL_PATH . 'storage/user_' . md5(App::$instance->user->ip) . '.txt';
     if (is_file($filename)) {
         $last_seen_stored = json_decode(file_get_contents($filename), JSON_PRETTY_PRINT);
     } else {
         $last_seen_stored = array();
     }
     //        if (isset($_COOKIE['last_seen_stored'])) {
     //            $last_seen_stored = json_decode($_COOKIE['last_seen_stored'], JSON_PRETTY_PRINT);
     //        } else {
     //            $last_seen_stored = array();
     //        }
     $last_seen = $last_seen_stored;
     //to view
     $last_seen = array_reverse($last_seen);
     if (count($last_seen_stored) > 15) {
         array_shift($last_seen_stored);
     }
     $key = array_search($attendance->toArray(), $last_seen_stored);
     if (is_numeric($key)) {
         unset($last_seen_stored[$key]);
     }
     array_push($last_seen_stored, $attendance->toArray());
     //        setrawcookie('last_seen_stored', json_encode($last_seen_stored, JSON_FORCE_OBJECT), 60 * 60 * 24 * 90);
     file_put_contents($filename, json_encode($last_seen_stored));
     if ($showType == self::SHOW_SCHEDULE_AS_LIST) {
         $vc = new Vks_controller();
         $start = date_create($date)->setTime(0, 0);
         $end = date_create($date)->setTime(23, 59);
         $requested_participant_id = intval($attendance_id);
         $vkses = Vks::where('start_date_time', ">=", $start)->where('start_date_time', '<=', $end)->whereIn('status', [VKS_STATUS_PENDING, VKS_STATUS_APPROVED])->notSimple()->with('participants', 'connection_codes')->orderBy("start_date_time", 'desc')->get();
         $filtered_vkses = array();
         if (count($vkses)) {
             foreach ($vkses as $vks) {
                 if (count($vks->participants)) {
                     foreach ($vks->participants as $participant) {
                         if ($participant->id === $requested_participant_id) {
                             $filtered_vkses[] = $vc->humanize($vks);
                         }
                     }
                 }
             }
         }
         return $this->render('attendance/schedule_list', compact('attendance', 'filtered_vkses', 'date', 'last_seen'));
     } else {
         return $this->render('attendance/schedule_graph', compact('date', 'attendance', 'last_seen'));
     }
 }
Esempio n. 19
0
 private function getLoadAtPeriod($timeSpot1, $timeSpot2, $serverNum)
 {
     $result = Null;
     switch ($serverNum) {
         case 0:
             foreach (Vks::where('start_date_time', '<=', $timeSpot2)->where('end_date_time', '>=', $timeSpot1)->approved()->get(['id']) as $vks) {
                 $result += Vks_controller::countParticipants($vks->id);
             }
             break;
     }
     return $result;
 }