Пример #1
0
        public async Task <IActionResult> BugDetails(BugDetailsAndProjectNameAndId updatedBug)
        {
            var currentUserId = userManager.GetUserId(HttpContext.User);
            var currentUser   = await userManager.FindByIdAsync(currentUserId);

            var claims = await userManager.GetClaimsAsync(currentUser);

            GlobalVar.globalCurrentUserClaims = claims.ToList();

            var UserIsMangerLevel = UserClaimsLevel.IsManager(claims.ToList(), updatedBug.Bug.AssociatedProject);

            if (UserIsMangerLevel && updatedBug.Bug.AssigneeUserId != null)
            {
                var assignedUser = await userManager.FindByIdAsync(updatedBug.Bug.AssigneeUserId);

                updatedBug.Bug.AssingeeUserName = assignedUser.UserName;
            }

            List <ScreenShots> uniqueFileNames = new List <ScreenShots>();

            if (GlobalVar.InitialScreenShots == true)
            {
                uniqueFileNames = await UploadScreenShotsToStorage(updatedBug.Bug.BugId);
            }

            GlobalVar.InitialScreenShots = false;

            var originalBug = _bugRepository.GetBug(updatedBug.Bug.BugId);

            if (updatedBug.Bug.Title == null)
            {
                updatedBug.Bug.Title = originalBug.Title;
            }

            var UserIsDeveloperLevel = UserClaimsLevel.IsDeveloper(claims.ToList(), updatedBug.Bug.AssociatedProject);

            if (UserIsDeveloperLevel)
            {
                foreach (var property in originalBug.GetType().GetProperties())
                {
                    if (property.Name == "AssigneeUserId")
                    {
                        continue;
                    }
                    var oldValue = "";
                    var newValue = "";

                    if (property.GetValue(updatedBug.Bug) != null)
                    {
                        newValue = property.GetValue(updatedBug.Bug).ToString();
                    }

                    if (property.GetValue(originalBug) != null)
                    {
                        oldValue = property.GetValue(originalBug).ToString();
                    }

                    if (oldValue != newValue)
                    {
                        var changes = new BugHistory
                        {
                            AssociatedBugId = originalBug.BugId,
                            Property        = property.Name,
                            OldValue        = oldValue,
                            NewValue        = newValue,
                            DateChanged     = DateTime.Now
                        };
                        _bugRepository.AddHistoryEntry(changes);
                    }
                }
            }



            var bug = new BugAttributes();

            if (UserIsDeveloperLevel)
            {
                updatedBug.Bug.ScreenShots = uniqueFileNames;
                updatedBug.Bug.ScreenShots.AddRange(_bugRepository.ScreenShots(updatedBug.Bug.BugId));
                bug = _bugRepository.Update(updatedBug.Bug);
            }
            else
            {
                //bug = _bugRepository.GetBug(updatedBug.Bug.BugId);
                bug             = originalBug;
                bug.ScreenShots = uniqueFileNames;
                bug.ScreenShots.AddRange(_bugRepository.ScreenShots(updatedBug.Bug.BugId));
            }
            var project     = _projectRepository.GetProject(bug.AssociatedProject);
            var projectName = project.ProjectName;

            bug.Comments = _bugRepository.Comments(bug.BugId);
            var bugHistory = _bugRepository.GetBugHistories(bug.BugId);

            var users        = new List <IdentityUser>();
            var projectUsers = new List <string>();

            projectUsers.Add(project.OwnerId);
            if (project.UsersAssigned != null)
            {
                projectUsers.AddRange(project.UsersAssigned.Split(" ").ToList());
            }

            foreach (var userId in projectUsers)
            {
                var user = await userManager.FindByIdAsync(userId);

                if (user != null && !users.Contains(user))
                {
                    users.Add(user);
                }
            }

            var viewModel = new BugDetailsAndProjectNameAndId()
            {
                Bug         = bug,
                ProjectName = projectName,
                ProjectId   = bug.AssociatedProject,
                Updated     = 1,
                //Src = new List<ScreenShots>(),
                Src          = bug.ScreenShots,
                bugHistories = bugHistory,
                ProjectUsers = users
            };

            return(View(viewModel));
        }
Пример #2
0
        //[Authorize(Policy = "UserPolicy")]
        public async Task <IActionResult> BugDetails(int bugId)
        {
            var bug = _bugRepository.GetBug(bugId);

            GlobalVar.ProjectId = bug.AssociatedProject;

            var project = _projectRepository.GetProject(bug.AssociatedProject);

            GlobalVar.Project = project;

            var currentUserId = userManager.GetUserId(HttpContext.User);
            var currentUser   = await userManager.FindByIdAsync(currentUserId);

            var claims = await userManager.GetClaimsAsync(currentUser);

            GlobalVar.globalCurrentUserClaims = claims.ToList();


            var UserIsUserLevel = UserClaimsLevel.IsUser(claims.ToList(), bug.AssociatedProject);

            if (UserIsUserLevel == false)
            {
                return(RedirectToAction("AccessDenied", "Account"));
            }

            var screenShots = _bugRepository.ScreenShots(bugId);
            var projectName = project.ProjectName;
            var comments    = _bugRepository.Comments(bugId);
            var bugHistory  = _bugRepository.GetBugHistories(bugId);

            bug.Comments = comments;


            var users        = new List <IdentityUser>();
            var projectUsers = new List <string>();

            projectUsers.Add(project.OwnerId);
            if (project.UsersAssigned != null)
            {
                projectUsers.AddRange(project.UsersAssigned.Split(" ").ToList());
            }

            foreach (var userId in projectUsers)
            {
                var user = await userManager.FindByIdAsync(userId);

                if (user != null && !users.Contains(user))
                {
                    users.Add(user);
                }
            }

            var viewModel = new BugDetailsAndProjectNameAndId()
            {
                Bug             = bug,
                ProjectName     = projectName,
                ProjectId       = bug.AssociatedProject,
                Updated         = 0,
                Src             = screenShots,
                bugHistories    = bugHistory,
                ProjectUsers    = users,
                CurrentUserName = HttpContext.User.Identity.Name
            };

            //if (screenShots != null)
            //{
            //    foreach (var path in screenShots)
            //    {
            //      var imgPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "screenshots", path.FilePath);

            //        using (FileStream stream = new FileStream(imgPath, FileMode.Open, FileAccess.Read))
            //        {
            //            var image = Image.FromStream(stream);

            //            using (var mStream = new MemoryStream())
            //            {
            //                image.Save(mStream, ImageFormat.Jpeg);
            //                var byteData = mStream.ToArray();
            //                string imreBase64Data = Convert.ToBase64String(byteData);
            //                string imgDataURL = $"data:image/{path.FilePath.Split(".")[1]};base64,{imreBase64Data}";
            //                viewModel.Src.Add(new ScreenShots
            //                {
            //                    id = path.id,
            //                    AssociatedBug = path.AssociatedBug,
            //                    FilePath = imgDataURL
            //                });
            //            }
            //        }
            //    }
            //}
            return(View(viewModel));
        }