t1k3 / laravel-calendar-event
Laravel Calendar Event
0.2.1
2019-09-04 17:34 UTC
Requires
- php: >=7.1.3
- illuminate/database: ~5
- illuminate/support: ~5
Requires (Dev)
- composer/composer: ^1.9
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0|~3.6|~3.7|~3.8
- phpmd/phpmd: ^2.6
- phpunit/phpunit: ^7.3
This package is auto-updated.
Last update: 2024-11-05 05:05:00 UTC
README
Installation
composer require t1k3/laravel-calendar-event
After updating composer, add the ServiceProvider to the providers array in config/app.php
T1k3\LaravelCalendarEvent\ServiceProvider::class,
You need publish to the config.
php artisan vendor:publish --provider="T1k3\LaravelCalendarEvent\ServiceProvider"
You need to run the migrations for this package.
php artisan migrate
Usage
Recurring options
- DAY
- WEEK
- MONTH
- YEAR
- NTHWEEKDAY: nth weekday per month, example 2nd Monday
Create CalendarEvent
If you like to attach User
and/or Place
then must have:
- configurate
config/calendar-event.php
- implements
UserInterface
,PlaceInterface
on your Models - you can use
CalendarEventUserTrait
,CalendarEventPlaceTrait
in Models
use T1k3\LaravelCalendarEvent\Interfaces\PlaceInterface; use T1k3\LaravelCalendarEvent\Traits\CalendarEventPlaceTrait; class Place extends Model implements PlaceInterface { use CalendarEventPlaceTrait; }
use T1k3\LaravelCalendarEvent\Models\CalendarEvent; use T1k3\LaravelCalendarEvent\Enums\RecurringFrequenceType; $calendarEvent = new CalendarEvent(); $calendarEvent = $calendarEvent->createCalendarEvent([ 'title' => 'Lorem ipsum', 'start_datetime' => Carbon::parse('2017-08-25 16:00:00'), 'end_datetime' => Carbon::parse('2017-08-25 17:30:00'), 'description' => 'Lorem ipsum dolor sit amet', 'is_recurring' => true, 'frequence_number_of_recurring' => 1, 'frequence_type_of_recurring' => RecurringFrequenceType::WEEK, 'is_public' => true, 'end_of_recurring' => Carbon::parse('2017-09-08') ], $user = null, $place = null);
Edit and Update CalendarEvent
$calendarEvent = CalendarEvent::find($id); $calendarEventUpdated = $calendarEvent->editCalendarEvent([ 'start_datetime' => Carbon::parse('2017-08-26'), 'is_recurring' => false, ], $user = null, $place = null); // $calendarEventUpdated === null ? dd('NOT_MODIFIED') : dd('MODIFIED', $calendarEventUpdated);
Update CalendarEvent (without data check)
$calendarEvent = CalendarEvent::find($id); $calendarEventUpdated = $calendarEvent->updateCalendarEvent([ 'start_datetime' => Carbon::parse('2017-08-26'), 'is_recurring' => false, ], $user = null, $place = null);
Delete CalendarEvent
$calendarEvent = CalendarEvent::find($id); $isDeleted = $calendarEvent->deleteCalendarEvent($isRecurring = null);
Edit and Update not existing CalendarEvent
use T1k3\LaravelCalendarEvent\Models\TemplateCalendarEvent; $templateCalendarEvent = TemplateCalendarEvent::find($id); $calendarEventUpdated = $templateCalendarEvent->editCalendarEvent(Carbon::parse('2017-08-30'), [ 'description' => 'Foo Bar' ], $user = null, $place = null); // $calendarEventUpdated === null ? dd('NOT_MODIFIED') : dd('MODIFIED', $calendarEventUpdated);
Update not existing CalendarEvent (without data check)
use T1k3\LaravelCalendarEvent\Models\TemplateCalendarEvent; $templateCalendarEvent = TemplateCalendarEvent::find($id); $calendarEventUpdated = $templateCalendarEvent->updateCalendarEvent(Carbon::parse('2017-08-30'), [ 'description' => 'Foo Bar' ], $user = null, $place = null);
Delete not existing CalendarEvent
$templateCalendarEvent = TemplateCalendarEvent::find($id); $isDeleted = $templateCalendarEvent->deleteCalendarEvent(Carbon::parse('2017-08-30'), $isRecurring = null);
Get (potential) CalendarEvent(s) of month
If the CalendarEvent is not exist then it is append is_not_exists
attribute with true
value
$calendarEvents = CalendarEvent::showPotentialCalendarEventsOfMonth(Carbon::parse('2017-08'));
Generate next CalendarEvent(s) from Console
Do NOT forget the Laravel Task Scheduling
- The command run at hourly in schedule
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1 # OR manually php artisan generate:calendar-event
Validation
Do NOT forget the validation
- start_datetime
- end_datetime
How to upgrade Carbon
$ docker run -it --rm -v $PWD:/app -w /app epcallan/php7-testing-phpunit:7.2-phpunit7 bash
$ composer install
$ ./vendor/bin/upgrade-carbon
How to Testing
$ docker run -it --rm -v $PWD:/app -w /app epcallan/php7-testing-phpunit:7.2-phpunit7 bash
$ composer install
$ ./vendor/bin/phpunit
TODO
- OCP
- Name conventions, example:
TemplateCalendarEvent::events()
toTemplateCalendarEvent::calendarEvents()
- Custom validation rule to date/time diff