Пример #1
0
 public static function isDayOff($date = null)
 {
     if (is_null($date)) {
         $date = date("d.m.Y");
     }
     //$date = "4.11.2016";
     $dateHelper = new DateHelper();
     list($day, $month, $year) = explode(".", $date);
     $timestamp = $dateHelper->getDateTimestamp($date);
     $dayOfWeek = date("w", $timestamp);
     if ($dayOfWeek == 0) {
         $dayOfWeek = 7;
     }
     $res = WorkCalendarTable::getList(array('filter' => array('DAY' => intval($day), 'MONTH' => intval($month), 'YEAR' => intval($year))));
     if (!$res) {
         //Если дата не найдена - смотрим день недели и отвечаем выходной он или нет
         if ($dayOfWeek >= 1 && $dayOfWeek <= 5) {
             return false;
         } else {
             return true;
         }
     } else {
         //Если дата найдена - смотрим выходной день или нет по флагу
         if ($res[0]["WEEKEND"] == "Y" || $res[0]["WEEKEND"] === true) {
             return true;
         } else {
             return false;
         }
     }
 }
Пример #2
0
 public static function showListTable($carID = null)
 {
     if (is_null($carID)) {
         $carID = MyCar::getDefaultCarID();
     }
     $arList = static::getTsList($carID);
     if ($arList) {
         echo '<div id="tsList"></div><div id="tsPager"></div>';
         $dateHelper = new CoreLib\DateHelper();
         $imgSrcPath = CoreLib\Tools::getSitePath(CoreLib\Loader::getTemplate('icar') . "images/");
         //msDebug($arList);
         $arDatas = array();
         foreach ($arList as $list) {
             $arDatas[] = array('id' => $list['ID'], 'ts' => "ТО-" . $list['TS_NUM'], 'date' => $list['DATE'], 'timestamp' => "=" . $dateHelper->getDateTimestamp($list['DATE']), 'odo' => "=" . $list['ODO'], 'cost' => "=" . $list['COST'], 'executors_name' => $list['EXECUTORS_NAME'], 'point_name' => $list['POINT_NAME'], 'point_latitude' => $list['POINT_LATITUDE'], 'point_longitude' => $list['POINT_LONGITUDE'], 'yandex_map' => "<img src='https://static-maps.yandex.ru/1.x/?l=map&z=12&size=600,450&pt=" . $list['POINT_LONGITUDE'] . "," . $list['POINT_LATITUDE'] . ",pm2blm'>", 'point_type' => $list['POINT_TYPE_NAME'], 'info' => strlen($list['INFO']) > 0 ? "<img src='" . $imgSrcPath . "info.png'>" : "", 'comment' => $list['INFO'], 'edit' => "<a href='edit.php?id=" . $list['ID'] . "'><img src='" . $imgSrcPath . "edit.png'></a>", 'delete' => "<a href='delete.php?id=" . $list['ID'] . "'><img src='" . $imgSrcPath . "delete.png'></a>");
         }
         $webixHelper = new IcarWebixHelper();
         $webixHelper->addFunctionSortByTimestamp();
         $arData = array('grid' => 'tsGrid', 'container' => 'tsList', 'footer' => true, 'tooltip' => true, 'pager' => array('container' => 'tsPager'), 'columns' => array($webixHelper->getColumnArray('DATE', array('footer' => '={text:"Итого:", colspan:3}')), $webixHelper->getColumnArray('TS'), $webixHelper->getColumnArray('ODO'), $webixHelper->getColumnArray('EXECUTORS'), $webixHelper->getColumnArray('COST', array('footer' => '={ content:"summColumn" }')), $webixHelper->getColumnArray('POINT'), $webixHelper->getColumnArray('INFO'), $webixHelper->getColumnArray('EDIT'), $webixHelper->getColumnArray('DELETE')), 'data' => $arDatas);
         return CoreLib\Webix::showDataTable($arData);
     } else {
         echo 'Нет данных о прохождении ТО';
         return false;
     }
 }
