<?php

use app\models\Cotizaciones;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\grid\ActionColumn;
use yii\grid\GridView;

/** @var yii\web\View $this */
/** @var app\models\CotizacionesSearch $searchModel */
/** @var yii\data\ActiveDataProvider $dataProvider */

$this->title = 'Listado de Documentos CLAC / TBS';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="cotizaciones-index">

    <h1><?= Html::encode($this->title) ?></h1>

    <!-- Panel de Búsqueda/Filtros -->
    <div class="panel panel-default" style="margin-bottom: 20px;">
        <div class="panel-heading">
            <h3 class="panel-title">
                <span class="glyphicon glyphicon-search"></span> Búsqueda y Filtros
            </h3>
        </div>
        <div class="panel-body">
            <?php $form = \yii\widgets\ActiveForm::begin([
                'action' => ['index'],
                'method' => 'get',
                'options' => ['class' => 'form-inline'],
            ]); ?>

            <div class="row">
                <div class="col-md-4">
                    <?= $form->field($searchModel, 'tipo_documento')->dropDownList(
                        [
                            '' => 'Todos los tipos',
                            'CLAC' => 'CLAC',
                            'TBS' => 'TBS',
                        ],
                        ['class' => 'form-control', 'style' => 'width: 100%;']
                    )->label('Tipo de Documento') ?>
                </div>

                <div class="col-md-4">
                    <?= $form->field($searchModel, 'numero_orden')->textInput([
                        'placeholder' => 'Ej: CLAC0001, TBS0023',
                        'class' => 'form-control',
                        'style' => 'width: 100%;'
                    ])->label('N° de Documento') ?>
                </div>

                <div class="col-md-4">
                    <?= $form->field($searchModel, 'estado')->dropDownList(
                        [
                            '' => 'Todos los estados',
                            'CLAC GENERADA' => 'CLAC Generada',
                            'TBS GENERADA' => 'TBS Generada',
                            'Aprobado' => 'Aprobado',
                            'Finalizado' => 'Finalizado',
                            'Cancelado' => 'Cancelado',
                            'Pendiente' => 'Pendiente',
                        ],
                        ['class' => 'form-control', 'style' => 'width: 100%;']
                    )->label('Estado') ?>
                </div>
            </div>

            <div class="form-group" style="margin-top: 15px;">
                <?= Html::submitButton('<span class="glyphicon glyphicon-search"></span> Buscar', ['class' => 'btn btn-primary']) ?>
                <?= Html::a('<span class="glyphicon glyphicon-refresh"></span> Limpiar', ['index'], ['class' => 'btn btn-default']) ?>
            </div>

            <?php \yii\widgets\ActiveForm::end(); ?>
        </div>
    </div>

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'tableOptions' => ['class' => 'table table-striped table-bordered'],
        'columns' => [
            
            // 1. Columna del Tipo de Documento
            [
                'label' => 'Tipo Documento',
                'attribute' => 'tipo_documento',
                'value' => function ($model) {
                    $tipo = $model->getTipoDocumento();
                    
                    if ($tipo === 'CLAC') {
                        return '<span class="badge bg-danger text-white p-2">CLAC</span>';
                    }
                    if ($tipo === 'TBS') {
                        return '<span class="badge bg-warning text-dark p-2">TBS</span>';
                    }
                    return $tipo;
                },
                'format' => 'raw',
                'contentOptions' => ['style' => 'text-align: center; width: 100px;'],
            ],

            // 2. Columna de Número de Orden
            [
                'attribute' => 'numero_orden',
                'label' => 'N° Documento',
                'value' => function($model) {
                    return $model->numero_orden;
                },
                'contentOptions' => ['style' => 'width: 150px;'],
            ],
            
            // 3. Cliente
            [
                'attribute' => 'cliente_id',
                'value' => 'cliente.nombre_razon_social',
                'label' => 'Cliente',
            ],

            // 4. Fecha
            [
                'attribute' => 'fecha_cotizacion',
                'format' => ['date', 'php:d/m/Y'],
                'contentOptions' => ['style' => 'width: 120px;'],
            ],
            
            // 5. Columna de Estado
            [
                'attribute' => 'estado',
                'label' => 'Estado',
                'value' => function ($model) {
                    if ($model->estado === 'Finalizado') {
                        return '<span class="label label-success" style="font-size: 12px; padding: 5px 10px;">
                                    <span class="glyphicon glyphicon-ok"></span> FINALIZADO
                                </span>';
                    }
                    
                    if ($model->estado === 'Cancelado') {
                        return '<span class="label label-danger" style="font-size: 12px; padding: 5px 10px;">
                                    <span class="glyphicon glyphicon-ban-circle"></span> CANCELADO
                                </span>';
                    }
                    
                    if ($model->estado === 'Aprobado') {
                        return '<span class="label label-success" style="font-size: 12px; padding: 5px 10px;">
                                    <span class="glyphicon glyphicon-ok"></span> APROBADO
                                </span>';
                    }
                    
                    if ($model->estado === 'CLAC GENERADA' || ($model->getTipoDocumento() === 'CLAC' && $model->estado === 'Pendiente')) {
                        return '<span class="label label-warning" style="font-size: 12px; padding: 5px 10px;">
                                    <span class="glyphicon glyphicon-time"></span> PENDIENTE
                                </span>';
                    }
                    
                    if ($model->estado === 'TBS GENERADA' || ($model->getTipoDocumento() === 'TBS' && $model->estado === 'Pendiente')) {
                        return '<span class="label label-info" style="font-size: 12px; padding: 5px 10px;">
                                    <span class="glyphicon glyphicon-file"></span> TBS PENDIENTE
                                </span>';
                    }
                    
                    return '<span class="label label-default" style="font-size: 12px; padding: 5px 10px;">' 
                           . Html::encode($model->estado) . 
                           '</span>';
                },
                'format' => 'raw',
                'contentOptions' => ['style' => 'text-align: center; width: 150px;'],
            ],
            
            // 6. Columna de Acciones
            [
                'label' => 'Acciones',
                'format' => 'raw',
                'value' => function ($model) {
                    $buttons = [];
                    
                    // Botón Ver Detalles (siempre visible)
                    $buttons[] = Html::a(
                        '<span class="glyphicon glyphicon-eye-open"></span> Ver Detalles',
                        ['view', 'id' => $model->id],
                        [
                            'class' => 'btn btn-sm btn-info',
                            'style' => 'margin: 2px;'
                        ]
                    );
                    
                    // Botón Finalizar (SIEMPRE VISIBLE en ROJO)
                    $buttons[] = Html::a(
                        '<span class="glyphicon glyphicon-flag"></span> Finalizar',
                        ['finalizar', 'id' => $model->id],
                        [
                            'class' => 'btn btn-sm btn-danger',
                            'style' => 'margin: 2px;',
                            'title' => 'Finalizar proceso (completar o cancelar por pedido del cliente)'
                        ]
                    );
                    
                    return implode(' ', $buttons);
                },
                'contentOptions' => ['style' => 'text-align: center; width: 220px;'],
            ],
        ],
    ]); ?>

</div>

<style>
.grid-view td {
    vertical-align: middle !important;
}

.btn-sm {
    padding: 5px 10px;
    font-size: 12px;
    white-space: nowrap;
}

.label {
    display: inline-block;
    min-width: 120px;
    text-align: center;
}

.form-inline .form-group {
    margin-right: 10px;
}
</style>