Exemplo n.º 1
0
        public void CreateReservationsSchedule(ReservationCreateScheduleDto scheduleModel)
        {
            scheduleModel.FromDate = scheduleModel.FromDate.Date;
            scheduleModel.ToDate   = scheduleModel.ToDate.Date;

            var deansOffice = _context.DeansOffices.FirstOrDefault(d => d.Id == scheduleModel.DeansOfficeId);

            if (deansOffice == null)
            {
                throw new Exception("Wrong DeansOfficeId or doesn't exist.");
            }

            if (scheduleModel.ToDate < scheduleModel.FromDate || scheduleModel.ToHour < scheduleModel.FromHour)
            {
                throw new Exception("Dates and hours 'To' has to be greater than 'From'");
            }

            var now = DateTime.Now;

            if (scheduleModel.FromDate < now || scheduleModel.ToDate < now)
            {
                throw new Exception("Dates 'To' and 'From' has to be greater than DateTime.Now");
            }

            var schedule = new List <Reservation>();

            while (scheduleModel.FromDate <= scheduleModel.ToDate)
            {
                for (int h = scheduleModel.FromHour; h < scheduleModel.ToHour; h++)
                {
                    for (int m = 0; m < 60; m += 15)
                    {
                        var reservationDate = scheduleModel.FromDate.AddHours(h).AddMinutes(m);

                        // Sprawdzenie czy istnieje juz rezerwacji o takim samym DeansOfficeId i Date
                        var exist = _context.Reservations.Any(r => r.DeansOfficeId == scheduleModel.DeansOfficeId && r.Date == reservationDate);
                        if (!exist)
                        {
                            if (scheduleModel.IncludeWeekends)
                            {
                                schedule.Add(new Reservation
                                {
                                    Date          = reservationDate,
                                    DeansOffice   = deansOffice,
                                    DeansOfficeId = scheduleModel.DeansOfficeId,
                                    Id            = new Guid(),
                                    OperationName = string.Empty,
                                    StudentId     = null
                                });
                            }
                            else
                            {
                                if (reservationDate.DayOfWeek != DayOfWeek.Saturday &&
                                    reservationDate.DayOfWeek != DayOfWeek.Sunday)
                                {
                                    schedule.Add(new Reservation
                                    {
                                        Date          = reservationDate,
                                        DeansOffice   = deansOffice,
                                        DeansOfficeId = scheduleModel.DeansOfficeId,
                                        Id            = new Guid(),
                                        OperationName = string.Empty,
                                        StudentId     = null
                                    });
                                }
                            }
                        }
                    }
                }
                scheduleModel.FromDate = scheduleModel.FromDate.AddDays(1);
            }

            _context.Reservations.AddRange(schedule);
            _context.SaveChanges();
        }
Exemplo n.º 2
0
 public void CreateReservationsSchedule(ReservationCreateScheduleDto scheduleModel)
 {
     _reservationService.CreateReservationsSchedule(scheduleModel);
 }