protected DrawingListModel PrepareDrawingListModel(PagedList <FileVersion> list, int projectId) { DrawingListModel model = new DrawingListModel(); var project = new ProjectService().Get(e => e.Id == projectId); if (project == null) { throw new ArgumentNullException(nameof(project)); } model.ProjectIsFiled = project.IsProjectFiled(); model.Roles = CurrentCustomer.GetCurrentRoles(projectId); foreach (var node in list) { model.Drawings.Add(new DrawingListModel.DrawingModel() { Description = node.UploadDescription, DrawingCatalog = DictionaryService.DrawingCatalogDictionary.Find(e => e.Id == node.DrawingCatalog).DisplayName, DrawingId = node.Id, DrawingName = node.FileName, DrawingStatus = node.Status, FileSize = node.FileSize, DrawingVersion = node.VersionNo, UpdateTime = node.UpdateStateTime.ToString("yyyy-MM-dd HH:mm:ss"), Uri = node.BIMFileId, }); } return(model); }
private async Task <DrawingListModel> GetDrawing(int id) { Drawing drawing = await db.Drawings.FindAsync(id); List <DrawingUsers> drawingUsers = await db.DrawingUsers.Where(du => du.DrawingId == drawing.Id).ToListAsync <DrawingUsers>(); List <string> names = new List <string>(); foreach (DrawingUsers drawingUser in drawingUsers) { AppUser user = await userManager.FindByIdAsync(drawingUser.UserId); if (user != null) { names.Add(user.UserName); } } DrawingListModel drawingList = new DrawingListModel { Drawing = drawing, Names = names }; return(drawingList); }
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)); }
public async Task <IActionResult> DrawNamesReady(int id) { DrawingListModel drawingList = await GetDrawing(id); return(View(drawingList)); }