Exemple #1
0
        // GET: Lesson
        public IActionResult Index(string teacher = null, string subject = null, string dayOfWeek = null)
        {
            var filters = new Predicate <Lesson>[] {
                x => string.IsNullOrWhiteSpace(teacher) || x.Teacher?.Id.ToString() == teacher,
                x => string.IsNullOrWhiteSpace(subject) || x.Subject.ToString() == subject,
                x => string.IsNullOrWhiteSpace(dayOfWeek) || x.DayOfWeek.ToString() == dayOfWeek
            };

            var lessons = _context.Lessons
                          .Include(l => l.Room)
                          .Join(
                _context.Teachers,
                l => l.TeacherId,
                t => t.Id,
                (l, t) => new Tuple <Lesson, Teacher>(l, t)
                )
                          .ToList()
                          .Where(x => filters.All(filter => filter(x.Item1)));

            ViewData["Teachers"] = new SelectList(new object[] { new { Id = "", FullName = "(כולם)" } }.Concat(_context.Teachers), "Id", "FullName", teacher);

            var parseSubject = Enum.TryParse <Subject>(subject, out var subjectValue);

            ViewData["Subjects"] = (parseSubject ? subjectValue : 0).ToSelectList(withEmpty: true);

            var parseDay = Enum.TryParse <DayOfWeek>(dayOfWeek, out var dayValue);

            ViewData["DaysOfWeek"] = (parseDay ? dayValue : (DayOfWeek)(-1)).ToSelectList(GetDayDisplayName, true);

            return(View(lessons));
        }
        public bool validate(string domain)
        {
            var levelNames = domain.Split(DomainSeparator);

            Predicate <string>[] domainLevelValidators = new Predicate <string>[] {
                (string d) => d.Length <= 253,
            };
            Predicate <string[]>[] levelNameListValidators = new Predicate <string[]>[] {
                (string[] lns) => lns.Length <= 127 && lns.Length > 1,
                (string[] lns) => !Int32.TryParse(lns.Last(), out _)
            };
            Predicate <string>[] levelNameValidators = new Predicate <string>[] {
                (string ln) => ln.Length > 0 && ln.Length < 64,
                (string ln) => !ln.StartsWith(MinusCharacter) && !ln.EndsWith(MinusCharacter),
                (string ln) => ln.All(c =>
                                      (Char.IsLetterOrDigit(c) && (c < 128)) || c == MinusCharacter)
            };
            return(domainLevelValidators.All(p => p.Invoke(domain)) &&
                   levelNameListValidators.All(p => p.Invoke(levelNames)) &&
                   levelNames.All(ln => levelNameValidators.All(p => p.Invoke(ln))));
        }
 /// <summary>
 /// Search users from repository according searchCriteria
 /// </summary>
 /// <param name="criteria">array of predicate search criterias</param>
 public IEnumerable<int> SearchForUser(Predicate<User>[] criteria)
 {
     if (criteria == null)
         throw new ArgumentNullException();
     return _users.Where(x => criteria.All(e => e.Invoke(x.Value))).Select(x => x.Key);
 }
 /// <summary>
 /// Search users by predicates
 /// </summary>
 /// <param name="criteria">array of predicate search criterias</param>
 public IEnumerable<int> SearchForUser(Predicate<User>[] criteria)
 {
     if (criteria == null)
     {
         ts.TraceInformation($"Argument null exception in search request at slave in {AppDomain.CurrentDomain.FriendlyName}");
         throw new ArgumentNullException();
     }
     rwls.EnterReadLock();
     try
     {
         ts.TraceInformation($"SearchForUser request in SlaveService at {DateTime.Now} in {AppDomain.CurrentDomain.FriendlyName}");
         return _tempData.Where(x => criteria.All(e => e.Invoke(x.Value))).Select(x => x.Key);
     }
     finally
     {
         rwls.ExitReadLock();
     }
 }