public IActionResult AllMemberships(string projectid)
        {
            ViewBag.IsLogin = !string.IsNullOrEmpty(cache.GetString("user"));
            if (ViewBag.IsLogin)
            {
                ViewBag.User = JsonConvert.DeserializeObject <AccountModel>(cache.GetString("user"));
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }

            var nonMemberships     = new List <AccountModel>();
            var accountMemberships = new List <AccountModel>();
            var displayMemberships = new List <DisplayMembership>();

            var memberships = membershipSvc.GetAllProjectMember(projectid);
            var allAcc      = accountSvc.GetAllAccount();
            var ranks       = rankSvc.GetAllRank();

            foreach (var item in allAcc)
            {
                if (memberships.FirstOrDefault(it => it.Account_id == item._id && !it.RemoveDate.HasValue) != null)
                {
                    accountMemberships.Add(item);
                }
                else
                {
                    nonMemberships.Add(item);
                }
            }

            foreach (var item in accountMemberships)
            {
                var membership = memberships.FirstOrDefault(it => it.Account_id == item._id);
                var rankName   = ranks.FirstOrDefault(it => it._id == membership.ProjectRank_id).RankName;
                var model      = new DisplayMembership(membership)
                {
                    AccountName = $"{item.FirstName} {item.LastName}",
                    Email       = item.Email,
                    RankName    = rankName
                };

                displayMemberships.Add(model);
            }
            ;

            ViewBag.CurrentUser = ViewBag.User;

            ViewBag.RankMaster = serviceConfig.MasterRankId;
            return(View(new MembershipManagementModel
            {
                ProjectId = projectid,
                Memberships = displayMemberships,
                NonMemberships = nonMemberships
            }));
        }
        public IActionResult Index(string projectid)
        {
            ViewBag.IsLogin = !string.IsNullOrEmpty(cache.GetString("user"));
            if (ViewBag.IsLogin)
            {
                ViewBag.User = JsonConvert.DeserializeObject <AccountModel>(cache.GetString("user"));
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }

            var project     = projectSvc.GetProject(projectid);
            var allAcc      = accountSvc.GetAllAccount();
            var memberships = membershipSvc.GetAllProjectMember(projectid);
            var features    = featureSvc.GetFeatures(projectid);
            var ranks       = rankSvc.GetAllRank();

            var displayMemberships = new List <DisplayMembership>();

            foreach (var item in allAcc)
            {
                var membership = memberships.FirstOrDefault(it => it.Account_id == item._id);
                var rankName   = string.Empty;

                if (membership != null)
                {
                    var rank = ranks.FirstOrDefault(it => it._id == membership.ProjectRank_id);
                    rankName = rank != null ? rank.RankName : string.Empty;

                    var model = new DisplayMembership(membership)
                    {
                        AccountName = $"{item.FirstName} {item.LastName}",
                        Email       = item.Email,
                        RankName    = rankName
                    };

                    displayMemberships.Add(model);
                }
            }

            var displayFeatures = GetCurrentUserManagementFeatures(project._id);

            return(View(new ProjectDetailModel
            {
                Project = project,
                Memberships = displayMemberships,
                Features = displayFeatures
            }));
        }
