/// <summary> /// Validates the topic. /// </summary> /// <param name="data">The topic.</param> /// <returns></returns> public ValidationStatus ValidateTopic(Topic data) { var validationStatus = new ValidationStatus(); if (!string.IsNullOrEmpty(data.Name) && data.Name.Length > Constants.MaxStringFieldLength) { validationStatus.AddLocalizedError("NameCanNotBeLongerThan", Constants.MaxStringFieldLength); } if (!data.TestCourseRef.HasValue && !data.TheoryCourseRef.HasValue) { validationStatus.AddLocalizedError("ChooseAtLeastOneCourse"); } var chapterId = data.Id == 0 ? data.ChapterRef : _storage.GetTopic(data.Id).ChapterRef; var topics = _storage.GetTopics(item => item.ChapterRef == chapterId).Where(i => i.Id != data.Id); var theoryCourseRefs = topics.Select(item => item.TheoryCourseRef).Where(item => item.HasValue && item.Value >= 0); var testCourseRefs = topics.Select(item => item.TestCourseRef).Where(item => item.HasValue && item.Value >= 0); var union = theoryCourseRefs.Union(testCourseRefs); if (union.Contains(data.TestCourseRef) || union.Contains(data.TheoryCourseRef) || data.TestCourseRef == data.TheoryCourseRef) { validationStatus.AddLocalizedError("TopicWithSuchCourseIsPresent"); } return validationStatus; }
/// <summary> /// Validates the topic. /// </summary> /// <param name="data">The topic.</param> /// <returns></returns> public ValidationStatus ValidateTopic(Topic data) { var validationStatus = new ValidationStatus(); if (!string.IsNullOrEmpty(data.Name) && data.Name.Length > Constants.MaxStringFieldLength) { validationStatus.AddLocalizedError("NameCanNotBeLongerThan", Constants.MaxStringFieldLength); } if (!data.TestCourseRef.HasValue && !data.TheoryCourseRef.HasValue) { validationStatus.AddLocalizedError("ChooseAtLeastOneCourse"); } return validationStatus; }
/// <summary> /// Validates users for which we want to share discipline. /// </summary> /// <param name="disciplineId">The discipline id.</param> /// <param name="sharewith">Users share to.</param> /// <returns></returns> public ValidationStatus ValidateDisciplineSharing(int disciplineId, IList<Guid> sharewith) { var validationStatus = new ValidationStatus(); var actualSharedUsers = this._storage.GetDisciplineSharedUsers(disciplineId); foreach (var user in actualSharedUsers) { // If we want to unshare user if (!sharewith.Contains(user.Id)) { // if it already contains curriculums if (this._storage.GetCurriculums(c => c.DisciplineRef == disciplineId).Any()) { validationStatus.AddLocalizedError("CanNotUnshareUser", user.Name); } } } return validationStatus; }