pistol88/yii2-work-session

yii2-work-session ведет учет прихода и ухода сотрудников на работу

dev-master 2017-04-25 13:59 UTC

This package is auto-updated.

Last update: 2024-03-27 20:41:20 UTC


README

Модуль предоставляет интерфейс для ведения учета рабочих смен сотрудников, а также организации в целом. Есть возможность планировать график и контролировать рабочие смены.

work session

Фиксируется начало всей смены, время прихода и ухода каждого сотрудника, рассчитывается время фактического нахождения на рабочем месте.

Установка

Выполнить команду

php composer require pistol88/yii2-work-session "*"

Или добавить в composer.json

"pistol88/yii2-work-session": "*",

И выполнить

php composer update

Далее, мигрируем базу:

php yii migrate --migrationPath=vendor/pistol88/yii2-work-session/migrations

Подключение и настройка

В конфигурационный файл приложения добавить модуль worksess, настроив его

    'modules' => [
        //...
        'worksess' => [
            'class' => 'pistol88\worksess\Module',
            'adminRoles' => ['administrator'],
            //модуль пользователей
            'userModel' => 'common\models\User',
            //Перечень смен
            'shifts' => [
                '07:00' => 'Дневная смена',
                '19:00' => 'Ночная смена',
            ],
            //кол-во часов в смене
            'hoursCount' => 12,
            //callback функция, позвращающая список работников
            'workers' => function() {
                return \common\models\User::findAll(['status' => 2, 'id' => Yii::$app->authManager->getUserIdsByRole(['washer'])]);
            },
        ],
        //...
    ]

В модели пользователя подключить поведение pistol88\worksess\AttachSession, чтобы получать время работы через $user->getSessionTime($date)

Управление сессиями по роуту: worksess/session/current.

Управление расписанием выхода сотрудников по роуту: worksess/session/current.

Виджеты

<?php
use pistol88\worksess\widgets\ControlButton;
use pistol88\worksess\widgets\Info;
use pistol88\worksess\widgets\SessionGraph;
?>

Информация об общей смене сменой:

<?=Info::widget();?>

Информация о смене сотрудника ($worker - модель пользователя):

<?=Info::widget(['for' => $worker]);?>

Кнопки переключения старта\остановки общей сессии и сессии отдельного сотрудника (если передано свойство $worker):

<?=ControlButton::widget(['for' => $worker]);?>

Вывод визуализации рабочего дня сотрудников

<?=SessionGraph::widget();?>

Триггеры

В момент создания и завершения сессии можно выполнять какие-либо пользовательские сценарии, вынесенные в конфиг:

'components' => [ 'worksess' => [ 'class' => 'pistol88\worksess\Session', 'on start' => function($event) { //Сессия - $event->model; }, 'on stop' => function($event) { //Сессия - $event->model; } ], ]