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