package obtencionCodigo

//import (
//	"context"
//	"daemonService/internal/models/obtencionCodigos/request"
//	"encoding/json"
//	"net/http"
//)
//
//// procesa la ejecución en modo cron
//func (s *ObtencionCodigoService) processCronMode(dbCtx context.Context) (interface{}, error) {
//	empresasConCuis, err := s.GetEmpresasConCuisMinimal(dbCtx)
//	if err != nil {
//		return nil, s.LogError("Error al obtener empresas con CUIS: %v", err)
//	}
//
//	var lastResponse interface{}
//	for _, ec := range empresasConCuis {
//		s.LogMessage("Procesando empresa ID: %d", ec.ID)
//
//		if len(ec.Cuis) == 0 {
//			s.LogMessage("Empresa ID %d sin CUIS registrados", ec.ID)
//			continue
//		}
//
//		for _, c := range ec.Cuis {
//			s.LogMessage("Procesando CUIS ID: %d", c.Cuis_id)
//
//			cuisRequest := s.buildCuisRequestFromEmpresa(ec)
//			respCuis, err := codigoProcesarRegistro(&s.CuisServiceModel, cuisRequest, 0)
//
//			if err != nil {
//				s.LogError(logErrorProcessing, err, cuisRequest.CodigoSistema)
//				continue
//			}
//
//			if err := s.actualizarRegistro(dbCtx, ec.ID, c.Cuis_id, cuisRequest, respCuis); err != nil {
//				s.LogError("Error actualizando registro: %v", err)
//				continue
//			}
//
//			lastResponse = respCuis
//		}
//	}
//
//	return lastResponse, nil
//}
//
//// procesa la ejecución en modo API
//func (s *ObtencionCodigoService) processAPIMode(dbCtx context.Context, w http.ResponseWriter, req *http.Request) (interface{}, error) {
//	cuisRequest, err := s.parseCuisRequest(w, req)
//	if err != nil {
//		return nil, err
//	}
//
//	if err := s.validateCuisRequest(cuisRequest); err != nil {
//		return nil, s.LogError("Datos inválidos: %v", err)
//	}
//
//	respCuis, err := codigoProcesarRegistro(&s.CuisServiceModel, cuisRequest, 0)
//	if err != nil {
//		return nil, s.LogError(logErrorProcessing, err, cuisRequest.CodigoSistema)
//	}
//
//	if err := s.crearNuevoRegistro(dbCtx, cuisRequest, respCuis); err != nil {
//		return nil, s.LogError("Error creando nuevo registro: %v", err)
//	}
//
//	return respCuis, nil
//}
//
//// parsea la solicitud de CUIS desde el body del request
//func (s *ObtencionCodigoService) parseCuisRequest(w http.ResponseWriter, req *http.Request) (request.SolicitudCuis, error) {
//	var cuisRequest request.SolicitudCuis
//
//	// Limitar el tamaño del body para prevenir ataques DoS
//	req.Body = http.MaxBytesReader(w, req.Body, maxBodySize)
//
//	decoder := json.NewDecoder(req.Body)
//	decoder.DisallowUnknownFields() // Rechazar campos desconocidos
//
//	if err := decoder.Decode(&cuisRequest); err != nil {
//		return cuisRequest, s.LogError("Error al decodificar JSON: %v", err)
//	}
//
//	return cuisRequest, nil
//}
//
//// valida los datos de la solicitud CUIS
//func (s *ObtencionCodigoService) validateCuisRequest(request request.SolicitudCuis) error {
//	if request.CodigoAmbiente == "" ||
//		request.CodigoModalidad == "" ||
//		request.CodigoPuntoVenta == "" ||
//		request.CodigoSistema == "" ||
//		request.CodigoSucursal == "" ||
//		request.Nit == "" {
//		return ErrAllFieldsRequired
//	}
//	return nil
//}
