public async Task <object> Clone(int projectId) { try { var entity = await _projectRepository.FindByIdAsync(projectId); var project = await CreateForClone(entity); if (entity == null) { return(false); } var manager = await _managerRepository.FindAll().Where(_ => _.ProjectID == projectId).ToListAsync(); manager.ForEach(item => { item.ProjectID = project.ID; }); var member = await _teamMemberRepository.FindAll().Where(_ => _.ProjectID == projectId).ToListAsync(); member.ForEach(item => { item.ProjectID = project.ID; }); await _managerRepository.AddMultipleAsync(manager); await _teamMemberRepository.AddMultipleAsync(member); var tasksForClone = await _taskRepository.FindAll().Where(_ => _.ProjectID == projectId).ToListAsync(); await CloneTask(tasksForClone, project.ID); await _unitOfWork.Commit(); return(true); } catch (Exception) { return(false); } }