// 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; } }
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; } }
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; } }