public async Task <ActionResult> AddRecurring(int weeklyId) { string userId = HttpContext.User.Identity.GetUserId(); int athleteId = db.Athletes.AsNoTracking().Select(a => new { Id = a.Id, AppId = a.ApplicationUserId }).Single(b => b.AppId.Equals(userId)).Id; WeeklyClassSetup weeklyClassSetup = await db.WeeklyClasses.FindAsync(weeklyId); ClassReminders reminders = await db.ClassReminders.FindAsync(athleteId); List <Class> classes = db.Classes.Where(a => a.WeeklyClass.Id.Equals(weeklyId)).ToList(); reminders.Reminders.AddRange(classes); foreach (var cls in classes) { cls.AttachedReminders.Add(reminders); } reminders.WeeklyClassSetups.Add(weeklyClassSetup); weeklyClassSetup.AttachedReminders.Add(reminders); await db.SaveChangesAsync(); return(RedirectToAction("Class", new { controller = "Reminders" })); }
public async Task <ActionResult> Edit([Bind(Include = "Id,Duration,MaxAttendance,StartDate,EndDate,SchedulingRange,TimeOfDay,Name")] WeeklyClassSetup weeklyClass) { if (ModelState.IsValid) { db.Entry(weeklyClass).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(weeklyClass)); }
public async Task <ActionResult> Create([Bind(Include = "Id,Time,Duration,Type,MaxAttendance,StartDate,EndDate,SelectedDays")] WeeklyClassSetup weeklyClass) { List <DayOfWeek> chosenDays = weeklyClass.SelectedDays.Select(x => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), x)).ToList(); List <DayOfWeekModel> days = db.DaysOfWeek.Where(d => chosenDays.Contains(d.Day)).ToList(); weeklyClass.Days = days; foreach (var day in days) { day.WeeklyClassSetups.Add(weeklyClass); } // Create Classes WeeklySchedule weeklySchedule = new WeeklySchedule { TimeOfDay = weeklyClass.Time, SchedulingRange = new Period(weeklyClass.StartDate, weeklyClass.EndDate) }; weeklySchedule.SetDays(chosenDays); var schedules = new List <Schedule>() { weeklySchedule }; List <Class> classes = _calendarGenerator.GenerateCalendar(Utilities.Constants.calendarPeriod, schedules).ToList(); foreach (var item in classes) { item.Duration = weeklyClass.Duration; item.MaxAttendance = weeklyClass.MaxAttendance; item.Type = weeklyClass.Type; item.WeeklyClass = weeklyClass; item.Attendance = new List <Athlete>(); } weeklyClass.GeneratedClasses = classes; ModelState.Remove("Days"); ModelState.Remove("GeneratedClasses"); if (ModelState.IsValid) { db.WeeklyClasses.Add(weeklyClass); db.Classes.AddRange(classes); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } else { var errors = ModelState.Select(x => x.Value.Errors).Where(y => y.Count > 0).ToList(); } return(View(weeklyClass)); }
public async Task <ActionResult> DeleteConfirmed(int id) { WeeklyClassSetup weeklyClass = await db.WeeklyClasses.FindAsync(id); List <Class> classes = db.Classes.Where(c => c.WeeklyClass.Id.Equals(weeklyClass.Id)).ToList(); db.Classes.RemoveRange(classes); db.WeeklyClasses.Remove(weeklyClass); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
// GET: WeeklyClasses/Edit/5 public async Task <ActionResult> Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WeeklyClassSetup weeklyClass = await db.WeeklyClasses.FindAsync(id); if (weeklyClass == null) { return(HttpNotFound()); } return(View(weeklyClass)); }
// GET: WeeklyClasses/Details/5 public async Task <ActionResult> Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } IEnumerable <string> items = Enum.GetValues(typeof(DayOfWeek)).Cast <DayOfWeek>().Select(d => d.ToString()).ToList(); ViewBag.Days = new MultiSelectList(items); WeeklyClassSetup weeklyClass = await db.WeeklyClasses.FindAsync(id); if (weeklyClass == null) { return(HttpNotFound()); } return(View(weeklyClass)); }