public async Task <HttpResponseMessage> FetchBookings(CalendarInput input)
        {
            GetFloorAndRooms       getFloorAndRooms   = new GetFloorAndRooms();
            IList <CalendarOutput> calendarOutputList = getFloorAndRooms.GetRoomsAvailabilityByCalendateInput(System.Configuration.ConfigurationManager.AppSettings["Connection"], input);

            return(Request.CreateResponse(HttpStatusCode.OK, calendarOutputList));
        }
        public async Task <HttpResponseMessage> BookCalandar(CalendarInputForBooking inputForRoomBooking)
        {
            CalendarInput            input  = new CalendarInput();
            CalendarOutputForBooking output = new CalendarOutputForBooking();

            input.BookingSlots = inputForRoomBooking.BookingSlots.Select(
                q => new Slot()
            {
                StartDateTime = q.StartDateTime,
                EndDateTime   = q.EndDateTime
            }).ToList();
            input.Capacity = inputForRoomBooking.Capacity;
            input.FloorID  = inputForRoomBooking.FloorID;
            input.UserId   = inputForRoomBooking.UserId;
            input.Password = inputForRoomBooking.Password;

            GetFloorAndRooms       getFloorAndRooms   = new GetFloorAndRooms();
            IList <CalendarOutput> calendarOutputList = getFloorAndRooms.GetRoomsAvailabilityByCalendateInput(System.Configuration.ConfigurationManager.AppSettings["Connection"], input);

            if (calendarOutputList.Count > 0 && !(calendarOutputList.Any(t => t.IsAvailable == false)))
            {
                output = getFloorAndRooms.BookRooms(System.Configuration.ConfigurationManager.AppSettings["Connection"], inputForRoomBooking);
            }
            else
            {
                output.Message = "Conflict occured for provided slots against system bookings.";
            }

            return(Request.CreateResponse(HttpStatusCode.OK, output));
        }
Exemple #3
0
 public void FillRoute()
 {
     route = RouteCreator.WithAllProperties();
     DepartureCity.SendKeys(route.DepartureCity);
     ArrivalCity.SendKeys(route.ArrivalCity);
     Body.Click(2);
     CalendarInput.Click();
     GetTomorrow().Click();
 }
        /// <summary>
        /// 添加日历
        /// </summary>
        /// <param name="input"></param>
        public static void AddCalendar(CalendarInput input)
        {
            var calendar = new BaseCalendar();

            switch (input.EnumCalendar)
            {
            case EnumCalendar.Cron表达式:
                calendar = new CronCalendar(input.Expression);
                break;
            }
            calendar.TimeZone    = TimeZoneInfo.Local;
            calendar.Description = input.Description;
            Scheduler.AddCalendar(input.CalendarName, calendar, input.ReplaceExists, input.UpdateTriggers);
        }
        public async Task <JsonResult> CalendarEdit(string calendarName)
        {
            var model = new CalendarInput();

            if (!calendarName.IsNullOrEmpty())
            {
                model.ReplaceExists = true;
                var calendar = await StdSchedulerManager.GetCalendar(calendarName);

                //model.Expression = ((CronCalendar)calendar).CronExpression.ToString();
                model.Description = calendar.Description;
            }
            return(Json(model));
        }
