59 lines
1.5 KiB
PHP
59 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories\SQL;
|
|
|
|
use App\Enums\RoleEnum;
|
|
use App\Enums\StatusEnum;
|
|
use App\Models\Delivery;
|
|
use App\Repositories\Interfaces\DeliveryRepositoryInterface;
|
|
use Illuminate\Support\Facades\Date;
|
|
|
|
class DeliveryRepository implements DeliveryRepositoryInterface
|
|
{
|
|
public function getAllDeliveries()
|
|
{
|
|
if(auth()->user()->role == RoleEnum::DRIVER) {
|
|
return Delivery::where('user_id', auth()->user()->id)
|
|
->orderBy('status', 'asc')
|
|
->filter()
|
|
->paginate(10)
|
|
->withQueryString();
|
|
}
|
|
|
|
return Delivery::where('deliveries.warehouse_id', auth()->user()->warehouse_id)
|
|
->orderBy('status', 'asc')
|
|
->filter()
|
|
->paginate(10)
|
|
->withQueryString();
|
|
}
|
|
|
|
public function createDelivery(array $data)
|
|
{
|
|
Delivery::create($data);
|
|
}
|
|
|
|
public function updateDelivery(Delivery $delivery, array $data)
|
|
{
|
|
$delivery->update($data);
|
|
}
|
|
|
|
public function deleteDelivery(Delivery $delivery)
|
|
{
|
|
$delivery->delete();
|
|
}
|
|
|
|
public function startDelivery(Delivery $delivery)
|
|
{
|
|
$delivery->status = StatusEnum::SENT;
|
|
$delivery->sending_date = Date::now();
|
|
$delivery->update((array)$delivery);
|
|
}
|
|
|
|
public function endDelivery(Delivery $delivery)
|
|
{
|
|
$delivery->status = StatusEnum::DELIVERED;
|
|
$delivery->delivery_date = Date::now();
|
|
$delivery->update((array)$delivery);
|
|
}
|
|
}
|