Example #1
0
        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);
        }