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(); } }
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), "Нельзя указать выбранный проект в качестве родительского, так как он является дочерним к другому проекту"); } }
bool CanDeleteProject() { return(ChildProjects.Count(p => p.IsSelected == true) == 1); }