private void ValidateChildrenRelationships() { if (ChildProjects.Count() > 0) { if (Entity.BeginDate.HasValue && ChildProjects.Count(p => p.BeginDate.HasValue) > 0) { DateTime minBeginDate = ChildProjects.Where(p => p.BeginDate.HasValue).Min(p => p.BeginDate.Value); if (Entity.BeginDate.Value > minBeginDate) { Recipient.SetError(nameof(Entity.BeginDate), $"Дата открытия проекта не может быть позже, чем самая ранняя дата открытия дочерних проектов ({minBeginDate.ToShortDateString()})"); } } if (Entity.EndDate.HasValue && ChildProjects.Count(p => p.EndDate.HasValue) > 0) { DateTime maxEndDate = ChildProjects.Where(p => p.EndDate.HasValue).Max(p => p.EndDate.Value); if (Entity.EndDate.Value < maxEndDate) { Recipient.SetError(nameof(Entity.EndDate), $"Дата закрытия проекта не может быть раньше, чем самая поздня дата закрытия дочерних проектов ({maxEndDate.ToShortDateString()})"); } } ValidateChildrenContractAmount(); ValidateChildrenSubcontractorsAmountBudget(); ValidateChildrenOrganisationAmountBudget(); ValidateChildrenEmployeePayrollBudget(); ValidateChildrenOtherCostsBudget(); } }
/// <summary> /// Launches the delete project window. /// </summary> public void DeleteProject() { ProjectViewModel selectedProjectVM = ChildProjects.FirstOrDefault(p => p.IsSelected == true); if (selectedProjectVM != null && WPFMessageBox.Show(Properties.Resources.Delete_Confirm, Properties.Resources.Projects_Delete_Confirm, WPFMessageBoxButtons.YesNo, WPFMessageBoxImage.Question) == WPFMessageBoxResult.Yes) { _projectData.DeleteProject(_projectData.GetProjectByProjectId(selectedProjectVM.ProjectId), _taskData); selectedProjectVM.Dispose(); } }
/// <summary> /// Launches the edit project window. /// </summary> public void EditProject() { ProjectView window = new ProjectView(); ProjectViewModel selectedProjectVM = ChildProjects.FirstOrDefault(p => p.IsSelected == true); using (var viewModel = new ProjectViewModel(_projectData.GetProjectByProjectId(selectedProjectVM.ProjectId), _projectData, _taskData)) { this.ShowWorkspaceAsDialog(window, viewModel); } }
public override void Validate() { LoadRelationships(); ValidateProperties(); ValidateSingleLevelHierarchy(); if (ParentProject != null) { ValidateParentRelationships(); } if (ChildProjects.Count() > 0) { ValidateChildrenRelationships(); } }
private void ValidateSingleLevelHierarchy() { if (ParentProject == null) { return; } if (ChildProjects.Count() > 0) { Recipient.SetError(nameof(Entity.ParentProjectID), "Нельзя указать родительский проект, так как у текущего проекта есть дочерние"); return; } if (ParentProject.ParentProject != null || ParentProject.ParentProjectID.HasValue) { Recipient.SetError(nameof(Entity.ParentProjectID), "Нельзя указать выбранный проект в качестве родительского, так как он является дочерним к другому проекту"); } }
private void ValidateChildrenBudgetPropertyAmount(string propertyName, string errorMessageTemplate) { LoadRelationships(); var hasBudgetValue = GetBudgetPropertyHasValueFunc(propertyName); if (hasBudgetValue(Entity)) { var conditionExpression = GetBudgetPropertyHasValueExpression(propertyName); var valueExpression = GetBudgetPropertyValueExpression(propertyName); var filtered = ChildProjects.Where(conditionExpression).ToList(); decimal total = filtered.AsQueryable().Sum(valueExpression); var valueFunc = valueExpression.Compile(); if (total > valueFunc(Entity)) { Recipient.SetError(propertyName, string.Format(errorMessageTemplate, total)); } } }
public void AddChildLinks(ISet <ProjectLinkObject> links) { ChildProjects.UnionWith(links); }
public void RemoveChild(IProject childProject) { ChildProjects.Remove(childProject); }
public void AddChild(IProject childProject) { ChildProjects.Add(childProject); }
bool CanDeleteProject() { return(ChildProjects.Count(p => p.IsSelected == true) == 1); }