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