public ProjectModuleEditVM(ILoadDataSender lastScreen, OrderVM order, ProjectVM projectVM, ProjectVM parentProject = null) : this(lastScreen, order, parentProject)
        {
            _parentProject = parentProject;
            _projectVM = projectVM;

            _project = _projectVM.Project;

            foreach (var item in Users_Project.Items)
            {
                if (_employeesCollection.FirstOrDefault(employee => employee.User.Id == item.User.Id) == null && item.Project.Id == _projectVM.Project.Id)
                {
                    _employeesCollection.Add(new UserVM(item.User));
                }

                if (item.Project.Id == _project.Id)
                    _savedPositions.Add(new User_ProjectVM(item));
            }

            foreach (var item in Team_Project.Items)
            {
                if (_teamsCollection.FirstOrDefault(team => team.Team.Id == item.Team.Id) == null && item.Project.Id == _projectVM.Project.Id)
                {
                    _teamsCollection.Add(new TeamVM(item.Team));
                }
            }

            _status = projectVM.Status;
            _selectedLeader = new UserVM(_projectVM.Leader);
            LoadData();
        }
 public ProjectModuleEdit(ILoadDataSender lastScreen, OrderVM order, ProjectVM parentProject = null)
 {
     InitializeComponent();
     _order = order;
     _lastScreen = lastScreen;
     _parentProject = parentProject;
     _projectModuleEditVM = new ProjectModuleEditVM(this, order, parentProject);
     DataContext = _projectModuleEditVM;
     fillCheckboxList();
     FormTitle.Text = "Add module";
 }
        public ProjectModuleEditVM(ILoadDataSender lastScreen, OrderVM order, ProjectVM parentProject = null)
        { 
            _projectVM = new ProjectVM(_project);
            _parentProject = parentProject;
            _projectVM.Order = order.Order;
            _lastScreen = lastScreen;
            _projectVM.StartDate = DateTime.Now;
            _projectVM.ReleaseDate = DateTime.Now.AddDays(31);

            foreach (Project.Statuses status in Enum.GetValues(typeof(Project.Statuses)))
            {
                _statuses.Add(status);
            }

            _status = _statuses.Where(item => item == Project.Statuses.Opened).FirstOrDefault();

        }
        public void RemoveProject(ProjectVM projectVM)
        {
            Users_Project.Items.RemoveAll(item => item.Project.Id == projectVM.Project.Id);
            Project_Project.Items.Remove(Project_Project.Items.FirstOrDefault(item => item.ChildProject.Id == projectVM.Project.Id));
            Team_Project.Items.RemoveAll(item => item.Project.Id == projectVM.Project.Id);
            Projects_Skill.Items.RemoveAll(item => item.Project.Id == projectVM.Project.Id);
            List<Guid> generalProjects = new List<Guid>();
            foreach (var item in Project_Project.Items)
                if (item.ParrentProject == null)
                    generalProjects.Add(item.Id);

            Project.Items.Remove(Project.Items.FirstOrDefault(item => item.Id == projectVM.Project.Id));
            var toDelete = (from item in Project_Project.Items
                            where item.ParrentProject == null
                            select item).ToList();

            foreach (var item in generalProjects)
                toDelete.RemoveAll(p => p.Id == item);

            while (toDelete.Count() > 0)
            {
                toDelete = (from item in Project_Project.Items
                            where item.ParrentProject == null
                            select item).ToList();

                foreach (var item in generalProjects)
                    toDelete.RemoveAll(p => p.Id == item);

                foreach (var item in toDelete)
                {
                    Projects_Skill.Items.RemoveAll(ps => ps.Project.Id == item.ChildProject.Id);
                    Team_Project.Items.RemoveAll(tp => tp.Project.Id == item.ChildProject.Id);
                    Users_Project.Items.RemoveAll(user => user.Project.Id == item.ChildProject.Id);
                    Project.Items.Remove(Project.Items.FirstOrDefault(p => p.Id == item.ChildProject.Id));
                    Project_Project.Items.RemoveAll(project => project.Id == item.Id);
                }
            }

            LoadData();
        }