<?php

namespace App\Datatables\Admin\Shop;

use App\Datatables\ParentDataTable as DataTable;
use App\Models\Shop\CustomerAddress;
use App\Repositories\Shop\CustomerAddresses;
use Yajra\DataTables\Html\Column;

class CustomerAddressesDataTable extends DataTable
{
    public $model_name = 'customer_addresses';

    public function __construct()
    {
        $this->url = route('Admin.Shop.CustomerAddresses.index');
    }

    public function query(CustomerAddress $model)
    {
        $model = self::filterByCustomer($model);
        
        return $this->buildQuery($model);
    }

    public static function filterByCustomer($model, $customerId = false)
    {
        $customerId = $customerId ? $customerId : self::isFilteredByField('customer_id');

        return $customerId ? $model->byCustomer($customerId) : $model;
    }

    public function modifier($datatables)
    {
        $datatables->editColumn('type', function (CustomerAddress $address) {
            return CustomerAddresses::getIconByType($address->type);
        })->rawColumns(['type', 'action']);

        return parent::modifier($datatables);
    }


    protected function getColumns()
    {
        return [
            Column::make('type')->title('')->width(30),
            Column::make('address')->title('Adresse'),
            Column::make('zipcode')->title('Code postal'),
            Column::make('city')->title('Ville'),
            $this->makeColumnButtons(),
        ];
    }
}
