/// <summary> /// Creates recurring items from a given reccurence pattern and time period /// </summary> /// <param name="workItem">The work item</param> /// <param name="model">The model</param> private void CreateOccurrences(WorkItem workItem, WorkItemDataInputModel model) { var occurrenceService = new OccurrenceService(); var occurrenceDates = occurrenceService.GetOccurrenceDates(workItem); workItem.RecurringItems = new List <RecurringItem>(); foreach (var date in occurrenceDates) { var originalDate = new DateTime(date.Year, date.Month, date.Day, model.RecurringItemStart.Value.Hour, model.RecurringItemStart.Value.Minute, model.RecurringItemStart.Value.Second); if (!this.dataContext.RecurringItems.Any(r => r.OriginalDate == originalDate)) { workItem.RecurringItems.Add(new RecurringItem { Start = new DateTime(date.Year, date.Month, date.Day, model.RecurringItemStart.Value.Hour, model.RecurringItemStart.Value.Minute, model.RecurringItemStart.Value.Second), End = new DateTime(date.Year, date.Month, date.Day, model.RecurringItemEnd.Value.Hour, model.RecurringItemEnd.Value.Minute, model.RecurringItemEnd.Value.Second), OriginalDate = originalDate, Exception = false, Subject = workItem.Subject, Body = workItem.Body, Location = workItem.Location, UpdatedAt = DateTime.Now }); } } }
public PartialViewResult SubscribeActivity(Guid Id) { //Db.Database.BeginTransaction() var activity = Db.Occurrences.SingleOrDefault(ac => ac.Id == Id); var model = new OccurrenceStateModel(); if (activity != null) { model.Occurrence = activity; var userProfile = UserManager.FindByName(User.Identity.Name); var occService = new OccurrenceService(UserManager); var msg = occService.SubscribeOccurrence(activity.Id, userProfile); model.HasError = msg.HasError; model.ErrorMessage = msg.Message; model.Subscription = msg.Subscription; var logger = LogManager.GetLogger("SubscribeActivity"); var ac = new ActivityService(); var summary = ac.GetSummary(Id); if (msg.HasError) { logger.InfoFormat("{0} ({1}) by [{2}]: {3}", summary.Activity.Name, summary.Activity.ShortName, User.Identity.Name, msg.Message); } else { logger.InfoFormat("{0} ({1}) by [{2}]", summary.Activity.Name, summary.Activity.ShortName, User.Identity.Name); } if (new SystemConfig().MailSubscriptionEnabled) { var mailModel = new SubscriptionMailModel { Summary = summary, Subscription = model.Subscription, User = userProfile, }; var mail = new MailController(); mail.Subscription(mailModel).Deliver(); } } return(PartialView("_SubscriptionState", model)); }