private static async Task InitializeXRefMemberProjectRoles() { var allMembersList = await GetAllMembersList(); var projectsList = await GetProjectList(); var projectRolesList = await GetProjectRolesList(); var memberProjectRoleList = new List <MemberProjectRole>(); var memberProjectRoles = Configuration.GetSection("XRefMemberProjectRoles").GetChildren(); foreach (var memberProjectRole in memberProjectRoles) { var mprUserByName = allMembersList.FirstOrDefault(x => x.User.UserName == memberProjectRole["UserName"]); var mprProjectByName = projectsList.FirstOrDefault(x => x.Name == memberProjectRole["ProjectName"]); var mprProjectRoleByName = projectRolesList.FirstOrDefault(x => x.Name == memberProjectRole["ProjectRoleName"]); if (mprUserByName != null && mprProjectByName != null && mprProjectRoleByName != null) { var mpr = new MemberProjectRole { MemberId = mprUserByName.Id, ProjectId = mprProjectByName.Id, RoleId = mprProjectRoleByName.Id }; memberProjectRoleList.Add(mpr); UpdateIsManagerRoleForMember(ProjectRoleManagerId, memberProjectRoleList, mprUserByName, mprProjectRoleByName); } } await InsertListOfEntitiesToDbAsync(DbContext.MemberProjectRoles, memberProjectRoleList); }
public static MemberProjectRoleView GetViewWithGlobalProjects(this MemberProjectRole memberProjRole, IMapper _mapper) { var memberProjRoleView = memberProjRole.GetView(_mapper); memberProjRoleView.Id = 0; return(memberProjRoleView); }
public static MemberProjectRoleView GetView(this MemberProjectRole memberProjRole, IMapper _mapper, string urlIcon) { var memberProjRoleView = _mapper.Map <MemberProjectRole, MemberProjectRoleView>(memberProjRole); memberProjRoleView.UrlIcon = urlIcon; return(memberProjRoleView); }
public MemberProjectRoleView Create(MemberProjectRoleView memberProjectRoleView) { var currentMember = Uow.MemberRepository.LinkedCacheGetByName(ImpersonatedUserName); if (currentMember == null) { throw new CoralTimeEntityNotFoundException($"Member with userName {ImpersonatedUserName} not found."); } if (!currentMember.User.IsActive) { throw new CoralTimeEntityNotFoundException($"Member with userName {ImpersonatedUserName} is not active."); } var memberProjectRole = Uow.MemberProjectRoleRepository.LinkedCacheGetList() .FirstOrDefault(r => r.ProjectId == memberProjectRoleView.ProjectId && r.MemberId == memberProjectRoleView.MemberId); if (memberProjectRole != null) { throw new CoralTimeAlreadyExistsException($"Project role with projectId = {memberProjectRoleView.ProjectId} and memberId = {memberProjectRoleView.MemberId} already exist"); } //check if current user is manager on selected project and is trying to assign team member var hasAccessAsManager = HasAccessAsManager(currentMember.Id, memberProjectRoleView); if (currentMember.User.IsAdmin || hasAccessAsManager) { memberProjectRole = new MemberProjectRole { MemberId = memberProjectRoleView.MemberId, ProjectId = memberProjectRoleView.ProjectId, RoleId = memberProjectRoleView.RoleId }; Uow.MemberProjectRoleRepository.Insert(memberProjectRole); Uow.Save(); Uow.MemberProjectRoleRepository.LinkedCacheClear(); UpdateIsManager(memberProjectRoleView.MemberId); var memberProjectRoleByIdResult = Uow.MemberProjectRoleRepository.LinkedCacheGetById(memberProjectRole.Id); var memberProjectRoleViewResult = memberProjectRoleByIdResult.GetView(Mapper, _avatarService.GetUrlIcon(memberProjectRole.MemberId)); return(memberProjectRoleViewResult); } throw new CoralTimeForbiddenException($"Member with id = {currentMember.Id} is not allowed to create MemberProjectRole on project with id = {memberProjectRoleView.ProjectId} and role with id = {memberProjectRoleView.RoleId}"); }
public static MemberProjectRoleView GetView(this MemberProjectRole memberProjRole, IMapper _mapper) { var memberProjRoleView = _mapper.Map <MemberProjectRole, MemberProjectRoleView>(memberProjRole); return(memberProjRoleView); }