Beispiel #1
0
        public bool UpdateEmployeeProjects(EmployeeProjectViewModel employeeProjectViewModel)
        {
            try
            {
                Employee emp = _mgmtContext.Employee.Where(e => e._EmpId == employeeProjectViewModel.Id).Include(e => e.EmployeeProjects).ThenInclude(e => e.Project).ToList()[0];

                // if employee project is empty then add the selected project in EmployeePoject table
                if (emp.EmployeeProjects.Count() == 0)
                {
                    foreach (var pjt in employeeProjectViewModel.Projects)
                    {
                        if (pjt.isProjectSelected)
                        {
                            _mgmtContext.AddRange(new EmployeeProject {
                                employee = emp, Project = _mgmtContext.Project.FirstOrDefault(p => p._PjtId == pjt._PjtId)
                            });
                        }
                    }
                }
                else// when employee projects are in EmployeeProject table
                {
                    foreach (var pjt in employeeProjectViewModel.Projects)
                    {
                        var empPjt = emp.EmployeeProjects.FirstOrDefault(ep => ep._PjtId == pjt._PjtId);
                        if (pjt.isProjectSelected && empPjt == null)
                        {
                            //project is selected and is not in the table so adding it to the database table
                            emp.EmployeeProjects.Add(
                                new EmployeeProject {
                                employee = emp, _PjtId = pjt._PjtId, Project = _mgmtContext.Project.FirstOrDefault(p => p._PjtId == pjt._PjtId)
                            }
                                );
                        }
                        else if (!pjt.isProjectSelected && empPjt != null)
                        {
                            // project is not selected but it is in the database table so,removing it
                            emp.EmployeeProjects.Remove(empPjt);
                        }
                        else if (pjt.isProjectSelected && empPjt != null)
                        {
                            //here do nothing as employee project is already in database table
                        }
                    }
                }
                _mgmtContext.SaveChanges();
                return(true);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Message " + ex.Message);
                return(false);
            }
        }