public IActionResult ExecuteCageAssign(CageAssignViewModel model) { Mouse mouse = _context.Mouse.Single(m => m.MouseID == model.MouseID); mouse.MouseCages = _context.MouseCage.Where(mc => mc.MouseID == mouse.MouseID).ToList(); if (mouse.MouseCages != null) { if (mouse.MouseCages.Any(mc => mc.EndDate == null)) { Cage currentCage = _context.Cage.SingleOrDefault(c => c.CageID == _context.MouseCage.Single(mc => mc.EndDate == null && mc.MouseID == mouse.MouseID).CageID); if (currentCage != null) { MouseCage oldMouseCage = _context.MouseCage.Single(mc => mc.MouseID == model.MouseID && mc.CageID == currentCage.CageID && mc.EndDate == null); oldMouseCage.EndDate = model.Date; _context.MouseCage.Update(oldMouseCage); _context.SaveChanges(); } } } _context.MouseCage.Add( new MouseCage { CageID = model.NewCageID, MouseID = model.MouseID, StartDate = model.Date } ); _context.SaveChanges(); return(RedirectToAction("Details", "Lines", new { id = mouse.LineID })); }
public IActionResult CageAssign(int mouseID) { Mouse mouse = _context.Mouse.Single(m => m.MouseID == mouseID); if (mouse.PK1ID != null) { mouse.PK1 = _context.GeneExpression.Single(g => g.GeneExpressionID == mouse.PK1ID); } if (mouse.PK2ID != null) { mouse.PK2 = _context.GeneExpression.Single(g => g.GeneExpressionID == mouse.PK2ID); } if (mouse.MomID != null) { mouse.Mom = _context.Mouse.Single(m => m.MouseID == mouse.MomID); } if (mouse.DadID != null) { mouse.Dad = _context.Mouse.Single(m => m.MouseID == mouse.DadID); } Cage currentCage = _context.Cage.SingleOrDefault(c => c.CageID == _context.MouseCage.SingleOrDefault(mc => mc.MouseID == mouseID && mc.EndDate == null).CageID); List <Cage> usedStandardCages = ( from c in _context.Cage join mc in _context.MouseCage on c.CageID equals mc.CageID where c.Breeding == false && mc.EndDate == null select c ).Distinct().ToList(); List <Cage> usedStandardInLine = ( from c in usedStandardCages join mc in _context.MouseCage on c.CageID equals mc.CageID join m in _context.Mouse on mc.MouseID equals m.MouseID where mc.EndDate == null && c.Breeding == false && m.LineID == mouse.LineID select c).Distinct().ToList(); List <Cage> usedBreederCages = ( from c in _context.Cage from mc in _context.MouseCage where c.Breeding == true && c.CageID == mc.CageID && mc.EndDate == null select c ).Distinct().ToList(); List <Cage> usedBreedingInLine = ( from c in usedStandardCages join mc in _context.MouseCage on c.CageID equals mc.CageID join m in _context.Mouse on mc.MouseID equals m.MouseID where mc.EndDate == null && c.Breeding == true && m.LineID == mouse.LineID select c).Distinct().ToList(); List <Cage> allBreederCages = _context.Cage.Where(c => c.Breeding == true).ToList(); List <Cage> allStandardCages = _context.Cage.Where(c => c.Breeding == false).ToList(); List <Cage> notUsedBreederCages = allBreederCages.Except(usedBreederCages).ToList(); List <Cage> notUsedStandardCages = allStandardCages.Except(usedStandardCages).ToList(); CageAssignViewModel model = new CageAssignViewModel { Mouse = mouse, UsedBreederCages = usedBreederCages, UsedStandardCages = usedStandardCages, NotUsedBreederCages = notUsedBreederCages, NotUsedStandardCages = notUsedStandardCages, CurrentCage = currentCage }; return(View(model)); }