Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
        public async Task <IActionResult> DrawNamesReady(int id)
        {
            DrawingListModel drawingList = await GetDrawing(id);

            return(View(drawingList));
        }