public async Task <ProjectManagement> UpdateEmployeesInProject(EmployeesInProjectDto employeesInProjectDto) { var employeeDetails = await _projectManagementRepository.FindProjectEmployee(employeesInProjectDto.ProjectId, employeesInProjectDto.EmployeeDetails.EmployeeId); //var employeeUpdatedDetails = employeeDetails; if (employeeDetails != null) { //employeeUpdatedDetails = _mapper.Map<ProjectManagement>(employeesInProjectDto.EmployeeDetail); //employeeUpdatedDetails.ProjectId = employeesInProjectDto.ProjectId; //employeeUpdatedDetails.ProjectManagementId = employeeDetails.ProjectManagementId; //employeeDetails = employeeUpdatedDetails; _mapper.Map(employeesInProjectDto.EmployeeDetails, employeeDetails); employeeDetails.ProjectId = employeesInProjectDto.ProjectId; //employeeDetails.RequirementId = (Guid)employeesInProjectDto.RequirementId; if (employeeDetails.IsManager && !employeesInProjectDto.EmployeeDetails.IsManager) { await RemoveProjectManagerForEmployee(employeeDetails.EmployeeId); } await _projectManagementRepository.SaveChangesAsync(); return(employeeDetails); } throw new Exception("Employee does not exists."); }
/// <summary> /// this method will add employee to the project /// </summary> /// <param name="addEmployeeToProject">EmployeesInProjectDto object</param> /// <returns>returns the employee added to the project</returns> public async Task <EmployeesInProjectDto> AddEmployeeToProject(EmployeesInProjectDto addEmployeeToProject) { var employeeExists = await _projectManagementRepository.FindProjectEmployee(addEmployeeToProject.ProjectId, addEmployeeToProject.EmployeeDetails.EmployeeId); var requirement = await _projectRequirementsRepository.GetRequirement((Guid)addEmployeeToProject.RequirementId); if (employeeExists == null && requirement != null) { var employee = _mapper.Map <ProjectManagement>(addEmployeeToProject.EmployeeDetails); employee.ProjectId = addEmployeeToProject.ProjectId; employee.RequirementId = (Guid)addEmployeeToProject.RequirementId; requirement.ResourceAllocated = addEmployeeToProject.EmployeeDetails.EmployeeId; requirement.LastModifiedAt = DateTime.UtcNow; //requirement.ModifiedBy = id; TODO requirement.IsFullfilled = true; using (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { _projectManagementRepository.AddEmployeeToProject(employee); await _projectManagementRepository.SaveChangesAsync(); await _projectRequirementsRepository.SaveChangesAsync(); ts.Complete(); } return(addEmployeeToProject); } else if (employeeExists.IsDeleted == true && requirement != null) { employeeExists.IsDeleted = false; employeeExists.ProjectManager = addEmployeeToProject.EmployeeDetails.ProjectManager; employeeExists.ProjectReportingManager = addEmployeeToProject.EmployeeDetails.ProjectReportingManager; employeeExists.Role = addEmployeeToProject.EmployeeDetails.Role; employeeExists.PrimaryStatus = addEmployeeToProject.EmployeeDetails.PrimaryStatus; employeeExists.SecondaryStatus = addEmployeeToProject.EmployeeDetails.SecondaryStatus; employeeExists.AllocationStartDate = addEmployeeToProject.EmployeeDetails.AllocationStartDate; employeeExists.AllocationEndDate = addEmployeeToProject.EmployeeDetails.AllocationEndDate; employeeExists.IsManager = addEmployeeToProject.EmployeeDetails.IsManager; employeeExists.RequirementId = (Guid)addEmployeeToProject.RequirementId; requirement.ResourceAllocated = addEmployeeToProject.EmployeeDetails.EmployeeId; requirement.LastModifiedAt = DateTime.UtcNow; //requirement.ModifiedBy = id; TODO requirement.IsFullfilled = true; using (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { await _projectManagementRepository.SaveChangesAsync(); await _projectRequirementsRepository.SaveChangesAsync(); ts.Complete(); } return(addEmployeeToProject); } throw new Exception("Employee already exists !"); }
public async Task <ActionResult <EmployeesInProjectDto> > AddEmployeeToProject([FromBody] EmployeesInProjectDto addEmployeeToProject) { try { var result = await _projectManagementService.AddEmployeeToProject(addEmployeeToProject); return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <ActionResult <List <GetEmployeeDetailDto> > > UpdateEmployeesInProject([FromBody] EmployeesInProjectDto employeesInProject) { var updatedListOfEmployees = await _projectManagementService.UpdateEmployeesInProject(employeesInProject); return(Ok(updatedListOfEmployees)); }