Exemplo n.º 1
0
        public long Execute()
        {
            if (WareBooking.Start.Day != WareBooking.End.Date.Day || WareBooking.Start.Date < DateTime.Today)
            {
                return(-1);
            }
            var ware     = wareRepository.GetById(WareBooking.WareId);
            var placeId  = ware.PlaceId;
            var openings = timeSlotRepository.GetAllOfPlace(placeId)
                           .Find(op => op.Day == WareBooking.Start.DayOfWeek);

            if (openings == null)
            {
                return(-1);
            }
            if (WareBooking.Start.Hour < openings.StartHour || new TimeSpan(0,
                                                                            WareBooking.End.Hour, WareBooking.End.Minute, 0)
                > new TimeSpan(0, openings.EndHour, openings.EndMinutes, 0))
            {
                throw new Exception("Erreur: Impossible de réserver du matériel hors des heures d'ouvertures");
            }
            var possibleConflicts = wareBookingRepository.GetAllFromDate(WareBooking.Start.Date).Where(rb => rb.Id != WareBooking.Id).ToList();
            var hasNoConflict     = possibleConflicts.All(booking =>
                                                          booking.End <= WareBooking.Start || booking.Start >= WareBooking.End);

            if (!hasNoConflict)
            {
                throw new Exception("Une réservation est déjà présente pour ces horaires");
            }
            return(wareBookingRepository.Update(WareBooking));
        }
Exemplo n.º 2
0
 public IEnumerable <domain.WareBooking> Execute()
 {
     return(wareBookingRepository.GetAllFromDate(DateTime));
 }