public ActionResult Edit(string id) { var mode = Mode(id); ViewData["Mode"] = mode; var masterId = Request.QueryString["master"]; var row = new EventManager().Get(id) ?? new EventManager.Event(); var master = new EventManager().Get(masterId) ?? new EventManager.Event(); var e = new EventManager.Event(); RecurrenceRule _rule; switch (mode) { case EventMode.Master: _rule = RecurrenceRule.Decode(master.Recurrence); e.Start = master.Start; e.End = master.End; e.Text = master.Text; e.Resource = master.Resource; break; case EventMode.NewException: _rule = RecurrenceRule.Exception; DateTime start = Occurrence; TimeSpan duration = master.End - master.Start; DateTime end = start + duration; e.Start = start; e.End = end; e.Text = master.Text; e.Resource = master.Resource; break; case EventMode.Exception: _rule = RecurrenceRule.Exception; e.Start = row.Start; e.End = row.End; e.Text = row.Text; e.Resource = row.Resource; break; case EventMode.Regular: _rule = RecurrenceRule.NoRepeat; e.Start = row.Start; e.End = row.End; e.Text = row.Text; e.Resource = row.Resource; break; default: throw new ArgumentOutOfRangeException(); } ViewData["RecurrenceJson"] = new HtmlString(_rule.ToJson()); return(View(e)); }
protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetNoStore(); string data = Request.QueryString["hash"]; if (Session[data] == null) { throw new Exception("The session data expired."); } table = (DataTable)Session[data]; DataRow row = table.Rows.Find(Request.QueryString["id"]); DataRow master = table.Rows.Find(Request.QueryString["master"]); if (!IsPostBack) { switch (Mode) { case EventMode.Master: _rule = RecurrenceRule.Decode((string)master["recurrence"]); TextBoxStart.Text = ((DateTime)master["start"]).ToString(); TextBoxEnd.Text = ((DateTime)master["end"]).ToString(); TextBoxName.Text = (string)master["name"]; break; case EventMode.NewException: _rule = RecurrenceRule.Exception; DateTime start = Occurrence; TimeSpan duration = (DateTime)master["end"] - (DateTime)master["start"]; DateTime end = start + duration; TextBoxStart.Text = start.ToString(); TextBoxEnd.Text = end.ToString(); TextBoxName.Text = (string)master["name"]; break; case EventMode.Exception: _rule = RecurrenceRule.Exception; TextBoxStart.Text = ((DateTime)row["start"]).ToString(); TextBoxEnd.Text = ((DateTime)row["end"]).ToString(); TextBoxName.Text = (string)row["name"]; break; case EventMode.Regular: _rule = RecurrenceRule.NoRepeat; TextBoxStart.Text = ((DateTime)row["start"]).ToString(); TextBoxEnd.Text = ((DateTime)row["end"]).ToString(); TextBoxName.Text = (string)row["name"]; break; default: throw new ArgumentOutOfRangeException(); } } }