Exemplo n.º 1
0
        protected override async Task Handle(ShoppingPackageCommand command)
        {
            var villages = _valueRetailVillageRepository.GetAll();

            foreach (var village in villages)
            {
                ValueRetailCommanRequestModel ValueRetailCommanRequestModel = new ValueRetailCommanRequestModel
                {
                    cultureCode = village.CultureCode,
                    villageCode = village.VillageCode,
                    from        = DateTime.UtcNow
                };

                var routeResonseString = await _valueRetailAPI.GetValueRetailAPIData(ValueRetailCommanRequestModel, "Routes", "ShoppingPackage");

                if (routeResonseString.Success == true)
                {
                    ShoppingPackageRouteResponse shoppingPackageRouteResponse = Mapper <ShoppingPackageRouteResponse> .MapFromJson(routeResonseString.Result);

                    foreach (var package in shoppingPackageRouteResponse.Packages)
                    {
                        if (package.Package.PackageID == 367 || package.Package.PackageID == 366 || package.Package.PackageID == 368)
                        {
                            continue;
                        }
                        ValueRetailCommanRequestModel httpRequest = new ValueRetailCommanRequestModel
                        {
                            from        = DateTime.UtcNow,
                            to          = DateTime.UtcNow.AddYears(1),
                            packageId   = package.Package.PackageID,
                            cultureCode = village.CultureCode,
                            villageCode = village.VillageCode
                        };

                        var routeDetailResponseString = await _valueRetailAPI.GetValueRetailAPIData(httpRequest, "RouteDetails", "ShoppingPackage");

                        ShoppingPackageRouteDetail shoppingPackageRouteDetail = Mapper <ShoppingPackageRouteDetail> .MapFromJson(routeDetailResponseString.Result);

                        if (shoppingPackageRouteDetail.RequestStatus.Success)
                        {
                            var @event = SaveToEvent(shoppingPackageRouteDetail, village);
                            if (!objectComparersFactory.GetObjectsComparer <Event>().Compare(@event, new Event()))
                            {
                                var cityAndCurrency = await SaveCityStateCountry(shoppingPackageRouteDetail, village);

                                var eventVenueMapping = SaveToVenue(shoppingPackageRouteDetail, @event, cityAndCurrency, village);
                                SaveDepartureLocations(shoppingPackageRouteDetail, eventVenueMapping);
                                var eventDetail = SaveToEventDetails(shoppingPackageRouteDetail, eventVenueMapping, @event);
                                SaveBlockedDates(shoppingPackageRouteDetail, @event, eventDetail);
                                SaveTicketDetail(shoppingPackageRouteDetail, eventDetail, cityAndCurrency);
                            }
                            else
                            {
                                throw new TaskCanceledException("Data insertion for Value Retail Package failed!");
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        public async Task <IResponse <string> > GetValueRetailAPIData(ValueRetailCommanRequestModel valueRetailCommanRequestModel, string apiRoute, string productName)
        {
            var _accessToken = await _valueRetailAuth.GetToken();

            var builder = new UriBuilder($"https://data0integration0prep0neu.azure-api.net/opdconnect/api/{productName}/{apiRoute}");

            builder.Port = -1;
            var query = HttpUtility.ParseQueryString(builder.Query);

            PropertyInfo[] properties = valueRetailCommanRequestModel.GetType().GetProperties();
            foreach (var property in properties)
            {
                if (property.GetValue(valueRetailCommanRequestModel) != null)
                {
                    if (property.PropertyType == typeof(DateTime?))
                    {
                        var attr = property.Name.ToString().StartsWith("@") ? property.Name.ToString().Substring(1) : property.Name.ToString();
                        query[attr] = DateTime.UtcNow.ToString("s", CultureInfo.InvariantCulture);
                        continue;
                    }

                    query[property.Name.ToString()] = property.GetValue(valueRetailCommanRequestModel).ToString();
                }
            }
            query["aggregatorId"] = "SDK";
            query["otaId"]        = "INT00065";

            builder.Query = query.ToString();
            string endpoint = builder.ToString();

            var responseData = string.Empty;

            try
            {
                using (HttpClient httpClient = new HttpClient())
                {
                    httpClient.Timeout = TimeSpan.FromMinutes(5);
                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Ocp-Apim-Subscription-Key", "8ace1302001848ed9a311fca09ef8909");
                    httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/json");
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken.Result);

                    var response = await httpClient.GetAsync(new Uri(endpoint));

                    responseData = await response.Content.ReadAsStringAsync();
                }

                return(GetResponse(true, responseData));
            }
            catch (HttpRequestException ex)
            {
                _logger.Log(LogCategory.Error, ex);
                return(GetResponse(false, null));
            }
            catch (Exception ex)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to fetch Chauffeur Driven data for Value Retail", ex));
                return(GetResponse(false, null));
            }
        }
Exemplo n.º 3
0
        protected override async Task Handle(ChauffeurDrivenCommand command)
        {
            var villages = _valueRetailVillageRepository.GetAll();

            foreach (var village in villages)
            {
                var httpRequest = new ValueRetailCommanRequestModel
                {
                    from        = DateTime.UtcNow,
                    cultureCode = village.CultureCode,
                    villageCode = village.VillageCode
                };

                var routeResponseString = await _valueRetailAPI.GetValueRetailAPIData(httpRequest, "Routes", "ChauffeurDriven");

                ChauffeurDrivenRouteResponse chauffeurDrivenRouteResponse = Mapper <ChauffeurDrivenRouteResponse> .MapFromJson(routeResponseString.Result);

                if (chauffeurDrivenRouteResponse.RequestStatus.Success)
                {
                    foreach (var route in chauffeurDrivenRouteResponse.Routes)
                    {
                        var @event = SaveToEvent(route, village);
                        if (objectComparersFactory.GetObjectsComparer <Event>().Compare(@event, new Event()))
                        {
                            throw new TaskCanceledException("Data Insertion Failed for Value Retail Chauffeur Drive.");
                        }
                        else
                        {
                            var cityAndCurrency = await SaveCityStateCountry(route, village);

                            var eventVenueMapping = SaveToVenue(route, @event, cityAndCurrency);
                            SaveDepartureLocations(route, eventVenueMapping);
                            var eventDetail = SaveToEventDetails(@event, eventVenueMapping);
                            SaveTicketDetail(route, eventDetail, cityAndCurrency);
                            SaveBlockedDates(route, @event, eventDetail);
                        }
                    }
                }
            }
        }
Exemplo n.º 4
0
        public async Task FetchAndSaveRoutes(ValueRetailVillage village)
        {
            var httpRequest = new ValueRetailCommanRequestModel
            {
                villageCode = village.VillageCode
            };

            var responseString = await _valueRetailAPI.GetValueRetailAPIData(httpRequest, "Journeys", "ShoppingExpress");

            ShoppingExpressJourney responseData = new ShoppingExpressJourney();

            try
            {
                responseData = Mapper <ShoppingExpressJourney> .MapFromJson(responseString.Result);
            }
            catch (ArgumentNullException ex)
            {
                throw ex;
            }

            foreach (var journey in responseData.Journeys)
            {
                foreach (var route in journey.Routes)
                {
                    try
                    {
                        var currentRoute = _valueRetailRouteRepository.GetByRouteIdStopIdLinkedRouteId(route.RouteId, route.StopId, route.LinkedRouteId);
                        if (currentRoute == null)
                        {
                            currentRoute = _valueRetailRouteRepository.Save(new ValueRetailRoute
                            {
                                VillageId       = village.Id,
                                JourneyType     = journey.JourneyType,
                                RouteId         = route.RouteId,
                                DepartureTime   = route.DepartureTime,
                                LinkedRouteId   = route.LinkedRouteId,
                                ReturnTime      = route.ReturnTime,
                                Name            = route.Name,
                                LocationId      = route.LocationId,
                                LocationName    = route.LocationName,
                                LocationAddress = route.LocationAddress,
                                StopId          = route.StopId,
                                StopOrder       = route.StopOrder,
                                Latitude        = route.Latitude,
                                Longitude       = route.Longitude,
                                AdultPrice      = route.Prices.Adult == null ? 0 : Convert.ToDecimal(route.Prices.Adult.Price),
                                ChildrenPrice   = route.Prices.Children == null ? 0 : Convert.ToDecimal(route.Prices.Children.Price),
                                FamilyPrice     = route.Prices.Family == null ? 0 : Convert.ToDecimal(route.Prices.Family.Price),
                                InfantPrice     = route.Prices.Infant == null ? 0 : Convert.ToDecimal(route.Prices.Infant.Price),
                                UnitPrice       = route.Prices.Unit == null ? 0 : Convert.ToDecimal(route.Prices.Unit.Price),
                                CreatedUtc      = DateTime.UtcNow,
                                CreatedBy       = Guid.NewGuid(),
                            });

                            if (route.ReturnStops != null && route.ReturnStops.Count > 0)
                            {
                                foreach (var returnStop in route.ReturnStops)
                                {
                                    var currentReturnStop = _valueRetailReturnStopsRepository.Save(new ValueRetailReturnStop
                                    {
                                        ValueRetailRouteId = currentRoute.Id,
                                        RouteId            = returnStop.RouteId,
                                        StopId             = returnStop.StopId,
                                        StopOrder          = returnStop.StopOrder,
                                        Name            = returnStop.Name,
                                        LocationId      = returnStop.LocationId,
                                        LocationName    = returnStop.LocationName,
                                        LocationAddress = returnStop.LocationAddress,
                                        ReturnTime      = returnStop.ReturnTime,
                                        Latitude        = returnStop.Latitude,
                                        Longitude       = returnStop.Longitude,
                                        CreatedUtc      = DateTime.UtcNow,
                                        CreatedBy       = Guid.NewGuid(),
                                    });
                                }
                            }
                        }
                    }
                    catch (TaskCanceledException ex)
                    {
                        _logger.Log(LogCategory.Error, ex);
                    }
                    catch (Exception ex)
                    {
                        _logger.Log(LogCategory.Error, new Exception("Failed to save Value Retail Routes in Db", ex));
                    }
                }
            }
        }