コード例 #1
0
ファイル: HomeController.cs プロジェクト: hz6xdt/draw-names
        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));
        }
コード例 #2
0
ファイル: HomeController.cs プロジェクト: hz6xdt/draw-names
        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
            }));
        }
コード例 #3
0
ファイル: HomeController.cs プロジェクト: hz6xdt/draw-names
        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));
        }