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();
            }
        }
示例#2
0
 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
     };
 }