Example #3
0
        public List <DisplayMembership> GetJoinedGroup(string userid)
        {
            using (var _gorillaCtx = new MSGorillaEntities())
            {
                List <DisplayMembership> result = _gorillaCtx.Database.SqlQuery <DisplayMembership>(
                    @"select g.GroupID, g.DisplayName, g.Description, g.IsOpen, m.MemberID, m.Role 
                        from membership m join [group] g on m.groupid = g.groupid where memberid={0} and role != 'pending'",
                    userid
                    ).ToList();
                UserProfile user = _gorillaCtx.UserProfiles.Find(userid);

                for (int i = 0; i < result.Count; i++)
                {
                    if (result[i].GroupID.Equals(user.DefaultGroup, StringComparison.InvariantCultureIgnoreCase))
                    {
                        DisplayMembership temp = result[i];
                        result[i] = result[0];
                        result[0] = temp;
                        break;
                    }
                }
                return(result);
            }
        }
        public IActionResult Detail(string projectid)
        {
            ViewBag.IsLogin = !string.IsNullOrEmpty(cache.GetString("user"));
            if (ViewBag.IsLogin)
            {
                ViewBag.User = JsonConvert.DeserializeObject <AccountModel>(cache.GetString("user"));
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }

            var accountMemberships = new List <AccountModel>();
            var displayMemberships = new List <DisplayMembership>();

            var project     = projectSvc.GetProject(projectid);
            var memberships = membershipSvc.GetAllProjectMember(projectid);
            var ranks       = rankSvc.GetAllRank();
            var allAcc      = accountSvc.GetAllAccount();

            foreach (var item in allAcc)
            {
                if (memberships.FirstOrDefault(it => it.Account_id == item._id && !it.RemoveDate.HasValue) != null)
                {
                    accountMemberships.Add(item);
                }
            }

            foreach (var item in accountMemberships)
            {
                var membership = memberships.FirstOrDefault(it => it.Account_id == item._id);
                if (membership != null)
                {
                    var allWorkHasBeenAssigned = 0;

                    var features = featureSvc.GetFeatures(projectid);
                    foreach (var feature in features)
                    {
                        var stories = storySvc.GetStories(feature._id);
                        foreach (var story in stories)
                        {
                            var tasks = taskSvc.GetTasks(story._id);
                            allWorkHasBeenAssigned += tasks.Where(it => it.BeAssignedMember_id == membership.Account_id).Count();
                        }
                        allWorkHasBeenAssigned += stories.Where(it => it.BeAssignedMember_id == membership.Account_id).Count();
                    }
                    allWorkHasBeenAssigned += features.Where(it => it.BeAssignedMember_id == membership.Account_id).Count();


                    var rankName = ranks.FirstOrDefault(it => it._id == membership.ProjectRank_id).RankName;
                    var model    = new DisplayMembership(membership)
                    {
                        AccountName            = $"{item.FirstName} {item.LastName}",
                        Email                  = item.Email,
                        RankName               = rankName,
                        AllWorkHasBeenAssigned = allWorkHasBeenAssigned
                    };

                    displayMemberships.Add(model);
                }
            }
            ;

            var currentUser = allAcc.FirstOrDefault(it => it._id == ViewBag.User._id);
            var member      = currentUser != null?memberships.FirstOrDefault(it => it.Account_id == currentUser._id && !it.RemoveDate.HasValue) : null;

            ViewBag.CanEditProject = member != null ? (ranks.FirstOrDefault(it => it._id == member.ProjectRank_id).CanEditProject) : false;
            ViewBag.CanEditMember  = member != null ? (ranks.FirstOrDefault(it => it._id == member.ProjectRank_id).CanManageMember) : false;

            return(View(new ProjectDetailModel
            {
                Project = project,
                Memberships = displayMemberships
            }));
        }
