bool SaveCheck() { divErrors.Visible = false; divSuccess.Visible = false; ulErrors.Controls.Clear(); DateTime temp; if (rbtnCalendar.Checked && !(int.Parse(ddlAllocatedTo.SelectedValue) > 0)) ulErrors.Controls.Add(new LiteralControl("<li>Please select a <b>Calendar</b> from the list.</li>")); if (txtTitle.Text == "") ulErrors.Controls.Add(new LiteralControl("<li><b>Title</b> field cannot be left blank.</li>")); if (txtStartDate.Text == "" || (!chbAllDay.Checked && txtStartTime.Text == "") || txtEndDate.Text == "" || (!chbAllDay.Checked && txtEndTime.Text == "")) ulErrors.Controls.Add(new LiteralControl("<li><b>Date & Time</b> field cannot be left blank.</li>")); else { bool bInvalid = false; if (!DateTime.TryParse(txtStartDate.Text, out temp)) bInvalid = true; if (!DateTime.TryParse(txtEndDate.Text, out temp)) bInvalid = true; if (!chbAllDay.Checked && !DateTime.TryParse(txtStartTime.Text, out temp)) bInvalid = true; if (!chbAllDay.Checked && !DateTime.TryParse(txtEndTime.Text, out temp)) bInvalid = true; if (bInvalid) ulErrors.Controls.Add(new LiteralControl("<li>Invalid value has entered in <b>Date & Time</b> filed.</li>")); } if (chbRepeat.Checked && chbRepeat.Enabled && txtRepeatEndDate.Text == "") ulErrors.Controls.Add(new LiteralControl("<li><b>Ends On</b> field cannot be left blank.</li>")); else if (chbRepeat.Checked && chbRepeat.Enabled && !DateTime.TryParse(txtRepeatEndDate.Text, out temp)) ulErrors.Controls.Add(new LiteralControl("<li>Invalid value in <b>Ends On</b> filed.</li>")); //check repeat if (chbRepeat.Checked && chbRepeat.Enabled && !(ulErrors.Controls.Count > 0)) { RecurrencePattern rp = new RecurrencePattern(); rp.StartDate = txtStartDate.Text; rp.EndsOn = txtRepeatEndDate.Text; rp.Repeats = ddlRepeatFrequency.SelectedValue; rp.Interval = int.Parse(ddlRepeatInterval.SelectedValue); if (!new Events().IsValidAppointment(rp, Convert.ToDateTime(txtStartDate.Text), Convert.ToDateTime(txtEndDate.Text))) { ulErrors.Controls.Add(new LiteralControl("<li>The duration of the event must be shorter than how frequently it occurs. Shorten the duration or change the repeat pattern.</li>")); } } if (ulErrors.Controls.Count > 0) return false; return true; }
/// <summary> /// Check Is valid appointment or not for a recurring appointment by checking interval between first-second evnet and the days span of the event /// </summary> /// <param name="recPattern"></param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <returns></returns> public bool IsValidAppointment(RecurrencePattern recPattern, DateTime startDate, DateTime endDate) { var daySpan = (endDate - startDate).Days; var secondEventStartDate = DateTime.Now; switch (recPattern.Repeats) { case "days": secondEventStartDate = startDate.AddDays(recPattern.Interval); break; case "weeks": secondEventStartDate = startDate.AddDays(recPattern.Interval * 7); break; case "months": secondEventStartDate = startDate.AddMonths(recPattern.Interval); break; case "years": secondEventStartDate = startDate.AddYears(recPattern.Interval); break; } //interval between second and first event var secondAndFirstEventInterval = (secondEventStartDate - startDate).Days; if (daySpan > secondAndFirstEventInterval) return false; return true; }