// GET: Visits public IActionResult Index() { if (!_context.Shops.Any()) { return RedirectToAction("Index", "Shops"); } var visit = new Visit(); var currentVisits = _context.Visits; var activeVisitors = currentVisits.Count() - currentVisits.Where(x => x.isCheckedOff).Count(); var shop = _context.Shops.First(); if (currentVisits.Count() != 0) { foreach (var v in currentVisits) { v.WaitTime = (v.WaitTime - DateTime.Now.Subtract(v.SignInTime).TotalMinutes) + 1; _context.Update(v); } _context.SaveChanges(); }; ViewData["BarberId"] = new SelectList(_context.Barbers, "BarberId", "FullName"); ViewData["wait"] = _waitcalc .CalculateWait(activeVisitors, shop.CutTimeAverage) .ToLocalTime() .ToString("hh:mm tt"); ViewData["ShopName"] = shop.ShopName; return View(new VisitsViewModel { Visits = _context.Visits.ToList(), Visit = visit, Barbers = _context.Barbers.ToList() }); }
public IActionResult Create(VisitsViewModel model) { if (ModelState.IsValid) { var visit = new Visit { FirstName = model.Visit.FirstName, LastName = model.Visit.LastName, BarberId = model.Visit.BarberId, }; visit.Barber = _context.Barbers.SingleOrDefault(x => x.BarberId == model.Visit.BarberId); var currentVisits = _context.Visits; var barbersVisitCount = currentVisits.Where(x => x.BarberId != null).GroupBy(g => g.BarberId) .ToDictionary(gx => gx.Key, gx => gx.ToList()); int activeVisitors = currentVisits.Count() - currentVisits.Where(x => x.isCheckedOff).Count(); var shop = _context.Shops.First(); if (visit.Barber != null) { var bvc = 0; if (!currentVisits.Any(x => x.BarberId == model.Visit.BarberId)) { bvc = 0; } else { bvc = barbersVisitCount[visit.BarberId].Count; } visit.WaitTime = _waitcalc .CalculateWaitPerVisit(activeVisitors, shop.CutTimeAverage, visit.Barber.AvgCutTime, bvc); } else { visit.WaitTime = (shop.CutTimeAverage * activeVisitors); } visit.SignInTime = DateTime.Now; _context.Visits.Add(visit); _context.SaveChanges(); return RedirectToAction("Index"); } return View("Index"); }