lee / work-home-schedule
Estimate working home date with Carbon::mixin
Requires
- php: >=7.2
- nesbot/carbon: ^2.32
Requires (Dev)
- php-coveralls/php-coveralls: ^2
- phpunit/phpunit: ^8 || ^9
This package is auto-updated.
Last update: 2024-12-11 05:18:30 UTC
README
Installation
- Download
composer
firstly:
curl -sS https://getcomposer.org/installer | php
- Install
lee/work-home-schedule
secondly:
php composer.phar require lee/work-home-schedule:^1
Introduction
This is about working home schedule to estimate current working status on specific date.
It's based on following scenario for A/B team work:
- A team work from office today, and B team will work from home today.
- A team work from home tomorrow, and B team will work from office tomorrow.
- And so on.
This situation will skip on country holiday and weekend.
Usage
This class depends on Carbon::mixin
method.
The code snippets are as follows:
- Set
startDateStatus
about working from home or office. - Set
csvPath
about specific CSV file path. - Set
csvHead
about whether CSV file path has head. - Loading calendar data, the calendar CSV format is available here.
We assume that the 2020-04-06
is start date and working statuses are as follows:
- The start date status is
office
.
Get next working date about code snippets are as follows:
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $nextWorkingDate = $currentDate->nextWorkingDate(); $carbonDate = $nextWorkingDate['date']; // Carbon::class instance $carbonDateString = (string)$nextWorkingDate['date']; // 2020-04-07 00:00:00 $workingStatus = $nextWorkingDate['status']; // home
Get previous working date about code snippets are as follows:
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $previousWorkingDate = $currentDate->previousWorkingDate(); $carbonDate = $previousWorkingDate['date']; // Carbon::class instance $carbonDateString = (string)$previousWorkingDate['date']; // 2020-04-01 00:00:00 $workingStatus = $previousWorkingDate['status']; // home
Get next working dates with specific date ranges about code snippets are as follows:
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule->workingDays = 2; // The default value is 1 $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $nextWorkingDates = $currentDate->nextWorkingDates(); // The array length is 2 $nextWorkingDates[0]['date'] // Carbon::class instance (string)$nextWorkingDates[0]['date'] // 2020-04-07 00:00:00 $nextWorkingDates[0]['status'] // home $nextWorkingDates[1]['date'] // Carbon::class instance (string)$nextWorkingDates[1]['date'] // 2020-04-08 00:00:00 $nextWorkingDates[1]['status'] // office
Get previous working dates with date ranges about code snippets are as follows:
require __DIR__ . '/vendor/autoload.php'; use Carbon\Carbon; use Lee\WorkHomeSchedule; $filePath = __DIR__ . '/tests/fixtures/2020_calendar.csv'; $workingHomeSchedule = new WorkHomeSchedule(); $workingHomeSchedule->startDateStatus = 'office'; // The default value is empty string $workingHomeSchedule->csvPath = $filePath; // The default value is empty string $workingHomeSchedule->csvHead = true; // The default value is true $workingHomeSchedule->workingDays = 2; // The default value is 1 $workingHomeSchedule = $workingHomeSchedule->loadCalendarData($filePath); Carbon::mixin($this->workingHomeSchedule); $currentDate = Carbon::create('2020-04-06'); $previousWorkingDates = $currentDate->previousWorkingDates(); // array length is 2 $previousWorkingDates[0]['date'] // Carbon::class instance (string)$previousWorkingDates[0]['date'] // 2020-04-01 00:00:00 $previousWorkingDates[0]['status'] // home $previousWorkingDates[1]['date'] // Carbon::class instance (string)$previousWorkingDates[1]['date'] // 2020-03-31 00:00:00 $previousWorkingDates[1]['status'] // office