ianvizarra/attendance

Laravel应用的人员出勤包。

v0.1.1 2022-11-11 06:49 UTC

This package is auto-updated.

Last update: 2024-09-11 11:08:44 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

轻松添加出勤功能到您的Laravel应用中。

安装

您可以通过composer安装此包

composer require ianvizarra/attendance

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="attendance-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="attendance-config"

这是已发布配置文件的内容

return [
  'logs_table' => 'attendance_logs',
    'schedule' => [
        'timeIn' => 9,
        'timeOut' => 17,
        'requiredDailyHours' => 8,
        'timeInAllowance' => 30, // minutes
        
        'workDays' => [
            'Monday',
            'Tuesday',
            'Wednesday',
            'Thursday',
            'Friday'
        ],
        'offDays' => [
            'Saturday',
            'Sunday'
        ]
    ],
    'user_model' => config('auth.providers.users.model', \App\Models\User::class),
    'users_table' => 'users'
];

CanLogAttendance接口和HasAttendance特质添加到您的User模型中。

class User extends Authenticatable implements CanLogAttendance
{
    use HasAttendance;
}

用法

使用用户模型

$user->attendance(); // HasMany relationship to attendance log model

$user->timeIn(); // create an time-in attendance log entry

$user->timeOut(); // create an time-out attendance log entry

$user->hasTimeIn(); // return true if user already time-in for today
$user->hasTimeOut(); // return true if user already time-out for today
$user->hasWorked(); // return true if user already time-in and time-out for today
$user->getTimeIn(); // return the time-in attendance log for today

$user->logAttendance('in', 'on-time', now()); // manually log an attendance by type, status and time

使用外观

use Ianvizarra\Attendance\Facades\Attendance;

 // create an attendance log entry for the currently logged-in user
 // by default it will the current time
 Attendance::timeIn(); 
 Attendance::timeOut();
 
 // manually set the time logged instead of the current time
 Attendance::timeIn(now()->subMinutes(30));
 
 // manually set the schedule configuration
 // the default config values can be found in config/attendance.php `config('attendance.schedule.hours')`
 Attendance::timeIn(now(), [
    'timeIn' => 8,
    'timeOut' => 16,
    'requiredDailyHours' => 8
]);
 
 // manually set the user other than the logged-in user
 Attendance::setUser($user)->timeIn();
 
 // get the time in status
 Attendance::timeInStatus(); // on-time, late
 // manually set the time using Carbon instance
 Attendance::timeInStatus(now()->subMinutes(30)); // on-time, late
  // manually set the schedule configuration
 Attendance::timeInStatus(now(), [
    'timeIn' => 8,
    'timeOut' => 16,
    'requiredDailyHours' => 8
]); // on-time, late
 
 // get the time out status
 Attendance::timeOutStatus(); // on-time, under-time
 // manually set the time using Carbon instance
 Attendance::timeOutStatus(now()->subMinutes(30)); // on-time, under-time
 // manually set the schedule configuration
 Attendance::timeOutStatus(now(), [
    'timeIn' => 8,
    'timeOut' => 16,
    'requiredDailyHours' => 8
]); // on-time, under-time

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请查看我们的安全策略了解如何报告安全漏洞。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。