public async Task <ActionResult> Post(Guid conferenceId, TicketSaleDto dto) { dto.ConferenceId = conferenceId; await _ticketSaleService.AddAsync(dto); return(NoContent()); }
public async Task AddAsync(TicketSaleDto dto) { var conference = await _conferenceRepository.GetAsync(dto.ConferenceId); if (conference is null) { throw new ConferenceNotFoundException(dto.ConferenceId); } if (conference.ParticipantsLimit.HasValue) { var ticketsCount = await _ticketRepository.CountForConferenceAsync(conference.Id); if (ticketsCount + dto.Amount > conference.ParticipantsLimit) { throw new TooManyTicketsException(conference.Id); } } dto.Id = Guid.NewGuid(); var ticketSale = new TicketSale { Id = dto.Id, ConferenceId = dto.ConferenceId, From = dto.From, To = dto.To, Amount = dto.Amount, Price = dto.Price, Name = dto.Name }; await _ticketSaleRepository.AddAsync(ticketSale); _logger.LogInformation($"Added a ticket sale conference with ID: '{conference.Id}' ({dto.From} - {dto.To})."); if (ticketSale.Amount.HasValue) { _logger.LogInformation($"Generating {ticketSale.Amount} tickets for conference with ID: '{conference.Id}'..."); var tickets = new List <Ticket>(); for (var i = 0; i < ticketSale.Amount; i++) { var ticket = _ticketGenerator.Generate(conference.Id, ticketSale.Id, ticketSale.Price); tickets.Add(ticket); } await _ticketRepository.AddManyAsync(tickets); } }
public async Task AddAsync(TicketSaleDto dto) { var conference = await _conferenceRepository.GetAsync(dto.ConferenceId); if (conference is null) { throw new ConferenceNotFoundException(dto.ConferenceId); } if (conference.ParticipantsLimit.HasValue) { var ticketsCount = await _ticketRepository.CountForConferenceAsync(conference.Id); if (ticketsCount + dto.Amount > conference.ParticipantsLimit) { throw new TooManyTicketsException(conference.Id); } } var ticketSale = new TicketSale(dto.ConferenceId, dto.Name, dto.Price, dto.Amount, dto.From, dto.To); _ticketSaleRepository.Add(ticketSale); await _ticketSaleRepository.UnitOfWork.SaveChangesAsync(); if (ticketSale.Amount.HasValue) { var tickets = new List <Ticket>(); for (var i = 0; i < ticketSale.Amount; i++) { var ticket = _ticketsFactory.Generate(conference.Id, ticketSale.Price, ticketSale); tickets.Add(ticket); } _ticketRepository.AddMany(tickets); await _ticketRepository.UnitOfWork.SaveChangesAsync(); } }
public async Task AddAsync(TicketSaleDto dto) { // To be implemented... await Task.CompletedTask; }