private void AddProject() { ManagerValidation MV = new ManagerValidation(); bool correctForm = MV.AddProjectValidation(ProjectMainTasks, ProjectResources, Name, Cost); bool tmp2 = checkWhichAreCyclicDependency(); if (tmp2 && correctForm && Clients != null) { DateTime startProject = DateTime.Now; DateTime endProject; startProject = ProjectMainTasks[0].EarlyStart; endProject = DateTime.Now; foreach (var mt in ProjectMainTasks) { if (startProject.CompareTo(mt.EarlyStart) > 0) { startProject = mt.EarlyStart; } if (endProject.CompareTo(mt.LateFinish) < 0) { endProject = mt.LateFinish; } } Project project = new Project() { Name = Name, Cost = Cost, StartTime = startProject, EndTime = endProject, ClientID = SelectedClient.ClientID, TeamID = Global.user.Team.TeamID, ProjectStatusID = 1, }; dbContext.Project.Add(project); dbContext.SaveChanges(); //dodanie resources do projektu Project projectWithID = dbContext.Project.Where(x => x.Name == Name).FirstOrDefault(); foreach (var r in ProjectResources) { r.ProjectID = projectWithID.ProjectID; dbContext.Resources.Add(r); dbContext.SaveChanges(); } //dodac najpier do kazdego main taska id projektu, potem zapisywa do bazy CZY TO BEDZIE POTEM DOBRZE POWIAZANE? foreach (var r in ProjectMainTasks) { r.ProjectID = projectWithID.ProjectID; } List <MainTask> calc = new List <MainTask>(); List <MainTask> tmpTaskList = new List <MainTask>(ProjectMainTasks); while (tmpTaskList.Count() != 0) { foreach (MainTask task in tmpTaskList.ToList()) { bool tmp = check(calc, task.PrecedingMainTasks.ToList()); if (tmp) { dbContext.MainTask.Add(task); dbContext.SaveChanges(); calc.Add(task); tmpTaskList.Remove(task); } } } //zerowanie zmiennych itp ErrorMessage er = new ErrorMessage("Add project!"); er.ShowDialog(); } }