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 })); }
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 })); }
/// <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; }