<?php

namespace App\Repositories\Shop;

use App\Models\Shop\Delivery;
use App\Traits\Model\Basic;

class Deliveries
{
    use Basic;

    public static function init()
    {
        return [
            'sale_channels' => SaleChannels::getOptions(),
        ];
    }

    public static function getByCustomer($customerId = false)
    {
        $customer = $customerId ? Customers::get($customerId) : Customers::getAuth();
        $saleChannels = $customer ? $customer->sale_channels->pluck('id')->toArray() : [SaleChannels::getDefaultID()];

        return $saleChannels ? self::getBySaleChannels($saleChannels) : collect();
    }

    public static function getBySaleChannels($saleChannels)
    {
        return Delivery::bySaleChannels($saleChannels)->active()->with('sale_channel')->get();
    }

    public static function getSaleChannelId($deliveryId)
    {
        return $deliveryId ? Deliveries::getField($deliveryId, 'sale_channel_id') : SaleChannels::getDefaultID();
    }

    public static function getDefault()
    {
        return Delivery::active()->atHouse()->first();
    }

    public static function getAllWithSaleChannel()
    {
        return Delivery::orderBy('name', 'asc')->active()->with('sale_channel')->get();
    }

    public static function toggleActive($id, $active)
    {
        return self::update(['active' => $active], $id);
    }

    public static function getModel()
    {
        return Delivery::query();
    }
}
