diff --git a/app/engine/cron/data_sync/run.sh b/app/engine/cron/data_sync/run.sh
new file mode 100644
index 0000000..b1e1b3a
--- /dev/null
+++ b/app/engine/cron/data_sync/run.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+cd /var/www/html/engine/cron/data_sync || exit 1
+php sync_doctors_and_zones.php
diff --git a/app/engine/cron/data_sync/sync_doctors_and_zones.php b/app/engine/cron/data_sync/sync_doctors_and_zones.php
index d00280c..7506bf0 100644
--- a/app/engine/cron/data_sync/sync_doctors_and_zones.php
+++ b/app/engine/cron/data_sync/sync_doctors_and_zones.php
@@ -10,6 +10,7 @@ $DRY_RUN = false; // ← поставить true для тестового за
// Источник (старая МИС)
$src = new db();
+// $src->connect("192.168.111.234", "dbuser", "dbpassword", "pnd8");
$src->connect("192.168.0.2", "root", "Xx29Pz33", "pnd8");
// Приёмник (новая база)
@@ -145,11 +146,11 @@ function replaceTables($dst, $DRY_RUN)
replaceTables($dst, $DRY_RUN);
-function getDoctorSchedule($src, $doctorId) {
-
- // Генерируем диапазон дат: -3 дня назад и +4 вперёд
- $startDate = date('Y-m-d', strtotime('-3 days'));
- $endDate = date('Y-m-d', strtotime('+4 days'));
+function getDoctorSchedule($src, $doctorId)
+{
+ // диапазон на 10 дней включая сегодня
+ $startDate = date('Y-m-d');
+ $endDate = date('Y-m-d', strtotime('+9 days'));
$sql = "
SELECT
@@ -174,45 +175,34 @@ function getDoctorSchedule($src, $doctorId) {
GROUP BY DATE(e.execDate)
";
+
$rows = $src->q($sql)->fetchAll();
- // Подготовка недели: day1..day7 = Пн..Вс
- $week = [
- 1 => 'day1',
- 2 => 'day2',
- 3 => 'day3',
- 4 => 'day4',
- 5 => 'day5',
- 6 => 'day6',
- 7 => 'day7',
- ];
-
- // Заполняем пустыми днями
- $result = [
- 'day1' => null,
- 'day2' => null,
- 'day3' => null,
- 'day4' => null,
- 'day5' => null,
- 'day6' => null,
- 'day7' => null,
- ];
+ $result = [];
+// 1. Сначала добавляем ВСЕ даты из SQL
foreach ($rows as $r) {
+ $day = trim($r['day']); // защита от пробелов
- // 1 – воскресенье, нам нужно 1=Пн → 7=Вс
- $dayNum = date('N', strtotime($r['day']));
-
- $key = $week[$dayNum];
-
- $result[$key] = [
+ $result[$day] = [
'start' => $r['work_start'] ?: null,
'end' => $r['work_end'] ?: null,
];
}
+// 2. Потом добавляем пустые даты вперёд на 10 дней
+ for ($i = 0; $i < 10; $i++) {
+ $date = date('Y-m-d', strtotime("+{$i} days"));
+ if (!array_key_exists($date, $result)) {
+ $result[$date] = null;
+ }
+ }
+
+
+
return json_encode($result, JSON_UNESCAPED_UNICODE);
}
+
echo "\n--- DONE (DRY_RUN = " . ($DRY_RUN ? "YES" : "NO") . ") ---\n";
diff --git a/app/engine/migrations/20251126-1827-user-cats.sql b/app/engine/migrations/20251126-1827-user-cats.sql
new file mode 100644
index 0000000..53dea39
--- /dev/null
+++ b/app/engine/migrations/20251126-1827-user-cats.sql
@@ -0,0 +1,2 @@
+UPDATE `_sys_cat` SET `_sys_cat`.`module` = "site_screensaver.php" , `_sys_cat`.`data` = "" WHERE `_sys_cat`.`cat_id` = "index";
+UPDATE `_sys_cat` SET `_sys_cat`.`xml` = "index.xml" WHERE `_sys_cat`.`cat_id` = "--btns-";
diff --git a/app/engine/migrations/20251126-1828-user-cats.sql b/app/engine/migrations/20251126-1828-user-cats.sql
new file mode 100644
index 0000000..92dbc80
--- /dev/null
+++ b/app/engine/migrations/20251126-1828-user-cats.sql
@@ -0,0 +1,4 @@
+UPDATE `_sys_cat` SET `_sys_cat`.`xml` = "empty.xml" WHERE `_sys_cat`.`cat_id` = "index";
+UPDATE `_sys_cat` SET `_sys_cat`.`_sys_deleted` = "1" WHERE `_sys_cat`.`cat_id` = "core-menuconfig";
+UPDATE `_sys_cat` SET `_sys_cat`.`_sys_deleted` = "1" WHERE `_sys_cat`.`cat_id` = "-no-auth-links-";
+;
diff --git a/app/engine/www/bladetpl/cache/50036abbb1938ff83691969b9fa9449dce53ca25.bladec b/app/engine/www/bladetpl/cache/50036abbb1938ff83691969b9fa9449dce53ca25.bladec
index 71fd4ec..7b6fb26 100644
--- a/app/engine/www/bladetpl/cache/50036abbb1938ff83691969b9fa9449dce53ca25.bladec
+++ b/app/engine/www/bladetpl/cache/50036abbb1938ff83691969b9fa9449dce53ca25.bladec
@@ -3,8 +3,8 @@
- Не удалось определить участок.
- Попробуйте ввести другой адрес.
+ Попробуйте ввести другой адрес
+ или обратитесь в регистратуру
diff --git a/app/engine/www/bladetpl/cache/c2b731d85314321923ccc7e45f1793abe0d5773e.bladec b/app/engine/www/bladetpl/cache/c2b731d85314321923ccc7e45f1793abe0d5773e.bladec
new file mode 100644
index 0000000..3ae2418
--- /dev/null
+++ b/app/engine/www/bladetpl/cache/c2b731d85314321923ccc7e45f1793abe0d5773e.bladec
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+ Психоневрологический
+ диспансер №8
+
+
+
+
+ Расписание приема врачей
и участков
+
+
+
+ (поиск по адресу проживания)
+
+
+
+
+
+
+
diff --git a/app/engine/www/bladetpl/cache/db96a3dc7e7cb5fa7e5c21f03ac1e1d5bc9cfdeb.bladec b/app/engine/www/bladetpl/cache/db96a3dc7e7cb5fa7e5c21f03ac1e1d5bc9cfdeb.bladec
index 08edf31..0703da8 100644
--- a/app/engine/www/bladetpl/cache/db96a3dc7e7cb5fa7e5c21f03ac1e1d5bc9cfdeb.bladec
+++ b/app/engine/www/bladetpl/cache/db96a3dc7e7cb5fa7e5c21f03ac1e1d5bc9cfdeb.bladec
@@ -1,18 +1,14 @@
-
Ваш участок обслуживания
+ Ваш участок обслуживания
-
-
addLoop($__currentLoopData);$this->getFirstLoop();
foreach($__currentLoopData as $doc): $loop = $this->incrementLoopIndices(); ?>
-
+
@@ -35,38 +31,64 @@
'Понедельник',
- 'day2' => 'Вторник',
- 'day3' => 'Среда',
- 'day4' => 'Четверг',
- 'day5' => 'Пятница',
- 'day6' => 'Суббота',
- 'day7' => 'Воскресенье',
- ];
+ // JSON формата: "2025-01-20" => {start:"", end:""} или null
+ $schedule = json_decode($doc['schedule'] ?? '{}', true);
- $schedule = json_decode($doc['schedule'] ?? '', true);
+ $todayDate = date('Y-m-d');
+ $filtered = [];
+
+ // Фильтруем только >= сегодня
+ foreach ($schedule as $date => $slot) {
+ if ($date >= $todayDate) {
+ $filtered[$date] = $slot;
+ }
+ }
+
+ // Для отображения дня недели
+ $ruDays = ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'];
?>
-
Расписание приёма
+
Расписание приёма
-
-
Расписание не указано
+
+
Расписание отсутствует
- addLoop($__currentLoopData);$this->getFirstLoop();
- foreach($__currentLoopData as $dayKey => $dayTitle): $loop = $this->incrementLoopIndices(); ?>
+ addLoop($__currentLoopData);$this->getFirstLoop();
+ foreach($__currentLoopData as $date => $slot): $loop = $this->incrementLoopIndices(); ?>
'января',
+ 2 => 'февраля',
+ 3 => 'марта',
+ 4 => 'апреля',
+ 5 => 'мая',
+ 6 => 'июня',
+ 7 => 'июля',
+ 8 => 'августа',
+ 9 => 'сентября',
+ 10 => 'октября',
+ 11 => 'ноября',
+ 12 => 'декабря',
+ ];
+
+ $dayNum = (int)date('j', $ts); // 1–31 (без ведущего нуля)
+ $monthNum = (int)date('n', $ts); // 1–12
+ $monthName = $months[$monthNum];
+
+ $label = "{$dayNum} {$monthName} ({$weekday})";
+
?>
-
-
+
@@ -86,4 +108,3 @@
popLoop(); $loop = $this->getFirstLoop(); ?>
-
diff --git a/app/engine/www/bladetpl/cache/decf3914d3856b1a7f37474c63abd946c9c06fb9.bladec b/app/engine/www/bladetpl/cache/decf3914d3856b1a7f37474c63abd946c9c06fb9.bladec
index 89f02c1..854b84d 100644
--- a/app/engine/www/bladetpl/cache/decf3914d3856b1a7f37474c63abd946c9c06fb9.bladec
+++ b/app/engine/www/bladetpl/cache/decf3914d3856b1a7f37474c63abd946c9c06fb9.bladec
@@ -369,7 +369,7 @@
// Подменяем HTML на печатный
document.body.innerHTML =
- '
' +
+ '
' +
modalBody.innerHTML +
'
';
diff --git a/app/engine/www/bladetpl/site_index/data.blade.php b/app/engine/www/bladetpl/site_index/data.blade.php
index 8bb03cd..b30edfd 100644
--- a/app/engine/www/bladetpl/site_index/data.blade.php
+++ b/app/engine/www/bladetpl/site_index/data.blade.php
@@ -1,17 +1,13 @@
-
Ваш участок обслуживания
+ Ваш участок обслуживания
{{$zone_name}}
-@php
- $today = date('N'); // 1..7
-@endphp
-
@foreach($doctors as $doc)
-
+
{{-- Левая колонка с аватаром-вставкой по дизайну --}}
{{$doc['name']}}
@@ -33,37 +29,63 @@
@php
- $daysMap = [
- 'day1' => 'Понедельник',
- 'day2' => 'Вторник',
- 'day3' => 'Среда',
- 'day4' => 'Четверг',
- 'day5' => 'Пятница',
- 'day6' => 'Суббота',
- 'day7' => 'Воскресенье',
- ];
+ // JSON формата: "2025-01-20" => {start:"", end:""} или null
+ $schedule = json_decode($doc['schedule'] ?? '{}', true);
- $schedule = json_decode($doc['schedule'] ?? '', true);
+ $todayDate = date('Y-m-d');
+ $filtered = [];
+
+ // Фильтруем только >= сегодня
+ foreach ($schedule as $date => $slot) {
+ if ($date >= $todayDate) {
+ $filtered[$date] = $slot;
+ }
+ }
+
+ // Для отображения дня недели
+ $ruDays = ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'];
@endphp
-
Расписание приёма
+
Расписание приёма
- @if(empty($schedule))
-
Расписание не указано
+ @if(empty($filtered))
+
Расписание отсутствует
@else
- @foreach($daysMap as $dayKey => $dayTitle)
+ @foreach($filtered as $date => $slot)
@php
- $slot = $schedule[$dayKey] ?? null;
+ $ts = strtotime($date);
+ $weekday = $ruDays[date('w', $ts)];
+ $months = [
+ 1 => 'января',
+ 2 => 'февраля',
+ 3 => 'марта',
+ 4 => 'апреля',
+ 5 => 'мая',
+ 6 => 'июня',
+ 7 => 'июля',
+ 8 => 'августа',
+ 9 => 'сентября',
+ 10 => 'октября',
+ 11 => 'ноября',
+ 12 => 'декабря',
+ ];
+
+ $dayNum = (int)date('j', $ts); // 1–31 (без ведущего нуля)
+ $monthNum = (int)date('n', $ts); // 1–12
+ $monthName = $months[$monthNum];
+
+ $label = "{$dayNum} {$monthName} ({$weekday})";
+
@endphp
-
- {{ $dayTitle }}
+ {{ $label }}
@if($slot && !empty($slot['start']) && !empty($slot['end']))
@@ -82,4 +104,3 @@
@endforeach
-
diff --git a/app/engine/www/bladetpl/site_index/main.blade.php b/app/engine/www/bladetpl/site_index/main.blade.php
index 52a5580..cf6c666 100644
--- a/app/engine/www/bladetpl/site_index/main.blade.php
+++ b/app/engine/www/bladetpl/site_index/main.blade.php
@@ -368,7 +368,7 @@
// Подменяем HTML на печатный
document.body.innerHTML =
- '
' +
+ '
' +
modalBody.innerHTML +
'
';
diff --git a/app/engine/www/bladetpl/site_index/show_doc.blade.php b/app/engine/www/bladetpl/site_index/show_doc.blade.php
new file mode 100644
index 0000000..e69de29
diff --git a/app/engine/www/bladetpl/site_index/zone_not_found.blade.php b/app/engine/www/bladetpl/site_index/zone_not_found.blade.php
index 6635228..d0a7609 100644
--- a/app/engine/www/bladetpl/site_index/zone_not_found.blade.php
+++ b/app/engine/www/bladetpl/site_index/zone_not_found.blade.php
@@ -3,8 +3,8 @@
- Не удалось определить участок.
- Попробуйте ввести другой адрес.
+ Попробуйте ввести другой адрес
+ или обратитесь в регистратуру
diff --git a/app/engine/www/bladetpl/site_screensaver/main.blade.php b/app/engine/www/bladetpl/site_screensaver/main.blade.php
new file mode 100644
index 0000000..1dc8562
--- /dev/null
+++ b/app/engine/www/bladetpl/site_screensaver/main.blade.php
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+ Психоневрологический
+ диспансер №8
+
+
+
+
+ Расписание приема врачей
и участков
+
+
+
+ (поиск по адресу проживания)
+
+
+
+
+
+
+
diff --git a/app/engine/www/modules/site_screensaver.php b/app/engine/www/modules/site_screensaver.php
new file mode 100644
index 0000000..37128f5
--- /dev/null
+++ b/app/engine/www/modules/site_screensaver.php
@@ -0,0 +1,20 @@
+run($this->getBladeTempl('main'));
+ }
+
+
+}
+
+
+
+
+?>
\ No newline at end of file
diff --git a/app/engine/www/tpls/index.htm b/app/engine/www/tpls/index.htm
index ab9bae5..7fd3976 100644
--- a/app/engine/www/tpls/index.htm
+++ b/app/engine/www/tpls/index.htm
@@ -33,89 +33,47 @@
-
-