示例#1
0
        /// <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;
        }
示例#2
0
        /// <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;
        }
示例#3
0
        /// <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;
        }