Пример #1
0
        public async Task <IActionResult> AddReservation(int userId, ReservationForAddDto reservationForAddDto)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            var userFromRepo = await _repo.GetUser(userId);

            reservationForAddDto.Start = reservationForAddDto.Start.AddHours(1);
            reservationForAddDto.AddEndDate();
            reservationForAddDto.Title = userFromRepo.Name + ' ' + userFromRepo.Surname;
            var reservation = _mapper.Map <Reservation>(reservationForAddDto);

            if (await _repo.GoodTerm(reservation.Start) == false)
            {
                return(BadRequest("Wybrano zły termin.\nGabinet czynny od poniedziałku do piątku w godzinach 9-17"));
            }

            if (await _repo.FreeTerm(reservation.Start) == false)
            {
                return(BadRequest("Wybrany termin jest zarezerwowany"));
            }

            userFromRepo.Reservations.Add(reservation);


            if (await _repo.SaveAll())
            {
                var reservationToReturn = _mapper.Map <ReservationForDetailedDto>(reservation);
                return(CreatedAtRoute("GetReservation", new { id = reservation.Id }, reservationToReturn));
            }

            return(BadRequest("Nie można dodać wizyty"));
        }
        public async Task <IActionResult> AddReservation(ReservationForAddDto reservationForAdd)
        {
            var reservation = _mapper.Map <Reservation>(reservationForAdd);

            foreach (var seat in reservationForAdd.SeatsReserved)
            {
                seat.ShowId = reservationForAdd.ShowId;
            }

            var reservationId = await _repo.AddReservation(reservation);

            var ticketId = await _ticketsRepository.AddTicket(new Ticket
            {
                Normal        = reservationForAdd.NormalTickets,
                Reduced       = reservationForAdd.ReducedTickets,
                ReservationId = reservationId,
                SeatsReserved = reservationForAdd.SeatsReserved,
                ShowId        = reservationForAdd.ShowId,
                UserId        = reservationForAdd.UserId
            });

            await _repo.UpdateTicketId(ticketId, reservationId);

            await _repo.SaveAll();

            return(StatusCode(201, reservationId));
        }