Esempio n. 1
0
        public UserVisits GetByUserIdWithParametrs(int userId, uint?fromDate, uint?toDate, string country, int?toDistance)
        {
            IQueryable <Visit> visits = _repository.AsQueryable <Visit>().Where(n => n.User == userId);

            if (fromDate != null)
            {
                visits = visits.Where(n => n.Visited_at > fromDate);
            }
            if (toDate != 0)
            {
                visits = visits.Where(n => n.Visited_at < toDate);
            }
            uint[] arrayIds = _locationProvider.GetIdByCountryAndDistance(country, toDistance);
            if (arrayIds.Count() > 0)
            {
                visits = visits.Where(n => arrayIds.Contains(n.Location));
            }
            UserVisits userVisits = new UserVisits();

            userVisits.Visits = visits.Select(n => new VisitDetail()
            {
                Mark       = n.Mark,
                Visited_at = n.Visited_at,
                Place      = _locationProvider.GetById(n.Location).Place
            }).AsParallel()
                                .OrderBy(m => m.Visited_at).ToList();
            return(userVisits);
        }