Пример #3
0
 protected static function getCalendar($month, $year)
 {
     //В коде может использоваться другой пакет
     if (CoreLib\Loader::issetPackage('dates')) {
         //Если пакет установлен, подключаем его
         CoreLib\Loader::IncludePackage('dates');
     }
     //$month = 2; $year = 2017; //Для теста
     $arCalendar = array();
     $dateHelper = new CoreLib\DateHelper();
     $arCalendar["INFO"]["MONTH"] = $month;
     $arCalendar["INFO"]["YEAR"] = $year;
     //Получаем timestamp на первое число заданного месяца и года
     $arCalendar["INFO"]["START_DATE"] = "1." . $month . "." . $year;
     $arCalendar["INFO"]["START_TIMESTAMP"] = $dateHelper->getDateTimestamp($arCalendar["INFO"]["START_DATE"]);
     //Получаем количество дней в месяце
     $arCalendar["INFO"]["NUMBER_OF_DAYS"] = intval(date("t", $arCalendar["INFO"]["START_TIMESTAMP"]));
     //Получаем timestamp на последнее число заданного месяца и года
     $arCalendar["INFO"]["LAST_DATE"] = $arCalendar["INFO"]["NUMBER_OF_DAYS"] . "." . $month . "." . $year;
     $arCalendar["INFO"]["LAST_TIMESTAMP"] = $dateHelper->getDateTimestamp($arCalendar["INFO"]["LAST_DATE"]);
     //Получаем день недели для 1го числа месяца
     $arCalendar["INFO"]["START_DAY_OF_WEEK"] = intval(date("w", $arCalendar["INFO"]["START_TIMESTAMP"]));
     if ($arCalendar["INFO"]["START_DAY_OF_WEEK"] == 0) {
         $arCalendar["INFO"]["START_DAY_OF_WEEK"] = 7;
     }
     //Получаем день недели для последнего числа месяца
     $arCalendar["INFO"]["LAST_DAY_OF_WEEK"] = intval(date("w", $arCalendar["INFO"]["LAST_TIMESTAMP"]));
     if ($arCalendar["INFO"]["LAST_DAY_OF_WEEK"] == 0) {
         $arCalendar["INFO"]["LAST_DAY_OF_WEEK"] = 7;
     }
     //Если 1е число не понедельник - нужно получить несколько дней предыдущего месяца
     if ($arCalendar["INFO"]["START_DAY_OF_WEEK"] != 1) {
         $arCalendar["INFO"]["DAY_PREV_MONTH"] = $arCalendar["INFO"]["START_DAY_OF_WEEK"] - 1;
         $arCalendar["INFO"]["FIRST_DAY_PREV_MONTH"] = $dateHelper->strToTime($arCalendar["INFO"]["START_DATE"], "-" . $arCalendar["INFO"]["DAY_PREV_MONTH"] . " day");
         list($arCalendar["INFO"]["PREV_MONTH_DAY"], $arCalendar["INFO"]["PREV_MONTH_MONTH"], $arCalendar["INFO"]["PREV_MONTH_YEAR"]) = explode(".", $arCalendar["INFO"]["FIRST_DAY_PREV_MONTH"]);
         for ($i = 0; $i < $arCalendar["INFO"]["DAY_PREV_MONTH"]; $i++) {
             if ($i == 0) {
                 $dayOfWeek = date("w", $dateHelper->getDateTimestamp(intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_YEAR"])));
                 if ($dayOfWeek == 0) {
                     $dayOfWeek = 7;
                 }
                 //Использование пакета "Даты"
                 if (CoreLib\Loader::issetPackage('dates')) {
                     $isDayOff = \MSergeev\Packages\Dates\Lib\WorkCalendar::isDayOff(intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_YEAR"]));
                     if ($isDayOff) {
                         $dayOfWeek = 6;
                     } else {
                         $dayOfWeek = 1;
                     }
                 }
                 $arCalendar["PREV_MONTH"][intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_YEAR"])] = array("TEXT" => intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) . " " . self::getMonthName(intval($arCalendar["INFO"]["PREV_MONTH_MONTH"])), "DAY_OF_WEEK" => $dayOfWeek);
             } else {
                 $dayOfWeek = date("w", $dateHelper->getDateTimestamp(intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) + $i . "." . intval($arCalendar["INFO"]["PREV_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_YEAR"])));
                 if ($dayOfWeek == 0) {
                     $dayOfWeek = 7;
                 }
                 //Использование пакета "Даты"
                 if (CoreLib\Loader::issetPackage('dates')) {
                     $isDayOff = \MSergeev\Packages\Dates\Lib\WorkCalendar::isDayOff(intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) + $i . "." . intval($arCalendar["INFO"]["PREV_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_YEAR"]));
                     if ($isDayOff) {
                         $dayOfWeek = 6;
                     } else {
                         $dayOfWeek = 1;
                     }
                 }
                 $arCalendar["PREV_MONTH"][intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) + $i . "." . intval($arCalendar["INFO"]["PREV_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["PREV_MONTH_YEAR"])] = array("TEXT" => intval($arCalendar["INFO"]["PREV_MONTH_DAY"]) + $i, "DAY_OF_WEEK" => $dayOfWeek);
             }
         }
     }
     //Вносим информацию по заданному месяцу
     for ($i = 0; $i < $arCalendar["INFO"]["NUMBER_OF_DAYS"]; $i++) {
         if ($i == 0) {
             $dayOfWeek = date("w", $dateHelper->getDateTimestamp($i + 1 . "." . $month . "." . $year));
             if ($dayOfWeek == 0) {
                 $dayOfWeek = 7;
             }
             //Использование пакета "Даты"
             if (CoreLib\Loader::issetPackage('dates')) {
                 $isDayOff = \MSergeev\Packages\Dates\Lib\WorkCalendar::isDayOff($i + 1 . "." . $month . "." . $year);
                 if ($isDayOff) {
                     $dayOfWeek = 6;
                 } else {
                     $dayOfWeek = 1;
                 }
             }
             $arCalendar["NOW_MONTH"][$i + 1 . "." . $month . "." . $year] = array("TEXT" => $i + 1 . " " . self::getMonthName($month), "DAY_OF_WEEK" => $dayOfWeek);
         } else {
             $dayOfWeek = date("w", $dateHelper->getDateTimestamp($i + 1 . "." . $month . "." . $year));
             if ($dayOfWeek == 0) {
                 $dayOfWeek = 7;
             }
             //Использование пакета "Даты"
             if (CoreLib\Loader::issetPackage('dates')) {
                 $isDayOff = \MSergeev\Packages\Dates\Lib\WorkCalendar::isDayOff($i + 1 . "." . $month . "." . $year);
                 if ($isDayOff) {
                     $dayOfWeek = 6;
                 } else {
                     $dayOfWeek = 1;
                 }
             }
             $arCalendar["NOW_MONTH"][$i + 1 . "." . $month . "." . $year] = array("TEXT" => $i + 1, "DAY_OF_WEEK" => $dayOfWeek);
         }
     }
     //Если последний день заданного месяца не воскресение - нужно добавить несколько дней следующего месяца
     if ($arCalendar["INFO"]["LAST_DAY_OF_WEEK"] != 7) {
         $arCalendar["INFO"]["FIRST_DAY_NEXT_MONTH"] = $dateHelper->strToTime($arCalendar["INFO"]["LAST_DATE"], "+1 day");
         list($arCalendar["INFO"]["NEXT_MONTH_DAY"], $arCalendar["INFO"]["NEXT_MONTH_MONTH"], $arCalendar["INFO"]["NEXT_MONTH_YEAR"]) = explode(".", $arCalendar["INFO"]["FIRST_DAY_NEXT_MONTH"]);
         $arCalendar["INFO"]["DAY_NEXT_MONTH"] = 7 - $arCalendar["INFO"]["LAST_DAY_OF_WEEK"];
         for ($i = 0; $i < $arCalendar["INFO"]["DAY_NEXT_MONTH"]; $i++) {
             if ($i == 0) {
                 $dayOfWeek = date("w", $dateHelper->getDateTimestamp($i + 1 . "." . intval($arCalendar["INFO"]["NEXT_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["NEXT_MONTH_YEAR"])));
                 if ($dayOfWeek == 0) {
                     $dayOfWeek = 7;
                 }
                 //Использование пакета "Даты"
                 if (CoreLib\Loader::issetPackage('dates')) {
                     $isDayOff = \MSergeev\Packages\Dates\Lib\WorkCalendar::isDayOff($i + 1 . "." . intval($arCalendar["INFO"]["NEXT_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["NEXT_MONTH_YEAR"]));
                     if ($isDayOff) {
                         $dayOfWeek = 6;
                     } else {
                         $dayOfWeek = 1;
                     }
                 }
                 $arCalendar["NEXT_MONTH"][$i + 1 . "." . intval($arCalendar["INFO"]["NEXT_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["NEXT_MONTH_YEAR"])] = array("TEXT" => $i + 1 . " " . self::getMonthName(intval($arCalendar["INFO"]["NEXT_MONTH_MONTH"])), "DAY_OF_WEEK" => $dayOfWeek);
             } else {
                 $dayOfWeek = date("w", $dateHelper->getDateTimestamp($i + 1 . "." . intval($arCalendar["INFO"]["NEXT_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["NEXT_MONTH_YEAR"])));
                 if ($dayOfWeek == 0) {
                     $dayOfWeek = 7;
                 }
                 //Использование пакета "Даты"
                 if (CoreLib\Loader::issetPackage('dates')) {
                     $isDayOff = \MSergeev\Packages\Dates\Lib\WorkCalendar::isDayOff($i + 1 . "." . intval($arCalendar["INFO"]["NEXT_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["NEXT_MONTH_YEAR"]));
                     if ($isDayOff) {
                         $dayOfWeek = 6;
                     } else {
                         $dayOfWeek = 1;
                     }
                 }
                 $arCalendar["NEXT_MONTH"][$i + 1 . "." . intval($arCalendar["INFO"]["NEXT_MONTH_MONTH"]) . "." . intval($arCalendar["INFO"]["NEXT_MONTH_YEAR"])] = array("TEXT" => $i + 1, "DAY_OF_WEEK" => $dayOfWeek);
             }
         }
     }
     return $arCalendar;
 }
Пример #4
0
 public static function checkAlerts()
 {
     $arAlerts = array();
     $arCars = static::getListCar();
     $dateHelper = new DateHelper();
     $time = time();
     foreach ($arCars as &$arCar) {
         //Проверка необходимости ТО
         $arCar['CURRENT_MILEAGE'] = static::getCarCurrentMileage($arCar['ID']);
         //echo 'CURRENT_MILEAGE ='.$arCar['CURRENT_MILEAGE']."<br>";
         //echo 'count = floor(CURRENT_MILEAGE / INTERVAL_TS)<br>';
         $count = floor($arCar['CURRENT_MILEAGE'] / $arCar['INTERVAL_TS']);
         //echo $count.' = floor('.$arCar['CURRENT_MILEAGE'].' / '.$arCar['INTERVAL_TS'].')<br>';
         //echo 'minus = INTERVAL_TS * count<br>';
         $minus = $arCar['INTERVAL_TS'] * $count;
         //echo $minus.' = '.$arCar['INTERVAL_TS'].' * '.$count.'<br>';
         //echo 'curMil = CURRENT_MILEAGE - minus<br>';
         $curMil = $arCar['CURRENT_MILEAGE'] - $minus;
         //echo $curMil.' = '.$arCar['CURRENT_MILEAGE'].' - '.$minus.'<br>';
         //echo 'raznica = INTERVAL_TS - curMil<br>';
         $raznica = $arCar['INTERVAL_TS'] - $curMil;
         //echo $raznica.' = '.$arCar['INTERVAL_TS'].' - '.$curMil.'<br>';
         if ($raznica > 500 && $raznica <= 1000) {
             $arAlerts[] = array('COLOR' => 'green', 'TYPE' => 'odo', 'TEXT' => 'Обратите внимание! Скоро необходимо будет проходить плановое ТО на автомобиле "' . $arCar['NAME'] . '"! Осталось проехать ' . $raznica . ' км');
         } elseif ($raznica > 300 && $raznica <= 500) {
             $arAlerts[] = array('COLOR' => 'yellow', 'TYPE' => 'odo', 'TEXT' => 'Внимание! В ближайшее время необходимо пройти плановое ТО на автомобиле "' . $arCar['NAME'] . '"! Осталось проехать ' . $raznica . ' км');
         } elseif ($raznica >= 0 && $raznica <= 300) {
             $arAlerts[] = array('COLOR' => 'red', 'TYPE' => 'odo', 'TEXT' => 'ВНИМАНИЕ! Необходимо в срочном порядке пройти плановое ТО на автомобиле "' . $arCar['NAME'] . '"!');
         }
         //Проверка необходимости оформления новой страховки и прохождения ГТО
         $carOsagoTime = $dateHelper->getDateTimestamp($arCar['DATE_OSAGO_END']);
         $carGtoTime = $dateHelper->getDateTimestamp($arCar['DATE_GTO_END']);
         $carOsagoDay = floor(($carOsagoTime - $time) / (60 * 60 * 24)) + 1;
         $carGtoDay = floor(($carGtoTime - $time) / (60 * 60 * 24)) + 1;
         if ($carOsagoDay > 5 && $carOsagoDay <= 30) {
             $arAlerts[] = array('COLOR' => 'green', 'TYPE' => 'osago', 'TEXT' => 'Заканчивается срок действия полиса ОСАГО у автомобиля "' . $arCar['NAME'] . '". Рекомендуем позаботится о продлении заранее. Осталось ' . $carOsagoDay . ' ' . $dateHelper->showDaysRus($carOsagoDay));
         } elseif ($carOsagoDay > 0 && $carOsagoDay <= 5) {
             $arAlerts[] = array('COLOR' => 'yellow', 'TYPE' => 'osago', 'TEXT' => 'Внимание! Скоро закончится срок действия полиса ОСАГО у автомобиля "' . $arCar['NAME'] . '". Необходимо продлить полис! Осталось ' . $carOsagoDay . ' ' . $dateHelper->showDaysRus($carOsagoDay));
         } elseif ($carOsagoDay == 0) {
             $arAlerts[] = array('COLOR' => 'red', 'TYPE' => 'osago', 'TEXT' => 'ВНИМАНИЕ! Сегодня заканчиватся срок действия полиса ОСАГО у автомобиля "' . $arCar['NAME'] . '". Необходимо СРОЧНО продлить полис!');
         } elseif ($carOsagoDay < 0) {
             $arAlerts[] = array('COLOR' => 'red', 'TYPE' => 'osago', 'TEXT' => 'ВНИМАНИЕ! Закончился срок действия полиса ОСАГО у автомобиля "' . $arCar['NAME'] . '". Необходимо СРОЧНО продлить полис!');
         }
         if ($carGtoDay > 5 && $carGtoDay <= 30) {
             $arAlerts[] = array('COLOR' => 'green', 'TYPE' => 'gto', 'TEXT' => 'Подходит дата очередного ГТО у автомобиля "' . $arCar['NAME'] . '". Подготовьте автомобиль к осмотру. Осталось ' . $carGtoDay . ' ' . $dateHelper->showDaysRus($carGtoDay));
         } elseif ($carGtoDay > 0 && $carGtoDay <= 5) {
             $arAlerts[] = array('COLOR' => 'yellow', 'TYPE' => 'gto', 'TEXT' => 'Внимание! Скоро подойдет дата очередного ГТО у автомобиля "' . $arCar['NAME'] . '". Последняя возможность подготовить автомобиль к осмотру! Осталось ' . $carGtoDay . ' ' . $dateHelper->showDaysRus($carGtoDay));
         } elseif ($carGtoDay == 0) {
             $arAlerts[] = array('COLOR' => 'red', 'TYPE' => 'gto', 'TEXT' => 'ВНИМАНИЕ! Сегодня последний день действия ГТО на автомобиле "' . $arCar['NAME'] . '". Необходимо СРОЧНО пройти ГТО!');
         } elseif ($carGtoDay < 0) {
             $arAlerts[] = array('COLOR' => 'red', 'TYPE' => 'gto', 'TEXT' => 'ВНИМАНИЕ! Необходимо СРОЧНО пройти ГТО на автомобиле "' . $arCar['NAME'] . '". Езда без ГТО может привести к штрафу и лишению прав. Необходимо СРОЧНО пройти ГТО!');
         }
         //msDebug($arCar);
     }
     unset($arCar);
     return $arAlerts;
 }