public string Details(string id) { Schedule schedule = _repo.FindBy(Convert.ToInt32(id)); string data = ""; if (schedule is ScheduleDaily) { ScheduleDaily model = ((ScheduleDaily)schedule); data += "<p>Repeats:" + model.Repeats + "</p>"; data += "<p>Recurrence: Every " + model.RepeatOn + " day(s)</p>"; data += "<p>Time: " + model.Time + "</p>"; data += "<p>Start Date: " + model.StartDate + "</p>"; data += "<p>Stop Date: " + model.StopDate + "</p>"; } if (schedule is ScheduleOnce) { ScheduleOnce model = ((ScheduleOnce)schedule); data += "<p>Repeats:" + model.Repeats + "</p>"; data += "<p>Recurrence: One Time</p>"; data += "<p>Time: " + model.Time + "</p>"; data += "<p>Start Date: " + model.StartDate + "</p>"; } if (schedule is ScheduleWeekly) { ScheduleWeekly model = ((ScheduleWeekly)schedule); data += "<p>Repeats:" + model.Repeats + "</p>"; data += "<p>Recurrence: Every " + model.RepeatOnWeeks + " weeks(s) on " + model.RepeatOnDaysWeeks + "</p>"; data += "<p>Time: " + model.Time + "</p>"; data += "<p>Start Date: " + model.StartDate + "</p>"; data += "<p>Stop Date: " + model.StopDate + "</p>"; } if (schedule is ScheduleMonthly) { ScheduleMonthly model = ((ScheduleMonthly)schedule); data += "<p>Repeats:" + model.Repeats + "</p>"; data += "<p>Recurrence: Day " + model.RepeatOnDay + " every " + model.RepeatOnMonth + " month(s)</p>"; data += "<p>Time: " + model.Time + "</p>"; data += "<p>Start Date: " + model.StartDate + "</p>"; data += "<p>Stop Date: " + model.StopDate + "</p>"; } if (schedule is ScheduleMonthlyRelative) { ScheduleMonthlyRelative model = ((ScheduleMonthlyRelative)schedule); data += "<p>Repeats:" + model.Repeats + "</p>"; data += "<p>Recurrence: The " + model.RepeatOnFirst + " " + model.RepeatOnDay + " every " + model.RepeatOnMonth + " month(s)</p>"; data += "<p>Time: " + model.Time + "</p>"; data += "<p>Start Date: " + model.StartDate + "</p>"; data += "<p>Stop Date: " + model.StopDate + "</p>"; } return(data); }
public ActionResult Create([Bind(Include = "UserId,Name,Repeats,RepeatsSelected,StartDate,Time,RepeatOn,StopDate,RepeatOnWeeks,RepeatOnDaysWeeks,RepeatOnDay,RepeatOnMonth,RepeatOnFirst,RepeatOnDay2,RepeatOnMonth2")] ScheduleViewModel vmodel) { if (vmodel.RepeatsSelected != -1) { ModelState.Remove("Repeats"); } if (ModelState.IsValid) { Schedule model = null; if (vmodel.Repeats == ScheduleType.RepeatsEnum.Once) { model = new ScheduleOnce(vmodel.Name, vmodel.Repeats, vmodel.StartDate, vmodel.Time); } else { if (vmodel.Repeats == ScheduleType.RepeatsEnum.Daily) { model = new ScheduleDaily(vmodel.Name, vmodel.Repeats, vmodel.StartDate, vmodel.Time, vmodel.RepeatOn, vmodel.StopDate); } else { if (vmodel.Repeats == ScheduleType.RepeatsEnum.Weekly) { string days = vmodel.RepeatOnDaysWeeks == null ? "Mon" : vmodel.RepeatOnDaysWeeks; model = new ScheduleWeekly(vmodel.Name, vmodel.Repeats, vmodel.StartDate, vmodel.Time, vmodel.RepeatOnWeeks, days, vmodel.StopDate); } else { if (vmodel.Repeats == ScheduleType.RepeatsEnum.Monthly) { model = new ScheduleMonthly(vmodel.Name, vmodel.Repeats, vmodel.StartDate, vmodel.Time, vmodel.RepeatOnDay, vmodel.RepeatOnMonth, vmodel.StopDate); } else { if (vmodel.Repeats == ScheduleType.RepeatsEnum.MonthlyRelative) { model = new ScheduleMonthlyRelative(vmodel.Name, vmodel.Repeats, vmodel.StartDate, vmodel.Time, vmodel.RepeatOnFirst, vmodel.RepeatOnDay2, vmodel.RepeatOnMonth2, vmodel.StopDate); } } } } } User user = _userRepository.FindBy(Convert.ToInt32(vmodel.UserId)); model.UserId = user.Id; _repo.Add(model); return(RedirectToAction("Index")); } return(View(vmodel)); }
private bool EditScheduleMonthlyRelative(ScheduleViewModel vmodel, Schedule model) { if (model.GetType().BaseType.FullName != typeof(ScheduleMonthlyRelative).FullName) { ScheduleMonthlyRelative model1 = new ScheduleMonthlyRelative(vmodel.Name, vmodel.Repeats, vmodel.StartDate, vmodel.Time, vmodel.RepeatOnFirst, vmodel.RepeatOnDay2, vmodel.RepeatOnMonth2, vmodel.StopDate); IEnumerable <SubscriptionModel> subscriptions = model.Subscriptions; AddReportFilters(subscriptions, model1, model.UserId, model.ID); return(false); } else { ((ScheduleMonthlyRelative)model).Time = vmodel.Time; ((ScheduleMonthlyRelative)model).RepeatOnFirst = vmodel.RepeatOnFirst; ((ScheduleMonthlyRelative)model).RepeatOnDay = vmodel.RepeatOnDay2; ((ScheduleMonthlyRelative)model).RepeatOnMonth = vmodel.RepeatOnMonth2; ((ScheduleMonthlyRelative)model).StopDate = vmodel.StopDate; } return(true); }
private string NextRunDate(Schedule schedule) { string datestart = schedule.StartDate.ToShortDateString(); string daterun = ""; DateTime today = DateTime.Now; if (schedule is ScheduleOnce) { datestart += " " + ((ScheduleOnce)schedule).Time; DateTime dt = Convert.ToDateTime(datestart); if (dt > DateTime.Now) { daterun = dt.ToString(); } else { daterun = "One execution"; } } if (schedule is ScheduleDaily) { datestart += " " + ((ScheduleDaily)schedule).Time; DateTime dt = Convert.ToDateTime(datestart); if (dt > DateTime.Now) { daterun = dt.ToString(); } else { string nextday = today.AddDays(((ScheduleDaily)schedule).RepeatOn).ToShortDateString(); daterun = nextday + " " + ((ScheduleDaily)schedule).Time; } } if (schedule is ScheduleWeekly) { datestart += " " + ((ScheduleWeekly)schedule).Time; DateTime dt = Convert.ToDateTime(datestart); if (dt > DateTime.Now) { daterun = dt.ToString(); } else { ScheduleWeekly week = ((ScheduleWeekly)schedule); string[] days = week.RepeatOnDaysWeeks.Split('_'); int days_week = week.RepeatOnWeeks * 7; DateTime nextweek = today.AddDays(days_week); DateTime first_date_week = Utils.GetFirstDayOfWeek(nextweek); DateTime nextrun = GetNextRun(first_date_week, days[0]); daterun = nextrun.ToShortDateString() + " " + ((ScheduleWeekly)schedule).Time; } } if (schedule is ScheduleMonthly) { datestart += " " + ((ScheduleMonthly)schedule).Time; DateTime dt = Convert.ToDateTime(datestart); if (dt > DateTime.Now) { daterun = dt.ToString(); } else { ScheduleMonthly month = ((ScheduleMonthly)schedule); int day = month.RepeatOnDay; int every_month = month.RepeatOnMonth; DateTime next_month = today.AddMonths(every_month); daterun = next_month.Month + "/" + day + "/" + next_month.Year + " " + ((ScheduleMonthly)schedule).Time; } } if (schedule is ScheduleMonthlyRelative) { datestart += " " + ((ScheduleMonthlyRelative)schedule).Time; DateTime dt = Convert.ToDateTime(datestart); if (dt > DateTime.Now) { daterun = dt.ToString(); } else { ScheduleMonthlyRelative month_relative = ((ScheduleMonthlyRelative)schedule); int first = Convert.ToInt32(month_relative.RepeatOnFirst); // 0 is last day string name_day = month_relative.RepeatOnDay; int every_month = month_relative.RepeatOnMonth; DateTime next_month = today.AddMonths(every_month); var firstDayOfMonth = new DateTime(next_month.Year, next_month.Month, 1); DateTime nextrun = new DateTime(); DateTime first_date_week = firstDayOfMonth;//si es first == 1 , es la primera semana if (first > 1) { int days_week = first * 7; DateTime nextweek = firstDayOfMonth.AddDays(days_week); first_date_week = Utils.GetFirstDayOfWeek(nextweek); } if (first == 0) //Ultimo del mes { var last_week = firstDayOfMonth.AddMonths(1).AddDays(-3); first_date_week = Utils.GetFirstDayOfWeek(last_week); } nextrun = GetNextRunMonth(first_date_week, name_day); daterun = nextrun.ToShortDateString() + " " + ((ScheduleMonthlyRelative)schedule).Time; } } return(daterun); }