示例#1
0
        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);
        }
示例#4
0
        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);
        }