| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/app/Http/Services/ |
Upload File : |
<?php
namespace App\Http\Services;
use App\Http\Services\LockerMiddlewareService;
use App\Models\LockerSchedule;
use App\Models\Locker;
use Queriplex;
class LockerScheduleService
{
public function __construct(
LockerMiddlewareService $lockerMiddlewareService
)
{
$this->lockerMiddlewareService = $lockerMiddlewareService;
}
public function lockerScheduleList(Array $request)
{
$lockerSchedules = LockerSchedule::query();
// // filter
$lockerSchedules = Queriplex::make($lockerSchedules)
->withFilters($request, [
'id' => 'id',
'type_id' => 'type_id',
'locker_id' => function($query, $value){
$query->whereHas('locker',function($q) use ($value){
$q->where('id',$value);
});
},
])->apply();
// sort
if( isset($request['sortBy']) ){
$order_mode = ( isset($request['sortDesc']) && $request['sortDesc'] == true) ? 'DESC' : 'ASC';
switch ($request['sortBy']) {
case 'day':
$lockerSchedules->orderBy('day', $order_mode)
->orderBy('start_time','ASC');
break;
case 'date':
$lockerSchedules->orderBy('date', $order_mode)
->orderBy('start_time','ASC');
break;
}
}
$result = $lockerSchedules->get();
return $result;
}
public function lockerScheduleUpdateWeekly(Array $request)
{
$locker = Locker::where('id',$request['locker_id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$schedules = collect($request['schedules'] ?? [])->map(function($item) use ($request) {
$item['type_id'] = LockerSchedule::WEEKLY;
$item['day'] = $request['day'];
return new LockerSchedule($item);
});
$locker->weeklySchedules()->where('day',$request['day'])
->delete();
$locker->weeklySchedules()->saveMany($schedules);
return $locker->schedules;
}
public function lockerScheduleUpdateSpecial(Array $request)
{
$locker = Locker::where('id',$request['locker_id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$schedules = collect($request['schedules'] ?? [])->map(function($item) use ($request) {
$item['type_id'] = LockerSchedule::SPECIAL_DAY;
$item['date'] = $request['date'];
$item['day'] = 0;
return new LockerSchedule($item);
});
$locker->specialSchedules()->where('date',$request['date'])
->delete();
$locker->specialSchedules()->saveMany($schedules);
return $locker->schedules;
}
}