/* DESCRIPTION: Any functions that are used internally by the use-case */ package vehicle import ( "encoding/json" "errors" v "simrs-vx/internal/domain/main-entities/vehicle" vh "simrs-vx/internal/domain/main-entities/vehicle-hist" rcl "simrs-vx/internal/domain/references/clinical" pl "simrs-vx/pkg/logger" "time" ) func setData[T *v.CreateDto | *v.UpdateDto](input T, data *v.Vehicle) { var inputSrc *v.CreateDto if inputT, ok := any(input).(*v.CreateDto); ok { inputSrc = inputT } else { inputTemp := any(input).(*v.UpdateDto) inputSrc = &inputTemp.CreateDto } data.Type_Code = &inputSrc.Type_Code data.PoliceNumber = inputSrc.PoliceNumber data.FrameNumber = inputSrc.FrameNumber data.RegNumber = inputSrc.RegNumber data.AvailableStatus = inputSrc.AvailableStatus } func setDataVehicleHist(input v.InsertVehicleHist, data *vh.VehicleHist) { now := time.Now() data.Vehicle_Id = &input.Id data.Date = &now data.Data = toStringPtr(input.Vehicle) data.Crud_Code = &input.Crud_Code } func toStringPtr(v any) *string { b, _ := json.Marshal(v) s := string(b) return &s } func validateRequest(input v.CreateDto, event *pl.Event) error { event.Status = "failed" event.ErrInfo = pl.ErrorInfo{ Code: "data-validation-fail", } if input.Type_Code == "" { event.ErrInfo.Detail = "Field 'type_code' is required" event.ErrInfo.Raw = errors.New("type_code is required") return pl.SetLogError(event, input) } if input.PoliceNumber == nil { event.ErrInfo.Detail = "Field 'policeNumber' is required" event.ErrInfo.Raw = errors.New("policeNumber is required") return pl.SetLogError(event, input) } switch input.Type_Code { case rcl.VTCAmbulance, rcl.VTCTransport, rcl.VTCHearse: return nil default: event.ErrInfo.Detail = "type_code value is not recognized" event.ErrInfo.Raw = errors.New("type_code value is not recognized") return pl.SetLogError(event, input) } }