コード例 #1
0
        void ValidateFlightSearchRequest(mdlFlightSearchRequest request)
        {
            DateTime CurrentDate = Convert.ToDateTime(DateTime.Now.ToString("dd-MMM-yyyy"));

            if (request == null)
            {
                ModelState.AddModelError("", "Invalid data");
            }
            else
            {
                if (string.IsNullOrWhiteSpace(request.From))
                {
                    ModelState.AddModelError("", "Required Origin airport");
                }
                if (string.IsNullOrWhiteSpace(request.To))
                {
                    ModelState.AddModelError("", "Required Destination airport");
                }
                if (request.From.Equals(request.To, StringComparison.OrdinalIgnoreCase))
                {
                    ModelState.AddModelError("", "Origin and destination should be different");
                }
                if (request.DepartureDt < CurrentDate)
                {
                    ModelState.AddModelError("", string.Format("Departure Date should be greater than {0}", CurrentDate.ToString("dd-MMM-yyyy")));
                }
                if (request.JourneyType == enmJourneyType.Return)
                {
                    if (request.DepartureDt > request.ReturnDt)
                    {
                        ModelState.AddModelError("", string.Format("Departure Date should be less than Return Date"));
                    }
                }
                if (request.AdultCount <= 0)
                {
                    ModelState.AddModelError("", string.Format("Adult Count should be greater then 0"));
                }
                if (request.ChildCount < 0)
                {
                    ModelState.AddModelError("", string.Format("Child Count should be greater then or equal to 0"));
                }
                if (request.InfantCount < 0)
                {
                    ModelState.AddModelError("", string.Format("Infant Count should be greater then or equal to 0"));
                }
                if (request.AdultCount + request.ChildCount + request.InfantCount > 9)
                {
                    ModelState.AddModelError("", string.Format("upto 9 passenger can travel in single ticket"));
                }
            }
        }
コード例 #2
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);
        }
コード例 #3
0
        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));
        }