rennokki/schedule

此软件包已被放弃,不再维护。未建议替代软件包。

Schedule是一个帮助跟踪模型日程的软件包。如果您公司有员工,您可以为他们的日程进行设置,并通过时间查看他们的可用性。

1.6.0 2019-02-27 17:05 UTC

This package is auto-updated.

Last update: 2020-01-21 19:08:08 UTC


README

Build Status codecov StyleCI Latest Stable Version Total Downloads Monthly Downloads License

PayPal

Schedule

Schedule是一个帮助跟踪模型日程的软件包。如果您公司有员工,您可以为他们的日程进行设置,并通过时间查看他们的可用性。

灵感

此软件包受Spatie's Opening Hours软件包的启发,该软件包使用日程安排,但仅静态使用,而不是将其绑定到模型。这激发了我将其与Eloquent模型而不是经典类更紧密地联系起来的想法。

安装

使用Composer CLI安装软件包

$ composer require rennokki/schedule

对于不支持软件包发现的Laravel版本,您应将其添加到您的config/app.php文件中的providers数组中

\Rennokki\Schedule\ScheduleServiceProvider::class,

发布迁移文件和配置文件。

$ php artisan vendor:publish

迁移数据库。

$ php artisan migrate

将特性添加到您的模型中。

use Rennokki\Schedule\Traits\HasSchedule;

class User extends Model {
    use HasSchedule;
    ...
}

入门

为了开始使用,让我们为我们的用户创建一个日程安排。它将从星期一到星期五,从8点到12点,以及从13点到18点。

$user->setSchedule([
    'monday' => ['08:00-12:00', '13:00-18:00'],
    'tuesday' => ['08:00-12:00', '13:00-18:00'],
    'wednesday' => ['08:00-12:00', '13:00-18:00'],
    'thursday' => ['08:00-12:00', '13:00-18:00'],
    'friday' => ['08:00-12:00', '13:00-18:00'],
]);

$user->hasSchedule(); // true

假设该用户的生日在每年的3月1日,因此我们将其添加到排除列表中。此外,圣诞节的第一天和第二天对任何人都是免费的,我们还将2018年5月1日添加到我们的排除列表中。

注意:2018年5月1日只会发生一次,它不是重复发生的。

$user->setExclusions([
    '03-01' => ['08:00-12:00'],
    '12-25' => [],
    '12-26' => [],
    '2018-05-01' => [],
]);

检查可用性

您可以通过日期来检查用户在某一天或日期是否有工作时间。传递日期也可以与Carbon实例一起使用。

$user->isAvailableOn('monday'); // true
$user->isAvailableOn('05-28'); // true; This is Monday, in 2018 (current year)
$user->isAvailableOn('2018-05-28'); // true
$user->isAvailableOn(Carbon::create(2018, 5, 28, 0, 0, 0)); // true

$user->isUnavailableOn('monday'); // false
$user->isUnavailableOn('05-28'); // false
$user->isUnavailableOn('2018-05-28'); // false
$user->isUnavailableOn(Carbon::create(2018, 5, 28, 0, 0, 0)); // false

如果那天有排除项,它将根据那天设置的日程返回正确的值

$user->isUnavailableOn('12-25'); // true
$user->isUnavailableOn('03-01'); // false

检查特定时间的可用性

您还可以检查特定天特定时间的可用性。

$user->isAvailableOnAt('monday', '09:00'); // true
$user->isUnavailableOnAt('monday', '09:00'); // false

获取某天的工时或分钟数

您可以得到某天安排的工时或分钟数。这对于跟踪可工作小时数很有用,例如。

$user->getHoursOn('03-01'); // 4
$user->getHoursOn('12-26'); // 0
$user->getHoursOn('05-28'); // 9
$user->getHoursOn('2018-05-28'); // 9

$user->getMinutesOn('03-01'); // 240

删除日程

如果您计划删除用户的日程,可以通过调用deleteSchedule()来实现。

$user->deleteSchedule();
$user->hasSchedule(); // false