diff --git a/TickAPI/TickAPI.Tests/Events/Utils.cs b/TickAPI/TickAPI.Tests/Events/Utils.cs index 479568b..1fa0c76 100644 --- a/TickAPI/TickAPI.Tests/Events/Utils.cs +++ b/TickAPI/TickAPI.Tests/Events/Utils.cs @@ -47,8 +47,8 @@ public static GetEventResponseDto CreateSampleEventResponseDto(string name) new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(1970, 1, 2, 0, 0, 0, DateTimeKind.Utc), 18, - 100, - 300, + new GetEventResponsePriceInfoDto(100, "PLN"), + new GetEventResponsePriceInfoDto(300, "PLN"), [new GetEventResponseCategoryDto("Test")], EventStatus.TicketsAvailable, new GetEventResponseAddressDto("United States", "New York", "10001", "Main St", 123, null) diff --git a/TickAPI/TickAPI/Events/DTOs/Response/GetEventResponseDto.cs b/TickAPI/TickAPI/Events/DTOs/Response/GetEventResponseDto.cs index 28b42e4..a280251 100644 --- a/TickAPI/TickAPI/Events/DTOs/Response/GetEventResponseDto.cs +++ b/TickAPI/TickAPI/Events/DTOs/Response/GetEventResponseDto.cs @@ -9,8 +9,8 @@ public record GetEventResponseDto( DateTime StartDate, DateTime EndDate, uint? MinimumAge, - decimal MinimumPrice, - decimal MaximumPrice, + GetEventResponsePriceInfoDto MinimumPrice, + GetEventResponsePriceInfoDto MaximumPrice, List Categories, EventStatus Status, GetEventResponseAddressDto Address diff --git a/TickAPI/TickAPI/Events/DTOs/Response/GetEventResponsePriceInfoDto.cs b/TickAPI/TickAPI/Events/DTOs/Response/GetEventResponsePriceInfoDto.cs new file mode 100644 index 0000000..6c321a7 --- /dev/null +++ b/TickAPI/TickAPI/Events/DTOs/Response/GetEventResponsePriceInfoDto.cs @@ -0,0 +1,6 @@ +namespace TickAPI.Events.DTOs.Response; + +public record GetEventResponsePriceInfoDto( + decimal Price, + string Currency +); diff --git a/TickAPI/TickAPI/Events/Services/EventService.cs b/TickAPI/TickAPI/Events/Services/EventService.cs index 201a9a9..8177bd7 100644 --- a/TickAPI/TickAPI/Events/Services/EventService.cs +++ b/TickAPI/TickAPI/Events/Services/EventService.cs @@ -193,8 +193,12 @@ private static GetEventResponseDto MapEventToGetEventResponseDto(Event ev) var categories = ev.Categories.Count > 0 ? ev.Categories.Select((c) => new GetEventResponseCategoryDto(c.Name)).ToList() : new List(); var address = new GetEventResponseAddressDto(ev.Address.Country, ev.Address.City, ev.Address.PostalCode, ev.Address.Street, ev.Address.HouseNumber, ev.Address.FlatNumber); - var minimumPrice = ev.TicketTypes.Min(t => t.Price); - var maximumPrice = ev.TicketTypes.Max(t => t.Price); + // Here we assume that there is at least one ticket type in each event + var ttMinimumPrice = ev.TicketTypes.MinBy(t => t.Price)!; + var ttMaximumPrice = ev.TicketTypes.MaxBy(t => t.Price)!; + + var minimumPrice = new GetEventResponsePriceInfoDto(ttMinimumPrice.Price, ttMinimumPrice.Currency); + var maximumPrice = new GetEventResponsePriceInfoDto(ttMaximumPrice.Price, ttMaximumPrice.Currency); return new GetEventResponseDto(ev.Id, ev.Name, ev.Description, ev.StartDate, ev.EndDate, ev.MinimumAge, minimumPrice, maximumPrice, categories, ev.EventStatus, address);