Beispiel #1
0
        public async Task CheckingAvailabilityOfRooms()
        {
            Console.WriteLine("CheckingAvailabilityOfRooms SSTART EWW");
            try
            {
                using (var db = new BookingOfMeetingRoomsDBEntities())
                {
                    var meetingRooms = await db.MeetingRooms.ToListAsync();

                    var timeNow     = DateTime.Now;
                    var timeNowPlus = DateTime.Now.AddDays(1);

                    foreach (var meetingRoom in meetingRooms)
                    {
                        var reservations = db.Reservations.Where(p => (((DateTime)p.DateStart > timeNow && (DateTime)p.DateStart < timeNowPlus) || ((DateTime)p.DateStart <timeNow && (DateTime)p.DateFinish> timeNow)) && (int)p.MeetingRoom_Id == meetingRoom.Id).OrderBy(p => p.DateStart)
                                           .ToList();

                        // свободна!
                        if (!reservations.Any())
                        {
                            meetingRoom.DateReserv    = null;
                            meetingRoom.FreedomStatus = true;

                            db.Entry(meetingRoom).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                        else
                        {
                            foreach (var reservation in reservations)
                            {
                                if (reservation.DateStart < timeNow &&
                                    timeNow < reservation.DateFinish)
                                {
                                    meetingRoom.DateReserv    = reservation.DateStart;
                                    meetingRoom.FreedomStatus = false;

                                    db.Entry(meetingRoom).State = EntityState.Modified;
                                    db.SaveChanges();
                                    break;
                                }
                                // забранированна на ..
                                else
                                {
                                    meetingRoom.DateReserv    = reservation.DateStart;
                                    meetingRoom.FreedomStatus = true;

                                    db.Entry(meetingRoom).State = EntityState.Modified;
                                    db.SaveChanges();
                                    break;
                                }
                            }
                        }
                    }
                }
                Console.WriteLine("___CLOSE 1");
            }
            catch (Exception e)
            {
                Console.WriteLine("___CLOSE 3");
                Console.WriteLine(e);
                throw;
            }
            Console.WriteLine("___CLOSE 2");
        }