]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Поправляет пропуски у администраторов, записывая plan_id в чекины
authorAlexander Smirnov <fredeom@mail.ru>
Wed, 19 Jun 2024 16:26:53 +0000 (19:26 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Wed, 19 Jun 2024 16:26:53 +0000 (19:26 +0300)
erp24/actions/timetable/JoinMissingShiftsWithCheckinsAction.php [new file with mode: 0644]
erp24/controllers/TimetableController.php

diff --git a/erp24/actions/timetable/JoinMissingShiftsWithCheckinsAction.php b/erp24/actions/timetable/JoinMissingShiftsWithCheckinsAction.php
new file mode 100644 (file)
index 0000000..3ab74c0
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+namespace yii_app\actions\timetable;
+
+use yii\base\Action;
+use yii_app\records\AdminCheckin;
+use yii_app\records\TimetablePlan;
+
+class JoinMissingShiftsWithCheckinsAction extends Action
+{
+    public function run($days = 30) {
+        $checkins = AdminCheckin::find()->where(['>=', 'date', date('Y-m-d', strtotime('-' . $days . ' day', time()))])
+            ->andWhere(['plan_id' => null])->all();
+        foreach ($checkins as $checkin) {
+            /** @var $checkin AdminCheckin */
+            $planSlots = TimetablePlan::find()
+                ->andWhere(['store_id' => $checkin->store_id, 'admin_id' => $checkin->admin_id])
+                ->andWhere(['OR',
+                    [
+                        'BETWEEN', 'datetime_start',
+                        date('Y-m-d H:i:s', strtotime($checkin->time)),
+                        date('Y-m-d H:i:s', strtotime('+6 hour', strtotime($checkin->time)))],
+                    [
+                        'BETWEEN', 'datetime_end',
+                        date('Y-m-d H:i:s', strtotime('-6 hour', strtotime($checkin->time))),
+                        date('Y-m-d H:i:s', strtotime($checkin->time))],
+                    [
+                        'AND',
+                        ['<', 'datetime_start', date('Y-m-d H:i:s', strtotime($checkin->time))],
+                        ['>', 'datetime_end', date('Y-m-d H:i:s', strtotime($checkin->time))]
+                    ]
+                ])
+                ->one();
+            /** @var $planSlots TimetablePlan */
+            if ($planSlots) {
+                $checkin->plan_id = $planSlots->id;
+                $checkin->save();
+                if ($checkin->getErrors()) {
+                    var_dump($checkin->getErrors());
+                }
+            }
+        }
+        return 'ok';
+    }
+}
\ No newline at end of file
index 3b3ae918ad91d9d22ba7d184abe6ffbcbf7289d7..51811916fad0bed1fcc355c5c95d3814742aa9b0 100755 (executable)
@@ -33,6 +33,7 @@ class TimetableController extends \yii\web\Controller
             'start-shift-step-three' => \yii_app\actions\timetable\StartShiftStepThreeAction::class,
             'checkins' => \yii_app\actions\timetable\CheckinsAction::class,
             'fact-overview-item' => \yii_app\actions\timetable\FactOverviewItemAction::class,
+            'join-missing-shifts-with-checkins' => \yii_app\actions\timetable\JoinMissingShiftsWithCheckinsAction::class,
         ];
     }