public IEnumerable <ValidationResult> CanAddGoal(GroupGoal newGoal, IGroupUpdateService groupUpdateService) { GroupGoal goal; if (newGoal.GroupGoalId == 0) { goal = GroupGoalRepository.Get(g => (g.GroupId == newGoal.GroupId) && (g.GoalName == newGoal.GoalName)); } else { goal = GroupGoalRepository.Get(g => (g.GroupId == newGoal.GroupId) && (g.GoalName == newGoal.GoalName) && g.GroupGoalId != newGoal.GroupGoalId); } if (goal != null) { yield return(new ValidationResult("GoalName", Resources.GoalExists)); } if (newGoal.StartDate.Subtract(newGoal.EndDate).TotalSeconds > 0) { yield return(new ValidationResult("EndDate", Resources.EndDate)); } int flag = 0; int status = 0; if (newGoal.GroupGoalId != 0) { var Updates = groupUpdateService.GetUpdatesByGoal(newGoal.GroupGoalId).OrderByDescending(g => g.UpdateDate).ToList(); if (Updates.Count() > 0) { if (Updates[0].UpdateDate.Subtract(newGoal.EndDate).TotalSeconds > 0) { flag = 1; } if (newGoal.StartDate.Subtract(Updates[0].UpdateDate).TotalSeconds > 0) { status = 1; } if (flag == 1) { yield return(new ValidationResult("EndDate", Resources.EndDateNotValid + " " + Updates[0].UpdateDate.ToString("dd-MMM-yyyy"))); } else if (status == 1) { yield return(new ValidationResult("StartDate", Resources.StartDate + " " + Updates[0].UpdateDate.ToString("dd-MMM-yyyy"))); } } } }