public StartEndTime GetStartEndTime(DateTime startDate, DateTime endDate) { TimeSpan startTime = new TimeSpan(12, 0, 0); TimeSpan endTime = new TimeSpan(12, 10, 0); DateTime curDate = startDate; for (int i = 0; i < 7; i++) { curDate = curDate.AddDays(1); if (curDate > endDate) { break; } StartEndTime startendTime = this.GetStartEndTime(curDate.DayOfWeek); if (startendTime.StartTime != StartEndTime.NullTimeSpan && startendTime.StartTime < startTime) { startTime = startendTime.StartTime; } if (startendTime.EndTime != StartEndTime.NullTimeSpan && startendTime.EndTime > endTime) { endTime = startendTime.EndTime; } } return(new StartEndTime(startTime, endTime)); }
public override INullableQuerySerie <T> ExecuteGrouping() { var rows = Serie.Rows; if (!rows.Any() || !GroupTimes.Any()) { return(new NullableQuerySerie <T>(new List <ISingleDataRow <T?> >(), Serie)); } int index = 0; var max = rows.Count; var result = new List <ISingleDataRow <T?> >(); int?nextTimeRangeIndex = null; for (int groupIndex = 0; groupIndex < GroupTimes.Count; groupIndex++) { StartEndTime groupTime = GroupTimes[groupIndex]; StartEndTime nextGroupTime = (groupIndex + 1 < GroupTimes.Count) ? GroupTimes[groupIndex + 1] : null; var group = new List <ISingleDataRow <T> >(); while (index < max && rows[index].TimeUtc < groupTime.Start) { index++; } var startIndex = index; while (index < max && rows[index].TimeUtc < groupTime.End) { group.Add(rows[index]); if (nextTimeRangeIndex == null && nextGroupTime != null && rows[index].TimeUtc > nextGroupTime.Start) { nextTimeRangeIndex = Math.Max(index - 1, 0); } index++; } var aggregationData = new QuerySerie <T>(@group, groupTime.Start, groupTime.End) { PreviousRow = startIndex > 0 ? rows[startIndex - 1] : Serie.PreviousRow, NextRow = index < max ? rows[index] : Serie.NextRow }; result.Add(new SingleDataRow <T?>(groupTime.GetTimeStampByType(TimeStampType), AggregationFunc(aggregationData))); if (nextTimeRangeIndex != null) { index = nextTimeRangeIndex.Value; nextTimeRangeIndex = null; } } var resultData = new NullableQuerySerie <T>(result, Serie); return(resultData); }
public void GroupByGroupTimesStartWithPrevAndNext() { var serie = PrepareForGroupTests(); var startTime = new DateTime(1000, 1, 1, 0, 2, 0, DateTimeKind.Utc); StartEndTime groupTime = new StartEndTime(startTime, new DateTime(1000, 1, 1, 0, 9, 0, DateTimeKind.Utc)); ; var result = serie.Group(g => g.ByTimeRanges(new[] { groupTime }).Aggregate(i => i.MeanByTime())); result.Rows.Count.Should().Be(1); result.Rows[0].TimeUtc.Should().Be(startTime); result.Rows[0].Value.Should().BeApproximately(4.285f, 3); }
public void GroupByGroupTimesStartBeforeStartOfSerie() { var serie = PrepareForGroupTests(); var startTime = new DateTime(1000, 1, 1, 0, 0, 0, DateTimeKind.Utc) - TimeSpan.FromMinutes(1); StartEndTime groupTime = new StartEndTime(startTime, new DateTime(1000, 1, 1, 0, 10, 0, DateTimeKind.Utc)); ; var result = serie.Group(g => g.ByTimeRanges(new[] { groupTime }).Aggregate(i => i.MeanByTime())); result.Rows.Count.Should().Be(1); result.Rows[0].TimeUtc.Should().Be(startTime); result.Rows[0].Value.Should().BeLessThan(4.2f); }
protected OpeningTimes GetDayOpeningTimes(string day, string str) { var openingTimes = new OpeningTimes(day); if (string.IsNullOrEmpty(str)) { return(openingTimes); } try { var hours = new List <StartEndTime>(); var openingHoursArray = JsonConvert.DeserializeObject <JArray>(str);//.FirstOrDefault(); foreach (var openingHoursVal in openingHoursArray) { var title = openingHoursVal.Value <string>("title"); var startTime = openingHoursVal.Value <DateTime?>("startTime"); var endTime = openingHoursVal.Value <DateTime?>("endTime"); if (startTime != null || endTime != null) { var startEndTime = new StartEndTime { Title = title }; if (startTime != null) { startEndTime.StartTime = ((DateTime)startTime).ToString("HH:mm:ss"); } if (endTime != null) { startEndTime.EndTime = ((DateTime)endTime).ToString("HH:mm:ss"); } hours.Add(startEndTime); } } openingTimes.Hours = hours; } catch (Exception) { return(openingTimes); } return(openingTimes); }
public void GroupByGroupTimes1() { var serie = PrepareForGroupTests(); StartEndTime groupTime = new StartEndTime(new DateTime(1000, 1, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(1000, 1, 1, 0, 10, 0, DateTimeKind.Utc)); ; //var result = serie.GroupBy(new[] { groupTime }, i => i.MeanByTime()); var result = serie.Group(g => g.ByTimeRanges(new[] { groupTime }).Aggregate(i => i.MeanByTime())); result.Rows.Count.Should().Be(1); result.Rows[0].TimeUtc.Should().Be(new DateTime(1000, 1, 1, 0, 0, 0)); result.Rows[0].Value.Should().Be(4.2f); }
public static StartEndTime GetStartEndTime(DateTime startDate, DateTime endDate, Organisation[] orgs) { TimeSpan startTime = new TimeSpan(12, 0, 0); TimeSpan endTime = new TimeSpan(12, 10, 0); for (int i = 0; i < orgs.Length; i++) { StartEndTime startEndTime = orgs[i].GetStartEndTime(startDate, endDate); if (startEndTime.StartTime < startTime) { startTime = startEndTime.StartTime; } if (startEndTime.EndTime > endTime) { endTime = startEndTime.EndTime; } } return(new StartEndTime(startTime, endTime)); }
public static IReadOnlyList <StartEndTime> CombineByTolerance(this IReadOnlyList <StartEndTime> groups, TimeSpan tolerance) { var newGroups = new List <StartEndTime>(groups.Count); var previous = groups.First(); for (var i = 1; i < groups.Count; i++) { var current = groups[i]; if ((current.Start - previous.End) <= tolerance) { previous = new StartEndTime(previous.Start, current.End > previous.End ? current.End : previous.End); } else { newGroups.Add(previous); previous = current; } } newGroups.Add(previous); return(newGroups); }
protected void AddBody(string bgColor = null) { if (this.daysData.Length == 0) { HideTableAndSetErrorMessage("No days selected to display"); return; } if (this.NumColumns == 0) { HideTableAndSetErrorMessage("No providers allocated for selected days and organisation/s"); return; } UserView userView = UserView.GetInstance(); int loggedInStaffID = Session["StaffID"] == null ? -1 : Convert.ToInt32(Session["StaffID"]); StartEndTime startEndTime = GetStartEndTimes(); bookingModalElementControl.SetModalDropDownList(startEndTime); int minsPerRow = bookingSlotMinsCache.GetSlotMins(); bool serviceAndPatientSet = ddlServices.SelectedValue != "-1" && txtPatientID.Text.Length > 0; int slotMins = bookingSlotMinsCache.GetSlotMins(); int nRows = (int)startEndTime.EndTime.Subtract(startEndTime.StartTime).TotalMinutes / slotMins; for (int r = 0; r < nRows; r++) { HtmlTableRow htr = new HtmlTableRow(); main_table.Controls.Add(htr); if (bgColor != null) htr.BgColor = bgColor; int totalDaysShowing = 0; for (int i = 0; i < this.daysData.Length; i++) if (this.daysData[i].NCols > 0) totalDaysShowing++; int rowMinHeight = -1; // 43; int timeCol = 109; int scrollBarWidth = (int)main_panel.Width.Value - Convert.ToInt32(header_table.Style["width"].Substring(0, header_table.Style["width"].Length - 2)); TimeSpan rowTime = startEndTime.StartTime.Add(new TimeSpan(0, r * slotMins, 0)); bool addedTimeCol = false; for (int i = 0; i < this.daysData.Length; i++) { // dont display anything for days with no cols if (this.daysData[i].NCols == 0) continue; htr.VAlign = "top"; htr.Align = "left"; //if (i == 0 || mutlipleTimesShowing) if (!addedTimeCol || mutlipleTimesShowing) { // add day seperator //if (i != 0) // main_table.Rows[r].Controls.Add(NewBlankCell(false, this.DaySeperatorColumnWidth, false, System.Drawing.Color.DarkGray)); HtmlTableCell timeCell = NewCell(null, false, GetRowTime(startEndTime.StartTime, r, slotMins), System.Drawing.Color.Empty, timeCol, rowMinHeight, "center"); timeCell.Attributes.Add("class", BookingSlot.GetContextMenuClass(BookingSlot.Type.None)); main_table.Rows[r].Controls.Add(timeCell); addedTimeCol = true; } //main_table.Rows[r].Controls.Add(NewBlankCell(false, this.DaySeperatorColumnWidth, false, System.Drawing.Color.DarkGray)); DayData curDayData = this.daysData[i]; DateTime curDate = curDayData.Date; bool seenFirst = false; for (int j = 0; j < curDayData.OrgDayData.Length; j++) { // dont display anything for orgs with no cols if (this.daysData[i].OrgDayData[j].NCols == 0) continue; // add org seperator //if (j != 0 && seenFirst) // main_table.Rows[r].Controls.Add(NewBlankCell(false, this.DaySeperatorColumnWidth, false, System.Drawing.Color.DarkGray)); seenFirst = true; OrgDayData curOrgDayData = curDayData.OrgDayData[j]; Organisation curDayOrg = curOrgDayData.Org; for (int k = 0; k < curOrgDayData.StaffList.Length; k++) { Staff curDayStaff = curOrgDayData.StaffList[k]; // if there are no staff working ... still show a column with rows they can't right click to open a menu if (curDayStaff == null) { string blankCellID = curDayOrg.OrganisationID + "_" + "0" + "_" + curDate.Date.ToString("yyyy_MM_dd") + "_" + rowTime.Hours.ToString().PadLeft(2, '0') + rowTime.Minutes.ToString().PadLeft(2, '0'); HtmlTableCell blankCell = NewCell("td_" + blankCellID, false, "", System.Drawing.Color.Empty, r == 0 ? this.columnWidth : -1, -1); blankCell.Attributes.Add("class", BookingSlot.GetContextMenuClass(BookingSlot.Type.None)); System.Drawing.Color c = (IsEditBookingMode() || IsEditDayMode()) ? HSLColor.ChangeBrightness(BookingSlot.GetColor(BookingSlot.Type.Unavailable), -10) : BookingSlot.GetColor(BookingSlot.Type.Unavailable); blankCell.BgColor = System.Drawing.ColorTranslator.ToHtml(Utilities.IsDev() ? HSLColor.ChangeBrightness(c, 40) : c); main_table.Rows[r].Controls.Add(blankCell); continue; } bool isProviderViewButOtherProvider = userView.IsProviderView && curDayStaff.StaffID != loggedInStaffID; BookingSlot.Type slotType = (startEndTime == StartEndTime.NullStartEndTime || rowTime < startEndTime.StartTime || rowTime >= startEndTime.EndTime) ? (userView.IsPatient ? BookingSlot.Type.Unavailable : BookingSlot.Type.UnavailableButAddable) : (userView.IsPatient ? BookingSlot.Type.Available_PatientLoggedIn : BookingSlot.Type.Available); //if (Request.QueryString["blah"] != null) // Logger.LogQuery("A1:" + (startEndTime == StartEndTime.NullStartEndTime)); //if (Request.QueryString["blah"] != null) // Logger.LogQuery("A2:" + (rowTime < startEndTime.StartTime)); //if (Request.QueryString["blah"] != null) // Logger.LogQuery("A3:" + (rowTime >= startEndTime.EndTime)); //if (Request.QueryString["blah"] != null) // Logger.LogQuery("B:" + slotType.ToString()); StartEndTime thisOrgStartEndTime = curDayOrg.GetStartEndTime(curDate.DayOfWeek); StartEndTime thisOrgLunchStartEndTime = curDayOrg.GetStartEndLunchTime(curDate.DayOfWeek); StartEndTime slotStartEndTime = new StartEndTime(rowTime, rowTime.Add(new TimeSpan(0, this.bookingSlotMinsCache.GetSlotMins(), 0))); if ((thisOrgStartEndTime.StartTime != TimeSpan.Zero || thisOrgStartEndTime.EndTime != TimeSpan.Zero) && (thisOrgStartEndTime.StartTime > slotStartEndTime.StartTime || thisOrgStartEndTime.EndTime < slotStartEndTime.EndTime)) { slotType = userView.IsPatient ? BookingSlot.Type.Unavailable : BookingSlot.Type.UnavailableButAddable; //if (Request.QueryString["blah"] != null) // Logger.LogQuery("C"); } if (thisOrgLunchStartEndTime.EndTime > thisOrgLunchStartEndTime.StartTime && (slotStartEndTime.StartTime < thisOrgLunchStartEndTime.EndTime && slotStartEndTime.EndTime > thisOrgLunchStartEndTime.StartTime)) { slotType = userView.IsPatient ? BookingSlot.Type.Unavailable : BookingSlot.Type.UnavailableButAddable; //if (Request.QueryString["blah"] != null) // Logger.LogQuery("D"); } //if (Request.QueryString["blah"] != null) // Logger.LogQuery("E:" + slotType.ToString()); if (IsEditBookingMode() && (slotType == BookingSlot.Type.Available || slotType == BookingSlot.Type.Available_PatientLoggedIn)) slotType = BookingSlot.Type.Updatable; if (IsEditDayMode() && (slotType == BookingSlot.Type.Available || slotType == BookingSlot.Type.Available_PatientLoggedIn)) slotType = BookingSlot.Type.Updatable; // use same color as editing bookings so screen colours are same when "moving" bookings, but remove context menu for full day move if (IsEditBookingMode() && (slotType == BookingSlot.Type.UnavailableButAddable)) slotType = BookingSlot.Type.UnavailableButUpdatable; if (IsEditDayMode() && slotType == BookingSlot.Type.UnavailableButAddable) slotType = BookingSlot.Type.UnavailableButUpdatable; //if (Request.QueryString["blah"] != null) // Logger.LogQuery("F:" + slotType.ToString()); string cellID = curDayOrg.OrganisationID + "_" + curDayStaff.StaffID + "_" + curDate.Date.ToString("yyyy_MM_dd") + "_" + rowTime.Hours.ToString().PadLeft(2, '0') + rowTime.Minutes.ToString().PadLeft(2, '0'); HtmlTableCell cell = NewCell("td_" + cellID, false, "", System.Drawing.Color.Empty, r == 0 ? this.columnWidth : -1, -1); // only set width for first row, so html has less text to send Label newLbl = NewLbl(-1, 31, slotType, "lbl_" + cellID); if (!IsEditDayMode() && !IsEditBookingMode()) cell.Attributes["ondblclick"] = "dblclick(this.id); return false;"; //cell.Attributes["onmousedown"] = "bk_mouse_down(this.id); return false;"; //cell.Attributes["onmouseup"] = "bk_mouse_up(this.id); return false;"; cell.BgColor = System.Drawing.ColorTranslator.ToHtml(Utilities.IsDev() ? HSLColor.ChangeBrightness(newLbl.BackColor, 40) : newLbl.BackColor); if (rowTime == new TimeSpan(8, 30, 0)) { string st = curDayStaff.Person.FullnameWithoutMiddlename; ; } if (IsEditDayMode()) cell.Attributes.Add("class", BookingSlot.GetContextMenuClass(BookingSlot.Type.None)); //else if (!userView.IsStakeholder && !isMasterAdmin && !isAdmin && !isPrincipal && loggedInStaffID != curDayStaff.StaffID) // if not admin, only show slot menu for logged in provider //{ // ((HtmlTableCell)cell).Attributes.Remove("class"); // ((HtmlTableCell)cell).Attributes["class"] = BookingSlot.GetContextMenuClass(BookingSlot.Type.None); //} else // if (serviceAndPatientSet) { //if (isProviderViewButOtherProvider) // cell.Attributes.Add("class", BookingSlot.GetContextMenuClass(BookingSlot.Type.None)); //else cell.Attributes.Add("class", BookingSlot.GetContextMenuClass((!userView.IsPatient || slotType != BookingSlot.Type.Unavailable) ? slotType : BookingSlot.Type.None)); } /* else { BookingSlot.Type type = BookingSlot.Type.PatientAndServiceNotSet; if (ddlServices.SelectedValue == "-1" && txtPatientID.Text.Length > 0) type = BookingSlot.Type.ServiceNotSet; if (ddlServices.SelectedValue != "-1" && txtPatientID.Text.Length == 0) type = BookingSlot.Type.PatientNotSet; cell.Attributes.Remove("class"); cell.Attributes.Add("class", BookingSlot.GetContextMenuClass(type)); } */ main_table.Rows[r].Controls.Add(cell); cell.Controls.Add(newLbl); } } } } }
protected StartEndTime GetStartEndTimes() { bool containsPodiatry = false; bool containsAgedCare = false; foreach (Organisation o in this.orgs) { if (o.OrganisationType.OrganisationTypeID == 218) containsPodiatry = true; else containsAgedCare = true; } Site[] sites = SiteDB.GetAll(); Hashtable siteHash = new Hashtable(); foreach (Site s in sites) { siteHash[(s.SiteType.ID == 1)] = s; } if (!containsPodiatry && containsAgedCare) { //return new StartEndTime(((Site)siteHash[1]).DayStartTime, ((Site)siteHash[1]).DayEndTime); return new StartEndTime(((Site)siteHash[false]).DayStartTime, ((Site)siteHash[false]).DayEndTime); } else if (containsPodiatry && !containsAgedCare) { //return new StartEndTime(((Site)siteHash[2]).DayStartTime, ((Site)siteHash[2]).DayEndTime); return new StartEndTime(((Site)siteHash[true]).DayStartTime, ((Site)siteHash[true]).DayEndTime); } else if (containsPodiatry && containsAgedCare) { TimeSpan startTime = new TimeSpan(12, 0, 0); TimeSpan endTime = new TimeSpan(12, 10, 0); for (int i = 0; i < sites.Length; i++) { StartEndTime startEndTime = new StartEndTime(sites[i].DayStartTime, sites[i].DayEndTime); if (startEndTime.StartTime < startTime) startTime = startEndTime.StartTime; if (startEndTime.EndTime > endTime) endTime = startEndTime.EndTime; } return new StartEndTime(startTime, endTime); } else return new StartEndTime(new TimeSpan(8, 0, 0), new TimeSpan(20, 0, 0)); }
protected void CheckClashOneTimeBooking() { UserView userView = UserView.GetInstance(); string org_id = Request.QueryString["org"]; string all_orgs = Request.QueryString["all_orgs"]; string staff_id = Request.QueryString["staff"]; string booking_id = Request.QueryString["edit_booking_id"]; string booking_type_id = Request.QueryString["booking_type_id"]; string start_datetime = Request.QueryString["start_datetime"]; string end_datetime = Request.QueryString["end_datetime"]; if (start_datetime == null || !Regex.IsMatch(start_datetime, @"^\d{4}_\d{2}_\d{2}_\d{4}$") || end_datetime == null || !Regex.IsMatch(end_datetime, @"^\d{4}_\d{2}_\d{2}_\d{4}$") || org_id == null || !Regex.IsMatch(org_id, @"^\-?\d+$") || staff_id == null || !Regex.IsMatch(staff_id, @"^\-?\d+$") || booking_id == null || !Regex.IsMatch(booking_id, @"^\-?\d+$")) { throw new CustomMessageException(); } Organisation org = OrganisationDB.GetByID(Convert.ToInt32(org_id)); Staff staff = StaffDB.GetByID(Convert.ToInt32(staff_id)); Booking booking = booking_id == "-1" ? null : BookingDB.GetByID(Convert.ToInt32(booking_id)); if (booking != null && booking_type_id == "-1") { booking_type_id = booking.BookingTypeID.ToString(); } if ((org_id != "0" && org == null) || (staff_id != "-1" && staff == null) || (booking_id != "-1" && booking == null) || (booking_type_id == null || (booking_type_id != "34" && booking_type_id != "340" && booking_type_id != "341" && booking_type_id != "342"))) { throw new CustomMessageException(); } DateTime startDateTime = ConvertStringToDateTime(start_datetime); DateTime endDateTime = ConvertStringToDateTime(end_datetime); // if pt logged in, disallow booking over unavailabilities, otherwise allow it and ignore the check bool checkUnavailableDays = userView.IsPatient; Booking[] bookings = (all_orgs != null && all_orgs == "1") ? BookingDB.GetToCheckOverlap_OneTime(startDateTime, endDateTime, staff, null, booking_type_id == "342", true, checkUnavailableDays) : BookingDB.GetToCheckOverlap_OneTime(startDateTime, endDateTime, staff, org, booking_type_id == "342", true, checkUnavailableDays); if (bookings.Length > 0) { System.Collections.ArrayList list = new System.Collections.ArrayList(); for (int i = 0; i < bookings.Length; i++) { if ((bookings[i].Organisation == null || (org != null && bookings[i].Organisation.OrganisationID == org.OrganisationID)) && (bookings[i].Provider == null || bookings[i].Provider.StaffID == staff.StaffID)) { list.Add(bookings[i]); } } bookings = (Booking[])list.ToArray(typeof(Booking)); } // for patient, disallow booking over start/end times when clinic unavailable if (userView.IsPatient) { if (org == null) { org = booking.Organisation; } StartEndTime startEndTime = org.GetStartEndTime(startDateTime.DayOfWeek); StartEndTime startEndLunchTime = org.GetStartEndLunchTime(startDateTime.DayOfWeek); if ((startEndTime.StartTime < startEndTime.EndTime && startDateTime.TimeOfDay < endDateTime.TimeOfDay && !(startDateTime.TimeOfDay >= startEndTime.StartTime && endDateTime.TimeOfDay <= startEndTime.EndTime)) || (startEndLunchTime.StartTime < startEndLunchTime.EndTime && startDateTime.TimeOfDay < endDateTime.TimeOfDay && Booking.TimeIntersects(startEndLunchTime.StartTime, startEndLunchTime.EndTime, startDateTime.TimeOfDay, endDateTime.TimeOfDay))) { Response.Write("1"); return; } } Response.Write(Booking.HasOverlap(bookings, startDateTime, endDateTime, booking) ? "1" : "0"); }
public void SetModalDropDownList(StartEndTime startEndTime) { int minBookingDurationMins = 10; if (Convert.ToBoolean(Session["SiteIsClinic"])) { minBookingDurationMins = Convert.ToInt32(((SystemVariables)Session["SystemVariables"])["BookingSheetTimeSlotMins_Clinic"].Value); } else if (Convert.ToBoolean(Session["SiteIsAgedCare"])) { minBookingDurationMins = Convert.ToInt32(((SystemVariables)Session["SystemVariables"])["BookingSheetTimeSlotMins_AgedCare"].Value); } else if (Convert.ToBoolean(Session["SiteIsGP"])) { minBookingDurationMins = Convert.ToInt32(((SystemVariables)Session["SystemVariables"])["BookingSheetTimeSlotMins_GP"].Value); } ddlModalStartHour.Items.Clear(); ddlModalEndHour.Items.Clear(); ddlModalStartMinute.Items.Clear(); ddlModalEndMinute.Items.Clear(); for (int i = startEndTime.StartTime.Hours; i <= startEndTime.EndTime.Hours; i++) { ddlModalStartHour.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); ddlModalEndHour.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); } for (int i = 0; i < 60; i += minBookingDurationMins) { ddlModalStartMinute.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); ddlModalEndMinute.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); } for (int i = 0; i <= 23; i++) { ddlModalPopupUnavailableRecurringModalStartHour.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); ddlModalPopupUnavailableRecurringModalEndHour.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); } for (int i = 0; i < 60; i += minBookingDurationMins) { ddlModalPopupUnavailableRecurringModalStartMinute.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); ddlModalPopupUnavailableRecurringModalEndMinute.Items.Add(new ListItem(i.ToString().PadLeft(2, '0'), i.ToString().PadLeft(2, '0'))); } ddlOrgUnavailabilityReason.Items.Add(new ListItem("[None]", "-1")); DataTable tblUnavailabilityReasons = DBBase.GetGenericDataTable_WithWhereOrderClause(null, "BookingUnavailabilityReason", "", "descr", "booking_unavailability_reason_id", "booking_unavailability_reason_type_id", "descr"); foreach (DataRow row in tblUnavailabilityReasons.Rows) { if (row["booking_unavailability_reason_type_id"].ToString() == "341") { ddlProvUnavailabilityReason.Items.Add(new ListItem(row["descr"].ToString(), row["booking_unavailability_reason_id"].ToString())); } else if (row["booking_unavailability_reason_type_id"].ToString() == "340") { ddlOrgUnavailabilityReason.Items.Add(new ListItem(row["descr"].ToString(), row["booking_unavailability_reason_id"].ToString())); } } //DataTable tblBookingChangeHistoryReasons = DBBase.GetGenericDataTable_WithWhereOrderClause("BookingChangeHistoryReason", "", "display_order, descr", "booking_change_history_reason_id", "descr", "display_order"); DataTable tblBookingChangeHistoryReasons = BookingChangeHistoryReasonDB.GetDataTable(); foreach (DataRow row in tblBookingChangeHistoryReasons.Rows) { ddlBookingMovementReason.Items.Add(new ListItem(row["descr"].ToString(), row["booking_change_history_reason_id"].ToString())); } ddlEveryNWeeks.Items.Clear(); for (int i = 1; i <= 13; i++) { ddlEveryNWeeks.Items.Add(new ListItem(i.ToString(), i.ToString())); } ddlOcurrences.Items.Clear(); for (int i = 1; i <= 13; i++) { ddlOcurrences.Items.Add(new ListItem(i.ToString(), i.ToString())); } ddlUnavailableEveryNWeeks.Items.Clear(); for (int i = 1; i <= 13; i++) { ddlUnavailableEveryNWeeks.Items.Add(new ListItem(i.ToString(), i.ToString())); } }