Example #1
0
        /// <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);
        }
Example #2
0
        public Task <SearchAvailabilityRs> SearchAvailability(SearchAvailabilityRq request)
        {
            var supplierRq     = availabilitySearchRqMapper.MapFrom(request);
            var supplierRs     = MockSupplierResponse();
            var availabilityRs = availabilitySearchRsMapper.MapFrom(supplierRs);

            return(Task.FromResult(availabilityRs));
        }
Example #3
0
        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);
        }
Example #4
0
            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();
 }