private void GetBundles(ContentItemsRequest request, LessonsViewModel model, IMyMentorRepository repository) { var currencyRetriver = new CurrencyRetriver(HttpContext, Session, repository); var defaultCurrency = repository.FindDefaultCurrency(); var currentUserId = Session.GetLoggedInUser() != null ? Session.GetLoggedInUser().ObjectId : string.Empty; model.LessonDisplayMode = LessonDisplayMode.Bundles; var findBundlesResult = repository.FindBundlesByClipId(request.clipId); if (!findBundlesResult.ClipToBundle.Any()) { request.clipId = null; GetLessons(request, model, repository); return; } model.BundlesViewModel.ContentItem = findBundlesResult.SelectedClip.ToDto(); model.BundlesViewModel.Bundles = findBundlesResult.ClipToBundle.Select(o => o.Key).ToDto().ToArray(); CurrencyDto sourceCurrency = model.BundlesViewModel.ContentItem.Currency ?? defaultCurrency; CurrencyDto targetCurrency = currencyRetriver.GetCurrent(); model.BundlesViewModel.ContentItem.ConvertedPrice = CurrencyConverter.Convert(float.Parse(model.BundlesViewModel.ContentItem.Price), sourceCurrency, targetCurrency).ToCurrency(currencyRetriver.GetCurrent()); model.BundlesViewModel.ContentItem.ConvertedPriceWithSupport = CurrencyConverter.Convert(float.Parse(model.BundlesViewModel.ContentItem.PriceWithSupport), sourceCurrency, targetCurrency).ToCurrency(currencyRetriver.GetCurrent()); foreach (var bundleViewModel in model.BundlesViewModel.Bundles) { sourceCurrency = bundleViewModel.Currency.ConvertToCurrencyDto() ?? defaultCurrency; Bundle bundle = findBundlesResult.ClipToBundle.First(ctb => ctb.Key.ObjectId == bundleViewModel.ObjectId).Key; bundleViewModel.Clips = findBundlesResult.ClipToBundle[bundle].ToDto(); bundleViewModel.ConvertedPrice = CurrencyConverter.Convert(float.Parse(bundleViewModel.Price), sourceCurrency, targetCurrency).ToCurrency(currencyRetriver.GetCurrent()); bundleViewModel.ConvertedSupportPrice = CurrencyConverter.Convert(float.Parse(bundleViewModel.SupportPrice), sourceCurrency, targetCurrency).ToCurrency(currencyRetriver.GetCurrent()); bundleViewModel.IsActive = bundle.GetPointerObject<ClipStatus>("status").Status == LessonStatus.Active.ToLower(); float allClipsPrices = 0; foreach (var clip in bundleViewModel.Clips) { sourceCurrency = clip.Currency ?? defaultCurrency; var convertedClipPrice = CurrencyConverter.Convert(float.Parse(clip.Price), sourceCurrency, targetCurrency); clip.ConvertedPrice = convertedClipPrice.ToCurrency(currencyRetriver.GetCurrent()); clip.ConvertedPriceWithSupport = CurrencyConverter.Convert(float.Parse(clip.PriceWithSupport), sourceCurrency, targetCurrency).ToCurrency(currencyRetriver.GetCurrent()); allClipsPrices += convertedClipPrice; clip.ExistsInMultipleBundles = findBundlesResult.ClipToBundle.Count(x => x.Value.Select(_ => _.ObjectId).Contains(clip.ObjectId)) > 1; clip.SelectedContentItem = clip.ObjectId == model.BundlesViewModel.ContentItem.ObjectId; SetDisplayIncludeInActiveBundle(clip, currentUserId); } bundleViewModel.ConvertedPriceWithoutDiscount = allClipsPrices.ToCurrency(currencyRetriver.GetCurrent()); } }