/// <summary> /// </summary> /// <param name="search"></param> /// <returns></returns> public async Task <SearchAvailabilityRs> SearchAvailability(SearchAvailabilityRq search) { var requestValidated = searchAvailabilityValidator.Validate(search); if (!requestValidated.IsValid) { return(await InvalidRequest(requestValidated)); } var rooms = await GetRoomsFromSuppliers(search); var response = new SearchAvailabilityRs { Success = true, Rooms = rooms, Errors = Enumerable.Empty <Error>() }; var save = await logStorage.Save(new Log { Request = JsonConvert.SerializeObject(search), Response = JsonConvert.SerializeObject(response), CreatetionDate = DateTime.UtcNow }); return(response); }
public Task <SearchAvailabilityRs> SearchAvailability(SearchAvailabilityRq request) { var supplierRq = availabilitySearchRqMapper.MapFrom(request); var supplierRs = MockSupplierResponse(); var availabilityRs = availabilitySearchRsMapper.MapFrom(supplierRs); return(Task.FromResult(availabilityRs)); }
private async Task <IEnumerable <Room> > GetRoomsFromSuppliers(SearchAvailabilityRq search) { var supplierConnectors = await supplierConnectorManager.GetSupplierConnectors(configuration); var roomsBag = new ConcurrentBag <SearchAvailabilityRs>(); var tokenSource = new CancellationTokenSource(DefaultTimeout); await Task.WhenAll(supplierConnectors.Select(supplier => Task.Run(async() => { var roomList = await supplier.SearchAvailability(search); roomsBag.Add(roomList); }, tokenSource.Token)) .ToArray()); var rooms = roomsBag .Where(p => p.Success) .SelectMany(p => p.Rooms); return(rooms); }
public Task <SearchAvailabilityRs> SearchAvailability(SearchAvailabilityRq request) { var suppliers = connectorManager.GetSupplierConnectors(new ConnectorsConfiguration()); return(Task.FromResult(new SearchAvailabilityRs())); }
public async Task <SearchAvailabilityRs> GetAvailablity([FromBody] SearchAvailabilityRq request) { return(await propertiesService.SearchAvailability(request)); }
public Task <SearchAvailabilityRs> SearchAvailability(SearchAvailabilityRq request) { throw new NotImplementedException(); }