public void Save(ProjectDto model) { var project = repository.All() .FirstOrDefault(p => p.Name == model.Name); if (project != null && model.Id == 0) { throw new Exception(ErrorMessages.ObjectAlreadyAddedMessage); } var result = repository.FindOrCreate(model.Id); result.Name = model.Name; result.ProjectStatusId = (int)DTOs.ProjectStatus.NotStarted; result.StartDate = model.StartDate; result.EndDate = model.EndDate; result.Description = model.Description; var projectId = repository.Save(result); var listEup = new List <EmployeeUserProject>(); var employeeUserProjects = employeeUserProjectRepository .All() .Where(eup => eup.ProjectId == projectId) .ToList(); //model.Employees.Where(e => e.IsSelected) // .ToList() // .ForEach(e => // { // var employeeUserProject = new EmployeeUserProject() // { // EmployeeUserId = e.Id, // ProjectId = projectId // }; // listEup.Add(employeeUserProject); // }); model.EmployeeIds .ToList() .ForEach(id => { var employeeUserProject = new EmployeeUserProject() { EmployeeUserId = id, ProjectId = projectId }; listEup.Add(employeeUserProject); }); employeeUserProjects = listEup; result.EmployeeUserProjects = employeeUserProjects; repository.Save(result); }
public void GetCompanyProjects_ShouldReturn_AllProjects_WithActiveEmployeesCount() { var db = InitContext(); var projectService = InitService(db); var employeeUserProject1 = new EmployeeUserProject() { Id = 1, ProjectId = 1 }; var employeeUserProject2 = new EmployeeUserProject() { Id = 2, ProjectId = 2 }; var firstEmployee = new EmployeeUser() { Id = 1, FirstName = "First Employee", IsActive = true }; var secondEmployee = new EmployeeUser() { Id = 2, FirstName = "Second Employee", IsActive = false }; var thirdEmployee = new EmployeeUser() { Id = 3, FirstName = "Third Employee", IsActive = true }; var firstProject = new Project() { Id = 1, Name = "First Project" }; var secondProject = new Project() { Id = 2, Name = "Second Project" }; employeeUserProject1.EmployeeUser = firstEmployee; employeeUserProject2.EmployeeUser = secondEmployee; employeeUserProject1.Project = firstProject; employeeUserProject2.Project = secondProject; firstProject.EmployeeUserProjects = new List <EmployeeUserProject>() { employeeUserProject1 }; firstEmployee.EmployeeUserProjects = new List <EmployeeUserProject>() { employeeUserProject1 }; db.AddRange(employeeUserProject1, employeeUserProject1); db.AddRange(firstEmployee, secondEmployee, thirdEmployee); db.AddRange(firstProject, secondProject); db.SaveChanges(); var result = projectService.GetCompanyProjects(); result.Should().HaveCount(2); }