public void Add(long placeId, IEnumerable<Tuple<int, int>> seats, DateTime fromDate, DateTime toDate, string token) { using (var ctx = new RestAppDbContext()) { var user = TokenHelper.ValidateToken(token, ctx); var place = (from p in ctx.Places where p.Id == placeId select p).SingleOrDefault(); if (place == null) throw new FaultException<NotFoundException>(new NotFoundException()); if (fromDate >= toDate) throw new FaultException<DateOrderException>(new DateOrderException()); var busy = /*(from r in ctx.Reservations where r.Place.Id == placeId && r.To > fromDate || r.From -*/ false; if (busy) throw new FaultException<SeatsAreBusyException>(new SeatsAreBusyException()); if (place.From > fromDate || place.To < toDate) throw new FaultException<PlaceDateException>(new PlaceDateException()); var reservation = new Reservation { From = fromDate, To = toDate, Place = place, Guest = user }; ctx.Reservations.Add(reservation); var seatsEntity = seats.Select(t => new Seat {Column = t.Item1, Row = t.Item2, Reservation = reservation}).ToList(); ctx.Seats.AddRange(seatsEntity); ctx.SaveChanges(); } }
public static ReservationDto Convert(Reservation reservation) { return new ReservationDto() { Id = reservation.Id, Guest = reservation.Guest.Name, Restaurant = reservation.Place.Restaurant.Name, Seats = reservation.Seats.Select(seat => new Tuple<int, int>(seat.Column, seat.Row)).ToList(), From = reservation.From, To = reservation.To }; }