package transformer import ( "apskel-pos-be/internal/contract" "apskel-pos-be/internal/models" ) // Tier Transformers func CreateTierRequestToModel(req *contract.CreateTierRequest) *models.CreateTierRequest { return &models.CreateTierRequest{ Name: req.Name, MinPoints: req.MinPoints, Benefits: req.Benefits, } } func UpdateTierRequestToModel(req *contract.UpdateTierRequest) *models.UpdateTierRequest { return &models.UpdateTierRequest{ Name: req.Name, MinPoints: req.MinPoints, Benefits: req.Benefits, } } func ListTiersRequestToModel(req *contract.ListTiersRequest) *models.ListTiersQuery { return &models.ListTiersQuery{ Page: req.Page, Limit: req.Limit, Search: req.Search, SortBy: req.SortBy, SortOrder: req.SortOrder, } } func TierModelToResponse(model *models.TierResponse) *contract.TierResponse { return &contract.TierResponse{ ID: model.ID, Name: model.Name, MinPoints: model.MinPoints, Benefits: model.Benefits, CreatedAt: model.CreatedAt, UpdatedAt: model.UpdatedAt, } } func PaginatedTiersResponseToContract(model *models.PaginatedResponse[models.TierResponse]) *contract.PaginatedTiersResponse { responses := make([]contract.TierResponse, len(model.Data)) for i, item := range model.Data { responses[i] = *TierModelToResponse(&item) } return &contract.PaginatedTiersResponse{ Data: responses, TotalCount: int(model.Pagination.Total), Page: model.Pagination.Page, Limit: model.Pagination.Limit, TotalPages: model.Pagination.TotalPages, } } // Omset Tracker Transformers func CreateOmsetTrackerRequestToModel(req *contract.CreateOmsetTrackerRequest) *models.CreateOmsetTrackerRequest { return &models.CreateOmsetTrackerRequest{ PeriodType: req.PeriodType, PeriodStart: req.PeriodStart, PeriodEnd: req.PeriodEnd, Total: req.Total, GameID: req.GameID, } } func UpdateOmsetTrackerRequestToModel(req *contract.UpdateOmsetTrackerRequest) *models.UpdateOmsetTrackerRequest { return &models.UpdateOmsetTrackerRequest{ PeriodType: req.PeriodType, PeriodStart: req.PeriodStart, PeriodEnd: req.PeriodEnd, Total: req.Total, GameID: req.GameID, } } func ListOmsetTrackerRequestToModel(req *contract.ListOmsetTrackerRequest) *models.ListOmsetTrackerQuery { return &models.ListOmsetTrackerQuery{ Page: req.Page, Limit: req.Limit, Search: req.Search, PeriodType: req.PeriodType, GameID: req.GameID, From: req.From, To: req.To, SortBy: req.SortBy, SortOrder: req.SortOrder, } } func OmsetTrackerModelToResponse(model *models.OmsetTrackerResponse) *contract.OmsetTrackerResponse { if model == nil { return nil } return &contract.OmsetTrackerResponse{ ID: model.ID, PeriodType: model.PeriodType, PeriodStart: model.PeriodStart, PeriodEnd: model.PeriodEnd, Total: model.Total, GameID: model.GameID, CreatedAt: model.CreatedAt, UpdatedAt: model.UpdatedAt, } } func PaginatedOmsetTrackerResponseToContract(model *models.PaginatedResponse[models.OmsetTrackerResponse]) *contract.PaginatedOmsetTrackerResponse { responses := make([]contract.OmsetTrackerResponse, len(model.Data)) for i, item := range model.Data { responses[i] = *OmsetTrackerModelToResponse(&item) } return &contract.PaginatedOmsetTrackerResponse{ Data: responses, TotalCount: int(model.Pagination.Total), Page: model.Pagination.Page, Limit: model.Pagination.Limit, TotalPages: model.Pagination.TotalPages, } }