Exemple #6
0
        public JsonResult SaveCalendar(CalendarInput input)
        {
            var status = new OperateStatus();

            try
            {
                if (!input.ReplaceExists && RemoteShedulerManager.GetCalendar(input.CalendarName) != null)
                {
                    status.Message = "日历已存在,请换个其它名称或选择替换现有日历";
                    return(Json(status));
                }
                RemoteShedulerManager.AddCalendar(input);
                status.ResultSign = ResultSign.Successful;
                status.Message    = "保存日历成功";
            }
            catch (Exception ex)
            {
                status.Message = ex.Message;
            }
            return(Json(status));
        }
        public JsonResult FetchNewAvailableSlot(RecurrenceInfo info)
        {
            using (var client = new HttpClient())
            {
                BookingResponse output = new BookingResponse();

                string        apiURL = ConfigurationManager.AppSettings["APIRefenenceURL"];
                CalendarInput input  = new CalendarInput();
                input.Capacity = info.Capacity;
                input.FloorID  = info.FloorID;
                input.UserId   = (string)Session["UserName"];
                input.Password = (string)Session["Password"];
                int durationInMinutes = 0;
                if (!string.IsNullOrEmpty(info.Duration))
                {
                    durationInMinutes = int.Parse(info.Duration.Split(Convert.ToChar(":"))[0]) * 60 + int.Parse(info.Duration.Split(Convert.ToChar(":"))[1]);
                }
                List <Slot> slots = new List <Slot>();
                DateTime    start = DateTime.MinValue;
                DateTime    end   = DateTime.MinValue;

                if (DateTime.TryParse(info.StartDate + " " + info.StartTime, out start) && DateTime.TryParse(info.EndtDate, out end))
                {
                    if (info.IsEveryDay || info.IsEveryDayWorking)
                    {
                        while (start.Date <= end.Date)
                        {
                            if (info.IsEveryDayWorking && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
                            {
                                start = start.AddDays(1);
                                continue;
                            }
                            slots.Add(new Slot()
                            {
                                StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                            });
                            start = start.AddDays(1);
                        }
                    }
                    else if (info.EverySpecifiedWorkingDate > 0)
                    {
                        slots.Add(new Slot()
                        {
                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                        });
                        start = start.AddDays(info.EverySpecifiedWorkingDate);
                        while (start.Date <= end.Date)
                        {
                            slots.Add(new Slot()
                            {
                                StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                            });
                            start = start.AddDays(info.EverySpecifiedWorkingDate);
                        }
                    }
                }

                input.BookingSlots = slots;

                Task <HttpResponseMessage> response = client.PostAsJsonAsync(apiURL + "FetchBookings", input);
                response.Wait();
                if (response.Result.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var roomsJsonString = response.Result.Content.ReadAsStringAsync().Result;
                    var availableRooms  = JsonConvert.DeserializeObject <IList <CalendarOutput> >(roomsJsonString);

                    Session["newfloor"] = availableRooms;

                    if (availableRooms.Any(i => i.IsAvailable == false) && availableRooms.Any(x => x.RoomName != null))
                    {
                        output.Errors.Add("Time slot is already booked for " + info.StartDate + ", please select another time slot.");
                        return(Json(output, JsonRequestBehavior.AllowGet));
                    }
                    else if (availableRooms.Any(i => i.IsAvailable == false) && availableRooms.Any(x => x.RoomName == null))
                    {
                        output.Errors.Add("No any room is available for (" + input.Capacity + ") no of attendees.");
                        return(Json(output, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(availableRooms, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            return(Json(null, JsonRequestBehavior.AllowGet));
        }
        public JsonResult FetchAvailability(RecurrenceInfo info)
        {
            using (var client = new HttpClient())
            {
                string              apiURL = ConfigurationManager.AppSettings["APIRefenenceURL"];
                CalendarInput       input  = new CalendarInput();
                FetchRoomsRtesponse fetchRoomsRtesponse = new FetchRoomsRtesponse();

                if (Convert.ToString(Session["UserName"]) == string.Empty || Convert.ToString(Session["Password"]) == string.Empty)
                {
                    fetchRoomsRtesponse.NeedToLogout = true;
                }
                input.Capacity = info.Capacity;
                input.FloorID  = info.FloorID;
                input.UserId   = (string)Session["UserName"];
                input.Password = (string)Session["Password"];
                int durationInMinutes = 0;
                if (!string.IsNullOrEmpty(info.Duration))
                {
                    durationInMinutes = int.Parse(info.Duration.Split(Convert.ToChar(":"))[0]) * 60 + int.Parse(info.Duration.Split(Convert.ToChar(":"))[1]);
                }
                if (durationInMinutes <= 0)
                {
                    fetchRoomsRtesponse.Errors.Add("Duration can not be zero");
                }


                List <Slot> slots         = new List <Slot>();
                DateTime    start         = DateTime.MinValue;
                DateTime    startOriginal = DateTime.MinValue;
                DateTime    end           = DateTime.MinValue;
                if (DateTime.TryParse(info.StartDate + " " + info.StartTime, out start) && DateTime.TryParse(info.EndtDate, out end))
                {
                    startOriginal = start;
                    switch (info.RecurrenceType)
                    {
                        #region For Daily
                    case 1:     // For Daily
                    {
                        if (info.IsEveryDay || info.IsEveryDayWorking)
                        {
                            while (start.Date <= end.Date)
                            {
                                if (info.IsEveryDayWorking && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
                                {
                                    start = start.AddDays(1);
                                    continue;
                                }
                                if (start > DateTime.Now)
                                {
                                    slots.Add(new Slot()
                                        {
                                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                        });
                                }
                                start = start.AddDays(1);
                            }
                        }
                        else if (info.EverySpecifiedWorkingDate > 0)
                        {
                            if (start > DateTime.Now)
                            {
                                slots.Add(new Slot()
                                    {
                                        StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                    });
                            }
                            start = start.AddDays(info.EverySpecifiedWorkingDate);
                            while (start.Date <= end.Date)
                            {
                                slots.Add(new Slot()
                                    {
                                        StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                    });
                                start = start.AddDays(info.EverySpecifiedWorkingDate);
                            }
                        }
                    }
                    break;
                        #endregion For Daily

                        #region For Weekly
                    case 2:     // For Weekly
                    {
                        do
                        {
                            if (
                                (info.IsSaturday && start.DayOfWeek == DayOfWeek.Saturday) ||
                                (info.IsSunday && start.DayOfWeek == DayOfWeek.Sunday) ||
                                (info.IsMonday && start.DayOfWeek == DayOfWeek.Monday) ||
                                (info.IsTuesday && start.DayOfWeek == DayOfWeek.Tuesday) ||
                                (info.IsWednesday && start.DayOfWeek == DayOfWeek.Wednesday) ||
                                (info.IsThursday && start.DayOfWeek == DayOfWeek.Thursday) ||
                                (info.IsFriday && start.DayOfWeek == DayOfWeek.Friday)
                                )
                            {
                                slots.Add(new Slot()
                                    {
                                        StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                    });
                            }
                            start = start.AddDays(1);
                        }while (start.Date <= end.Date);
                    }
                    break;
                        #endregion For Weekly

                        #region For Monthly
                    case 3:     // For Monthly
                    {
                        DateTime startDateAsPerCriteria = new DateTime(start.Year, start.Month, 1, start.Hour, start.Minute, start.Second);
                        start = startDateAsPerCriteria;
                        if (info.DayVise)
                        {
                            #region For Monthly Day wise
                            start = start.AddDays(info.Nthday - 1);
                            while (start.Date <= end.Date)
                            {
                                if (start > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                {
                                    slots.Add(new Slot()
                                        {
                                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                        });
                                }
                                start = start.AddMonths(info.DayMonth);
                            }
                            #endregion For Monthly Day wise
                        }
                        else if (info.DayTypeVise)
                        {
                            #region For Monthly Day Type wise
                            List <string> weekAllDays = new List <string>()
                            {
                                "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
                            };

                            if (info.DayTypeMonth == "Day")
                            {
                                #region For Monthly Day Type wise -Day
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(0);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(2);
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(3);
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-1);
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);

                                #endregion For Monthly Day Type wise -Day
                            }
                            else if (info.DayTypeMonth == "WeekDay")
                            {
                                #region For Monthly Day Type wise -Weekday
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);

                                        for (int i = 0; i < 1; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);

                                        for (int i = 0; i < 2; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);

                                        for (int i = 0; i < 3; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-1);
                                        while ((startDateAsPerCriteria.DayOfWeek == DayOfWeek.Saturday) || (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Sunday))
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(-1);
                                        }
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);
                                #endregion For Monthly Day Type wise -Weekday
                            }
                            if (info.DayTypeMonth == "Weekend")
                            {
                                #region For Monthly Day Type wise -Weekend
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);

                                        for (int i = 0; i < 1; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        for (int i = 0; i < 2; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        for (int i = 0; i < 3; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-1);
                                        while (!((startDateAsPerCriteria.DayOfWeek == DayOfWeek.Saturday) || (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Sunday)))
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(-1);
                                        }
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);
                                #endregion For Monthly Day Type wise -Weekend
                            }
                            else if (weekAllDays.Contains(info.DayTypeMonth))
                            {
                                #region For Monthly Day Type wise -SpecificDay
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(0);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(7);
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(14);
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(21);
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-8);
                                    }

                                    for (int i = 0; i < 7; i++)
                                    {
                                        if (
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Sunday && info.DayTypeMonth == "Sunday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Monday && info.DayTypeMonth == "Monday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Tuesday && info.DayTypeMonth == "Tuesday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Wednesday && info.DayTypeMonth == "Wednesday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Thursday && info.DayTypeMonth == "Thursday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Friday && info.DayTypeMonth == "Friday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Saturday && info.DayTypeMonth == "Saturday")
                                            )
                                        {
                                            break;
                                        }
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);
                                #endregion For Monthly Day Type wise -SpecificDay
                            }
                            #endregion For Monthly Day Type wise
                        }
                    }
                    break;
                        #endregion For Monthly

                    case 4:     // For Custom
                    {
                        foreach (var item in info.AppointmentDates)
                        {
                            if (DateTime.TryParse(item + " " + info.StartTime, out start))
                            {
                                if (start > DateTime.Now)
                                {
                                    slots.Add(new Slot()
                                        {
                                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                        });
                                }
                            }
                            else
                            {
                                fetchRoomsRtesponse.Errors.Add("Date is not proper.");
                            }
                        }
                    }
                    break;

                    default:
                        break;
                    }
                }
                else
                {
                    fetchRoomsRtesponse.Errors.Add("Start date, end date must be proper.");
                }
                if (DateTime.Parse(info.StartDate) > DateTime.Parse(info.EndtDate))
                {
                    fetchRoomsRtesponse.Errors.Add("Start date must be less then or equal to end date.");
                }
                input.BookingSlots = slots;

                if (slots.Count == 0)
                {
                    fetchRoomsRtesponse.Errors.Add("No slots to book room.");
                }
                if (fetchRoomsRtesponse.Errors.Count > 0 || fetchRoomsRtesponse.NeedToLogout)
                {
                    return(Json(fetchRoomsRtesponse, JsonRequestBehavior.AllowGet));
                }

                Task <HttpResponseMessage> response = client.PostAsJsonAsync(apiURL + "FetchBookings", input);
                response.Wait();
                if (response.Result.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var roomsJsonString = response.Result.Content.ReadAsStringAsync().Result;
                    fetchRoomsRtesponse.AvailableRooms = JsonConvert.DeserializeObject <System.Collections.Generic.IList <CalendarOutput> >(roomsJsonString);

                    Session["floors"] = fetchRoomsRtesponse.AvailableRooms;

                    return(Json(fetchRoomsRtesponse, JsonRequestBehavior.AllowGet));
                }
            }
            return(Json(null, JsonRequestBehavior.AllowGet));
        }
