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;
    }
예제 #2
0
        /// <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;

        }