tomhatzer/nova-business-hours

Business hours field for Laravel Nova.

Maintainers

👁 tomhatzer

Package info

github.com/tomhatzer/nova-business-hours

Language:Vue

pkg:composer/tomhatzer/nova-business-hours

Statistics

Installs: 46

Dependents: 0

Suggesters: 0

Stars: 0

v0.1.1 2021-03-15 21:46 UTC

Requires

  • php: >=7.4.0

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 47386fee9b50f78687b5253e93d2299a9e56aae7

novalaravel


README

This package offers a field for Nova to easily manage your business hours.

Install

composer require tomhatzer/nova-business-hours

Usage

Add this line to your Nova resource fields array:

NovaBusinessHours::make('Business hours', 'business_hours'),

Compatibility

Using this package with spatie/open-hours

Create a getter for your business hours field in your model like this:

public function getBusinessHoursAttribute($value)
{
 $jsonDecoded = json_decode($value);

 return collect($jsonDecoded)->transform(function($day) {
 return array_filter(
 array_map(function($item) {
 if($item->isOpen) {
 return substr_replace($item->open, ':', 2, 0) . '-' . substr_replace($item->close, ':', 2, 0);
 }

 return null;
 }, $day)
 );
 })->all();
}

In this case the fields name will be business_hours. Customize this according to your database column name.

Afterwards you can use it to fill the OpeningHours class with your existing business hours like this:

// Add the use at the top of each file where you want to use the OpeningHours class:
use Spatie\OpeningHours\OpeningHours;

// Get your model instance
$model = Model::find(1);

// Fill the OpeningHours class with your business hours
$openingHours = OpeningHours::create($model->business_hours);