Exemplo n.º 1
0
        /// <summary>
        /// Handles the specified <see cref="AssignUserToProject"/> command.
        /// </summary>
        /// <param name="command">The command.</param>
        public void Handle(AssignUserToProject command)
        {
            if (command.Id == null)
            {
                throw new ArgumentNullException("ProjectId");
            }

            if (command.UserId == null)
            {
                throw new ArgumentNullException("UserId");
            }

            var user = _context.Users.Find(command.UserId.Id);

            if (user == null)
            {
                throw new ArgumentException(string.Format("User with id {0} does not exist.", command.UserId.Id));
            }

            var role = _context.ProjectRoles.Find(command.RoleId);

            if (role == null)
            {
                throw new ArgumentException(string.Format("Project role with id {0} does not exist.", command.UserId.Id));
            }

            var project = _projectRepository.Get(command.Id);

            project.AssignUser(command.UserId, command.RoleId, command.FTE, command.StartDate, command.EndDate);

            _projectRepository.Save(project);
        }
        public async Task <IActionResult> AssignMember([FromRoute] Guid projectId, [FromBody] AssignUserToProject command)
        {
            command.ProjectId = projectId;
            await commandQueryBus.SendAsync(command);

            return(Ok());
        }
        public async Task HandleAsync(AssignUserToProject command)
        {
            var project = await projectRepository.GetAsync(command.ProjectId);

            var projectVersion = project.Version;

            project.AssignUser(userRepository, command);
            await projectRepository.Update(project, projectVersion);
        }
Exemplo n.º 4
0
        public ActionResult Create(CreateProjectViewModel model,
                                   [Bind(Prefix = "CreateProjectTeamViewModel.ProjectTeamMemberViewModel")] ProjectTeamMemberViewModel[] teamMembers,
                                   [Bind(Prefix = "ProjectTeamMemberViewModel.ProjectTeamMemberActivityViewModel")] ProjectTeamMemberActivityViewModel[] teamMembersActivity)
        {
            model.ProjectTeam.TeamMembers = teamMembers ?? Enumerable.Empty <ProjectTeamMemberViewModel>();
            teamMembersActivity           = teamMembersActivity ?? new ProjectTeamMemberActivityViewModel[0];

            ICommand command;

            if (ModelState.IsValid)
            {
                var newProjectId = Guid.NewGuid();
                command = new CreateProject(
                    new ProjectId(newProjectId),
                    model.ProjectMainInfo.Name,
                    model.ProjectMainInfo.Description,
                    model.ProjectMainInfo.Orderer,
                    model.ProjectMainInfo.RecievingOrganization,
                    model.ProjectMainInfo.Mandatory,
                    model.ProjectMainInfo.StartDate,
                    model.ProjectMainInfo.EndDate,
                    model.ProjectMainInfo.DepartmentId,
                    model.ProjectMainInfo.PpsClassificationId,
                    new UserId(model.ProjectMainInfo.OwnerId),
                    new UserId(model.ProjectMainInfo.ManagerId));
                _commandSender.Send(command);

                //TODO: create commands for information from 2, 3, 4 steps.

                foreach (var teamMember in model.ProjectTeam.TeamMembers)
                {
                    teamMember.TeamMemberActivities =
                        teamMembersActivity.Where(x => x.UserId == teamMember.UserId).ToArray();

                    foreach (var activity in teamMember.TeamMemberActivities)
                    {
                        //TODO: Remove when RoleId field added in the UI.
                        var roleId = Guid.Parse("7eb33e5e-1bd6-e311-be7f-94de8066e6a1");
                        command = new AssignUserToProject(new ProjectId(newProjectId), new UserId(teamMember.UserId), roleId, activity.FTE, activity.StartDate, activity.EndDate);
                        _commandSender.Send(command);
                    }
                }

                return(RedirectToAction("Index"));
            }
            return(View(this.PrepareCreateProjectModel(model)));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> AssignUserToProject([FromBody] AssignUserToProject model)
        {
            if (model.UserId == 0)
            {
                model.UserId = Convert.ToInt32(HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier));
            }

            if (!HttpContext.User.IsInRole("admin") && !_getAccessUser.UserCookieIs(HttpContext, model.UserId.ToString()))
            {
                return(StatusCode(403, "Access Denied !"));
            }

            int userInvitationId = await _projectGateway.CheckUserInvitation(model.UserId, model.ProjectId);

            if (userInvitationId == 0)
            {
                return(BadRequest("Invitation not exists"));
            }

            Result resultAssignProject = await _projectGateway.AssignUserToProject(model.UserId, model.ProjectId, (int)EnumProjectAccessRight.Voyeur);

            if (resultAssignProject.ErrorMessage == "The project is already assigned to user")
            {
                return(BadRequest(resultAssignProject.ErrorMessage));
            }

            Result resultDeleteInvitationProject = await _projectGateway.DeleteUserInvitationInProjectByUserInvitedAndProject(model.UserId, model.ProjectId);

            string nameProject = await _getAccessUser.GetProjectName(model.ProjectId);

            string userName = await _getAccessUser.GetUserName(model.UserId);

            IEnumerable <string> userInProject = await _projectGateway.GetIdUserInProject(model.ProjectId);

            await _projectHub.ReceiveUserJoinedProject(userInProject.ToList(), Convert.ToString(model.ProjectId), userName, nameProject);

            return(Ok("Assign project success"));
        }