예제 #1
0
        public MemberCommandTests(ITestOutputHelper output)
        {
            _output = output;

            var projects = new List <ProjectDto>
            {
                new ProjectDto
                {
                    Id   = 1,
                    Name = "Project 1"
                }
            };

            var projectMembers = new List <ProjectMemberDto>
            {
                new ProjectMemberDto
                {
                    Id                  = 1,
                    UserId              = 1,
                    ProjectId           = 1,
                    ProjectMemberRoleId = 1
                }
            };

            var users = new List <UserDto>
            {
                new UserDto
                {
                    Id       = "1",
                    UserName = "******",
                    Email    = "*****@*****.**"
                }
            };

            _console = new TestConsole(output);

            _projectService = new Mock <IProjectService>();
            _projectService.Setup(p => p.GetProjectByName(It.IsAny <string>())).ReturnsAsync((string name) => projects.FirstOrDefault(p => p.Name == name));

            _projectMemberService = new Mock <IProjectMemberService>();
            _projectMemberService.Setup(p => p.CreateProjectMember(It.IsAny <int>(), It.IsAny <NewProjectMemberDto>())).ReturnsAsync((int projectId, NewProjectMemberDto dto) =>
            {
                var newProjectMember = new ProjectMemberDto
                {
                    Id                  = 2,
                    ProjectId           = projectId,
                    UserId              = dto.UserId,
                    ProjectMemberRoleId = dto.ProjectMemberRoleId
                };
                projectMembers.Add(newProjectMember);
                return(newProjectMember);
            });
            _projectMemberService.Setup(p => p.GetProjectMembers(It.IsAny <int>(), It.IsAny <int>())).ReturnsAsync(projectMembers);
            _projectMemberService.Setup(p => p.GetProjectMemberByUserId(It.IsAny <int>(), It.IsAny <int>())).ReturnsAsync((int projectId, int userId) =>
                                                                                                                          projectMembers.FirstOrDefault(p => p.ProjectId == projectId && p.UserId == userId));

            _accountService = new Mock <IAccountService>();
            _accountService.Setup(s => s.GetUserByUserName(It.IsAny <string>())).ReturnsAsync((string userName) => users.FirstOrDefault(u => u.UserName == userName));
        }
예제 #2
0
        private ProjectMemberDto MakeProjectMemberDto(User u, AppUserRole role)
        {
            ProjectMemberDto dto = _mapper.Map <User, ProjectMemberDto>(u);

            dto.Role = _mapper.Map <AppUserRole, AppUserRoleDto>(role);

            return(dto);
        }
예제 #3
0
        public async Task AddMember(ProjectMemberDto dto)
        {
            Project project = await m_projectRepository.GetSingle(dto.ProjectId);

            ProjectMember member = m_mapper.Map <ProjectMember>(dto);

            project.Team.Add(member);
            await m_projectRepository.Update(project);
        }
예제 #4
0
        public void AddMemberAsync_CallsAddMemberAsync()
        {
            var member = new ProjectMemberDto()
            {
                Role = new AppUserRoleDto {
                    Id = 1
                }
            };
            var res = _memberController.AddMemberAsync(It.IsAny <int>(), member).Result;

            _blMock.Verify(b => b.AddMemberAsync(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <string>(), member.Role));
        }
예제 #5
0
 public ProjectTaskDto(ProjectTaskRecord record, UserRecord assignedTo)
 {
     Id          = record.Id;
     ProjectId   = record.ProjectId;
     Label       = record.Label;
     Description = record.Description;
     Completed   = record.Completed;
     AssignedTo  = new ProjectMemberDto
     {
         DisplayName = assignedTo.DisplayName,
         Email       = assignedTo.Email
     };
 }
예제 #6
0
        public async Task <int> UpdateProjectMemberAsync(ProjectMemberDto dto)
        {
            var sql = " UPDATE [dbo].[Member] " +
                      "  SET [EmpId] = @EmpId " +
                      "     ,[ProjectPositionId] = @ProjectPositionId " +
                      "  WHERE  Member.Id = @Id";

            var x = await Connection.ExecuteAsync(sql, new
            {
                Id                = dto.Id,
                EmpId             = dto.EmpId,
                ProjectPositionId = dto.ProjectPositionId,
            }, Transaction);

            return(x);
        }
예제 #7
0
        public async Task <int> InsertProjectMemberAsync(ProjectMemberDto dto)
        {
            var sql = " INSERT INTO [dbo].[Member] " +
                      " ([ProjectId] " +
                      " ,[EmpId] " +
                      " ,[ProjectPositionId]) " +
                      " VALUES " +
                      " (@ProjectId " +
                      " ,@EmpId" +
                      " ,@ProjectPositionId )";

            int count = await Connection.ExecuteAsync(sql, new
            {
                ProjectId         = dto.ProjectId,
                EmpId             = dto.EmpId,
                ProjectPositionId = dto.ProjectPositionId
            }, Transaction);

            return(count);
        }
예제 #8
0
        public async Task <ProjectMemberDto> GetMemberOfProjectAsync(string senderUserId, int projectId, string userId)
        {
            AppUserRole senderRole = await GetRoleIfMember(senderUserId, projectId);

            if (!senderRole.CanViewListOfMembers())
            {
                throw new ForbiddenResponseException("You cannot get list of members of this project");
            }

            AppUserRole role = await _puRepo.GetRoleOfMember(userId, projectId);

            if (!role.IsNone())
            {
                User u = await _userRepo.GetByIdAsync(userId);

                ProjectMemberDto dto = MakeProjectMemberDto(u, role);
                return(dto);
            }
            else
            {
                throw new NotFoundResponseException($"No member with id {userId} in project with id {projectId}");
            }
        }
예제 #9
0
        public async Task <IEnumerable <ProjectMemberDto> > GetAllMembersOfProjectAsync(string senderUserId, int projectId)
        {
            AppUserRole senderRole = await GetRoleIfMember(senderUserId, projectId);

            if (!senderRole.CanViewListOfMembers())
            {
                throw new ForbiddenResponseException("You cannot get members of this project");
            }

            var members = await _puRepo.GetMembersOfProject(projectId);

            var res = new List <ProjectMemberDto>();

            foreach (User u in members)
            {
                AppUserRole role = await _puRepo.GetRoleOfMember(u.Id, projectId);

                ProjectMemberDto dto = MakeProjectMemberDto(u, role);
                res.Add(dto);
            }

            return(res);
        }