import React from 'react';
import { Card, Col, Container, Row, Button, Badge } from 'react-bootstrap';
import { Head, router } from '@inertiajs/react';
import { Edit, FileText, Flame, Zap } from 'lucide-react';
import BreadCrumb from '../../../../Components/Common/BreadCrumb';
import Layout from '../../../../Layouts';
import { useLoading } from '../../../../LoadingContext';

interface ConsultaTarifaProps {
  tarifa: any;
  tipoTarifa: 'electrica' | 'gas';
}

const ConsultaTarifa = ({ tarifa, tipoTarifa }: ConsultaTarifaProps) => {
  const esGas = tipoTarifa === 'gas';
  const { showLoading, hideLoading } = useLoading();
  const nombre = tarifa?.nombre || '—';
  const activa = tarifa?.activa === true || tarifa?.activa === 1;

  const handleEdit = () => {
    showLoading();
    router.visit(route('tarifas.editar', { tipo: tipoTarifa, id: tarifa.id }), { onFinish: hideLoading });
  };

  const handleBack = () => {
    showLoading();
    router.visit(route('tarifas.index', { tipo: tipoTarifa }), { onFinish: hideLoading });
  };

  return (
    <React.Fragment>
      <Head title={`Tarifa: ${nombre}`} />
      <div className="page-content">
        <Container fluid>
          <BreadCrumb title="Consulta" pageTitle="Tarifas" />
          <Row>
            <Col xl={12}>
              <Card>
                <Card.Header className="d-flex justify-content-between align-items-center flex-wrap gap-2">
                  <h5 className="card-title mb-0 d-flex align-items-center gap-2">
                    {esGas ? <Flame size={20} aria-hidden="true" /> : <Zap size={20} aria-hidden="true" />}
                    {nombre}
                  </h5>
                  <Badge bg={activa ? 'success' : 'secondary'}>{activa ? 'Activa' : 'Inactiva'}</Badge>
                </Card.Header>
                <Card.Body>
                  <Row className="g-3">
                    <Col md={6}>
                      <p className="mb-1 text-muted">Tipo</p>
                      <p className="fw-semibold">{esGas ? 'Tarifa Gas' : 'Tarifa Eléctrica'}</p>
                    </Col>
                    <Col md={6}>
                      <p className="mb-1 text-muted">Código</p>
                      <p className="fw-semibold">{tarifa.id}</p>
                    </Col>
                    <Col md={6}>
                      <p className="mb-1 text-muted">Nombre tarifa</p>
                      <p className="fw-semibold">{esGas ? (tarifa.NomTarGas || '—') : (tarifa.NomTarEle || '—')}</p>
                    </Col>
                    <Col md={6}>
                      <p className="mb-1 text-muted">Nombre alterno</p>
                      <p className="fw-semibold">{tarifa.nombre_alterno || '—'}</p>
                    </Col>
                    {esGas ? (
                      <>
                        <Col md={6}>
                          <p className="mb-1 text-muted">Consumo anual mínimo</p>
                          <p className="fw-semibold">{tarifa.MinConAnu ?? '—'}</p>
                        </Col>
                        <Col md={6}>
                          <p className="mb-1 text-muted">Consumo anual máximo</p>
                          <p className="fw-semibold">{tarifa.MaxConAnu ?? '—'}</p>
                        </Col>
                      </>
                    ) : (
                      <>
                        <Col md={6}>
                          <p className="mb-1 text-muted">Tensión</p>
                          <p className="fw-semibold">{tarifa.TipTen || '—'}</p>
                        </Col>
                        <Col md={6}>
                          <p className="mb-1 text-muted">Periodos</p>
                          <p className="fw-semibold">{tarifa.CanPerTar ?? '—'}</p>
                        </Col>
                        <Col md={6}>
                          <p className="mb-1 text-muted">Potencia mínima (kW)</p>
                          <p className="fw-semibold">{tarifa.MinPotCon ?? '—'}</p>
                        </Col>
                        <Col md={6}>
                          <p className="mb-1 text-muted">Potencia máxima (kW)</p>
                          <p className="fw-semibold">{tarifa.MaxPotCon ?? '—'}</p>
                        </Col>
                      </>
                    )}
                  </Row>
                </Card.Body>
                <Card.Footer className="d-flex gap-2 justify-content-end">
                  <Button variant="outline-secondary" onClick={handleBack}>Volver al listado</Button>
                  <Button variant="primary" onClick={handleEdit} className="d-flex align-items-center gap-1">
                    <Edit size={16} aria-hidden="true" /> Editar
                  </Button>
                </Card.Footer>
              </Card>
            </Col>
          </Row>
        </Container>
      </div>
    </React.Fragment>
  );
};

(ConsultaTarifa as any).layout = (page: React.ReactNode) => <Layout children={page} />;
export default ConsultaTarifa;
