public async Task <ActionResult> View(int id) { Drawing drawing = db.Drawings.Where(d => d.Id == id).SingleOrDefault(); if (drawing != null) { var currentUser = await userManager.GetUserAsync(HttpContext.User); DrawingUsers drawingUser = db.DrawingUsers.Where(du => du.DrawingId == id && du.UserId == currentUser.Id).SingleOrDefault(); if (drawingUser != null) { var drawnUser = await userManager.FindByIdAsync(drawingUser.DrawnUserId); if (drawnUser != null) { return(View("ViewDrawnName", drawnUser.UserName)); } } } List <DrawingListModel> drawingsList = await GetDrawings(); return(View("Index", drawingsList)); }
public async Task <IActionResult> Edit(int id) { Drawing drawing = await db.Drawings.FindAsync(id); List <AppUser> members = new List <AppUser>(); List <AppUser> nonMembers = new List <AppUser>(); foreach (AppUser user in userManager.Users) { DrawingUsers drawingUser = db.DrawingUsers.Where(du => du.DrawingId == id && du.UserId == user.Id).SingleOrDefault(); List <AppUser> list = drawingUser == null ? nonMembers : members; list.Add(user); } return(View(new DrawingEditModel { Drawing = drawing, Members = members, NonMembers = nonMembers })); }
public async Task <IActionResult> DrawNames(int id) { if (ModelState.IsValid) { DrawingListModel drawing = await GetDrawing(id); List <AppUser> drawingUsers = new List <AppUser>(); Dictionary <string, string> drawnNames = new Dictionary <string, string>(); foreach (string name in drawing.Names) { AppUser user = await userManager.FindByNameAsync(name); if (user != null) { drawingUsers.Add(user); } } Random random = new Random(); bool sameName = false; do { sameName = false; List <AppUser> cupOfNames = new List <AppUser>(drawingUsers); foreach (AppUser user in drawingUsers) { int index = random.Next(cupOfNames.Count); AppUser drawnName = cupOfNames[index]; if (drawnName == user) { sameName = true; drawnNames.Clear(); break; } else { drawnNames.Add(user.Id, drawnName.Id); } } } while (sameName); foreach (string key in drawnNames.Keys) { DrawingUsers drawingUser = db.DrawingUsers.Where(du => du.DrawingId == id && du.UserId == key).SingleOrDefault(); if (drawingUser != null) { drawingUser.DrawnUserId = drawnNames[key]; } } drawing.Drawing.Drawn = true; await db.SaveChangesAsync(); } List <DrawingListModel> drawingsList = await GetDrawings(); return(View("Index", drawingsList)); }