public ActionResult JoinCourse(string courseNiceUrl) { Course course = _coursesContent.GetCourseByNiceUrl(courseNiceUrl); if (course == null) { return(HttpNotFound()); } string username = User.Identity.Name; SubscriptionStatus subscriptionStatus = _subscriptions.GetSubscriptionStatus(username, course.Id); if (subscriptionStatus == SubscriptionStatus.Active) { IPublishedContent coursesPage = _coursesContent.GetCoursePublishedContentByNiceUrl(courseNiceUrl); return(Redirect(coursesPage.Url)); } else if (subscriptionStatus == SubscriptionStatus.AwaitingPayment) { return(RedirectToAction(nameof(AwaitingPayment), new { courseNiceUrl = courseNiceUrl })); } JoinCourseViewModel viewModel = new JoinCourseViewModel { CourseName = course.Title, CoursePrice = course.Price, RequiresBillingInfo = _courses.IsPaidCourse(course) }; if (viewModel.RequiresBillingInfo) { User user = _users.GetByUsername(username); viewModel.BillingInfo = Mapper.Map <BillingInfoViewModel>(user.BillingInfo); } IPublishedContent legalPage = Umbraco.TypedContentAtRoot().DescendantsOrSelf(nameof(LegalContent)).FirstOrDefault(); int licenseAgreement = legalPage.GetPropertyValue <int>(nameof(LegalContent.LicenseTerms)); if (licenseAgreement != default(int)) { IPublishedContent licenseAgreementPage = Umbraco.TypedContent(licenseAgreement); viewModel.LicenseTermsUrl = licenseAgreementPage.Url; } return(View(viewModel)); }
public JoinCourseViewModelValidator(ICoursesContentService coursesContent, ICoursesService courses) { _coursesContent = coursesContent; _courses = courses; RuleFor(x => x.AcceptLicenseTerms).Equal(true).WithMessage("Трябва да приемете общите условия"); When( x => { Course course = _coursesContent.GetCourseByNiceUrl(x.CourseNiceUrl); return(_courses.IsPaidCourse(course)); }, () => { RuleFor(x => x.BillingInfo) .NotNull() .WithMessage("Моля попълнете информацията за фактура"); }); }