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 //}