1
0
Fork 0

feat(training): add pricing and TrainingPrice with amount, currency and type (open|corporate)

This commit is contained in:
Vojtěch Mareš 2024-05-05 11:55:33 +02:00
parent db6ff45c99
commit 5d83bb0308
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D
8 changed files with 316 additions and 45 deletions

View file

@ -29,12 +29,21 @@ func (h *APIHandlers) ListTrainings(ctx context.Context, req ListTrainingsReques
}
data := make([]Training, len(trainings))
for idx, training := range trainings {
for idx, t := range trainings {
pricing := make([]TrainingPrice, len(t.Pricing))
for idx, p := range t.Pricing {
pricing[idx] = TrainingPrice{
Amount: p.Amount,
Currency: p.Currency,
Type: TrainingPriceType(p.Type),
}
}
data[idx] = Training{
Id: training.ID,
Name: training.Name,
Days: training.Days,
Description: training.Description,
Id: t.ID,
Name: t.Name,
Days: t.Days,
Description: t.Description,
Pricing: pricing,
}
}
@ -42,10 +51,20 @@ func (h *APIHandlers) ListTrainings(ctx context.Context, req ListTrainingsReques
}
func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequestObject) (CreateTrainingResponseObject, error) {
pricing := make([]training.TrainingPrice, len(req.Body.Pricing))
for idx, p := range req.Body.Pricing {
pricing[idx] = training.TrainingPrice{
Amount: p.Amount,
Currency: p.Currency,
Type: training.TrainingPriceType(p.Type),
}
}
t := training.Training{
Name: req.Body.Name,
Days: req.Body.Days,
Description: req.Body.Description,
Pricing: pricing,
}
err := h.trainingRepository.Create(&t)
@ -58,11 +77,21 @@ func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequ
}}, nil
}
responsePricing := make([]TrainingPrice, len(t.Pricing))
for idx, p := range t.Pricing {
responsePricing[idx] = TrainingPrice{
Amount: p.Amount,
Currency: p.Currency,
Type: TrainingPriceType(p.Type),
}
}
return CreateTraining201JSONResponse{
Id: t.ID,
Name: t.Name,
Days: t.Days,
Description: t.Description,
Pricing: responsePricing,
}, nil
}
@ -103,20 +132,38 @@ func (h *APIHandlers) GetTraining(ctx context.Context, req GetTrainingRequestObj
}}, nil
}
pricing := make([]TrainingPrice, len(t.Pricing))
for idx, p := range t.Pricing {
pricing[idx] = TrainingPrice{
Amount: p.Amount,
Currency: p.Currency,
Type: TrainingPriceType(p.Type),
}
}
return GetTraining200JSONResponse{
Id: t.ID,
Name: t.Name,
Days: t.Days,
Description: t.Description,
Pricing: pricing,
}, nil
}
func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequestObject) (UpdateTrainingResponseObject, error) {
pricing := make([]training.TrainingPrice, len(req.Body.Pricing))
for idx, p := range req.Body.Pricing {
pricing[idx] = training.TrainingPrice{
Amount: p.Amount,
Currency: p.Currency,
Type: training.TrainingPriceType(p.Type),
}
}
t := training.Training{
ID: req.TrainingID,
Name: req.Body.Name,
Days: req.Body.Days,
Description: req.Body.Description,
Pricing: pricing,
}
err := h.trainingRepository.Update(&t)