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