Example #5
0
        /// <summary>
        /// Prepare for display work information (e.g. CreateByUser, ProjectName, ...)
        /// </summary>
        /// <param name="projectid"></param>
        private void PrepareDataForDisplay(string projectid, WorkModel work = null)
        {
            var accountMemberships = new List <AccountModel>();
            var displayMemberships = new List <DisplayMembership>();

            var memberships = membershipSvc.GetAllProjectMember(projectid);
            var projectInfo = projectSvc.GetProject(projectid);
            var allAcc      = accountSvc.GetAllAccount();
            var ranks       = rankSvc.GetAllRank();
            var statuses    = statusSvc.GetAllStatus();

            foreach (var item in allAcc)
            {
                if (memberships.FirstOrDefault(it => it.Account_id == item._id && !it.RemoveDate.HasValue) != null)
                {
                    accountMemberships.Add(item);
                }
            }

            foreach (var item in accountMemberships)
            {
                var membership  = memberships.FirstOrDefault(it => it.Account_id == item._id);
                var CanBeAssign = membership != null?ranks.FirstOrDefault(it => it._id == membership.ProjectRank_id).BeAssigned || membership.BeAssigned : false;

                if (CanBeAssign)
                {
                    var allWorkHasBeenAssigned = 0;
                    var features = featureSvc.GetFeatures(projectid);
                    foreach (var feature in features)
                    {
                        var stories = storySvc.GetStories(feature._id);
                        foreach (var story in stories)
                        {
                            var tasks = taskSvc.GetTasks(story._id);
                            allWorkHasBeenAssigned += tasks.Where(it => it.BeAssignedMember_id == membership.Account_id).Count();
                        }
                        allWorkHasBeenAssigned += stories.Where(it => it.BeAssignedMember_id == membership.Account_id).Count();
                    }
                    allWorkHasBeenAssigned += features.Where(it => it.BeAssignedMember_id == membership.Account_id).Count();

                    var rankName        = ranks.FirstOrDefault(it => it._id == membership.ProjectRank_id).RankName;
                    var modelMembership = new DisplayMembership(membership);
                    modelMembership.AccountName            = $"{item.FirstName} {item.LastName}";
                    modelMembership.Email                  = item.Email;
                    modelMembership.RankName               = rankName;
                    modelMembership.AllWorkHasBeenAssigned = allWorkHasBeenAssigned;

                    displayMemberships.Add(modelMembership);
                }
            }
            ;

            var currentUser = JsonConvert.DeserializeObject <AccountModel>(cache.GetString("user"));

            // Check current user permission
            var member = currentUser != null?memberships.FirstOrDefault(it => it.Account_id == currentUser._id && !it.RemoveDate.HasValue) : null;

            if (work != null)
            {
                var createByAccount = allAcc.FirstOrDefault(it => it._id == work.CreateByMember_id);
                ViewBag.CreateByUser = new DisplayMembership {
                    Account_id = createByAccount._id, AccountName = $"{createByAccount.FirstName} {createByAccount.LastName}"
                };

                var assignedByAccount = allAcc.FirstOrDefault(it => it._id == work.BeAssignedMember_id);
                ViewBag.BeAssignedMemberName = assignedByAccount != null ? $"{assignedByAccount.FirstName} {assignedByAccount.LastName}" : string.Empty;

                ViewBag.CanEditOrUpdateThisWork = member != null ?
                                                  (work.BeAssignedMember_id == currentUser._id && (ranks.FirstOrDefault(it => it._id == member.ProjectRank_id).BeAssigned || member.BeAssigned)) ||
                                                  (ranks.FirstOrDefault(it => it._id == member.ProjectRank_id).CanEditAllWork) || member.CanEditAllWork : false;
                ViewBag.CanEditWorkInformation = member != null ? (ranks.FirstOrDefault(it => it._id == member.ProjectRank_id).CanEditAllWork) || member.CanEditAllWork : false;
                ViewBag.Statuses = !string.IsNullOrEmpty(work.BeAssignedMember_id) ? statuses : statuses.Where(it => !it.IsWorkDone);
            }
            else
            {
                ViewBag.CreateByUser = new DisplayMembership {
                    Account_id = currentUser._id, AccountName = $"{currentUser.FirstName} {currentUser.LastName}"
                };
                ViewBag.Statuses = statuses.Where(it => !it.IsWorkDone);
            }

            ViewBag.CanAssign   = member != null ? (ranks.FirstOrDefault(it => it._id == member.ProjectRank_id).CanAssign) || member.CanAssign : false;
            ViewBag.ProjectName = projectInfo.ProjectName;
            ViewBag.Memberships = displayMemberships;
        }