public Project CreateProject(User owner, string projectName, string description, DateTime deadline, Role role) { Project project = new Project( projectName, description, deadline); ProjectUserReq req = new ProjectUserReq( "Automatic assignement", owner, role, project, true); req.Sender = owner; project.AddUserToProject(req); return(project); }
public CreateResponse <ProjectUserRequestDTO> Create(Guid id, CreateProjectUserReqRequest req) { var res = new CreateResponse <ProjectUserRequestDTO>(); var role = _roleRepository.FindById(req.RoleId); if (role == null) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWith("Role not found.")); } var project = _projectRepository.FindById(req.ProjectId); if (project == null) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWith("Project not found.")); } var sender = _userRepository.FindById(id); if (sender == null) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWith("Invalid sender.")); } var userAssigned = _userRepository.FindById(req.UserAssignedId); if (userAssigned == null) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWith("Assigned user not found.")); } var projectManagers = project.ProjectUsersReq .Where(pur => pur.Accepted == true && pur.Role.RoleName == "PROJECT_MANAGER").ToList(); if (projectManagers.Find(pur => pur.UserAssigned.Id == id) == null) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWith("User must be project manager to send requests.")); } if (project.ProjectUsersReq.ToList().Find(pur => pur.UserAssigned.Id == req.UserAssignedId) != null) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWith("User has alredy received an invitation.")); } var projectUserReq = new ProjectUserReq() { Id = Guid.NewGuid(), Message = req.Message, UserAssigned = userAssigned, Sender = sender, Role = role, Project = project, Accepted = false, RequestSent = DateTime.Now }; projectUserReq.Validate(); if (projectUserReq.GetBrokenRules().Count > 0) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWithMultiple(projectUserReq.GetBrokenRules())); } _projectUserReqRepository.Save(projectUserReq); try { _uow.Commit(); } catch (Exception ex) { return((CreateResponse <ProjectUserRequestDTO>) res.ReturnErrorResponseWith(ex.Message)); } res.Success = true; return(res); }