Ejemplo n.º 1
0
        public List <ConnectionPathDTO> Search(FilterPathsDTO fp, IUnitOfWorkFactory unitOfWorkFactory)
        {
            List <Path>           paths    = Mapper.Map <List <PathDTO>, List <Path> >(fp.Paths);
            List <ConnectionPath> conPaths = new List <ConnectionPath>();

            IEasyTrainTicketsDbEntities[] dbContexts = new IEasyTrainTicketsDbEntities[paths.Count];
            Parallel.For(0, paths.Count, i =>
            {
                dbContexts[i] = unitOfWorkFactory.CreateUnitOfWork();

                List <ConnectionPath> candidatePaths = paths[i].SecondSearch(fp.UserTime, dbContexts[i]);
                foreach (var conpath in candidatePaths)
                {
                    conPaths.Add(conpath);
                }
            });

            JourneyTimeFilter(ref conPaths);

            StartTimeFilter(ref conPaths);

            EndTimeFilter(ref conPaths);

            return(Mapper.Map <List <ConnectionPath>, List <ConnectionPathDTO> >(conPaths));
        }
Ejemplo n.º 2
0
        public async Task <IHttpActionResult> PostSearch(FilterPathsDTO fp)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //using (var dbcontext = unitOfWorkFactory.CreateUnitOfWork())
            //{
            //IEnumerable<ConnectionPathDTO> conPaths = await Task.Run(() => searchModel.Search(fp, dbcontext));
            IEnumerable <ConnectionPathDTO> conPaths = await Task.Run(() => searchModel.Search(fp, unitOfWorkFactory));

            return(Ok(conPaths));
            //}
        }
Ejemplo n.º 3
0
        public static List <ConnectionPath> PostSearchController(HttpClient client, List <Path> paths, DateTime userTime)
        {
            FilterPathsDTO fp = new FilterPathsDTO()
            {
                Paths    = Mapper.Map <List <Path>, List <PathDTO> >(paths),
                UserTime = userTime
            };
            const string request  = "api/Search";
            var          response = client.PostAsJsonAsync(request, fp).Result;

            response.EnsureSuccessStatusCode();
            var resultDTO = response.Content.ReadAsAsync <List <ConnectionPathDTO> >().Result;
            var result    = Mapper.Map <List <ConnectionPathDTO>, List <ConnectionPath> >(resultDTO);

            return(result);
        }