Пример #1
0
        // GET: GymClassTypes
        public ActionResult Index(int memberId = 0)
        {
            Tex.VerboseLog("Home/Index", memberId.ToString());
            try {
                MemberBookings gmb              = new MemberBookings();
                DateTime       oneHourFromNow   = DateTime.Now.AddHours(1);
                var            allFutureClasses = db.GymClass.Where(cl => cl.ClassDateTime > DateTime.Now).OrderBy(bk => bk.ClassDateTime).ToList();
                GymMember      gm;
                if (memberId == 0)
                {
                    gm = GetCurrentGymMember();
                }
                else
                {
                    gm = db.GymMembers.Find(memberId);
                }
                var allBookableClasses = new List <ClassDetail>();
                foreach (GymClass cl in allFutureClasses)
                {
                    var bookableClass = cl.ToViewModel(true);
                    if (gm != null)
                    {
                        var memberBooking = db.MemberClassBookings.Where(bk => bk.GymClassId == cl.GymClassId && bk.GymMemberId == gm.GymMemberId).FirstOrDefault();
                        if (memberBooking != null)
                        {
                            bookableClass.MemberStatus = memberBooking.Waiting ? MemberClassStatus.BookedWaiting : MemberClassStatus.BookedClass;
                        }
                        else
                        {
                            int nNonWaitBookings = db.MemberClassBookings.Where(bk => bk.GymClassId == cl.GymClassId && !bk.Waiting).Count();
                            if (nNonWaitBookings < cl.MaxCapacity)
                            {
                                bookableClass.MemberStatus = MemberClassStatus.EligibleClass;
                            }
                            else
                            {
                                bookableClass.MemberStatus = (bookableClass.nBookings < cl.MaxCapacity + cl.MaxWaitList ? MemberClassStatus.EligibleWaiting : MemberClassStatus.None);
                            }
                        }
                    }
                    bookableClass.IsLessThanAnHourAway = bookableClass.ClassDateTime <= oneHourFromNow;
                    allBookableClasses.Add(bookableClass);
                }

                gmb.GymClasses    = allBookableClasses;
                gmb.CurrentMember = gm;
                gmb.AllMembers    = db.GymMembers.OrderBy(m => m.LastName).ToList();
                foreach (var memb in gmb.AllMembers)
                {
                    memb.FullName = String.Format("{0} {1}", memb.FirstName, memb.LastName);
                }
                return(View(gmb));
            } catch (Exception ex) {
                Tex.Dump(ex, "Home Index Excetpion");
                throw;
            }
        }
Пример #2
0
 public ActionResult Delete(int id)
 {
     Tex.Log("Delete called" + id.ToString());
     try {
         GymClass gymClass = db.GymClass.Find(id);
         db.GymClass.Remove(gymClass);
         var bookings = db.MemberClassBookings.Where(cb => cb.GymClassId == id).ToList();
         db.MemberClassBookings.RemoveRange(bookings);
         db.SaveChanges();
         Tex.Log("returning");
         return(Json("", JsonRequestBehavior.AllowGet));
     } catch (Exception ex) {
         Tex.Dump(ex, "Exception GymClassController/delete");
         throw;
     }
 }
Пример #3
0
        public ActionResult Edit([Bind(Include = "GymClassId,Description,GymClassTypeId,ClassTime,ClassDate,MaxCapacity,MaxWaitList,ClassBookings,ClassWaiting")] ClassBookingDetail gymClass)
        {
            Tex.Log("Enter GymClassController/Edit");
            try {
                if (ModelState.IsValid)
                {
                    if (gymClass != null)
                    {
                        Tex.Log("Model Valid - GC ID " + gymClass.GymClassId);
                    }
                    GymClass dbClass = db.GymClass.Find(gymClass.GymClassId);
                    GymClassMapper.CopyGymClass(gymClass.ToModel(), dbClass);
                    db.Entry(dbClass).State = EntityState.Modified;

                    if (gymClass.ClassBookings != null && gymClass.ClassBookings.Any())
                    {
                        foreach (var booking in gymClass.ClassBookings)
                        {
                            db.Entry(booking).State = EntityState.Modified;
                        }
                    }
                    if (gymClass.ClassWaiting != null && gymClass.ClassWaiting.Any())
                    {
                        foreach (var booking in gymClass.ClassWaiting)
                        {
                            db.Entry(booking).State = EntityState.Modified;
                        }
                    }
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                return(View(gymClass));
            } catch (Exception ex) {
                Tex.Dump(ex, "Excetption - GymClassControler/Edit");
                throw;
            }
        }