public async Task GetVariantDetails(string productId) { try { var baseAddress = new Uri(_settings.GetConfigSetting <string>(SettingKeys.Integration.Tiqets.Endpoint)); string responseData; using (var httpClient = new HttpClient { BaseAddress = baseAddress }) { httpClient.Timeout = new TimeSpan(1, 0, 0); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", _settings.GetConfigSetting <string>(SettingKeys.Integration.Tiqets.Token)); using (var response = await httpClient.GetAsync("products/" + productId + "/variants?lang=en")) { responseData = await response.Content.ReadAsStringAsync(); } } var responseJson = Mapper <VariantResponseModel> .MapFromJson(responseData); //initially disabling all variants _tiqetVariantDetailRepository.DisableAllVariants(productId); if (responseJson.success && responseJson.variants.Count > 0) { foreach (Variant variantDetail in responseJson.variants) { var tiqetVariants = _tiqetVariantDetailRepository.GetByVariantIdAndProductId(variantDetail.id, productId); string valid_variantIds = ""; if (variantDetail.valid_with_variant_ids.Count() > 0) { for (int i = 0; i < variantDetail.valid_with_variant_ids.Count(); i++) { valid_variantIds = valid_variantIds + variantDetail.valid_with_variant_ids[i]; if (i < variantDetail.valid_with_variant_ids.Count() - 1) { valid_variantIds = valid_variantIds + ","; } } } if (tiqetVariants == null) { tiqetVariants = _tiqetVariantDetailRepository.Save(new Contracts.DataModels.Tiqets.TiqetVariantDetail { ProductId = productId, VariantId = variantDetail.id, Label = variantDetail.label, MaxTicketsPerOrder = variantDetail.max_tickets, DistributorCommissionExclVat = Convert.ToDecimal(variantDetail.price_components_eur.distributor_commission_excl_vat), TotalRetailPriceInclVat = Convert.ToDecimal(variantDetail.price_components_eur.total_retail_price_incl_vat), SaleTicketValueInclVat = Convert.ToDecimal(variantDetail.price_components_eur.sale_ticket_value_incl_vat), BookingFeeInclVat = Convert.ToDecimal(variantDetail.price_components_eur.booking_fee_incl_vat), DynamicVariantPricing = variantDetail.dynamic_variant_pricing, IsEnabled = true, CreatedUtc = DateTime.UtcNow, ValidWithVariantIds = valid_variantIds }); } else { tiqetVariants.VariantId = variantDetail.id; tiqetVariants.Label = variantDetail.label; tiqetVariants.MaxTicketsPerOrder = variantDetail.max_tickets; tiqetVariants.DistributorCommissionExclVat = Convert.ToDecimal(variantDetail.price_components_eur.distributor_commission_excl_vat); tiqetVariants.TotalRetailPriceInclVat = Convert.ToDecimal(variantDetail.price_components_eur.total_retail_price_incl_vat); tiqetVariants.SaleTicketValueInclVat = Convert.ToDecimal(variantDetail.price_components_eur.sale_ticket_value_incl_vat); tiqetVariants.BookingFeeInclVat = Convert.ToDecimal(variantDetail.price_components_eur.booking_fee_incl_vat); tiqetVariants.DynamicVariantPricing = variantDetail.dynamic_variant_pricing; tiqetVariants.IsEnabled = true; tiqetVariants.ValidWithVariantIds = valid_variantIds; _tiqetVariantDetailRepository.Save(tiqetVariants); } } } } catch (Exception e) { _logger.Log(LogCategory.Error, new Exception("Failed to get variant Details", e)); } }