import { GridColDef } from '@mui/x-data-grid-premium';
import { formatDate } from '../../utils/orderFormatters';

export const createDeliveryPanelColumns = (): GridColDef[] => [
  {
    field: 'shippimentId',
    headerName: 'Código da entrega',
    width: 90,
    align: 'center',
    headerAlign: 'center',
    description: 'Identificador da entrega',
  },
  {
    field: 'placeName',
    headerName: 'Praça',
    minWidth: 150,
    flex: 1,
    description: 'Nome do local de entrega',
  },
  {
    field: 'street',
    headerName: 'Rua',
    minWidth: 180,
    flex: 1.5,
    description: 'Rua do endereço de entrega',
  },
  {
    field: 'addressNumber',
    headerName: 'Nº',
    width: 60,
    align: 'center',
    headerAlign: 'center',
    description: 'Número do endereço',
  },
  {
    field: 'bairro',
    headerName: 'Bairro',
    minWidth: 120,
    flex: 1,
    description: 'Bairro do endereço de entrega',
  },
  {
    field: 'city',
    headerName: 'Cidade',
    minWidth: 120,
    flex: 1,
    description: 'Cidade de entrega',
  },
  {
    field: 'state',
    headerName: 'UF',
    width: 50,
    align: 'center',
    headerAlign: 'center',
    description: 'Estado',
  },
  {
    field: 'cep',
    headerName: 'CEP',
    width: 90,
    align: 'center',
    headerAlign: 'center',
    description: 'CEP do endereço',
  },
  {
    field: 'shippimentDate',
    headerName: 'Data Entrega',
    width: 100,
    align: 'center',
    headerAlign: 'center',
    description: 'Data programada para entrega',
    valueFormatter: (value) => formatDate(value as string),
  },
  {
    field: 'driver',
    headerName: 'Motorista',
    minWidth: 120,
    flex: 1,
    description: 'Nome do motorista',
  },
  {
    field: 'car',
    headerName: 'Veículo',
    minWidth: 100,
    flex: 0.8,
    description: 'Veículo utilizado na entrega',
  },
  {
    field: 'separatorName',
    headerName: 'Separador',
    minWidth: 100,
    flex: 0.8,
    description: 'Nome do separador',
  },
  {
    field: 'closeDate',
    headerName: 'Data Fechamento',
    width: 120,
    align: 'center',
    headerAlign: 'center',
    description: 'Data de fechamento da entrega',
    valueFormatter: (value) => (value ? formatDate(value as string) : '-'),
  },
  {
    field: 'commentOrder1',
    headerName: 'Obs. Pedido 1',
    minWidth: 200,
    flex: 1.5,
    description: 'Observação do pedido 1',
  },
  {
    field: 'commentOrder2',
    headerName: 'Obs. Pedido 2',
    minWidth: 200,
    flex: 1.5,
    description: 'Observação do pedido 2',
  },
  {
    field: 'commentDelivery1',
    headerName: 'Obs. Entrega 1',
    minWidth: 200,
    flex: 1.5,
    description: 'Observação da entrega 1',
  },
  {
    field: 'commentDelivery2',
    headerName: 'Obs. Entrega 2',
    minWidth: 200,
    flex: 1.5,
    description: 'Observação da entrega 2',
  },
  {
    field: 'commentDelivery3',
    headerName: 'Obs. Entrega 3',
    minWidth: 200,
    flex: 1.5,
    description: 'Observação da entrega 3',
  },
  {
    field: 'commentDelivery4',
    headerName: 'Obs. Entrega 4',
    minWidth: 200,
    flex: 1.5,
    description: 'Observação da entrega 4',
  },
];
