private bool IsNullOrEmptyCacheData(WebBedsGetDataRequestDto dto)
 {
     if (dto == null || dto.HotelList == null || dto.Exceptions == null)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        //______________________________
        //We Get information of cache
        //______________________________
        private WebBedsGetDataRequestDto GetInformationFromMemoryCache(string key)
        {
            var webBedDataRequestDto = new WebBedsGetDataRequestDto();
            var exceptions           = new List <Exception>();

            try
            {
                webBedDataRequestDto = ApplicationCache.Cache.Get <WebBedsGetDataRequestDto>(key);
            }
            catch (Exception ex)
            {
                LogEnvironment.Instance.Add("Error GetInformationFromMemoryCache:" + GetExceptionString(ex));
                exceptions.Add(ex);
                webBedDataRequestDto.Exceptions = exceptions;
            }

            return(webBedDataRequestDto);
        }
        //_______________________________________________________________________________________
        //This method realice the following actions:
        //  -Validate empthy params or not informed.
        //  -We search  the information in cache.If not is in cache we call to server repository
        //  -We tranform the information receibed
        //_______________________________________________________________________________________
        public WebBedsGetDataQueryResult ExecuteQuery(WebBedsGetDataQuery dto)
        {
            try
            {
                if (dto == null || dto.DestinationId == 0)
                {
                    return(null);
                }

                if (dto.NumNights <= 0)
                {
                    dto.NumNights = 1;
                }

                var webBedDataRequestList = new WebBedsGetDataRequestDto();

                //We find an information first in cache memory
                var key = dto.DestinationId.ToString() + "_" + dto.NumNights.ToString();

                webBedDataRequestList = GetInformationFromMemoryCache(key);

                if (IsNullOrEmptyCacheData(webBedDataRequestList))
                {
                    webBedDataRequestList = GetDataWebBedFromWebApiService(dto);
                }

                if (webBedDataRequestList == null)
                {
                    return(null);
                }
                else if (webBedDataRequestList.HotelList != null && webBedDataRequestList.HotelList.Count() > 0)
                {
                    ApplicationCache.Cache.Set(key, webBedDataRequestList);
                }

                //We call the translate function  to return our dto from domain objects list
                return(WebBedsGetDataAppTranslator.Instance.Translate(webBedDataRequestList));
            }
            catch (Exception ex)
            {
                LogEnvironment.Instance.Add("Error WebBedsGetDataQueryHandler:" + GetExceptionString(ex));
                throw;
            }
        }
        //__________________________________________________
        //We get the information from web api repository
        //__________________________________________________
        private WebBedsGetDataRequestDto GetDataWebBedFromWebApiService(WebBedsGetDataQuery dto)
        {
            var resultDataList = new List <HotelAggregate>();
            var exceptionList  = new List <Exception>();

            var webBedDataRequestDto = new WebBedsGetDataRequestDto();

            try
            {
                var result = _webBedsWebApiRepository.GetData(dto.DestinationId, dto.NumNights);
                //resultDataList.AddRange(result);
                resultDataList = result.ToList();
            }
            catch (Exception ex)
            {
                exceptionList.Add(ex);
            }

            webBedDataRequestDto.HotelList  = resultDataList;
            webBedDataRequestDto.Exceptions = exceptionList;

            return(webBedDataRequestDto);
        }