public ActionResult SubscriptionRules(SubscriptionRuleModel model) { var occurrence = Db.Occurrences.SingleOrDefault(oc => oc.Id == model.OccurrenceId); var capacity = model.CapacityOption > 0 ? model.Capacity : model.CapacityOption; // in der occurrence speichern ist nie verkehrt occurrence.Capacity = capacity; // und jetzt zurück in die slots, falls vorhanden var summary = ActivityService.GetSummary(model.OccurrenceId); if (summary is ActivityDateSummary) { var dateSummary = summary as ActivityDateSummary; foreach (var slot in dateSummary.Date.Slots) { slot.Occurrence.Capacity = capacity; } } switch (model.SubscriptionBeginLimitOption) { case -1: // Absolute Beschränkung occurrence.FromIsRestricted = true; var day = DateTime.Parse(model.SubscriptionBegin); var time = DateTime.Parse(model.SubscriptionBeginTime); var begin = day.Add(time.TimeOfDay); occurrence.FromDateTime = begin; occurrence.FromTimeSpan = null; break; case 0: // keine Beschränkung occurrence.FromIsRestricted = false; occurrence.FromDateTime = null; occurrence.FromTimeSpan = null; break; case 12: // relative Beschränkung 12h case 24: // relative Beschränkung 24h occurrence.FromIsRestricted = true; occurrence.FromDateTime = null; occurrence.FromTimeSpan = new TimeSpan(model.SubscriptionBeginLimitOption - 1, 59, 0); break; } switch (model.SubscriptionEndLimitOption) { case -1: // Absolute Beschränkung occurrence.UntilIsRestricted = true; var day = DateTime.Parse(model.SubscriptionEnd); var time = DateTime.Parse(model.SubscriptionEndTime); var end = day.Add(time.TimeOfDay); occurrence.UntilDateTime = end; occurrence.UntilTimeSpan = null; break; case 0: // keine Beschränkung occurrence.UntilIsRestricted = false; occurrence.UntilDateTime = null; occurrence.UntilTimeSpan = null; break; case 12: // relative Beschränkung 12h case 24: // relative Beschränkung 24h occurrence.UntilIsRestricted = true; occurrence.UntilDateTime = null; occurrence.UntilTimeSpan = new TimeSpan(model.SubscriptionEndLimitOption - 1, 59, 0); break; } Db.SaveChanges(); return(RedirectToAction(summary.Action, summary.Controller, new { id = summary.Id })); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult SubscriptionRules(Guid id) { var model = new SubscriptionRuleModel(); var summary = ActivityService.GetSummary(id); model.Summary = summary; var occurrence = Db.Occurrences.SingleOrDefault(occ => occ.Id == id); model.OccurrenceId = occurrence.Id; // für Slots gilt: Es gelten die Kapazitätsbeschränkungen des Slots var capacity = occurrence.Capacity; if (summary is ActivityDateSummary) { var dateSummary = summary as ActivityDateSummary; if (dateSummary.Date.Slots.Any()) { capacity = dateSummary.Date.Slots.First().Occurrence.Capacity; } } model.Capacity = capacity; model.CapacityOption = capacity > 0 ? 1 : capacity; model.SubscriptionBegin = DateTime.Today.ToShortDateString(); model.SubscriptionBeginTime = "18:00"; if (occurrence.FromIsRestricted) { if (occurrence.FromDateTime.HasValue) { model.SubscriptionBeginLimitOption = -1; model.SubscriptionBegin = occurrence.FromDateTime.Value.ToShortDateString(); model.SubscriptionBeginTime = occurrence.FromDateTime.Value.ToString("t"); } if (occurrence.FromTimeSpan.HasValue) { if (occurrence.FromTimeSpan.Value.Hours == 12) { model.SubscriptionBeginLimitOption = 12; } else { model.SubscriptionBeginLimitOption = 24; } } } else { model.SubscriptionBeginLimitOption = 0; } model.SubscriptionEnd = DateTime.Today.ToShortDateString(); model.SubscriptionEndTime = "18:00"; if (occurrence.UntilIsRestricted) { if (occurrence.UntilDateTime.HasValue) { model.SubscriptionEndLimitOption = -1; model.SubscriptionEnd = occurrence.UntilDateTime.Value.ToShortDateString(); model.SubscriptionEndTime = occurrence.UntilDateTime.Value.ToString("t"); } if (occurrence.UntilTimeSpan.HasValue) { if (occurrence.UntilTimeSpan.Value.Hours == 12) { model.SubscriptionEndLimitOption = 12; } else { model.SubscriptionEndLimitOption = 24; } } } else { model.SubscriptionEndLimitOption = 0; } SetTimeSelections(); SetRestrictionSelections(); return(View(model)); }