package dto import ( "github.com/Caknoooo/go-gin-clean-starter/database/entities" pkgdto "github.com/Caknoooo/go-gin-clean-starter/pkg/dto" "github.com/Caknoooo/go-gin-clean-starter/pkg/utils" ) const ( MESSAGE_FAILED_CREATE_QUARANTINE = "failed create quarantine" MESSAGE_FAILED_CREATE_QUARANTINE_LINE = "failed create quarantine line" MESSAGE_SUCCESS_CREATE_QUARANTINE = "success create quarantine" MESSAGE_SUCCESS_CREATE_QUARANTINE_LINE = "success create quarantine line" MESSAGE_FAILED_GET_QUARANTINE = "failed get quarantine" MESSAGE_SUCCESS_GET_QUARANTINE = "success get quarantine" MESSAGE_FAILED_UPDATE_QUARANTINE = "failed update quarantine" MESSAGE_FAILED_UPDATE_QUARANTINE_LINE = "failed update quarantine line" MESSAGE_SUCCESS_UPDATE_QUARANTINE = "success update quarantine" MESSAGE_SUCCESS_UPDATE_QUARANTINE_LINE = "success update quarantine line" MESSAGE_FAILED_DELETE_QUARANTINE = "failed delete quarantine" MESSAGE_FAILED_DELETE_QUARANTINE_LINE = "failed delete quarantine line" MESSAGE_SUCCESS_DELETE_QUARANTINE = "success delete quarantine" MESSAGE_SUCCESS_DELETE_QUARANTINE_LINE = "success delete quarantine line" MESSAGE_FAILED_GET_DATA_FROM_BODY = "failed get data from body" MESSAGE_SUCCESS_COMPLETE_QUARANTINE = "success complete quarantine" MESSAGE_FAILED_COMPLETE_QUARANTINE = "failed complete quarantine" MESSAGE_FAILED_GET_QUARANTINE_LINES = "failed get quarantine lines" MESSAGE_SUCCESS_GET_QUARANTINE_LINES = "success get quarantine lines" ) type QuarantineCreateRequest struct { ReferenceNumber string `json:"reference_number"` DocumentDate string `json:"document_date"` Source string `json:"source"` QrCodeFile string `json:"qr_code_file"` ClientID string `json:"client_id" binding:"required"` Status string `json:"status"` QuarantineLines []QuarantineLineCreateRequest `json:"quarantine_lines,omitempty" binding:"dive"` } type QuarantineLineCreateRequest struct { Quantity float64 `json:"quantity"` BatchNumber string `json:"batch_number"` RepackingSuggestion string `json:"repacking_suggestion"` RepackUomID string `json:"repack_uom_id"` RepackUomCode string `json:"repack_uom_code"` ProductID string `json:"product_id"` ProductCode string `json:"product_code"` ClientID string `json:"client_id"` } type QuarantineUpdateRequest struct { ReferenceNumber string `json:"reference_number"` DocumentDate string `json:"document_date"` Source string `json:"source"` QrCodeFile string `json:"qr_code_file"` Status string `json:"status"` } type QuarantineLineUpdateRequest struct { Quantity float64 `json:"quantity"` BatchNumber string `json:"batch_number"` RepackingSuggestion string `json:"repacking_suggestion"` RepackUomID string `json:"repack_uom_id"` RepackUomCode string `json:"repack_uom_code"` ProductID string `json:"product_id"` ProductCode string `json:"product_code"` ClientID string `json:"client_id"` } type QuarantineResponse struct { ID string `json:"id"` DocumentNumber string `json:"document_number"` DocumentDate string `json:"document_date"` Status string `json:"status"` Warehouse pkgdto.IdNameResponse `json:"warehouse"` Zona pkgdto.IdNameResponse `json:"zona"` Client pkgdto.IdNameResponse `json:"client"` // QuarantineLines []QuarantineLineResponse `json:"quarantine_lines,omitempty"` } type QuarantineLineResponse struct { ID string `json:"id"` QuarantineID string `json:"quarantine_id"` StorageID string `json:"storage_id"` ProductID string `json:"product_id"` ClientID string `json:"client_id"` Product pkgdto.IdNameResponse `json:"product"` Storage pkgdto.IdNameResponse `json:"storage"` Quarantine pkgdto.IdNameResponse `json:"quarantine"` Client pkgdto.IdNameResponse `json:"client"` } func MapQuarantineToResponse(entity entities.TInventoryQuarantineEntity, lines []entities.TInventoryQuarantineLineEntity) QuarantineResponse { resp := QuarantineResponse{ ID: entity.ID.String(), DocumentNumber: entity.DocumentNumber, DocumentDate: utils.DateTimeToString(entity.DocumentDate), Status: entity.Status, Warehouse: pkgdto.IdNameResponse{ID: entity.WarehouseID.String(), Name: entity.Warehouse.Name}, Zona: pkgdto.IdNameResponse{ID: entity.ZonaID.String(), Name: entity.Zona.Name}, Client: pkgdto.IdNameResponse{ID: entity.ClientID.String(), Name: entity.Client.Name}, } return resp } func MapQuarantineLineToResponse(line entities.TInventoryQuarantineLineEntity) QuarantineLineResponse { return QuarantineLineResponse{ ID: line.ID.String(), QuarantineID: line.QuarantineID.String(), StorageID: line.StorageID.String(), ProductID: line.ProductID.String(), ClientID: line.ClientID.String(), Product: pkgdto.IdNameResponse{ID: line.ProductID.String(), Name: line.Product.Name}, Storage: pkgdto.IdNameResponse{ID: line.StorageID.String(), Name: "line.Storage.Name"}, Quarantine: pkgdto.IdNameResponse{ID: line.QuarantineID.String(), Name: line.Quarantine.DocumentNumber}, Client: pkgdto.IdNameResponse{ID: line.ClientID.String(), Name: line.Client.Name}, } } func MapQuarantineLinesToResponse(lines []entities.TInventoryQuarantineLineEntity) []QuarantineLineResponse { var responses []QuarantineLineResponse for _, e := range lines { responses = append(responses, MapQuarantineLineToResponse(e)) } if responses == nil { responses = make([]QuarantineLineResponse, 0) } return responses }