public virtual IEnumerable <IAuthorizedPerson> FindPersons(SevenWondersContext db, SearchViewModel search)
        {
            DbSet <T> dbSet = db.Set <T>();
            var       query = (from person in dbSet
                               select person).AsEnumerable();

            if (!string.IsNullOrWhiteSpace(search.FirstName))
            {
                query = query.Where(x => x.FirstName.Contains(search.FirstName));
            }
            if (!string.IsNullOrWhiteSpace(search.LastName))
            {
                query = query.Where(x => x.LastName.Contains(search.LastName));
            }
            if (!string.IsNullOrWhiteSpace(search.PhoneNumber))
            {
                query = query.Where(x => x.PhoneNumber.Contains(search.PhoneNumber));
            }
            if (search.DateOfBirthFrom != null && search.DateOfBirthFrom != DateTime.MinValue)
            {
                query = query.Where(x => x.DateOfBirth >= search.DateOfBirthFrom);
            }
            if (search.DateOfBirthTo != null && search.DateOfBirthTo != DateTime.MinValue)
            {
                query = query.Where(x => x.DateOfBirth <= search.DateOfBirthTo);
            }
            return(query);
        }
        public virtual bool ChangePersonStatus(SevenWondersContext db, int id)
        {
            DbSet <T> dbSet    = db.Set <T>();
            var       result   = false;
            var       customer = dbSet.Find(id);

            if (customer != null)
            {
                customer.IsDeleted       = !customer.IsDeleted;
                db.Entry(customer).State = EntityState.Modified;
                result = true;
                db.SaveChanges();
            }
            return(result);
        }
        private T GetPersonByEmail <T>(string email) where T : class, IPerson
        {
            DbSet <T> dbSet = db.Set <T>();

            return(dbSet.FirstOrDefault(x => x.Email == email));
        }