//[OutputCache(Duration = 10, VaryByParam = "*", VaryByCustom ="currencyAndLanguage")] public async Task<ActionResult> Index(ContentItemsRequest request = null) { var model = new LessonsViewModel(); using (IMyMentorRepository repository = RepositoryFactory.GetInstance(Session)) { ParseUser user = Session.GetLoggedInUser(); if (user != null) { if (user.GetStatus() == UserStatusStrings.AppUser) return RedirectToAction("UpdateStudent", "Account"); } await MyMentorUserManager.LoginWithAuthCookie(Session, HttpContext, repository); var stringManager = new StringsManager(repository); GetFilters(model); if (request == null) { request = new ContentItemsRequest(); } if (string.IsNullOrEmpty(request.clipId)) { GetLessons(request, model, repository); } else { GetBundles(request, model, repository); } model.LessonFaq = stringManager.GetLocalizedString(Strings.PortalLessonFaq); model.BundleFaq = stringManager.GetLocalizedString(Strings.PortalBundleFaq); var mod = model.ItemsCount % request.PageSize; model.PageCount = mod == 0 ? model.ItemsCount / request.PageSize : (model.ItemsCount / request.PageSize) + 1; model.CurrentPage = request.PageIndex + 1; model.UpdateLessonMessage = stringManager.GetLocalizedString(Strings.UpdateLessonSuccess); return View(model); } }
private void GetLessons(ContentItemsRequest request, LessonsViewModel model, IMyMentorRepository repository) { model.SelectedResidenceId = request.category6; model.SelectedCityId = request.category8; var resideces = repository.FindAllResidences(); var selectedResidence = (resideces).SingleOrDefault(res => res.Id == request.category6); var selectedCity = (resideces).SingleOrDefault(res => res.Id == request.category8); model.SelectedResidenceName = selectedResidence != null ? selectedResidence.Name : string.Empty; model.SelectedCityName = selectedCity != null ? selectedCity.Name : string.Empty; model.LessonFilters[1].SelectedValue = request.category2; model.LessonFilters[4].SelectedValue =HttpUtility.UrlDecode( request.category5); model.SelecteDate = request.category7; model.SortBy = request.SortBy; model.LessonDisplayMode = LessonDisplayMode.Lessons; GetContentItems(model, request); }
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()); } }
private void GetContentItems(LessonsViewModel model, ContentItemsRequest contentItemsRequest) { using (var repository = RepositoryFactory.GetInstance(Session)) { var currencyRetriver = new CurrencyRetriver(HttpContext, Session, repository); var defaultCurrency = repository.FindDefaultCurrency(); var currentUserId = Session.GetLoggedInUser() != null ? Session.GetLoggedInUser().ObjectId : string.Empty; contentItemsRequest.WorldId = _worldId; var lessonsData = repository.FindAggregatedBundlesAndClips(contentItemsRequest); model.ContentItems = lessonsData.Items; model.ItemsCount = lessonsData.Count; foreach (var contentItem in model.ContentItems) { CurrencyDto source = contentItem.Currency ?? defaultCurrency; CurrencyDto target = currencyRetriver.GetCurrent(); contentItem.ConvertedPrice = CurrencyConverter.Convert(float.Parse(contentItem.Price), source, target).ToCurrency(currencyRetriver.GetCurrent()); contentItem.ConvertedPriceWithSupport =CurrencyConverter.Convert(float.Parse(contentItem.PriceWithSupport), source, target).ToCurrency(currencyRetriver.GetCurrent()); SetDisplayIncludeInActiveBundle(contentItem, currentUserId); } } // model.ItemsCount = lessonsData.Count; }
public ActionResult SearchLessons(ContentItemsRequest request = null) { using (var repository = RepositoryFactory.GetInstance(Session)) { var bundleStatusId = Request["StatusId"]; var teacherName = Request["TeacherName"]; var bundleStatus = repository.FindClipStatuses().SingleOrDefault(o => o.ObjectId == bundleStatusId); var isBundleActive = bundleStatus != null && bundleStatus.Status_en_us == BL.Consts.LessonStatus.Active; if (request != null) { request.PageSize = -1; request.ActiveStatusOnly = isBundleActive; request.WorldId = _worldId; request.category5 = teacherName; } var clips = repository.FindAllClips(request); var defaultCurrency = repository.FindDefaultCurrency(); var minimalData = clips.Items.ToMinimalData().ToArray(); var currencyRetriver = new CurrencyRetriver(HttpContext, Session, repository); foreach (var data in minimalData) { CurrencyDto source = data.Currency ?? defaultCurrency; CurrencyDto target = currencyRetriver.GetCurrent(); data.Price = CurrencyConverter.Convert(float.Parse(data.Price), source, target).ToString("0.00"); } return PartialView("LessonsSearchResults", minimalData); } }