import React, { useRef, useState, useEffect } from "react";
import {
  Card,
  Col,
  Container,
  Row,
  Button,
  Table,
  Badge,
} from "react-bootstrap";

import { Head, router } from "@inertiajs/react";
import 'react-bootstrap-typeahead/css/Typeahead.css';
import { FileText } from "lucide-react";
import BreadCrumb from "../../../../Components/Common/BreadCrumb";
import Layout from "../../../../Layouts";
import { useLoading } from '../../../../LoadingContext';

interface Comercializadora {
  CodCom: number;
  RazSocCom: string;
  NomComCom?: string;
  NumCifCom: string;
  EstCom: number;
  TelFijCom?: string;
  EmaCom?: string;
  PagWebCom?: string;
  NomConCom?: string;
  CarConCom?: string;
  NomViaDirCom?: string;
  NumViaDirCom?: string;
  CPLoc?: string;
  SerGas?: number;
  SerEle?: number;
  SerEsp?: number;
  ObsCom?: string;
  tipoVia?: {
    DesTipVia: string;
  };
  localidad?: {
    DesLoc: string;
    provincia?: {
      DesPro: string;
    };
  };
}

const ConsultaComercializadora = ({comercializadora}: { comercializadora: Comercializadora }) => {
  const [activeKey, setActiveKey] = useState<string>("0");
  const printRef = useRef<HTMLDivElement>(null);
  const { showLoading, hideLoading } = useLoading();

  // Imprimir datos recibidos para depuración
  useEffect(() => {
    console.log("Datos recibidos en Comercializadora:", comercializadora);
  }, [comercializadora]);

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

  const handleEdit = () => {
    showLoading();
    router.visit(route('comercializadoras.editar', comercializadora.CodCom), {
      onFinish: () => hideLoading()
    });
  };

  return (
    <React.Fragment>
      <Head title={`Consultando Comercializadora: ${comercializadora.CodCom}`} />
      <div className="page-content">
        <Container fluid>
          <BreadCrumb title="Consulta" pageTitle="Comercializadora" />
          <Row>
            <Col xl={12}>
              <Card>
                <Card.Header className="d-flex justify-content-between align-items-center bg-light">
                  <h4 className="card-title mb-0">
                    Comercializadora: {comercializadora.RazSocCom || "Sin nombre"}
                  </h4>
                </Card.Header>
                <Card.Body>
                  {/* Contenido imprimible si se necesitara más adelante */}
                  <div ref={printRef}>
                    {/* Información general */}
                    <div className="mb-4">
                      <h5 className="border-bottom pb-2">Información General</h5>
                      <Row>
                        <Col md={6}>
                          <Table bordered responsive className="table-striped">
                            <tbody>
                              <tr>
                                <th style={{ width: "40%" }}>Razón Social</th>
                                <td>{comercializadora.RazSocCom ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>Nombre Comercial</th>
                                <td>{comercializadora.NomComCom ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>CIF</th>
                                <td>{comercializadora.NumCifCom ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>Estado</th>
                                <td>
                                  {comercializadora.EstCom === 1 ? (
                                    <Badge bg="success">Activo</Badge>
                                  ) : (
                                    <Badge bg="secondary">Suspendido</Badge>
                                  )}
                                </td>
                              </tr>
                              {(comercializadora.PagWebCom || comercializadora.ObsCom) && (
                                <tr>
                                  <th>Otros</th>
                                  <td>
                                    {comercializadora.PagWebCom && (
                                      <div>
                                        <strong>Web:</strong> {comercializadora.PagWebCom}
                                      </div>
                                    )}
                                    {comercializadora.ObsCom && (
                                      <div>
                                        <strong>Observaciones:</strong> {comercializadora.ObsCom}
                                      </div>
                                    )}
                                  </td>
                                </tr>
                              )}
                            </tbody>
                          </Table>
                        </Col>
                      </Row>
                    </div>

                    {/* Servicios Ofrecidos */}
                    <div className="mt-4">
                      <h5 className="border-bottom pb-2">Servicios Ofrecidos</h5>
                      <Row>
                        <Col md={6}>
                          <Table bordered responsive className="table-striped">
                            <tbody>
                              <tr>
                                <th style={{ width: "40%" }}>Servicio de Gas</th>
                                <td>
                                  {comercializadora.SerGas === 1 ? (
                                    <Badge bg="success">Sí</Badge>
                                  ) : (
                                    <Badge bg="secondary">No</Badge>
                                  )}
                                </td>
                              </tr>
                              <tr>
                                <th>Servicio Eléctrico</th>
                                <td>
                                  {comercializadora.SerEle === 1 ? (
                                    <Badge bg="success">Sí</Badge>
                                  ) : (
                                    <Badge bg="secondary">No</Badge>
                                  )}
                                </td>
                              </tr>
                              <tr>
                                <th>Servicios Especiales</th>
                                <td>
                                  {comercializadora.SerEsp === 1 ? (
                                    <Badge bg="success">Sí</Badge>
                                  ) : (
                                    <Badge bg="secondary">No</Badge>
                                  )}
                                </td>
                              </tr>
                            </tbody>
                          </Table>
                        </Col>
                      </Row>
                    </div>

                    {/* Dirección */}
                    <div className="mt-4">
                      <h5 className="border-bottom pb-2">Dirección</h5>
                      <Row>
                        <Col md={8}>
                          <Table bordered responsive className="table-striped">
                            <tbody>
                              <tr>
                                <th style={{ width: "30%" }}>Vía</th>
                                <td>
                                  {(() => {
                                    const tipoVia = comercializadora.tipoVia?.DesTipVia ? `${comercializadora.tipoVia.DesTipVia}` : "";
                                    const nom = comercializadora.NomViaDirCom || "";
                                    const num = comercializadora.NumViaDirCom || "";
                                    return `${tipoVia}${tipoVia && (nom || num) ? " " : ""}${nom} ${num}`.trim() || "N/A";
                                  })()}
                                </td>
                              </tr>
                              <tr>
                                <th>Código Postal</th>
                                <td>{comercializadora.CPLoc ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>Localidad</th>
                                <td>{comercializadora.localidad?.DesLoc ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>Provincia</th>
                                <td>{comercializadora.localidad?.provincia?.DesPro ?? "N/A"}</td>
                              </tr>
                            </tbody>
                          </Table>
                        </Col>
                      </Row>
                    </div>

                    {/* Contacto */}
                    <div className="mt-4">
                      <h5 className="border-bottom pb-2">Contacto</h5>
                      <Row>
                        <Col md={6}>
                          <Table bordered responsive className="table-striped">
                            <tbody>
                              <tr>
                                <th style={{ width: "40%" }}>Persona de Contacto</th>
                                <td>{comercializadora.NomConCom ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>Cargo</th>
                                <td>{comercializadora.CarConCom ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>Teléfono</th>
                                <td>{comercializadora.TelFijCom ?? "N/A"}</td>
                              </tr>
                              <tr>
                                <th>Email</th>
                                <td>{comercializadora.EmaCom ?? "N/A"}</td>
                              </tr>
                            </tbody>
                          </Table>
                        </Col>
                      </Row>
                    </div>
                  </div>
                </Card.Body>
                <Card.Footer className="text-center">
                  <Button
                    variant="secondary"
                    onClick={handleBack}
                    className="me-2"
                  >
                    <FileText size={16} className="me-1" />
                    Volver a Comercializadoras
                  </Button>
                  <Button
                    variant="primary"
                    onClick={handleEdit}
                  >
                    Editar
                  </Button>
                </Card.Footer>
              </Card>
            </Col>
          </Row>
        </Container>
      </div>
    </React.Fragment>
  );
};

ConsultaComercializadora.layout = (page: any) => <Layout children={page} />;
export default ConsultaComercializadora;
