public async Task<List<Play>> SearchPlays(PlaysSearchingCriteria criteria, int pageNr, int pageAmount)
 {
     using (var context = new AF_Context())
     {
         try
         {   
             var skip = pageAmount * (pageNr - 1);
             var query = (from p in context.Plays select p);
             if (criteria.FestivalIdFilter != null)   
                 query = query.Where(p => p.FestivalId==criteria.FestivalIdFilter);
             if (!String.IsNullOrEmpty(criteria.Author))
                 query = query.Where(p => p.Author.Contains(criteria.Author));
             if (!String.IsNullOrEmpty(criteria.Title))
                 query = query.Where(p => p.Title.Contains(criteria.Title));
             if (!String.IsNullOrEmpty(criteria.Motto))
                 query = query.Where(p => p.Motto.Contains(criteria.Motto));
             return
                 await
                     (query.OrderBy(p => p.FestivalId)
                         .ThenBy(p => p.Day)
                         .ThenBy(p => p.Order)
                         .Skip(skip)
                         .Take(pageAmount)
                         .ToListAsync());
         }
         catch (Exception ex)
         {
             throw ex;
         }
         return null;
     }
 }
 public MainViewModel()
 {
     PlaysCriteria = new PlaysSearchingCriteria();
     PeopleCriteria = new PeopleSearchingCriteria();
     AwardsCriteria = new AwardsSearchingCriteria();
 }
 public async Task<List<Play>> SearchPlays(PlaysSearchingCriteria criteria, int pageNr, int pageAmount)
 {
     return await DataAccess.SearchPlays(criteria, pageNr, pageAmount);
 }