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)); }
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)); //} }
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); }