2025-05-17 11:36:26 -04:00

55 lines
1.5 KiB
Go

package obtencionCodigo
import (
"context"
"daemonService/internal/handlers"
"daemonService/internal/models/obtencionCodigos"
service "daemonService/internal/services"
"daemonService/internal/utils"
"net/http"
)
// maneja la obtención de CUIS
type ObtencionCodigoService struct {
Model obtencionCodigos.CuisServiceModel
CuisService *service.CuisService
CronHandler *handlers.CronHandler
ApiHandler *handlers.APIHandler
}
// crea una nueva instancia del servicio
func NewObtencionCodigoService(
model obtencionCodigos.CuisServiceModel, cuisService *service.CuisService,
cronHandler *handlers.CronHandler, apiHandler *handlers.APIHandler,
) *ObtencionCodigoService {
return &ObtencionCodigoService{
Model: model, CuisService: cuisService,
CronHandler: cronHandler, ApiHandler: apiHandler,
}
}
// maneja la obtención de códigos CUIS
func (s *ObtencionCodigoService) ExecuteGetCode(dbCtx context.Context, w http.ResponseWriter, req *http.Request, isCron bool) (interface{}, error) {
s.CuisService.LogMessage(utils.LogServiceStart, s.GetName())
defer s.CuisService.LogMessage(utils.LogServiceEnd, s.GetName())
var respCuis interface{}
var err error
if isCron {
respCuis, err = s.CronHandler.ProcessCronMode(dbCtx)
} else {
respCuis, err = s.ApiHandler.HandleAPIRequest(dbCtx, w, req)
}
if err != nil {
return nil, err
}
return respCuis, nil
}
// GetName retorna el nombre del servicio
func (s *ObtencionCodigoService) GetName() string {
return s.Model.Name
}