Example #1
0
        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" }));
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
        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"));
        }
Example #5
0
        // 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));
        }
Example #6
0
        // 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));
        }