Exemple #9
0
        public IList <CalendarOutput> GetRoomsAvailabilityByCalendateInput(string connKey, CalendarInput input)
        {
            IList <CalendarOutput> calendarOutputList = new List <CalendarOutput>();
            SqlConnection          connection         = new SqlConnection(SqlHelper.GetDBConnectionString(connKey));

            try
            {
                IList <Room>    lstRooms         = GetRoomsByFloorID(connKey, input.FloorID);
                IList <Room>    lstPriorityRooms = lstRooms.Where(t => (t.Capacity >= input.Capacity)).OrderBy(t => t.Capacity).ToList();
                string          commonMessage    = string.Empty;
                ExchangeService service          = GetExchangeService(input.UserId, input.Password);
                if (service == null)
                {
                    commonMessage = "Service is not initialized. Please check credentails.";
                }
                if (lstPriorityRooms.Count <= 0)
                {
                    commonMessage = "Room is not available for matching capacity";
                }

                foreach (Slot slot in input.BookingSlots)
                {
                    CalendarOutput calendarOutput = new CalendarOutput();
                    calendarOutput.BookingSlot = slot;
                    if (commonMessage != string.Empty)
                    {
                        calendarOutput.Messages.Add(commonMessage);
                    }
                    calendarOutputList.Add(calendarOutput);
                }

                if (service != null)
                {
                    DateTime startDate = input.BookingSlots.OrderBy(t => t.StartDateTime).FirstOrDefault().StartDateTime.Date;
                    DateTime endtDate  = input.BookingSlots.OrderByDescending(t => t.StartDateTime).FirstOrDefault().StartDateTime.Date.AddDays(1);

                    Dictionary <string, FindItemsResults <Appointment> > fapts = null;

                    FillAllRoomsAvailability(service, lstPriorityRooms.ToList(), startDate, endtDate, ref fapts);

                    GetRoomAvailabilityRecursivly(calendarOutputList, lstPriorityRooms, service, 0, startDate, endtDate, fapts);
                }
            }
            finally
            {
                if (connection.State != ConnectionState.Closed)
                {
                    connection.Close();
                }
            }
            return(calendarOutputList);
        }
Exemple #10
0
 public void OpenCalendar()
 {
     ArrivalCity.Click();
     CalendarInput.Click();
 }