import { Request, Response } from "express";
import { ValenciaDistrictModel } from "../models/valenciaDistrictModel";

export const valenciaDistrictController = {
  getAll: async (_req: Request, res: Response): Promise<void> => {
    try {
      const data = await ValenciaDistrictModel.findAll();
      res.json({ success: true, data });
    } catch {
      res.status(500).json({ success: false, error: "Error al obtener distritos de Valencia" });
    }
  },

  create: async (req: Request, res: Response): Promise<void> => {
    try {
      const { name, idealista_slug, fotocasa_slug, pisos_slug, active, sort_order } = req.body;
      if (!name || !idealista_slug || !fotocasa_slug || !pisos_slug) {
        res.status(400).json({ success: false, error: "Nombre y slugs son obligatorios" });
        return;
      }
      const id = await ValenciaDistrictModel.create({
        name: String(name).trim(),
        idealista_slug: String(idealista_slug).trim(),
        fotocasa_slug: String(fotocasa_slug).trim(),
        pisos_slug: String(pisos_slug).trim(),
        active: Number(active ?? 1) ? 1 : 0,
        sort_order: Number(sort_order ?? 999),
      });
      res.json({ success: true, id });
    } catch {
      res.status(500).json({ success: false, error: "Error al crear distrito" });
    }
  },

  update: async (req: Request, res: Response): Promise<void> => {
    try {
      const id = parseInt(req.params.id, 10);
      await ValenciaDistrictModel.update(id, req.body || {});
      res.json({ success: true });
    } catch {
      res.status(500).json({ success: false, error: "Error al actualizar distrito" });
    }
  },

  toggle: async (req: Request, res: Response): Promise<void> => {
    try {
      const id = parseInt(req.params.id, 10);
      await ValenciaDistrictModel.toggleActive(id);
      res.json({ success: true });
    } catch {
      res.status(500).json({ success: false, error: "Error al cambiar estado del distrito" });
    }
  },

  remove: async (req: Request, res: Response): Promise<void> => {
    try {
      const id = parseInt(req.params.id, 10);
      await ValenciaDistrictModel.deleteById(id);
      res.json({ success: true });
    } catch {
      res.status(500).json({ success: false, error: "Error al eliminar distrito" });
    }
  },
};

