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 !");
        }
예제 #3
0
        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));
            }
        }
예제 #4
0
        public async Task <ActionResult <List <GetEmployeeDetailDto> > > UpdateEmployeesInProject([FromBody] EmployeesInProjectDto employeesInProject)
        {
            var updatedListOfEmployees = await _projectManagementService.UpdateEmployeesInProject(employeesInProject);

            return(Ok(updatedListOfEmployees));
        }