Skip to content

Commit f1f6153

Browse files
committed
Refactored missing GET Endpoints to return DTOs
1 parent b53927b commit f1f6153

File tree

6 files changed

+64
-13
lines changed

6 files changed

+64
-13
lines changed

Application/Controllers/PlayOfferController.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public async Task<ActionResult<IEnumerable<PlayOfferDto>>> GetByClubIdAsync([Fro
5555
[ProducesResponseType(typeof(ActionResult), StatusCodes.Status204NoContent)]
5656
[Consumes("application/json")]
5757
[Produces("application/json")]
58-
public async Task<ActionResult<IEnumerable<PlayOffer>>> GetByParticipantIdAsync([FromQuery] Guid participantId)
58+
public async Task<ActionResult<IEnumerable<PlayOfferDto>>> GetByParticipantIdAsync([FromQuery] Guid participantId)
5959
{
6060
//TODO: refactor after jwt implementation to get participantId from token
6161
var result = await _mediator.Send(new GetPlayOffersByParticipantIdQuery(participantId));
@@ -79,9 +79,9 @@ public async Task<ActionResult<IEnumerable<PlayOffer>>> GetByParticipantIdAsync(
7979
[ProducesResponseType(typeof(ActionResult), StatusCodes.Status204NoContent)]
8080
[Consumes("application/json")]
8181
[Produces("application/json")]
82-
public async Task<ActionResult<IEnumerable<PlayOffer>>> GetByCreatorNameAsync([FromQuery] string creatorName)
82+
public async Task<ActionResult<IEnumerable<PlayOfferDto>>> GetByCreatorNameAsync([FromQuery] string creatorName)
8383
{
84-
IEnumerable<PlayOffer> result;
84+
IEnumerable<PlayOfferDto> result;
8585
try
8686
{
8787
result = await _mediator.Send(new GetPlayOffersByCreatorNameQuery(creatorName));

Application/Handlers/GetPlayOffersByCreatorNameHandler.cs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,24 @@
55

66
namespace PlayOfferService.Application.Handlers.Events;
77

8-
public class GetPlayOffersByCreatorNameHandler : IRequestHandler<GetPlayOffersByCreatorNameQuery, IEnumerable<PlayOffer>>
8+
public class GetPlayOffersByCreatorNameHandler : IRequestHandler<GetPlayOffersByCreatorNameQuery, IEnumerable<PlayOfferDto>>
99
{
1010
private readonly PlayOfferRepository _playOfferRepository;
1111
private readonly MemberRepository _memberRepository;
12+
private readonly ClubRepository _clubRepository;
13+
private readonly ReservationRepository _reservationRepository;
14+
private readonly CourtRepository _courtRepository;
1215

13-
public GetPlayOffersByCreatorNameHandler(PlayOfferRepository playOfferRepository, MemberRepository memberRepository)
16+
public GetPlayOffersByCreatorNameHandler(PlayOfferRepository playOfferRepository, MemberRepository memberRepository, ClubRepository clubRepository, ReservationRepository reservationRepository, CourtRepository courtRepository)
1417
{
1518
_playOfferRepository = playOfferRepository;
1619
_memberRepository = memberRepository;
20+
_clubRepository = clubRepository;
21+
_reservationRepository = reservationRepository;
22+
_courtRepository = courtRepository;
1723
}
1824

19-
public async Task<IEnumerable<PlayOffer>> Handle(GetPlayOffersByCreatorNameQuery request, CancellationToken cancellationToken)
25+
public async Task<IEnumerable<PlayOfferDto>> Handle(GetPlayOffersByCreatorNameQuery request, CancellationToken cancellationToken)
2026
{
2127
if (request.CreatorName.Split(" ").Length > 2)
2228
throw new ArgumentException("Creator name must be in the format '<FirstName> <LastName>', '<FirstName>' or '<LastName>'");
@@ -28,7 +34,22 @@ public async Task<IEnumerable<PlayOffer>> Handle(GetPlayOffersByCreatorNameQuery
2834
var playOffersByCreator = await _playOfferRepository.GetPlayOffersByIds(null, creator.Id);
2935
playOffers.AddRange(playOffersByCreator);
3036
}
37+
38+
var clubDto = (await _clubRepository.GetAllClubs()).Select(club => new ClubDto(club)).ToList();
39+
var memberDtos = (await _memberRepository.GetAllMembers()).Select(member => new MemberDto(member)).ToList();
40+
var courtDtos = (await _courtRepository.GetAllCourts()).Select(court => new CourtDto(court)).ToList();
41+
var reservationDtos = (await _reservationRepository.GetAllReservations()).Select(reservation => new ReservationDto(reservation, courtDtos)).ToList();
3142

32-
return playOffers;
43+
var playOfferDtos = new List<PlayOfferDto>();
44+
foreach (var playOffer in playOffers)
45+
{
46+
var club = clubDto.First(club => club.Id == playOffer.ClubId);
47+
var creator = memberDtos.First(member => member.Id == playOffer.CreatorId);
48+
var opponent = memberDtos.FirstOrDefault(member => member.Id == playOffer.OpponentId);
49+
var reservation = reservationDtos.FirstOrDefault(reservation => reservation.Id == playOffer.ReservationId);
50+
playOfferDtos.Add(new PlayOfferDto(playOffer, club, creator, opponent, reservation));
51+
}
52+
53+
return playOfferDtos;
3354
}
3455
}

Application/Handlers/GetPlayOffersByParticipantIdHandler.cs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,42 @@
44
using PlayOfferService.Domain.Repositories;
55

66
namespace PlayOfferService.Application.Handlers;
7-
public class GetPlayOffersByParticipantIdHandler : IRequestHandler<GetPlayOffersByParticipantIdQuery, IEnumerable<PlayOffer>>
7+
public class GetPlayOffersByParticipantIdHandler : IRequestHandler<GetPlayOffersByParticipantIdQuery, IEnumerable<PlayOfferDto>>
88
{
99
private readonly PlayOfferRepository _playOfferRepository;
10+
private readonly MemberRepository _memberRepository;
11+
private readonly ClubRepository _clubRepository;
12+
private readonly ReservationRepository _reservationRepository;
13+
private readonly CourtRepository _courtRepository;
1014

11-
public GetPlayOffersByParticipantIdHandler(PlayOfferRepository playOfferRepository)
15+
public GetPlayOffersByParticipantIdHandler(PlayOfferRepository playOfferRepository, MemberRepository memberRepository, ClubRepository clubRepository, ReservationRepository reservationRepository, CourtRepository courtRepository)
1216
{
1317
_playOfferRepository = playOfferRepository;
18+
_memberRepository = memberRepository;
19+
_clubRepository = clubRepository;
20+
_reservationRepository = reservationRepository;
21+
_courtRepository = courtRepository;
1422
}
1523

16-
public async Task<IEnumerable<PlayOffer>> Handle(GetPlayOffersByParticipantIdQuery request, CancellationToken cancellationToken)
24+
public async Task<IEnumerable<PlayOfferDto>> Handle(GetPlayOffersByParticipantIdQuery request, CancellationToken cancellationToken)
1725
{
18-
return await _playOfferRepository.GetPlayOffersByParticipantId(request.ParticipantId);
26+
var playOffers = await _playOfferRepository.GetPlayOffersByParticipantId(request.ParticipantId);
27+
28+
var clubDto = (await _clubRepository.GetAllClubs()).Select(club => new ClubDto(club)).ToList();
29+
var memberDtos = (await _memberRepository.GetAllMembers()).Select(member => new MemberDto(member)).ToList();
30+
var courtDtos = (await _courtRepository.GetAllCourts()).Select(court => new CourtDto(court)).ToList();
31+
var reservationDtos = (await _reservationRepository.GetAllReservations()).Select(reservation => new ReservationDto(reservation, courtDtos)).ToList();
32+
33+
var playOfferDtos = new List<PlayOfferDto>();
34+
foreach (var playOffer in playOffers)
35+
{
36+
var club = clubDto.First(club => club.Id == playOffer.ClubId);
37+
var creator = memberDtos.First(member => member.Id == playOffer.CreatorId);
38+
var opponent = memberDtos.FirstOrDefault(member => member.Id == playOffer.OpponentId);
39+
var reservation = reservationDtos.FirstOrDefault(reservation => reservation.Id == playOffer.ReservationId);
40+
playOfferDtos.Add(new PlayOfferDto(playOffer, club, creator, opponent, reservation));
41+
}
42+
43+
return playOfferDtos;
1944
}
2045
}

Application/Queries/GetPlayOffersByCreatorNameQuery.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33

44
namespace PlayOfferService.Application.Queries;
55

6-
public record GetPlayOffersByCreatorNameQuery(string CreatorName) : IRequest<IEnumerable<PlayOffer>>
6+
public record GetPlayOffersByCreatorNameQuery(string CreatorName) : IRequest<IEnumerable<PlayOfferDto>>
77
{
88
}

Application/Queries/GetPlayOffersByParticipantIdQuery.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33

44
namespace PlayOfferService.Application.Queries;
55

6-
public record GetPlayOffersByParticipantIdQuery(Guid ParticipantId) : IRequest<IEnumerable<PlayOffer>>
6+
public record GetPlayOffersByParticipantIdQuery(Guid ParticipantId) : IRequest<IEnumerable<PlayOfferDto>>
77
{
88
}

Domain/Repositories/ClubRepository.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ public virtual async Task Update()
3232
return club.First();
3333
}
3434

35+
public virtual async Task<IEnumerable<Club>> GetAllClubs()
36+
{
37+
return await _context.Clubs.ToListAsync();
38+
}
39+
3540
public virtual void CreateClub(Club club)
3641
{
3742
_context.Clubs.Add(club);

0 commit comments

Comments
 (0)