Beispiel #1
0
        public mdlSearchResponse Search(mdlFlightSearchRequest mdl, string Token)
        {
            string cacheKey = string.Concat(_config["Caching:FlightSearch:Name"], mdl.From, mdl.To, mdl.DepartureDt, mdl.ReturnDt, mdl.CabinClass, mdl.JourneyType, mdl.AdultCount, mdl.ChildCount, mdl.InfantCount);
            int    AbsoluteExpiration = 3600, SlidingExpiration = 3600;

            int.TryParse(_config["Caching:FlightSearch:AbsoluteExpiration"], out AbsoluteExpiration);
            int.TryParse(_config["Caching:FlightSearch:SlidingExpiration"], out SlidingExpiration);
            if (!_memoryCache.TryGetValue(cacheKey, out mdlSearchResponse returnData))
            {
                string jsonString   = JsonConvert.SerializeObject(mdl);
                var    responseData = _IServerApi.GetResponsePostMethod(jsonString, string.Format("Air/SearchFlight/{0}", _config["OrgCode"]), Token, "POST");
                if (responseData.MessageType == enmMessageType.Success)
                {
                    var tempData = JsonConvert.DeserializeObject <mdlSearchResponseWraper>(responseData.Message);
                    if (tempData.messageType == enmMessageType.Success)
                    {
                        returnData = tempData.returnId;
                        if (returnData.ResponseStatus == enmMessageType.Success)
                        {
                            var cacheExpiryOptions = new MemoryCacheEntryOptions
                            {
                                AbsoluteExpiration = DateTime.Now.AddSeconds(AbsoluteExpiration),
                                Priority           = CacheItemPriority.Normal,
                                SlidingExpiration  = TimeSpan.FromSeconds(SlidingExpiration)
                            };
                            _memoryCache.Set(cacheKey, returnData, cacheExpiryOptions);
                        }
                    }
                    else
                    {
                        returnData = new mdlSearchResponse()
                        {
                            ResponseStatus = tempData.messageType,
                            Error          = new mdlError()
                            {
                                Code    = 1,
                                Message = tempData.message
                            }
                        };
                    }
                }
                else
                {
                    throw new Exception(responseData.Message);
                }
            }
            return(returnData);
        }
        public async Task <IActionResult> FlightSearchAsync(string Orign, string Destination, DateTime TravelDt, DateTime?ReturnDt = null,
                                                            enmCabinClass CabinClass   = enmCabinClass.ECONOMY, int AdultCount = 1, int ChildCount = 0, int InfantCount = 0,
                                                            enmJourneyType JourneyType = enmJourneyType.OneWay)
        {
            mdlSearchResponse      mdl     = new mdlSearchResponse();
            mdlFlightSearchRequest request = new mdlFlightSearchRequest()
            {
                From        = Orign,
                To          = Destination,
                DepartureDt = TravelDt,
                ReturnDt    = ReturnDt.HasValue ? ReturnDt.Value : TravelDt,
                CabinClass  = CabinClass,
                JourneyType = JourneyType,
                AdultCount  = AdultCount,
                ChildCount  = ChildCount,
                InfantCount = InfantCount
            };

            await LoadAirport(Orign, Destination);

            ValidateFlightSearchRequest(request);
            if (ModelState.IsValid)
            {
                mdl = _flightSearch.Search(request, _currentUsers.Token);
                if (mdl.ResponseStatus == enmMessageType.Error)
                {
                    ModelState.AddModelError("", mdl.Error.Message);
                }
            }
            //Default data
            {
                mdl.From        = request.From;
                mdl.To          = request.To;
                mdl.DepartureDt = request.DepartureDt;
                mdl.ReturnDt    = request.ReturnDt;
                mdl.CabinClass  = request.CabinClass;
                mdl.JourneyType = request.JourneyType;
                mdl.AdultCount  = request.AdultCount;
                mdl.ChildCount  = request.ChildCount;
                mdl.InfantCount = request.InfantCount;
            }

            return(View(mdl));
        }