/// <summary> /// Lists this instance. /// </summary> /// <returns>List View.</returns> public ActionResult List() { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); return View(unitOfWork.List); }
public ActionResult EditWebSite(int? webSiteId, string submitButton, WebSite webSite) { try { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); SelectList list = this.CopyToSelectList(0, unitOfWork); ViewData["webSites"] = this.GetWebSiteList(); switch (submitButton) { case "Add New Web Site": // reset so displays default value return RedirectToAction("EditWebSite", new { WebSiteId = -1 }); case "Save": unitOfWork.Save(webSite); int? tempVal = null; return RedirectToAction("EditWebSite", new { WebSiteId = tempVal }); case "Delete": webSite = unitOfWork.GetById(webSiteId.Value); unitOfWork.Delete(webSite); tempVal = null; return RedirectToAction("EditWebSite", new { WebSiteId = tempVal }); default: // Change of drop down list ... return RedirectToAction("EditWebSite", new { WebSiteId = webSiteId }); } } catch (RuleException ex) { ViewData["webSites"] = this.GetWebSiteList(); ex.CopyToModelState(ModelState); return View(); } }
/// <summary> /// Gets the web site list. /// </summary> /// <returns>List of Selected Items.</returns> private SelectList GetWebSiteList() { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); SelectList list = this.CopyToSelectList(0, unitOfWork); return list; }
/// <summary> /// Details the specified log event id. /// </summary> /// <param name="id">The log event id.</param> /// <returns>The view instance.</returns> public ActionResult Detail(long? id) { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IlogEventUnitOfWork unitOfWork = factory.GetLogEventUnitOfWork(); LogEvent logEvent = unitOfWork.GetById(id.Value); return View(logEvent); }
/// <summary> /// Indexes the specified web site id. /// </summary> /// <param name="webSiteId">The web site id.</param> /// <returns>List of emails returned.</returns> public ActionResult Index(long? webSiteId) { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); webSiteId = (webSiteId.HasValue == false) ? unitOfWork.List[0].Id : webSiteId; IList<WebSiteEMails> webSiteEmails = unitOfWork.GetWebSiteEMails(webSiteId.Value); ViewData["webSites"] = this.CopyToSelectList(webSiteId.Value, unitOfWork); return View(webSiteEmails); }
public ActionResult Create([Bind(Exclude = "Id")] WebSite webSite) { try { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); unitOfWork.Save(webSite); return RedirectToAction("List"); } catch { return View(); } }
/// <summary> /// Edits the web site. /// </summary> /// <param name="webSiteId">The web site id.</param> /// <param name="submitButton">The submit button.</param> /// <returns>The view instance.</returns> public ActionResult EditWebSite(int? webSiteId, string submitButton) { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); SelectList list = this.CopyToSelectList(0, unitOfWork); ViewData["webSites"] = list; // Deal with adding new Web Site if (webSiteId == -1) { return View(new WebSite { }); } // if webSiteId supplied get search websites otherwise default to the first webSite. return View(webSiteId.HasValue ? unitOfWork.GetById(webSiteId.Value) : unitOfWork.List[0]); }
/// <summary> /// Emailses to be sent. /// </summary> /// <returns>list of mails</returns> public List<ScheduMail.Core.Domain.Mail> EmailsToBeSent() { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IScheduleUnitOfWork scheduleUnitOfWork = factory.GetScheduleUnitOfWork(); Mail mail = null; //get list of all mails List<Mail> listOfMails = this.List.ToList(); //generate the list of mails to be sent to users now List<Mail> listOfMailsToBeSent = new List<Mail>(); DateTime date = DateTime.Now; bool toBeSent = false; List<ScheduMail.Core.Domain.Schedule> scheduleList = scheduleUnitOfWork.GetListOfSchedule(true); foreach (Schedule schedule in scheduleList) { //rset the value toBeSent = false; if (schedule.StartDateTime <= date && schedule.EndDateTime == null) toBeSent = true; else { //validate mails are not expired if (schedule.StartDateTime <= date && schedule.EndDateTime >= date ) { //validate if its not before the time if (schedule.StartDateTime.Value.TimeOfDay <= date.TimeOfDay) { toBeSent = true; } } } if (toBeSent) { //find the mail object from schedule.MailId mail = listOfMails.Find(delegate(Mail searchMail) { return searchMail.Id == schedule.MailId; }); switch (schedule.DailyWeeklyOrMonthly) { // Single case "1": // if mail has not been sent before then send it now. if (mail.LastSent == null) toBeSent = true; else toBeSent = false; break; //Daily case "2": // if mail has not been sent on the day then send it now. if (mail.LastSent == null) toBeSent = true; else if (mail.LastSent.Value.Subtract(date).Days <= -1) toBeSent = true; else toBeSent = false; break; //Weekly case "3": // if no day has been selected then dont send the email if (string.IsNullOrEmpty(schedule.DaysOfWeekToRun)) toBeSent = false; else if (mail.LastSent == null) // if not be sent before then validate if its the right day of the week; { if (schedule.DaysOfWeekToRun.Contains(Convert.ToString(((int)date.DayOfWeek)))) { toBeSent = true; } else toBeSent = false; } else { // Validate the logic that mails need to be sent weekly on specific days System.Globalization.Calendar calendar = System.Threading.Thread.CurrentThread.CurrentCulture.Calendar; int lastWeek = calendar.GetWeekOfYear(mail.LastSent.Value, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); int currentWeek = calendar.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); // confirms that email has not been already sent if (lastWeek <= currentWeek) { if (schedule.DaysOfWeekToRun.Contains(Convert.ToString(((int)date.DayOfWeek)))) { toBeSent = true; } else toBeSent = false; }// if mail has already been sent on that day of current week then validate the different days to send it again else if (lastWeek == currentWeek && mail.LastSent.Value.DayOfWeek < date.DayOfWeek) { if (schedule.DaysOfWeekToRun.Contains(Convert.ToString(((int)date.DayOfWeek)))) { toBeSent = true; } else toBeSent = false; } } break; //Monthly case "4": if (mail.LastSent == null) toBeSent = true; else if (mail.LastSent.Value.Month.CompareTo(date.Month) <= -1) { if (mail.LastSent.Value.Day == date.Day) { toBeSent = true; } else toBeSent = false; } else toBeSent = false; break; //yearly case "5": // if not be sent before then prepare to send; if (mail.LastSent == null) toBeSent = true; else if (mail.LastSent.Value.Month.CompareTo(date.Year) <= -1) { if (mail.LastSent.Value.Day == date.Day) { toBeSent = true; } else toBeSent = false; } else toBeSent = false; break; } } if (toBeSent) listOfMailsToBeSent.Add(mail); } return listOfMailsToBeSent; }
public ActionResult Edit(WebSite webSite) { try { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); if (!ModelState.IsValid) { return View(); } unitOfWork.Save(webSite); return RedirectToAction("List"); } catch { return View(); } }
/// <summary> /// Edits the specified id. /// </summary> /// <param name="id">The id instance.</param> /// <returns>View Instance.</returns> public ActionResult Edit(int id) { IUnitOfWorkFactory factory = new ScheduMail.UnitsOfWork.WebSiteUnitOfWorkFactory(); IWebSiteUnitOfWork unitOfWork = factory.GetWebSiteUnitOfWork(); return View(unitOfWork.GetById(id)); }