{"version":3,"sources":["./src/app/added/added.component.html","./src/app/app.component.html","./src/app/carousel/carousel.component.html","./src/app/cart/cart.component.html","./src/app/checkout/checkout.component.html","./src/app/confirmation/confirmation.component.html","./src/app/contact/contact.component.html","./src/app/cookie/cookie.component.html","./src/app/couponmodal/couponmodal.component.html","./src/app/courses/courses.component.html","./src/app/customization/customization.component.html","./src/app/discount/discount.component.html","./src/app/examdetails/examdetails.component.html","./src/app/exams/exams.component.html","./src/app/forgot/forgot.component.html","./src/app/forgotconfirmation/forgotconfirmation.component.html","./src/app/home/home.component.html","./src/app/login/login.component.html","./src/app/navlinks/navlinks.component.html","./src/app/policy/policy.component.html","./src/app/productdetails/productdetails.component.html","./src/app/profile/profile.component.html","./src/app/purchases/purchases.component.html","./src/app/register/register.component.html","./src/app/search/search.component.html","./src/app/security/security.component.html","./src/app/shared/footer/footer.component.html","./src/app/shared/menu/menu.component.html","./src/app/usersbycoupon/usersbycoupon.component.html","./src/$_lazy_route_resource lazy namespace object","./src/app/added/added.component.css","./src/app/added/added.component.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/carousel/carousel.component.css","./src/app/carousel/carousel.component.ts","./src/app/cart/cart.component.css","./src/app/cart/cart.component.ts","./src/app/checkout/checkout.component.css","./src/app/checkout/checkout.component.ts","./src/app/confirmation/confirmation.component.css","./src/app/confirmation/confirmation.component.ts","./src/app/contact/contact.component.css","./src/app/contact/contact.component.ts","./src/app/cookie/cookie.component.css","./src/app/cookie/cookie.component.ts","./src/app/couponmodal/couponmodal.component.css","./src/app/couponmodal/couponmodal.component.ts","./src/app/courses/courses.component.css","./src/app/courses/courses.component.ts","./src/app/customization/customization.component.css","./src/app/customization/customization.component.ts","./src/app/discount/discount.component.css","./src/app/discount/discount.component.ts","./src/app/examdetails/examdetails.component.css","./src/app/examdetails/examdetails.component.ts","./src/app/exams/exams.component.css","./src/app/exams/exams.component.ts","./src/app/forgot/forgot.component.css","./src/app/forgot/forgot.component.ts","./src/app/forgotconfirmation/forgotconfirmation.component.css","./src/app/forgotconfirmation/forgotconfirmation.component.ts","./src/app/home/home.component.css","./src/app/home/home.component.ts","./src/app/login/login.component.css","./src/app/login/login.component.ts","./src/app/navlinks/navlinks.component.css","./src/app/navlinks/navlinks.component.ts","./src/app/policy/policy.component.css","./src/app/policy/policy.component.ts","./src/app/productdetails/productdetails.component.css","./src/app/productdetails/productdetails.component.ts","./src/app/profile/profile.component.css","./src/app/profile/profile.component.ts","./src/app/purchases/purchases.component.css","./src/app/purchases/purchases.component.ts","./src/app/register/register.component.css","./src/app/register/register.component.ts","./src/app/search/search.component.css","./src/app/search/search.component.ts","./src/app/security/security.component.css","./src/app/security/security.component.ts","./src/app/shared/custom-validators/custom-validators.ts","./src/app/shared/directive/storage/resolveStorage.ts","./src/app/shared/enums/ButtonPosition.ts","./src/app/shared/enums/ContentType.ts","./src/app/shared/enums/EmailType.ts","./src/app/shared/enums/NavlinkType.ts","./src/app/shared/footer/footer.component.css","./src/app/shared/footer/footer.component.ts","./src/app/shared/global-constants/constants.ts","./src/app/shared/helpers/error.intepceptor.ts","./src/app/shared/helpers/jwt.interceptor.ts","./src/app/shared/helpers/must-match.validator.ts","./src/app/shared/menu/menu.component.css","./src/app/shared/menu/menu.component.ts","./src/app/shared/models/AccountResponse.ts","./src/app/shared/models/Address.ts","./src/app/shared/models/Banner.ts","./src/app/shared/models/Button.ts","./src/app/shared/models/ContactInfo.ts","./src/app/shared/models/Course.ts","./src/app/shared/models/DiscountCoupon.ts","./src/app/shared/models/Domains.ts","./src/app/shared/models/EmailConfig.ts","./src/app/shared/models/FeaturedProduct.ts","./src/app/shared/models/ImageItem.ts","./src/app/shared/models/MailRequest.ts","./src/app/shared/models/MailSettings.ts","./src/app/shared/models/Menu.ts","./src/app/shared/models/MenuItem.ts","./src/app/shared/models/MenuItemBase.ts","./src/app/shared/models/Order.ts","./src/app/shared/models/Product.ts","./src/app/shared/models/RedeemOrder.ts","./src/app/shared/models/Search.ts","./src/app/shared/models/StripeConfig.ts","./src/app/shared/models/Test.ts","./src/app/shared/models/Text.ts","./src/app/shared/models/User.ts","./src/app/shared/models/WebsiteStyle.ts","./src/app/shared/services/alert/alert.service.ts","./src/app/shared/services/authentication/authentication.service.ts","./src/app/shared/services/azurestorage/azurestorage.service.ts","./src/app/shared/services/cart.service.ts","./src/app/shared/services/coupons/coupons.service.ts","./src/app/shared/services/email/email.service.ts","./src/app/shared/services/payment/payment.service.ts","./src/app/shared/services/requests.service.ts","./src/app/shared/services/storage/storage.services.ts","./src/app/shared/services/toast/toast.service.ts","./src/app/shared/services/user/user.service.ts","./src/app/usersbycoupon/usersbycoupon.component.css","./src/app/usersbycoupon/usersbycoupon.component.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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","file":"main-es2015.js","sourcesContent":["export default \"\\t\\r\\n\\t\\r\\n\\t\\r\\n\\r\\n\\t\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Added to cart

\\r\\n
\\r\\n
\\r\\n
\\r\\n Shopping cart\\r\\n Checkout\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"\\\"\\r\\n
\\r\\n
\\r\\n
{{Product.Name}}
\\r\\n
\\r\\n
\\r\\n

Price: ${{Product.Price}}

\\r\\n
\\r\\n
\\r\\n

Quantity: {{Product.Quantity}}

\\r\\n
\\r\\n
\\r\\n

TOTAL: ${{Product.Total}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Most popular categories for {{ ContentType === 2 ? 'Courses' : 'Exams' }}

\\r\\n

Top Categories

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
{{category.Name}}
\\r\\n
\\r\\n \\\"Card\\r\\n
\\r\\n See more...\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
0 && loadProducts\\\">\\r\\n
\\r\\n
\\r\\n

Most popular {{ ContentType === 2 ? 'Courses' : 'Exams' }} by {{Product.CategoryName}} category

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"\\\"\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

{{result.CategoryName}}

\\r\\n
{{result.Name}}
\\r\\n

${{result.Price}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\t\\r\\n\\r\\n\";","export default \"\\r\\n \\r\\n \";","export default \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Edit carousel

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

You will be able to add, edit or delete the carousel image(s)

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n There are no images to show yet. Please click the button to start working.\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Select the button position\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Please select the action you want to redirect in this button. You will be able to set an external url too\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\";","export default \" \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Ups!

\\r\\n

You don't have any product in the shopping cart yet

\\r\\n

What you can do:

\\r\\n
    \\r\\n
  • Go back home
  • \\r\\n
  • Go to Products page and find you specific content
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
ProductPriceQuantityTotal
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
${{product.Price}}
\\r\\n
\\r\\n
{{product.Quantity}}
\\r\\n\\r\\n\\r\\n
\\r\\n
${{product.Total}}
\\r\\n
\\r\\n

Purchase Includes: This course is good for one year online unless otherwise specified, and restricted to use by one individual. The licenses will become inactive if used by multiple individuals.

\\r\\n
\\r\\n \\r\\n \\r\\n
TOTAL
\\r\\n
\\r\\n
${{totalPrice}}
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n Checkout\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";","export default \" \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Already have an account?

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n If you already have an account at onlineexpert.com, you can use it here. If you don't remember your password, you can recover it here.\\r\\n
\\r\\n
\\r\\n
\\r\\n

Please enter your credentials in the boxes below.

\\r\\n
\\r\\n
{{error}}
\\r\\n
\\r\\n \\r\\n
\\r\\n
Username is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Password is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

If you are a new client, select Sign Up below to create a new account.

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Billing & Shipping

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Details

\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Name is required
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Your Order

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
ProductQuantityTotal
\\r\\n \\r\\n {{product.Name | slice:0:15}}{{product.Name.length > 15 ? '...' : ''}}\\r\\n \\r\\n x {{product.Quantity}}${{product.Price}}
{{availableCoupons.length > 0 ? 'SUBTOTAL' : 'TOTAL'}}${{totalPrice}}
Coupons
{{coupon.Coupon | slice:0:10}}{{coupon.Coupon.length > 10 ? '...' : ''}}{{coupon.Discount}}% off- ${{caculatePercentage(coupon)}}
TOTAL${{discountFullTotal()}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Discount coupon
\\r\\n
\\r\\n
0\\\">\\r\\n\\r\\n
    \\r\\n
  • \\r\\n {{coupon.Coupon}} applied\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n

Processing your order..

\\r\\n
\\r\\n\\r\\n\";","export default \" \\r\\n
\\r\\n
\\r\\n

Thanks for shopping with us

\\r\\n

This order was activated

\\r\\n
\\r\\n
\\r\\n
\\r\\n

Order Info

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Order number: {{currentOrder.Id}}
Date: {{currentOrder.Date | date:'short'}}
Total: USD {{currentOrder.Total}}
Payment method: {{currentOrder.PaymentType}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

User Information

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Initials: {{initials}}
Name: {{firstName}}
Last Name: {{lastName}}
Email: {{email}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Order Details

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
ProductQuantityTotal

{{product.Name}}

x {{product.Quantity}}

${{product.Price}}

Discount for coupon applied

- ${{currentOrder.TotalDiscount}}

Total

${{totalPrice}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\";","export default \"\\r\\n\\t\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

{{contactInfo.Address.State}}

\\r\\n

{{contactInfo.Address.Direction}}

\\r\\n

{{contactInfo.Address.State}} {{contactInfo.Address.PostalCode}}

\\r\\n

{{contactInfo.Address.Country}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

{{contactInfo.PhoneNumber}}

\\r\\n

{{contactInfo.Schedule}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

{{contactInfo.Email}}

\\r\\n

Send us your query anytime!

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Name is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Email is required
\\r\\n
Email must be a valid email address
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Subject is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Message is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\t\\r\\n\";","export default \"\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Cookie Policy for Storefront

\\r\\n

This is the Cookie Policy for Pkanti, accessible from lmsstorefront.azurewebsites.net

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n What Are Cookies\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n As is common practice with almost all professional websites this site uses cookies, which are tiny files that are downloaded to your computer, to improve your experience. This page describes what information they gather, how we use it and why we sometimes need to store these cookies. We will also share how you can prevent these cookies from being stored however this may downgrade or 'break' certain elements of the sites functionality.\\r\\n

\\r\\n

\\r\\n For more general information on cookies see the Wikipedia article on HTTP Cookies.\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n How We Use Cookies\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n We use cookies for a variety of reasons detailed below. Unfortunately in most cases there are no industry standard options for disabling cookies without completely disabling the functionality and features they add to this site. It is recommended that you leave on all cookies if you are not sure whether you need them or not in case they are used to provide a service that you use.\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Disabling Cookies\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n You can prevent the setting of cookies by adjusting the settings on your browser (see your browser Help for how to do this). Be aware that disabling cookies will affect the functionality of this and many other websites that you visit. Disabling cookies will usually result in also disabling certain functionality and features of the this site. Therefore it is recommended that you do not disable cookies.\\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n The Cookies We Set\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Account related cookiesIf you create an account with us then we will use cookies for the management of the signup process and general administration. These cookies will usually be deleted when you log out however in some cases they may remain afterwards to remember your site preferences when logged out.
Login related cookiesWe use cookies when you are logged in so that we can remember this fact. This prevents you from having to log in every single time you visit a new page. These cookies are typically removed or cleared when you log out to ensure that you can only access restricted features and areas when logged in.
Surveys related cookiesFrom time to time we offer user surveys and questionnaires to provide you with interesting insights, helpful tools, or to understand our user base more accurately. These surveys may use cookies to remember who has already taken part in a survey or to provide you with accurate results after you change pages.
Forms related cookiesWhen you submit data to through a form such as those found on contact pages or comment forms cookies may be set to remember your user details for future correspondence.
Site preferences cookiesIn order to provide you with a great experience on this site we provide the functionality to set your preferences for how this site runs when you use it. In order to remember your preferences we need to set cookies so that this information can be called whenever you interact with a page is affected by your preferences.
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Third Party Cookies\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n In some special cases we also use cookies provided by trusted third parties. The following section details which third party cookies you might encounter through this site.\\r\\n

\\r\\n
    \\r\\n
  • \\r\\n Third party analytics are used to track and measure usage of this site so that we can continue to produce engaging content. These cookies may track things such as how long you spend on the site or pages you visit which helps us to understand how we can improve the site for you.\\r\\n
  • \\r\\n
  • \\r\\n From time to time we test new features and make subtle changes to the way that the site is delivered. When we are still testing new features these cookies may be used to ensure that you receive a consistent experience whilst on the site whilst ensuring we understand which optimisations our users appreciate the most.\\r\\n
  • \\r\\n
  • \\r\\n As we sell products it's important for us to understand statistics about how many of the visitors to our site actually make a purchase and as such this is the kind of data that these cookies will track. This is important to you as it means that we can accurately make business predictions that allow us to monitor our advertising and product costs to ensure the best possible price.\\r\\n
  • \\r\\n
  • \\r\\n Several partners advertise on our behalf and affiliate tracking cookies simply allow us to see if our customers have come to the site through one of our partner sites so that we can credit them appropriately and where applicable allow our affiliate partners to provide any bonus that they may provide you for making a purchase.\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n More Information\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n Hopefully that has clarified things for you and as was previously mentioned if there is something that you aren't sure whether you need or not it's usually safer to leave cookies enabled in case it does interact with one of the features you use on our site. This Cookies Policy was created with the help of the Generator of GDPR Cookies Policy Template and the GDPR Cookies Policy Template based on the Privacy Policy Generator from TermsFeed.\\r\\n

\\r\\n

\\r\\n However if you are still looking for more information then you can contact us through one of our preferred contact methods: \\r\\n info@lmsstorefront.com\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\";","export default \"
\\r\\n

{{isCreation ? 'Add new coupon' : 'Edit coupon'}}

\\r\\n
\\r\\n
\\r\\n

Fields with * are required

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n

Coupon is required

\\r\\n

Min 5 characters

\\r\\n

Max 25 characters

\\r\\n

Only A-Z 0-9

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Due Date is required

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n

Discount is required

\\r\\n

Min 1%

\\r\\n

Max 100%

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\";","export default \" \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Courses

\\r\\n

Learn when you can

\\r\\n

Build your own digital library with all the content you want

\\r\\n Browse now\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Top Categories

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
{{category.Name}}
\\r\\n
\\r\\n \\r\\n \\\"{{\\r\\n
\\r\\n See more...\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Users are interested in...

\\r\\n

Most popular

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\\"{{\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ product.CategoryName | slice:0:19 }}

\\r\\n

{{ product.Name | slice:0:19 }} 18\\\">...

\\r\\n

${{ product.Price }}

\\r\\n

COMING SOON

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Our experts has been working...

\\r\\n

Recently added

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\\"{{\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ product.CategoryName | slice:0:19 }}

\\r\\n

{{ product.Name | slice:0:19 }} 18\\\">...

\\r\\n

${{ product.Price }}

\\r\\n

COMING SOON

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";","export default \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Edit storefront

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Click on the respective button in each section to change their values

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Good job!
\\r\\n
\\r\\n
\\r\\n

{{response.Message}}

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Carousel slider
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

You will be able to set the carousel images for the Home page

\\r\\n
\\r\\n
\\r\\n Edit\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Navlinks
\\r\\n
\\r\\n
\\r\\n Edit\\r\\n
\\r\\n
\\r\\n

You will be able to work with the nav menu options

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Contact Information
\\r\\n
\\r\\n
\\r\\n Edit\\r\\n
\\r\\n
\\r\\n

You will be able to change the contact information that users will see at footer and contact section

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Email Settings
\\r\\n
\\r\\n
\\r\\n Edit\\r\\n
\\r\\n
\\r\\n

You will be able to change the configuration for the email sending process

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Stripe Settings
\\r\\n
\\r\\n
\\r\\n Edit\\r\\n
\\r\\n
\\r\\n

You will be able to set the public and secret key from Stripe

\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Contact Information
\\r\\n Fields with * are required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Location is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Country is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
State is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
City is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Postal Code is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Schedule is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Telephone is required
\\r\\n
Invalid phone number
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Email is required
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Cancel\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Email Settings
\\r\\n Fields with * are required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Mail is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Display Name is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Password is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Host is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Port is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Email Receiver is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Email Copy Purchase is required
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Cancel\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Stripe Settings
\\r\\n Fields with * are required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Public Key is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Secrek Key is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Cancel\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";","export default \"
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Manage coupons

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Warning! The discount coupons functionality is disable in the checkout page. Click the button to enable it\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

You can see the discount coupons here

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Coupons: {{coupons.length}}

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
IdCoupon Discount (%) StatusRedemptionsDue Date Released Date Options
\\r\\n

No records

\\r\\n
{{ coupon.Id }}{{ coupon.Coupon }} {{ coupon.Discount }}%

\\r\\n \\r\\n 0, 'badge-dark': coupon.TotalRedemptions == 0}\\\">{{ coupon.TotalRedemptions }}\\r\\n \\r\\n {{ parseDate(coupon.DueDate) }}{{ parseDate(coupon.ReleasedDate) }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","export default \" \\r\\n\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\tAdd to Cart \\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n\\t\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\\"{{test.Name}}\\\"\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t

{{test.Name}}

\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t

${{test.Price}}

\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t

COMING SOON

\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t
    \\r\\n\\t\\t\\t\\t\\t\\t\\t
  • Category : {{test.CategoryName}}
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t
  • Language : {{test.Language}}
  • \\r\\n\\t\\t\\t\\t\\t\\t\\t
  • Level : {{test.Level}}
  • \\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n
\\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t\\t\\tAdd to Cart \\r\\n\\t\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\t
\\r\\n\\t\\t\\t\\t
\\r\\n\\t\\t\\t
\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\\r\\n\\r\\n\\r\\n\\t
\\r\\n\\t\\t

{{test.Name | slice:0:50}}{{test.Name.length > 49 ? '...' : ''}}

\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\t\\r\\n\\t\\t
\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\\t\\t\\r\\n\\t
\\r\\n\\t
\\r\\n\";","export default \" \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Exams

\\r\\n

Try it every time you want

\\r\\n

Test your knowledge with our custom tests

\\r\\n Browse now\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Most popular categories at this time

\\r\\n

Top Categories

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
{{category.Name}}
\\r\\n
\\r\\n \\\"{{category.Name}}\\\"\\r\\n
\\r\\n See more...\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Users are interested in...

\\r\\n

Most popular

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\\"{{\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ product.CategoryName | slice:0:19 }}

\\r\\n

{{ product.Name | slice:0:19 }} 18\\\">...

\\r\\n

${{ product.Price }}

\\r\\n

COMING SOON

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Our experts has been working...

\\r\\n

Recently added

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\\"{{\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ product.CategoryName | slice:0:19 }}

\\r\\n

{{ product.Name | slice:0:19 }} 18\\\">...

\\r\\n

${{ product.Price }}

\\r\\n

COMING SOON

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Password recovery

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Email is required
\\r\\n
Email must be a valid email address
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
{{error}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";","export default \" \\t\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Reset your password

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Password is required
\\r\\n
Password must be at least 6 characters
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Confirm Password is required
\\r\\n
Passwords must match
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
{{error}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";","export default \"
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"\\\"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Learning is fun

\\r\\n

Best premium products

\\r\\n

Grow those skills with online courses and exams taught by subject matter experts and companies from around the world

\\r\\n Browse Now\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
{{item.TextObject.Title}}
\\r\\n

{{item.TextObject.Body}}

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Popular items in the market

\\r\\n

Featured products

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\\"{{\\r\\n \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
Course
\\r\\n
Exam
\\r\\n

{{ product.CategoryName }}

\\r\\n

{{ product.Name | slice:0:25 }} 24\\\">...

\\r\\n

${{ product.Price }}

\\r\\n

COMING SOON

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Multimedia Courseware

\\r\\n

Top Courses

\\r\\n View all\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\\"{{\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ product.CategoryName }}

\\r\\n

{{ product.Name | slice:0:25 }} 24\\\">...

\\r\\n

${{ product.Price }}

\\r\\n

COMING SOON

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Popular items in the market

\\r\\n

Top Exams

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\\"{{\\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ product.CategoryName }}

\\r\\n

{{ product.Name | slice:0:25 }} 24\\\">...

\\r\\n

${{ product.Price }}

\\r\\n

COMING SOON

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\";","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

New to our website?

\\r\\n \\r\\n Create an Account\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Log in to enter

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Username is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Password is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Forgot Password?\\r\\n
\\r\\n
{{error}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";","export default \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Edit navlinks

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

You can add a button or dropdown for the navlinks menu. Please click de \\\"Add\\\" button and select your option.

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n There are no navlinks yet. Please click the button to start working.\\r\\n
\\r\\n\\r\\n \\r\\n
0\\\">\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
#TypeTextStatusEditDelete
{{ i + 1 }} {{ returnMenuItemType(item.Type) }}{{ item.Text }} {{ item.Enable ? 'Enable' : 'Disabled'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Navlink
\\r\\n Fields with * are required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Text is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Please enter valid url.
\\r\\n
Url is required
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Cancel\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Dropdown
\\r\\n Fields with * are required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Text is required
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Add the option(s) item(s) for the current dropdown navlink\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Cancel\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\";","export default \"
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Your Data\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n We believe that schools, acting with parent permission, should determine whether any student data is collected and maintain control over that data \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n The school account administrator can purge identifiable student data at any time.\\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n We will never share identifiable data without your permission. We will never sell student data to a third party.\\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n Pkanti is Safe\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n Pkanti uses industry standard SSL to ensure that student data is encrypted and transmitted securely from end to end.\\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n Teachers can monitor student accounts and student work.\\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n Students cannot privately communicate with other students outside their school.\\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n Parents can access their child's account at any time by logging into their student’s account.\\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Data Collection Improves Learning\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n If a school chooses to use Pkanti, teachers will gain valuable data on student performance and students will receive feedback on how to improve.\\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n We also use anonymous, aggregated and de-identified data to improve learning opportunities and continually make Pkanti more effective.\\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n FERPA Compliance\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n Pkanti makes every effort to ensure consistency with the Family Educational Rights and Privacy Act (FERPA) policies. We also make every effort to comply with Children's Online Privacy Protection Act (COPPA).\\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n We provide prominent notice to users before making any material change to our Privacy Policy that affects them.\\r\\n \\r\\n
  • \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Privacy Questions?\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n If you have questions or complaints regarding our privacy policy or practices, please contact us at info@prodigylearning.com\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Privacy Policy

\\r\\n
\\r\\n
\\r\\n \\r\\n Introduction\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n This Privacy Policy applies to all the Pkanti branded websites and our mobile applications operated by Pkanti and its affiliates (“Pkanti”).\\r\\n

\\r\\n

\\r\\n The privacy of those who use this website or app is extremely important to us. We design and operate our technology and services with our users' protection and privacy in mind, and make every effort to be transparent in our data collection and use practices.\\r\\n

\\r\\n

\\r\\n We comply with the FTC's Children's Online Privacy Protection Act (COPPA), and support the goals and guidelines set forth by industry self-regulatory bodies and experts to providing online safety and privacy for children, households, parents and schools. We also support districts and schools that are subject to compliance with the Family Educational Rights and Privacy Act (FERPA).\\r\\n

\\r\\n

\\r\\n This document explains what information we collect about users of this product, how we use this information, who we share the information with and other privacy and security issues. We encourage you to provide us feedback about our privacy policy at info@prodigylearning.com.\\r\\n

\\r\\n

\\r\\n A note to minors:  If you are under the age of 13, please get permission from your parent/legal guardian before using this website or app or sending any e-mail to us. You must be 18 or older to order a subscription to any of the Pkanti websites or apps. We will not sell or market directly to minors and always seek parental or legal guardian's authorization whenever we identify that a minor attempts to purchase a Pkanti product or service.\\r\\n

\\r\\n

\\r\\n A note to schools and districts: Wherever we collect student identifiable information, we do so in support of the educational purposes for which Pkanti is designed. Such information is only collected in conjunction with the use of Pkanti. \\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Definitions\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n For purposes of this Policy, we introduce the definitions of how we characterize users' information:\\r\\n\\r\\n \\\"Personally Identifiable Information\\\" or \\\"PII\\\" is information that can identify a user of this website, including e-mail and name.\\r\\n \\\"Anonymous Information\\\" is information that does not enable identification of an individual user. \\\"De-Identified Information\\\" is information from which all personally identifiable components have been removed. Unlike Anonymous Information, De-Identified information is initially collected as Personally Identifiable Information, after which we remove any identifying component to make the information anonymous.\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

What Type of Information Do We Collect and Why?

\\r\\n
\\r\\n
\\r\\n \\r\\n General\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n We collect the following types of information:\\r\\n

\\r\\n

\\r\\n Information collected when subscribing: In the registration process of any of our subscription types, we ask our subscriber to provide us with first name, last name and affiliation with a school or district (if applicable). Providing an email is optional. We use this contact information to send users service-related announcements on rare occasions when it is necessary or advisable to do so. For instance, if we perform routine maintenance, we might send an informational email. We may also use this contact information to request feedback on the use of our products and services, to be used to improve the products and services. We will always provide an option to opt out of such communications.\\r\\n

\\r\\n

\\r\\n Username and password: Subscribers create a username and password in the registration process, or, if they prefer, we or their school may assign these for them. We use usernames and passwords of subscribers' accounts to authenticate logins, allow access to the paid content and monitor subscription compliance. The username is also used to authenticate users when requesting technical support. The passwords are all encrypted when stored. For more information on our security practices, see \\\"How We Store and Process Your Information\\\" below.\\r\\n

\\r\\n

\\r\\n Information collected automatically: We automatically receive and record information on our server logs from a user’s browser, including the user’s IP address. We use IP addresses to maintain a user’s session and we do not store them after the user’s session is over. We also use the IP address to check if a user is located in some countries outside of the United States where a country-wide log-in option is activated, and we do not store this information after the initial page load. We do not otherwise combine this information with other PII.\\r\\n

\\r\\n

\\r\\n We also use a standard feature found in browser software, called a \\\"cookie\\\", in order to establish and authenticate user sessions, enable access to paid content and monitor potential misuse of the accounts. We do not use cookies to collect Personally Identifiable Information nor do we combine such general information with other PII to identify a user. Disabling our cookies will prevent access to paid content and limit some of the features and functionalities of the website or app. To learn more about browser cookies, including how to manage or delete them, look in the Tools, Help or similar section of your Web browser, or visit allaboutcookies.org.\\r\\n

\\r\\n

\\r\\n We do not collect a user’s web search history across third party websites or search engines. However, if a user navigates to our website via a web search, their web browser may automatically provide us with the web search term they used in order to find our website. Our website does not honor \\\"do not track\\\" signals transmitted by users' web browsers, so we encourage you to visit these links if you would like to opt out of certain tracking: http://www.networkadvertising.org/choices or http://www.aboutads.info/choices/. If you do want to opt out using these tools, you need to opt out separately for each of your devices and for each web browser you use (such as Internet Explorer®, Firefox® or Safari®) on each device.\\r\\n

\\r\\n

\\r\\n Third Parties: We may use a variety of third-party service providers, such as analytics companies, to understand usage of our services. We may allow those providers to place and read their own cookies, electronic images known as web beacons or single-pixel gifs and similar technologies, to help us measure how users interact with our services. This technical information is collected directly and automatically by these third parties. If you want to opt out of third party cookies, you may do so through your browser, as mentioned above in Information collected automatically.\\r\\n

\\r\\n

\\r\\n Information collected when using Pkanti: School and District licenses use the individual accounts system, called Pkanti SMS, which allows students and their teachers to keep track of learning. Student and teacher accounts are organized by classrooms created by the teachers of the subscribing school. For these accounts, we ask the teachers to enter the first and last name of students and teachers, their username, the school they are associated with and a security question for resetting their password. We also require the teachers' email for password recovery and for contacting them on support and service-related announcements. The only Personally Identifiable Information collected about students is their first name, last name, email (optional), and the students’ work under the account (student records). We store the data created in each student account (\\\"Student Records\\\"), such as the history of Pkanti tests and activities they've completed. We do so for the purpose of enhancing teachers’ and students’ use of the website.\\r\\n

\\r\\n

\\r\\n Emails received from users: We may retain certain information from users when they send us messages through our system or by email. We only use such information for providing the services or support requested.\\r\\n

\\r\\n

\\r\\n Feedback: Certain features we offer include an option to provide us with feedback on your experience. The feedback feature does not identify the user submitting it. The feedback option is voluntary and the information a user submits to us will only be used for improving these features. If we receive personally identifiable information through a feedback form we take steps to immediately delete that information.\\r\\n

\\r\\n

\\r\\n Information collected when using a Pkanti mobile app: Your website subscription may also provide access to the Full Access level of our mobile apps. If you choose to download any such app and log into it with your website subscription username and password, we collect limited usage information in connection with user logins in order to monitor subscription compliance. This information is maintained in accordance to this policy. We do not collect Personally Identifiable Information from users of the various Pkanti applications. If you subscribe to a Pkanti app with an in-app purchase subscription, we do not collect any user information.\\r\\n

\\r\\n

\\r\\n Push Notifications on mobile apps: We send you push notifications on Pkanti mobile apps from time to time in order to update you about any events or promotions that we may be running. If you no longer wish to receive these types of communications, you may turn them off at the device level. To ensure you receive proper notifications, we will need to collect certain information about your device such as operating system and user identification information. We also collect the user time zone as it’s set on the device to limit the time we send push notifications within a reasonable time of day. We do not combine this information with other PII.\\r\\n

\\r\\n

\\r\\n Mobile Analytics on mobile apps: We use mobile analytics software to allow us to better understand the functionality of our Mobile apps Software on your phone. This software may record information such as how often you use the apps, the events that occur within the apps, aggregated usage, performance data, and where the apps were downloaded from. We do not link the information we store within the analytics software to any PII you submit within the mobile apps.\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n We do NOT Collect Or Use Information as Follows:\\r\\n \\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n Other than in the places and for the purposes explicitly disclosed in this Policy, we do not knowingly collect Personally Identifiable Information directly from users under the age of 13. If we learn that we have inadvertently collected any Personally Identifiable Information from a user under 13, we will take steps to promptly delete it. Please contact us at info@prodigylearning.com if you believe we have inadvertently collected Personally Identifiable Information from a user under 13.\\r\\n
  • \\r\\n
  • \\r\\n We do not collect, use or share Personally Identifiable Information other than as described in our privacy policy, or with the consent of a parent or legal guardian as authorized by law, or otherwise as directed by an applicable district or school or required by contract or by law.\\r\\n\\r\\n
  • \\r\\n
  • \\r\\n In no event shall we use, share or sell any Personally Identifiable Information for advertising or marketing purposes.\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n COPPA Compliance\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n Parents and legal guardians of children under 13 who use any of the Pkanti products have certain rights under the Children's Online Privacy Protection Act (COPPA), and Pkanti recognizes those rights. Parents/guardians can consent to collection and use of a child's personally-identifying information without consenting to the disclosure of information to third parties.\\r\\n

\\r\\n

\\r\\n A child's participation or access to an activity on Pkanti cannot be conditioned on him or her providing more information than is reasonably necessary for that activity, or any personally-identifying information. Pkanti does not collect personally-identifying information from children under 13, without a parent or guardian's consent or school if applicable.\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Using Pkanti\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n Schools or districts using Pkanti maintain ownership of their Student Records.\\r\\n

\\r\\n

\\r\\n Each school or district has access to a user-friendly administrator dashboard that allows direct control over the Student Records at all times. The administrator can create, update, review, modify and deactivate individual accounts, and monitor logins in the individual accounts. \\\"Administrators\\\" are only those individuals explicitly designated by the school or the district. Schools and districts are required to appoint an administrator that will be responsible for the Student Records. Districts and schools are urged to safeguard the administrator's access information and keep it in strict confidence, and notify us of any unauthorized use of password or account registered under their subscription.\\r\\n

\\r\\n

\\r\\n The teachers using Pkanti will only be able to access or use Pkanti with an administrator login provided by their school or Pkanti. Students will only be able to create or access their teacher's class with an Access Code provided by their teachers. Students will be able to store their activities, tests, and results with their teachers on their individual accounts. Students can only interact with teachers who created the Pkanti class\\r\\n

\\r\\n

\\r\\n We encourage schools and districts using Pkanti to notify parents that the product is used in their school. Parents can log into their children's accounts and access their records. If you are a parent or guardian of a student using Pkanti with his or her school, you can request the login information from your child or their teacher. You are encouraged to use the student's login information and view all their activities and progress on the account at any time. Parents have a right to request the student's Personally Identifiable Information be deleted or request changes in his or her records if it is inaccurate or misleading by contacting the school or teacher or Pkanti at info@prodigylearning.com. Parents may also refuse to allow Pkanti to collect further information from their children by contacting us at info@prodigylearning.com.\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n FERPA Compliance\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n We understand the obligation educational agencies, districts and school systems have to comply with the Family Educational Rights and Privacy Act (FERPA) and we support schools in their compliance efforts and facilitate their alignment with FERPA.\\r\\n

\\r\\n

\\r\\n Under the terms of our contracts with schools, we agree to act as a \\\"School Official\\\" as defined by FERPA, meaning that we:\\r\\n

\\r\\n \\r\\n
  • \\r\\n Perform an institutional service or function for which the school or district would otherwise use its own employees;\\r\\n
  • \\r\\n
  • \\r\\n Have been determined to meet the criteria set forth in the school's or district's annual notification of FERPA rights for being a School Official with a legitimate educational interest in the education records;\\r\\n
  • \\r\\n
  • \\r\\n Are under the direct control of the school or district with regard to the use and maintenance of education records; and\\r\\n
  • \\r\\n
  • \\r\\n Use education records only for authorized purposes and will not re-disclose Personally Identifiable Information from education records to other parties (unless we have specific authorization from the school or district to do so and it is otherwise permitted by FERPA).\\r\\n
  • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n How Long We Retain Student Data Information\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n Districts and schools are able to delete student identifiable information at any time using the Administrator Dashboard as mentioned above. Once information is deleted, we do not retain any copies.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n How We Share Your Information\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n We may provide Personally Identifiable Information to our partners, business affiliates and third party service providers who work for Pkanti and operate some of its functionalities, such as hosting services, streaming services and credit card processing. These third parties are well-known, established service providers, who are bound contractually to practice adequate security measures and only use your information for the sole purpose of providing the services. These third parties do not have an independent right to share your Personally Identifiable Information. We share Anonymous Information or De-Identified Information about our users for tracking analytical information when using third party web analytical tools. We may use or share Anonymous Information or De-Identified Information for educational research purposes, to evaluate the educational benefit of using our services or to improve our services.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n We will NOT share any information for marketing or advertising purposes.\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n We reserve the right to disclose Personally Identifiable Information if we are required to do so by law or if we believe that disclosure is necessary to protect our rights, protect your safety or the safety or others, investigate fraud and/or comply with a judicial proceeding, court order, subpoena or legal process.\\r\\n

    \\r\\n

    \\r\\n We also reserve the right to transfer your Personally Identifiable Information in case of a corporate restructuring (such as a merger or acquisition), as long as the receiving entity adopts this privacy policy that applies to your information.\\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n How We Store And Process Your Information\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n We strive to maintain security policies and procedures that are designed to protect your information.\\r\\n

    \\r\\n

    \\r\\n Our servers are located in a secured, locked and monitored environment to prevent unauthorized entry or theft, and are protected by a firewall. The servers are located in a data center in the United States and backed up daily to a secure, \\\"US-based,\\\" offsite data center.\\r\\n

    \\r\\n

    \\r\\n We take extra measures to ensure the safety of PII and Student Records and apply a Secure Sockets Layer (SSL or HTTPS) encrypting technology to establish and ensure that all data passed between the server and the browser remains encrypted.\\r\\n

    \\r\\n

    \\r\\n Governance policies and access controls are in place to ensure that the information of each district or school or other subscriber is separated and they are only able to access their own data.\\r\\n

    \\r\\n

    \\r\\n Only limited Pkanti personnel have access to the database, and they only access the database when necessary to provide services. Personnel with access to Student Records pass criminal background checks and periodic privacy training.\\r\\n

    \\r\\n

    \\r\\n While we strive to maintain best industry-standard privacy and security practices, it should be noted that no industry system is fail proof. In the event we learn of an actual data breach, loss or disaster, we have established a Disaster Recovery Plan, which includes notifying the affected subscriber, and as appropriate, coordinating with the subscriber to support its notification of affected individuals, students and families when there is a substantial risk of harm from the breach or a legal duty to provide notification.\\r\\n\\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n Links To Third-Party Sites\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n We carefully choose our business partners and associate only with reliable partners who demonstrate a commitment to users' privacy and who share our commitment to education.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n Using Pkanti Outside the US\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n If you are using this website or app outside the United States, you consent to having your information and data stored in the United States. If you are from any jurisdiction with laws or regulations governing the use of the Internet, including collection, use and disclosure of personal data, different from those of the United States, you may only use this website or app in a manner lawful in your jurisdiction. If your use of this website or app may be unlawful in your jurisdiction, please do not use this website or app. If your use of Pkanti may be unlawful in your jurisdiction, please do not use Pkanti.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n Using Pkanti® from the EU\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n EU-US Privacy Shield\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n Pkanti is committed to subjecting all personal data received from European Union (EU) member countries, in reliance on the Privacy Shield Framework, to the Framework’s applicable Principles. To learn more about the Privacy Shield Framework, visit the U.S. Department of Commerce’s Privacy Shield List.\\r\\n https://www.privacyshield.gov/list \\r\\n

    \\r\\n

    \\r\\n Pkanti is responsible for the processing of personal data it receives, under the Privacy Shield Framework, and subsequently transfers to a third party acting as an agent on its behalf. Pkanti complies with the Privacy Shield Principles for all onward transfers of personal data from the EU, including the onward transfer liability provisions.\\r\\n

    \\r\\n

    \\r\\n With respect to personal data received or transferred pursuant to the Privacy Shield Framework, Pkanti is subject to the regulatory enforcement powers of the U.S. Federal Trade Commission. In certain situations, Pkanti may be required to disclose personal data in response to lawful requests by public authorities, including to meet national security or law enforcement requirements.\\r\\n

    \\r\\n

    \\r\\n \\r\\n Under certain conditions, more fully described on the Privacy Shield website \\r\\n \\r\\n https://www.privacyshield.gov \\r\\n \\r\\n , you may invoke binding arbitration when other dispute resolution procedures have been exhausted.\\r\\n\\r\\n \\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n Access\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n Upon request Pkanti will provide you with information about whether we hold any of your personal information. You may access, correct, or request deletion of your personal information by contacting us at info@prodigylearning.com. We will respond to your request within a reasonable timeframe.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n Changes To Our Privacy Policy\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n We constantly strive to provide the best services. Changes to this policy may be required to keep pace with changing technology and threats, and as new or changed services are released. We expect most such changes to be minor, but there may be cases where changes may be more significant. In such cases we will first provide prominent notice to users who are affected.\\r\\n

    \\r\\n

    \\r\\n Posting the modified Privacy Policy on this website or app and providing notice as stated above will give effect to the revised terms. Your continued use of this website or app indicates your acceptance of any revised terms. If you do not agree to the revised policy, please refrain from using this website or app and/or leave this website or app.\\r\\n

    \\r\\n

    \\r\\n If we make material changes to how we collect and use personal information from children under age 13, we will notify the school or the parents, as applicable, by email in order to obtain verifiable parental consent for the new uses of the child's Personal Information.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n Contact Information\\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n If you have any questions or concerns about this Privacy Policy, please\\r\\n contact us at info@prodigylearning.com or at\\r\\n Prodigy Learning Limited, Q House, Furze Rd, Sandyford, Dublin, D18 NN59, Ireland\\r\\n

    \\r\\n

    \\r\\n If you wish to report a security breach, please contact us at\\r\\n info@prodigylearning.com.\\r\\n

    \\r\\n

    \\r\\n This policy was last updated on December 15th, 2017.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\";","export default \" \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    1. \\r\\n
      \\r\\n
      \\r\\n
      \\r\\n
    2. \\r\\n
    3. \\r\\n
      \\r\\n
      \\r\\n
      \\r\\n
    4. \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n

    $

    \\r\\n
      \\r\\n
      \\r\\n
      \\r\\n
      \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Add to Cart\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\\"{{currentCourse.Name}}\\\"\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    0\\\">\\r\\n
    Experts
    \\r\\n
      \\r\\n
    1. \\r\\n

      {{expert.FirstName}} {{expert.LastName}}

      \\r\\n

      {{expert.Title}}

      \\r\\n

      \\r\\n {{(expert.showMore) ? expert.Bio : expert.Bio | slice:0:70}} ...\\r\\n {{(!expert.showMore) ? '[Show more]' : '[Show less]'}}\\r\\n

      \\r\\n
    2. \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    {{currentCourse.Name}}

    \\r\\n
    Product Id ({{currentCourse.ProductId}})
    \\r\\n
    \\r\\n

    \\r\\n \\r\\n {{totalHours}}\\r\\n | {{currentCourse.CategoryName}}\\r\\n | {{shell.length}} module(s)\\r\\n | {{currentCourse.Level}}\\r\\n \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n \\r\\n Has resources\\r\\n \\r\\n \\r\\n Has workbook\\r\\n \\r\\n

    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n

    ${{currentCourse.Price}}

    \\r\\n

    \\r\\n COMING SOON\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Purchase Includes: This course is good for one year online unless otherwise specified, and restricted to use by one individual. The licenses will become inactive if used by multiple individuals.

    \\r\\n
    \\r\\n
    \\r\\n Add to Cart\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Course content

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    {{lesson.Name}}

    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n \\r\\n {{secondsToDhms(getTimeByLesson(lesson))}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n \\r\\n {{section.Name}}\\r\\n

    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    {{getFileTime(section)}}

    \\r\\n

    {{secondsToDhms(getTimeBySubSection(section))}}

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
    \\r\\n

    \\r\\n {{subsection.Name}}\\r\\n

    \\r\\n

    \\r\\n {{secondsToDhms(getFileTime(subsection))}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n {{subsection}}\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n

    {{currentCourse.Name | slice:0:50}}{{currentCourse.Name.length > 49 ? '...' : ''}}

    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";","export default \"
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Edit profile

    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    You have missing information. Please complete your profile

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    Click the Edit button to change values for each section

    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    Good job!
    \\r\\n
    \\r\\n
    \\r\\n

    {{response.Message}}

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Personal Information
    \\r\\n
    \\r\\n
    \\r\\n Edit\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    {{userObject.FullName}}

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Email
    \\r\\n
    \\r\\n
    \\r\\n Edit\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    {{userObject.Email}}

    \\r\\n

    [Empty]

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Localization
    \\r\\n
    \\r\\n
    \\r\\n Edit\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    {{userObject.TimeZoneId}}

    \\r\\n

    Missing information

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Password
    \\r\\n
    \\r\\n
    \\r\\n Edit\\r\\n
    \\r\\n
    \\r\\n

    ********

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Security Question
    \\r\\n
    \\r\\n
    \\r\\n Edit\\r\\n
    \\r\\n
    \\r\\n

    ********

    \\r\\n

    Missing information

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    An error has occurred!
    \\r\\n
    \\r\\n
    \\r\\n

    {{response.Message}}

    \\r\\n

    \\r\\n \\r\\n See {{ !iconType ? 'more' : 'less'}} \\r\\n \\r\\n

    \\r\\n \\r\\n {{response.Exception}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Personal Information
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    First Name is required
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Last Name is required
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Cancel\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Email
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Email is required
    \\r\\n
    Email must be a valid email address
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Cancel\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Localization
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Country is required
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Timezone is required
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Cancel\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Password
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Current password is required
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    New password is required
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Cancel\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Security Question
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Security question is required
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Answer is required
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Cancel\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n\";","export default \"
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Welcome back {{userObject.FirstName}} {{userObject.LastName}}

    \\r\\n

    Shopping history

    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n

    You haven't buy anything yet

    \\r\\n

    What you can do:

    \\r\\n
      \\r\\n
    • Go back home
    • \\r\\n
    • Go to Products page and find you specific content
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    You will be able to see the purchase history you have made here.

    \\r\\n

    Click the icon or to sort in ascending or descending on the fields Total, Assigned and Products

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    Purchases: {{purchases.length}}

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    OrderTotal Assigned Products Details
    {{ purchase.Slug}}$ {{ purchase.Total }}{{ purchase.Created | date:'short' }}{{ purchase.TotalProducts }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\";","export default \"\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Create account

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n If you already have an account at onlineexpert.com, you can use it here. If you don't remember your password, you can recover it here.\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    First Name is required
    \\r\\n
    Only valid chars
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Last Name is required
    \\r\\n
    Only valid chars
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Email is required
    \\r\\n
    Email must be a valid email address
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Username is required
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Password is required
    \\r\\n
    Must be at least 8 characters
    \\r\\n
    Must contain at least 1 number
    \\r\\n
    Must contain at least 1 uppercase
    \\r\\n
    Must contain at least 1 lowercase
    \\r\\n
    Must contain at least 1 special character: #$%&*+
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\";","export default \"\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Current filter(s)\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Searching by: {{model.Text}}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Categories
    \\r\\n

    [None selected]

    \\r\\n

    0\\\">\\r\\n \\r\\n {{category.Name}}{{isLast ? '' : ', '}}\\r\\n \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Languages
    \\r\\n

    [None selected]

    \\r\\n

    0\\\">\\r\\n \\r\\n {{language.Name}}{{isLast ? '' : ', '}}\\r\\n \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Prices
    \\r\\n \\r\\n

    [None]

    \\r\\n

    \\r\\n Min price: ${{model.MinPrice}}\\r\\n Max price: ${{model.MaxPrice}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Levels
    \\r\\n

    [None selected]

    \\r\\n

    0\\\">\\r\\n \\r\\n {{level.Name}}{{isLast ? '' : ', '}}\\r\\n \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    Prices
    \\r\\n \\r\\n

    [None]

    \\r\\n

    \\r\\n Min price: ${{model.MinPrice}}\\r\\n Max price: ${{model.MaxPrice}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    Filters
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Content type

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Categories

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    • \\r\\n \\r\\n \\r\\n \\r\\n
      \\r\\n
        \\r\\n
      • \\r\\n \\r\\n \\r\\n
      • \\r\\n
      \\r\\n
      \\r\\n \\r\\n\\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Languages

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Levels

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    Price
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n

    Sorry, we couldn't find any result

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\\"\\\"\\r\\n
      \\r\\n
    • \\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n

    {{result.CategoryName}}

    \\r\\n
    {{result.Name}}
    \\r\\n

    ${{result.Price}}

    \\r\\n

    COMING SOON

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\";","export default \"

    security works!

    \\r\\n\";","export default \"\\r\\n\\t\\r\\n\\r\\n\\r\\n\";","export default \"\\r\\n
    \\r\\n +\\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    Preview
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";","export default \"
    \\r\\n

    Redemption details for '{{model.Coupon}}' coupon

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    Users: {{users.length}}

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    User IdFirst Name Last Name Email Total
    {{ user.UserId }}{{ user.FirstName }}{{ user.LastName }}{{ user.Email }}{{ countDates(user.RedemptionsDate)}}
    \\r\\n \\r\\n Redemption date\\r\\n \\r\\n \\r\\n \\r\\n
    {{parseDate(date.RedemptionDate)}}
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FkZGVkL2FkZGVkLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\n\r\n//Services\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\n\r\n//Models\r\nimport { Product } from '../shared/models/Product';\r\nimport { Category } from '../shared/models/Category';\r\nimport { FeaturedProduct } from '../shared/models/FeaturedProduct';\r\n\r\n//Enums\r\nimport { ContentType } from '../shared/enums/ContentType';\r\n\r\n//Constants\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n@Component({\r\n selector: 'app-added',\r\n templateUrl: './added.component.html',\r\n styleUrls: ['./added.component.css']\r\n})\r\nexport class AddedComponent implements OnInit {\r\n\r\n customOptions: any = {}\r\n categories: Array = new Array();\r\n loadCategories = false;\r\n\r\n ProductList: Array = new Array();//FeaturedProduct[];\r\n loadProducts = false;\r\n\r\n Id: string;\r\n Product: Product;\r\n ContentType: number;\r\n CategoryId: number;\r\n\r\n constructor(private route :ActivatedRoute, private cartService: CartService, private requestService: RequestsService) {\r\n \r\n this.route.params.subscribe(parameters => { this.Id = parameters.globalId; });\r\n \r\n if(this.Id !== \"\" && this.Id !== undefined && this.Id !== null){\r\n this.Product = new Product();\r\n this.Product = this.cartService._getProductById(this.Id);\r\n }\r\n\r\n if(this.Product !== null){\r\n this.ContentType = this.Product.Type;\r\n this.CategoryId = this.Product.CategoryId;\r\n\r\n if(this.ContentType == ContentType.Course){\r\n\r\n this.requestService.courseHome_GetTopCategories().subscribe((res: Category[]) => { \r\n this.categories = res; \r\n this.categories.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnCategoryUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n \r\n });\r\n this.loadCategories = true;\r\n \r\n }, err => { console.log(err); });\r\n\r\n }else{\r\n \r\n this.requestService.examHome_GetTopCategories().subscribe((res: Category[]) => { \r\n this.categories = res; \r\n this.categories.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnCategoryUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n \r\n });\r\n this.loadCategories = true;\r\n \r\n }, err => { console.log(err); });\r\n }\r\n \r\n\r\n this.requestService.getRelatedProductsByCategoryId(this.ContentType, this.CategoryId).subscribe((res: FeaturedProduct[]) => { \r\n this.ProductList = res; \r\n this.ProductList.forEach(element => {\r\n if(element.Type === 1){\r\n element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n }else{\r\n element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(),element.ImgSrc);\r\n }\r\n this.loadProducts = true;\r\n });\r\n }, err => { console.log(err); });\r\n }\r\n \r\n }\r\n\r\n ngOnInit(): void {\r\n this.customOptions = {\r\n loop: false,\r\n mouseDrag: false,\r\n touchDrag: false,\r\n pullDrag: false,\r\n margin:15,\r\n dots: false,\r\n navSpeed: 700,\r\n navText: ['', ''],\r\n nav: true,\r\n responsive: {\r\n 0: {\r\n items: 1\r\n },\r\n 400: {\r\n items: 2\r\n },\r\n 740: {\r\n items: 3\r\n },\r\n 940: {\r\n items: 3\r\n }\r\n },\r\n }\r\n }\r\n\r\n addProduct(model: any){\r\n this.cartService._addProductToCart(model);\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { AuthenticationService } from './shared/services/authentication/authentication.service';\r\nimport { User } from './shared/models/User';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html'\r\n})\r\nexport class AppComponent {\r\n currentUser: User;\r\n\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService\r\n ){\r\n this.authenticationService.currentUser.subscribe(x => this.currentUser = x);\r\n }\r\n\r\n logout() {\r\n this.authenticationService.logout();\r\n this.router.navigate(['/']);\r\n }\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule, InjectionToken, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { CarouselModule } from 'ngx-owl-carousel-o';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { YouTubePlayerModule } from \"@angular/youtube-player\";\r\nimport { NgxStripeModule } from 'ngx-stripe';\r\nimport { NgxCaptchaModule } from 'ngx-captcha';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { MenuComponent } from './shared/menu/menu.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { FooterComponent } from './shared/footer/footer.component';\r\nimport { ProductdetailsComponent } from './productdetails/productdetails.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { RegisterComponent } from './register/register.component';\r\nimport { ContactComponent } from './contact/contact.component';\r\nimport { CartComponent } from './cart/cart.component';\r\nimport { CheckoutComponent } from './checkout/checkout.component';\r\nimport { ExamdetailsComponent } from './examdetails/examdetails.component';\r\nimport { ConfirmationComponent } from './confirmation/confirmation.component';\r\n\r\n//Service class\r\nimport { RequestsService } from './shared/services/requests.service';\r\n\r\n//Interceptos\r\nimport { ErrorInterceptor } from './shared/helpers/error.intepceptor';\r\nimport { JwtInterceptor } from './shared/helpers/jwt.interceptor';\r\nimport { AuthGuard } from './shared/helpers/auth.guard';\r\nimport { CoursesComponent } from './courses/courses.component';\r\nimport { ExamsComponent } from './exams/exams.component';\r\nimport { SearchComponent } from './search/search.component';\r\nimport { ForgotComponent } from './forgot/forgot.component';\r\nimport { SecurityComponent } from './security/security.component';\r\n\r\n//Constants\r\nimport { GlobalConstans } from './shared/global-constants/constants';\r\nimport { PolicyComponent } from './policy/policy.component';\r\nimport { CookieComponent } from './cookie/cookie.component';\r\nimport { AddedComponent } from './added/added.component';\r\nimport { PurchasesComponent } from './purchases/purchases.component';\r\nimport { ProfileComponent } from './profile/profile.component';\r\nimport { ForgotconfirmationComponent } from './forgotconfirmation/forgotconfirmation.component';\r\nimport { CustomizationComponent } from './customization/customization.component';\r\nimport { NgbdModalConfirmAutofocus } from './couponmodal/couponmodal.component';\r\n\r\n//Directiva\r\nimport { ResolveStorageDirective } from './shared/directive/storage/resolveStorage'; // Importa la directiva aquí\r\n\r\n//Load config data\r\nimport { APP_INITIALIZER } from '@angular/core';\r\nimport { AppConfig } from './shared/models/AppConfig';\r\nimport { CarouselComponent } from './carousel/carousel.component';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { NavlinksComponent } from './navlinks/navlinks.component';\r\nimport { UserService } from './shared/services/user/user.service';\r\nimport { DiscountComponent } from './discount/discount.component';\r\nimport { NgbDateCustomParserFormatter } from './couponmodal/couponmodal.component';\r\nimport { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap';\r\n// Import library module\r\nimport { NgxSpinnerModule } from \"ngx-spinner\";\r\nimport { UsersbycouponComponent } from './usersbycoupon/usersbycoupon.component';\r\n\r\n\r\n\r\nexport function configFactory(config: UserService) {\r\n\r\n const x = (): Promise => {\r\n return config.getInit();\r\n };\r\n return x;\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n MenuComponent,\r\n HomeComponent,\r\n FooterComponent,\r\n ProductdetailsComponent,\r\n LoginComponent,\r\n RegisterComponent,\r\n ContactComponent,\r\n CartComponent,\r\n ExamdetailsComponent,\r\n CheckoutComponent,\r\n ExamdetailsComponent,\r\n ConfirmationComponent,\r\n CoursesComponent,\r\n ExamsComponent,\r\n SearchComponent,\r\n ForgotComponent,\r\n SecurityComponent,\r\n PolicyComponent,\r\n CookieComponent,\r\n AddedComponent,\r\n PurchasesComponent,\r\n ProfileComponent,\r\n ForgotconfirmationComponent,\r\n CustomizationComponent,\r\n CarouselComponent,\r\n NavlinksComponent,\r\n NgbdModalConfirmAutofocus,\r\n DiscountComponent,\r\n UsersbycouponComponent,\r\n ResolveStorageDirective\r\n ],\r\n imports: [\r\n NgbModule,\r\n CommonModule,\r\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BrowserAnimationsModule,\r\n NgxSpinnerModule,\r\n YouTubePlayerModule,\r\n NgxStripeModule.forRoot(GlobalConstans.GetStripePublicKey()),\r\n NgxCaptchaModule,\r\n ToastrModule.forRoot({\r\n closeButton: true,\r\n timeOut: 3000,\r\n progressBar: true,\r\n positionClass: 'toast-top-right'\r\n }),\r\n CarouselModule,\r\n RouterModule.forRoot([\r\n { path: '', component: HomeComponent },\r\n /*{ path: 'login', component: LoginComponent },*/\r\n { path: 'storefront/register', component: RegisterComponent },\r\n { path: 'storefront/forgot', component: ForgotComponent },\r\n { path: 'squestion', component: SecurityComponent },\r\n { path: 'contact', component: ContactComponent },\r\n { path: 'cart', component: CartComponent },\r\n { path: 'checkout', component: CheckoutComponent },\r\n { path: 'courses', component: CoursesComponent },\r\n { path: 'exams', component: ExamsComponent },\r\n { path: 'search', component: SearchComponent },\r\n { path: 'course/detail/:globalId', component: ProductdetailsComponent },\r\n { path: 'exam/detail/:globalId', component: ExamdetailsComponent },\r\n { path: 'confirmation/:slug/:redeem', component: ConfirmationComponent },\r\n { path: 'policy', component: PolicyComponent },\r\n { path: 'cookie', component: CookieComponent },\r\n { path: 'added/:globalId', component: AddedComponent },\r\n { path: 'profile', component: ProfileComponent },\r\n { path: 'customization', component: CustomizationComponent },\r\n { path: 'purchases', component: PurchasesComponent },\r\n { path: 'forgotconfirmation/:id', component: ForgotconfirmationComponent },\r\n { path: 'carousel', component: CarouselComponent },\r\n { path: 'navlinks', component: NavlinksComponent },\r\n { path: 'discount', component: DiscountComponent },\r\n { path: '**', pathMatch: 'full', redirectTo: '' },\r\n ], { useHash: false })\r\n ],\r\n providers: [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: configFactory,\r\n deps: [UserService],\r\n multi: true\r\n },\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n { provide: NgbDateParserFormatter, useClass: NgbDateCustomParserFormatter },\r\n RequestsService,\r\n CookieService,\r\n CommonModule],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { Banner } from '../shared/models/Banner';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { AzurestorageService } from '../shared/services/azurestorage/azurestorage.service';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { ImageItem } from '../shared/models/ImageItem';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\nimport { ButtonPosition } from '../shared/enums/ButtonPosition';\r\n\r\n\r\n@Component({\r\n selector: 'app-carousel',\r\n templateUrl: './carousel.component.html',\r\n styleUrls: ['./carousel.component.css']\r\n})\r\nexport class CarouselComponent implements OnInit {\r\n \r\n /**\r\n * Variables para Image: azure storage\r\n */\r\n bannerfiles: string[] = []; \r\n bannerfileToUpload: FormData; \r\n bannerfileUpload: any; \r\n bannerfileUpoadInitiated: boolean; \r\n bannerfileDownloadInitiated: boolean;\r\n bannerfileName: string; \r\n /**\r\n * TERMINA: Variables para Image: azure storage\r\n */\r\n ImagesList: Array = new Array();\r\n public showImages = false;\r\n submitted = false;\r\n uploadingImage = false;\r\n\r\n enableCourses = false;\r\n enableExams = false;\r\n\r\n //positions: any;\r\n positions: { id: number; name: string }[] = [];\r\n constructor(\r\n private service: RequestsService,\r\n private azureClient: AzurestorageService,\r\n private alert: AlertService,\r\n private rutas : Router) {\r\n\r\n const userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if(userObject === null)\r\n {\r\n this.rutas.navigate(['/index']); \r\n }\r\n\r\n for (const n in ButtonPosition) {\r\n if (typeof ButtonPosition[n] === 'number') {\r\n this.positions.push({ id: ButtonPosition[n], name: n });\r\n }\r\n }\r\n\r\n console.log({'positions':this.positions});\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n const config = JSON.parse(localStorage.getItem('jsonConfig'));\r\n\r\n this.enableCourses = config.EnableCourses;\r\n this.enableExams = config.EnableExams;\r\n\r\n this.getBannerImages();\r\n }\r\n\r\n getBannerImages(){\r\n\r\n this.showImages = false;\r\n this.ImagesList = new Array();\r\n\r\n this.service.GetBannerForEdit()\r\n .subscribe((images : Array) => {\r\n \r\n if(images.length > 0){\r\n this.showImages = true;\r\n this.ImagesList = images;\r\n \r\n }\r\n\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Método para cambiar el status de la imagen\r\n * @param item Elemento actual del foreach\r\n */\r\n onChangeImageStatus(item:Banner){\r\n let isChecked = item.Image.Enable;\r\n\r\n let $title = !isChecked ? 'Enable image' : 'Disabled image';\r\n let $text = !isChecked \r\n ? 'Do you want to enable the current image?'\r\n : 'Do you want to disabled the current image?'\r\n let $button = {'ConfirmButtonText': 'Change', 'cancelButtonText': 'Cancel'};\r\n\r\n this.alert.onBeforeConfirm($title, $text, $button)\r\n .then((response) => {\r\n \r\n if(response.value === true){\r\n this.service.UpdateImageStatus(item, !isChecked)\r\n .subscribe((res) => {\r\n if(res.Success){\r\n item.Image.Enable = !isChecked;\r\n this.alert.onConfirm(\"Perfect!\",\"You have change the image status successfully\");\r\n \r\n }\r\n \r\n });\r\n\r\n }else{\r\n \r\n item.Image.Enable = isChecked;\r\n }\r\n \r\n });\r\n }\r\n\r\n /**\r\n * Método para eliminar una imagen de la galería\r\n * @param item Elemento actual del foreach\r\n */\r\n onDeleteImages(item:Banner){\r\n\r\n let $title = \"Delete image\";\r\n let $text = \"Do you want to delete the current image? You won't be able to recover it\"\r\n let $button = {'ConfirmButtonText': 'Delete', 'cancelButtonText': 'Cancel'};\r\n\r\n this.alert.onBeforeConfirm($title, $text, $button)\r\n .then((response)=>{\r\n if(response.value === true){\r\n \r\n let fileName = item.Image.Id;\r\n let extension = item.Image.Src.split(\".\").pop();\r\n fileName = fileName +'.'+extension;\r\n\r\n this.azureClient.DeleteBannerImage(fileName)\r\n .subscribe((d) => {\r\n\r\n if(d){\r\n this.service.DeleteImageFromBanner(item)\r\n .subscribe((a) => {\r\n if(a.Success){\r\n this.getBannerImages();\r\n this.alert.onConfirm(\"Done\",\"We already deleted your image\");\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n }else{\r\n this.alert.onError(\"Ups!\",\"We couldn't delete your image, please try again later.\")\r\n }\r\n });\r\n\r\n }\r\n\r\n returnBannerImg(image : string){\r\n return GlobalConstans.GetBannerImage(image);\r\n }\r\n\r\n onSaveImage(image){\r\n\r\n this.submitted = true;\r\n\r\n if(!image.ButtonObject.IsExternal){\r\n image.ButtonObject.Action = null;\r\n }\r\n\r\n this.service.SaveImage(image).subscribe((res:any) => {\r\n if(res.Success){\r\n this.submitted = false;\r\n this.getBannerImages();\r\n return this.alert.onConfirm(\"Done!\",\"Updated correctly!\");\r\n }\r\n })\r\n\r\n }\r\n\r\n onChangeSelectItem(item){\r\n \r\n item.ButtonObject.IsExternal = item.ButtonObject.Type === \"external\";\r\n\r\n }\r\n\r\n onChangePosition(item) {\r\n\r\n //item.ButtonObject.IsExternal = item.ButtonObject.Type === \"external\";\r\n console.log({ item });\r\n\r\n }\r\n\r\n addAnSpace(text) {\r\n return text.replace(/([A-Z])/g, ' $1');\r\n }\r\n //========================================================================\r\n // Logotipo\r\n //========================================================================\r\n banneraddFile() { \r\n if (!this.bannerfileUpoadInitiated) { \r\n document.getElementById('banneruploadImgBanner').click(); \r\n } \r\n }\r\n\r\n bannerhandleFileInput(files: any) { \r\n \r\n const allowed_types = ['image/png', 'image/jpeg','image/gif']\r\n if(files.length > 0){\r\n\r\n let found = allowed_types.find(x => x.includes(files[0].type))\r\n\r\n if (!found) {\r\n this.alert.onError(\"Ups!\",\"Only Images are allowed ( JPG | PNG | GIF )\");\r\n return;\r\n }\r\n }\r\n \r\n //Validar size\r\n const max_height = 1200;\r\n const max_width = 1900;\r\n let reader = new FileReader();\r\n reader.readAsDataURL(files[0]); \r\n reader.onload = (event) => { \r\n var img = new Image();\r\n img.src = event.target.result as string;\r\n img.onload = rs => {\r\n const img_height = rs.currentTarget['height'];\r\n const img_width = rs.currentTarget['width'];\r\n \r\n if (img_height > max_height && img_width > max_width) {\r\n this.alert.onError(\"Ups!\",'Maximum dimentions allowed: width ' + max_width + 'px * height ' + max_height + 'px');\r\n return;\r\n } else {\r\n \r\n let formData: FormData = new FormData(); \r\n formData.append(\"asset\", files[0], files[0].name); \r\n if(files.length > 0){\r\n this.bannerfileName = files[0].name;\r\n }\r\n this.bannerfileToUpload = formData; \r\n this.banneronUploadFiles(); \r\n }\r\n };\r\n\r\n }\r\n \r\n //END: Validar size\r\n \r\n }\r\n\r\n banneronUploadFiles() { \r\n if (this.bannerfileUpoadInitiated) { \r\n return; \r\n } \r\n this.bannerfileUpoadInitiated = true; \r\n if (this.bannerfileToUpload == undefined) { \r\n this.bannerfileUpoadInitiated = false; \r\n return false; \r\n } \r\n else { \r\n this.uploadingImage = true;\r\n this.azureClient.UploadBannerImage(this.bannerfileToUpload)\r\n .subscribe((response: any) => { \r\n this.bannerfileUpoadInitiated = false; \r\n this.bannerfileUpload = ''; \r\n if (response.body.success) { \r\n \r\n let image = new ImageItem();\r\n image.Id = response.body.code;\r\n image.Src = GlobalConstans.GetBannerImage(response.body.message);\r\n \r\n let item = new Banner();\r\n item.Image = image;\r\n\r\n this.service.InsertBannerImage(item)\r\n .subscribe((result) => {\r\n \r\n if(result){\r\n this.uploadingImage = false;\r\n this.getBannerImages();\r\n this.alert.onConfirm(\"Perfect!\",\"Your image has been uploaded successfully\")\r\n .then((a) => {\r\n \r\n });\r\n \r\n }\r\n });\r\n \r\n } \r\n else { \r\n this.bannerfileUpoadInitiated = false; \r\n this.uploadingImage = false; \r\n } \r\n }, \r\n \r\n err => console.log(err), \r\n ); \r\n\r\n } \r\n }\r\n\r\n DeleteBannerImage(fileName: string) { \r\n \r\n this.azureClient.DeleteBannerImage(fileName)\r\n .subscribe(result => { \r\n if (result != null) { \r\n //this.showBlobs(); \r\n return true;\r\n } \r\n }, error => console.error(error)); \r\n }\r\n //========================================================================\r\n // END: Logotipo\r\n //========================================================================\r\n\r\n}\r\n\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NhcnQvY2FydC5jb21wb25lbnQuY3NzIn0= */\";","import { Component, OnInit, Type } from '@angular/core';\r\n\r\n//Constants\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n//Service\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\n\r\n//Interfaces\r\nimport { IProduct } from '../shared/interfaces/IProduct';\r\n\r\n//Enum\r\nimport { ContentType } from '../shared/enums/ContentType'\r\n\r\n@Component({\r\n selector: 'app-cart',\r\n templateUrl: './cart.component.html',\r\n styleUrls: ['./cart.component.css']\r\n})\r\nexport class CartComponent implements OnInit {\r\n courseContent = 0;\r\n examContent = 0;\r\n allContent = 0;\r\n \r\n cart: IProduct[];\r\n totalPrice: number;\r\n editCart = false;\r\n\r\n constructor(private cartService: CartService, private toastService: ToastService) { \r\n this.courseContent = ContentType.Course;\r\n this.examContent = ContentType.Exam;\r\n this.allContent = ContentType.AllContent;\r\n this.loadCart();\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n deleteProduct(globalId: string){\r\n\r\n let result = this.cartService._deleteProductToCart(globalId);\r\n if(result){\r\n this.toastService.onInfo(\"Deleted!\",\"Your product has been deleted correctly!\");\r\n this.loadCart();\r\n return;\r\n }\r\n\r\n return this.toastService.onWarning(\"Ups\",\"Something wrong is happening!\");\r\n }\r\n\r\n clearCart(){\r\n let result = this.cartService._deleteAllProducts();\r\n if(result){\r\n this.toastService.onInfo(\"Cleaned!\",\"You shopping cart is empty now\");\r\n this.loadCart();\r\n return;\r\n }\r\n\r\n return this.toastService.onWarning(\"Ups\",\"Something wrong is happening!\");\r\n }\r\n\r\n enableUpdateCart() {\r\n this.editCart = true;\r\n }\r\n\r\n updateCart(product) {\r\n \r\n const result = this.cartService._updateProductToCart(product);\r\n if (result) {\r\n this.toastService.onInfo(\"Perfect\", \"Quantity has been updated correctly!\");\r\n return;\r\n }\r\n\r\n return this.toastService.onWarning(\"Ups\", \"Something wrong is happening!\");\r\n \r\n }\r\n\r\n doneCart() {\r\n this.editCart = false;\r\n this.loadCart();\r\n }\r\n\r\n private loadCart(){\r\n\r\n let res = this.cartService._getProductsCart();\r\n this.cart = res;\r\n this.totalPrice = this.cart.reduce((a,b) => a + b.Total,0);\r\n }\r\n\r\n}\r\n","export default \".item-discount-coupon {\\r\\n display:block;\\r\\n}\\r\\n\\r\\n.table-borderless > tbody > tr > td,\\r\\n.table-borderless > tbody > tr > th,\\r\\n.table-borderless > tfoot > tr > td,\\r\\n.table-borderless > tfoot > tr > th,\\r\\n.table-borderless > thead > tr > td,\\r\\n.table-borderless > thead > tr > th {\\r\\n border: none;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY2hlY2tvdXQvY2hlY2tvdXQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGFBQWE7QUFDakI7O0FBRUE7Ozs7OztFQU1FLFlBQVk7QUFDZCIsImZpbGUiOiJzcmMvYXBwL2NoZWNrb3V0L2NoZWNrb3V0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaXRlbS1kaXNjb3VudC1jb3Vwb24ge1xyXG4gICAgZGlzcGxheTpibG9jaztcclxufVxyXG5cclxuLnRhYmxlLWJvcmRlcmxlc3MgPiB0Ym9keSA+IHRyID4gdGQsXHJcbi50YWJsZS1ib3JkZXJsZXNzID4gdGJvZHkgPiB0ciA+IHRoLFxyXG4udGFibGUtYm9yZGVybGVzcyA+IHRmb290ID4gdHIgPiB0ZCxcclxuLnRhYmxlLWJvcmRlcmxlc3MgPiB0Zm9vdCA+IHRyID4gdGgsXHJcbi50YWJsZS1ib3JkZXJsZXNzID4gdGhlYWQgPiB0ciA+IHRkLFxyXG4udGFibGUtYm9yZGVybGVzcyA+IHRoZWFkID4gdHIgPiB0aCB7XHJcbiAgYm9yZGVyOiBub25lO1xyXG59XHJcbiJdfQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { first} from 'rxjs/operators';\r\n\r\n//Service\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { AuthenticationService } from '../shared/services/authentication/authentication.service';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { EmailService } from '../shared/services/email/email.service';\r\nimport { PaymentService } from '../shared/services/payment/payment.service';\r\n\r\n//Interfaces\r\nimport { IProduct } from '../shared/interfaces/IProduct';\r\nimport { RedeemProductResponse } from '../shared/models/RedeemProductResponse';\r\nimport { RedeemOrder } from '../shared/models/RedeemOrder';\r\nimport { EmailType } from '../shared/enums/EmailType';\r\n\r\n//Enum\r\nimport { ContentType } from '../shared/enums/ContentType'\r\n\r\nimport { StripeService, Elements, Element as StripeElement, ElementsOptions } from 'ngx-stripe';\r\nimport { MailRequest } from '../shared/models/MailRequest';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { CouponsService } from '../shared/services/coupons/coupons.service';\r\nimport { DiscountCoupon } from '../shared/models/DiscountCoupon';\r\n\r\n@Component({\r\n selector: 'app-checkout',\r\n templateUrl: './checkout.component.html',\r\n styleUrls: ['./checkout.component.css']\r\n})\r\nexport class CheckoutComponent implements OnInit {\r\n\r\n availableCoupons: Array = new Array();\r\n discountCoupons: Array = new Array();\r\n\r\n courseContent = 0;\r\n examContent = 0;\r\n allContent = 0;\r\n coupon: string = \"\";\r\n\r\n\r\n cart: IProduct[];\r\n totalPrice: number;\r\n acceptTerms: boolean;\r\n registerForm: FormGroup;\r\n submitted = false;\r\n loading = false;\r\n\r\n //Login variables\r\n loginForm: FormGroup;\r\n submittedLogin = false;\r\n loadingLogin = false;\r\n error = '';\r\n\r\n //ngx stripe\r\n elements: Elements;\r\n card: StripeElement;\r\n elementsOptions: ElementsOptions = {\r\n locale: 'en'\r\n };\r\n stripeTest: FormGroup;\r\n\r\n //var for enablecoupons\r\n public enableCoupons: false;\r\n constructor(\r\n private cartService: CartService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private alertService: AlertService,\r\n private service: RequestsService,\r\n private stripeService: StripeService,\r\n private emailService: EmailService,\r\n private paymentSevice: PaymentService,\r\n private couponSevice: CouponsService,\r\n private spinner: NgxSpinnerService) {\r\n\r\n const PUBLICKEY = GlobalConstans.getCacheValue(\"PublicKey\");\r\n stripeService.changeKey(PUBLICKEY);\r\n\r\n this.courseContent = ContentType.Course;\r\n this.examContent = ContentType.Exam;\r\n this.allContent = ContentType.AllContent;\r\n\r\n this.loginForm = new FormGroup({\r\n username: new FormControl(),\r\n password: new FormControl()\r\n });\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n this.enableCoupons = GlobalConstans.getCacheValue(\"DiscountCoupons\");\r\n this.stripeTest = this.fb.group({\r\n name: ['', [Validators.required]]\r\n });\r\n \r\n\r\n setTimeout(() => {\r\n this.stripeService.elements(this.elementsOptions)\r\n .subscribe(elements => {\r\n this.elements = elements;\r\n // Only mount the element the first time\r\n if (!this.card) {\r\n this.card = this.elements.create('card', {\r\n style: {\r\n base: {\r\n iconColor: '#666EE8',\r\n color: '#31325F',\r\n lineHeight: '40px',\r\n fontWeight: 300,\r\n fontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\r\n fontSize: '18px',\r\n '::placeholder': {\r\n color: '#CFD7E0'\r\n }\r\n }\r\n }\r\n });\r\n this.card.mount('#card-element');\r\n }\r\n });\r\n },500)\r\n \r\n\r\n\r\n this.loginForm = this.fb.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n });\r\n\r\n this.loadCart();\r\n }\r\n\r\n private loadCart() {\r\n\r\n const res = this.cartService._getProductsCart();\r\n this.cart = res;\r\n this.totalPrice = this.cart.reduce((a, b) => a + b.Total, 0);\r\n }\r\n\r\n get f() {\r\n return this.stripeTest.controls;\r\n }\r\n get l() {\r\n return this.loginForm.controls;\r\n }\r\n\r\n\r\n buy() {\r\n \r\n this.submitted = true;\r\n\r\n // stop here if form is invalid\r\n if (this.stripeTest.invalid) {\r\n return;\r\n }\r\n\r\n if (!this.isLogged()) {\r\n\r\n this.alertService\r\n .onError('Sorry!', \"You must to be logged before pay your order!\")\r\n .then((result) => {\r\n if (result.value) {\r\n return true;\r\n }\r\n });\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n this.spinner.show(\"processingorder\");\r\n const _products = this.cart.map(function (x) {\r\n return {\r\n 'ContentId': x.Id,\r\n 'Type': x.Type === 2 ? 'Course' : 'Exam',\r\n 'Name': x.Name,\r\n 'ProductId': x.GlobalId\r\n }\r\n });\r\n\r\n const TOTAL = Math.round(this.discountCoupons.length > 0 ?\r\n (this.totalPrice - this.discountCoupons.reduce((a, b) => a + b.Subtotal, 0)) :\r\n this.totalPrice);\r\n\r\n if (TOTAL === 0 && this.discountCoupons.length > 0) {\r\n \r\n this.GenerateOrder()\r\n .subscribe((guid: string) => {\r\n if (guid !== undefined && guid !== null) {\r\n \r\n // ===============================================================\r\n // START: Redeem Products\r\n // ===============================================================\r\n this.GenerateRedeemOrder(guid)\r\n .subscribe((res: RedeemProductResponse[]) => {\r\n \r\n if (res) {\r\n //================================================================\r\n // START: Email Request\r\n //================================================================\r\n\r\n this.GenerateConfirmationEmail(guid)\r\n .subscribe((res: any) => {\r\n \r\n if (res.body) {\r\n this.spinner.hide(\"processingorder\");\r\n this.alertService\r\n .onConfirm('Perfect!', \"Your purchase has been successful\")\r\n .then((result) => {\r\n if (result.value) {\r\n if (this.cartService._deleteAllProducts()) this.router.navigate(['/confirmation', guid, 1]);\r\n }\r\n });\r\n return;\r\n }\r\n }, err => {\r\n this.spinner.hide(\"processingorder\");\r\n this.alertService\r\n .onConfirm('Perfect!', \"We couldn't send your email but your order and payment was successfully\")\r\n .then((result) => {\r\n if (result.value) {\r\n if (this.cartService._deleteAllProducts()) this.router.navigate(['/confirmation', guid, 1]);\r\n }\r\n });\r\n return;\r\n\r\n });\r\n //================================================================\r\n // END: Email Request\r\n //================================================================\r\n }\r\n });\r\n // ===============================================================\r\n // END: Redeem Products\r\n // ===============================================================\r\n } else {\r\n this.GenerateAlertError('Sorry!', \"We couldn't generate your order, please try again later.\")\r\n }\r\n }, err => {\r\n this.GenerateAlertError('Sorry!', \"We couldn't generate your order, please try again later.\")\r\n });\r\n } else {\r\n \r\n this.GenerateStripeToken()\r\n .subscribe(result => {\r\n if (result.token) {\r\n\r\n this.GenerateCharge(result.token.id, TOTAL, _products)\r\n .subscribe((res: any) => {\r\n\r\n const PAYMENTRESPONSE = res.body;\r\n\r\n if (PAYMENTRESPONSE.success) {\r\n\r\n this.GenerateOrder()\r\n .subscribe((guid: string) => {\r\n if (guid !== undefined && guid !== null) {\r\n\r\n // ===============================================================\r\n // START: Redeem Products\r\n // ===============================================================\r\n this.GenerateRedeemOrder(guid)\r\n .subscribe((res: RedeemProductResponse[]) => {\r\n\r\n if (res) {\r\n //================================================================\r\n // START: Email Request\r\n //================================================================\r\n\r\n this.GenerateConfirmationEmail(guid)\r\n .subscribe((res: any) => {\r\n\r\n if (res.body) {\r\n this.spinner.hide(\"processingorder\");\r\n this.alertService\r\n .onConfirm('Perfect!', \"Your purchase has been successful\")\r\n .then((result) => {\r\n if (result.value) {\r\n if (this.cartService._deleteAllProducts()) this.router.navigate(['/confirmation', guid, 1]);\r\n }\r\n });\r\n return;\r\n }\r\n }, err => {\r\n this.spinner.hide(\"processingorder\");\r\n this.alertService\r\n .onConfirm('Perfect!', \"We couldn't send your email but your order and payment was successfully\")\r\n .then((result) => {\r\n if (result.value) {\r\n if (this.cartService._deleteAllProducts()) this.router.navigate(['/confirmation', guid, 1]);\r\n }\r\n });\r\n return;\r\n\r\n });\r\n //================================================================\r\n // END: Email Request\r\n //================================================================\r\n }\r\n });\r\n // ===============================================================\r\n // END: Redeem Products\r\n // ===============================================================\r\n } else {\r\n this.GenerateAlertError('Sorry!', \"We couldn't generate your order, please try again later.\")\r\n }\r\n }, err => {\r\n this.GenerateAlertError('Sorry!', \"We couldn't generate your order, please try again later.\")\r\n });\r\n } else {\r\n this.GenerateAlertError('Sorry!', PAYMENTRESPONSE.message)\r\n }\r\n //END: PAYMENT SUCCESS\r\n\r\n });\r\n\r\n } else if (result.error) {\r\n this.GenerateAlertError('Sorry!', result.error.message);\r\n }\r\n });\r\n }\r\n\r\n \r\n }\r\n\r\n //=========================================================================\r\n // INTERNAL FUNCTIONS\r\n //=========================================================================\r\n\r\n GenerateStripeToken() {\r\n \r\n const name = this.stripeTest.get('name').value;\r\n return this.stripeService.createToken(this.card, { name });\r\n }\r\n\r\n GenerateCharge(tokenId: any, total: any, _products: any) {\r\n \r\n return this.paymentSevice.charge(tokenId, GlobalConstans.getUserCacheObject(\"Email\"), total, JSON.stringify(_products), GlobalConstans.getUserCacheObject(\"FullName\"));\r\n }\r\n\r\n GenerateOrder() {\r\n \r\n let couponsString = '';\r\n let discount = 0;\r\n if (this.availableCoupons.length > 0) {\r\n couponsString = JSON.stringify(this.availableCoupons.map((x) => {\r\n return {\r\n Id: x.Id,\r\n Discount: x.Discount,\r\n Subtotal: x.Subtotal\r\n }\r\n }));\r\n\r\n discount = Math.round(this.discountCoupons.reduce((a, b) => a + b.Subtotal, 0));\r\n }\r\n\r\n return this.cartService.generateOrder(couponsString, discount);\r\n }\r\n\r\n GenerateRedeemOrder(guid: string) {\r\n \r\n let redeemModel = new RedeemOrder();\r\n redeemModel.GlobalOrderId = guid;\r\n redeemModel.UserId = GlobalConstans.getUserCacheObject(\"Id\");\r\n return this.service.redeemOrder(redeemModel)\r\n }\r\n\r\n GenerateConfirmationEmail(guid: string) {\r\n \r\n let model = new MailRequest();\r\n model.Name = GlobalConstans.getUserCacheObject(\"FirstName\");\r\n model.LastName = GlobalConstans.getUserCacheObject(\"LastName\");\r\n model.Email = GlobalConstans.getUserCacheObject(\"Email\");\r\n model.ToEmail = GlobalConstans.getUserCacheObject(\"Email\");\r\n model.EmailType = EmailType.PurchaseConfirmation;\r\n model.BearerToken = GlobalConstans.getAuthToken();\r\n model.ProductList = this.cart.map(x => x.Name);\r\n model.OrderId = guid;\r\n\r\n return this.emailService.confirmation(model)\r\n }\r\n\r\n GenerateAlertError(title: string, message: string) {\r\n \r\n this.spinner.hide(\"processingorder\");\r\n return this._OnErrorAlert(title, message)\r\n .then((result) => {\r\n if (result.value) {\r\n this.loading = false;\r\n return true;\r\n }\r\n });\r\n \r\n }\r\n //=========================================================================\r\n //=========================================================================\r\n\r\n onLogin() {\r\n this.submittedLogin = true;\r\n\r\n // stop here if form is invalid\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n\r\n this.loadingLogin = true;\r\n this.authenticationService.login(this.l.username.value, this.l.password.value)\r\n .pipe(first())\r\n .subscribe(\r\n data => {\r\n\r\n if (data) return this.router.navigate(['/checkout']);\r\n\r\n this.error = \"Username or password is incorrect\";\r\n this.loadingLogin = false;\r\n },\r\n error => {\r\n this.error = error;\r\n this.loadingLogin = true;\r\n });\r\n }\r\n\r\n isLogged() {\r\n return JSON.parse(localStorage.getItem('currentUser')) !== null;\r\n }\r\n\r\n _OnErrorAlert(title: string, message: string) {\r\n\r\n return this.alertService.onError(title, message).then((result) => {\r\n if (result.value) {\r\n this.loading = false;\r\n return true;\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n validateCoupon() {\r\n\r\n if (this.coupon === '') return;\r\n\r\n if (this.availableCoupons.filter((x) => x.Coupon === this.coupon).length > 0) {\r\n return this.alertService.onInfo(\"Sorry!\", \"The '\" + this.coupon + \"' is applied\");\r\n }\r\n\r\n this.spinner.show('validatecoupon');\r\n\r\n let model = new DiscountCoupon();\r\n model.Coupon = this.coupon;\r\n\r\n this.couponSevice.redeemCoupon(model)\r\n .subscribe((response) => {\r\n \r\n if (response.Id === 0) {\r\n this.alertService.onInfo(\"Sorry!\", \"It looks like your discount coupon doesn't exist\");\r\n } else {\r\n this.coupon = '';\r\n this.availableCoupons.push(response);\r\n this.discountCoupons.push(response);\r\n }\r\n this.spinner.hide('validatecoupon');\r\n\r\n })\r\n\r\n }\r\n\r\n deleteCoupon(coupon: DiscountCoupon) {\r\n this.availableCoupons.forEach((item, index) => {\r\n if (item.Id === coupon.Id) this.availableCoupons.splice(index, 1);\r\n });\r\n\r\n this.discountCoupons.forEach((item, index) => {\r\n if (item.Id === coupon.Id) this.discountCoupons.splice(index, 1);\r\n });\r\n }\r\n\r\n caculatePercentage(coupon: DiscountCoupon) {\r\n\r\n var total = (coupon.Discount / 100) * this.totalPrice;\r\n var result = Math.round(total); //total.toFixed(2);\r\n\r\n this.discountCoupons.forEach((item, index) => {\r\n if (item.Id === coupon.Id) this.discountCoupons[index].Subtotal = result;\r\n })\r\n\r\n return result;\r\n }\r\n\r\n discountFullTotal() {\r\n var discountTotal = this.discountCoupons.reduce((a, b) => a + b.Subtotal, 0);\r\n var fullTotal = this.totalPrice - discountTotal;\r\n if (fullTotal < 0) {\r\n return 0;\r\n }\r\n return Math.round(fullTotal); //fullTotal.toFixed(2);\r\n }\r\n\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uY29tcG9uZW50LmNzcyJ9 */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { Router, ActivatedRoute, ParamMap } from \"@angular/router\";\r\n\r\n//Service\r\nimport { CartService } from \"../shared/services/cart.service\";\r\n\r\n\r\n\r\n//Constants\r\nimport { GlobalConstans } from \"../shared/global-constants/constants\";\r\n\r\n//Models\r\nimport { Order } from \"../shared/models/Order\";\r\n\r\n//Interface\r\nimport { IProduct } from \"../shared/interfaces/IProduct\";\r\nimport { CheckoutConfirmation } from \"../shared/models/CheckoutConfirmation\";\r\nimport { RedeemProductResponse } from \"../shared/models/RedeemProductResponse\";\r\n\r\n@Component({\r\n selector: \"app-confirmation\",\r\n templateUrl: \"./confirmation.component.html\",\r\n styleUrls: [\"./confirmation.component.css\"],\r\n})\r\nexport class ConfirmationComponent implements OnInit {\r\n currentOrder: Order;\r\n cart: IProduct[];\r\n totalPrice: number;\r\n slug: string;\r\n redeem: number;\r\n\r\n redeemResponse: Array = new Array();\r\n\r\n //user vars\r\n initials: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private cartService: CartService,\r\n private rutas: Router\r\n ) {\r\n this.currentOrder = new Order();\r\n\r\n if (GlobalConstans.getUserCacheObject(\"Id\") === undefined) {\r\n this.rutas.navigate([\"/index\"]);\r\n }\r\n\r\n this.route.params.subscribe((parameters) => {\r\n this.slug = parameters.slug;\r\n this.redeem = parseInt(parameters.redeem);\r\n });\r\n\r\n if (this.slug === null) {\r\n this.rutas.navigate([\"/index\"]);\r\n }\r\n\r\n const redeemProducts = this.redeem === 1; //Bandera para saber que mensaje mostrar\r\n\r\n this.initials = GlobalConstans.getUserCacheObject(\"Initials\");\r\n this.firstName = GlobalConstans.getUserCacheObject(\"FirstName\");\r\n this.lastName = GlobalConstans.getUserCacheObject(\"LastName\");\r\n this.email = GlobalConstans.getUserCacheObject(\"Email\");\r\n\r\n this.cartService.getOrderDetailsBySlug(this.slug).subscribe(\r\n (checkout: CheckoutConfirmation) => {\r\n \r\n this.currentOrder.Id = this.slug;\r\n this.currentOrder.Total = checkout.GrandTotal;\r\n this.currentOrder.Date = checkout.Created;\r\n this.currentOrder.PaymentType = \"Credit card\";\r\n this.currentOrder.CouponApplied = checkout.CouponApplied;\r\n this.currentOrder.TotalDiscount = checkout.TotalDiscount;\r\n\r\n this.totalPrice = checkout.GrandTotal;\r\n this.cart = checkout.Products;\r\n },\r\n (err) => {\r\n console.log(err);\r\n }\r\n );\r\n }\r\n\r\n ngOnInit(): void { }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbnRhY3QvY29udGFjdC5jb21wb25lbnQuY3NzIn0= */\";","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\n\r\n//Models\r\nimport { EmailTemplate } from '../shared/models/EmailTemplate';\r\nimport { EmailType } from '../shared/enums/EmailType';\r\n\r\n//Services\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { EmailService } from '../shared/services/email/email.service';\r\nimport { SendContactEmail } from '../shared/models/SendContactEmail';\r\nimport { MailRequest } from '../shared/models/MailRequest';\r\nimport { Domains } from '../shared/models/Domains';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { ContactInfo } from '../shared/models/ContactInfo';\r\n\r\n@Component({\r\n selector: 'app-contact',\r\n templateUrl: './contact.component.html',\r\n styleUrls: ['./contact.component.css']\r\n})\r\nexport class ContactComponent implements OnInit {\r\n href: string = \"\";\r\n contactForm: FormGroup;\r\n submitted = false;\r\n loading = false;\r\n domainId = 0;\r\n\r\n\r\n contactInfo: ContactInfo;\r\n\r\n constructor(private formBuilder: FormBuilder,\r\n private alertService: AlertService,\r\n private emailService: EmailService,\r\n private service: RequestsService) {\r\n\r\n this.contactInfo = new ContactInfo();\r\n\r\n this.contactForm = new FormGroup({\r\n name:new FormControl(),\r\n subject: new FormControl(),\r\n email: new FormControl(),\r\n message: new FormControl()\r\n });\r\n \r\n let jsonConfig = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if(jsonConfig !== undefined){\r\n this.domainId =parseInt(jsonConfig[\"Id\"]);\r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.resetContactForm();\r\n\r\n this.service.GetContactInfo()\r\n .subscribe((address) => {\r\n console.log({address});\r\n this.contactInfo = address;\r\n });\r\n }\r\n\r\nresetContactForm(){\r\n this.contactForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n subject: ['', Validators.required],\r\n email: ['', [Validators.required, Validators.email]],\r\n message: ['', Validators.required]\r\n \r\n });\r\n}\r\n\r\n get f() { return this.contactForm.controls; }\r\n\r\n onSubmit(){\r\n this.submitted = true;\r\n // stop here if form is invalid\r\n if (this.contactForm.invalid) { return; }\r\n\r\n this.loading = true;\r\n \r\n\r\n let model = new MailRequest();\r\n model.Name = this.contactForm.controls['name'].value;\r\n model.Subject = this.contactForm.controls['subject'].value;\r\n model.Email = this.contactForm.controls['email'].value;\r\n model.Body = this.contactForm.controls['message'].value;\r\n model.DomainId = this.domainId;//currentDomain[0].id;\r\n model.EmailType = EmailType.Contact;\r\n model.BearerToken = GlobalConstans.getAuthToken();\r\n \r\n this.emailService.contact(model).subscribe((res: any) => {\r\n if(res){\r\n\r\n this.alertService\r\n .onConfirm('Perfect!',\"We will contact you as soon as possible. Thank you.\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.contactForm.reset();\r\n this.loading = false;\r\n this.submitted = false;\r\n return true;\r\n }\r\n });\r\n return;\r\n\r\n \r\n }\r\n \r\n }, err => { \r\n this.alertService\r\n .onError('Sorry!',\"We couldn't send your email, please try again later\")\r\n .then((result) => {\r\n if (result.value) {\r\n console.log(\"Error send: \" + err); \r\n this.loading = false;\r\n return true;\r\n }\r\n });\r\n return;\r\n });\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2Nvb2tpZS9jb29raWUuY29tcG9uZW50LmNzcyJ9 */\";","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cookie',\r\n templateUrl: './cookie.component.html',\r\n styleUrls: ['./cookie.component.css']\r\n})\r\nexport class CookieComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvdXBvbm1vZGFsL2NvdXBvbm1vZGFsLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, Injectable, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { NgbActiveModal, NgbCalendar, NgbDate, NgbDateParserFormatter, NgbDateStruct, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgbDatepickerConfig } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DiscountCoupon } from '../shared/models/DiscountCoupon';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { CouponsService } from '../shared/services/coupons/coupons.service';\r\n\r\n//===========================================================================\r\n\r\nfunction padNumber(value: number | null) {\r\n if (!isNaN(value) && value !== null) {\r\n return value.toString().length === 1 ? `0${value}`.slice(-4) : `${value}`.slice(-4);\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class NgbDateCustomParserFormatter extends NgbDateParserFormatter {\r\n parse(value: string): NgbDateStruct | null {\r\n if (value) {\r\n const dateParts = value.trim().split('-');\r\n\r\n let dateObj: NgbDateStruct = { day: null, month: null, year: null }\r\n const dateLabels = Object.keys(dateObj);\r\n\r\n dateParts.forEach((datePart, idx) => {\r\n dateObj[dateLabels[idx]] = parseInt(datePart, 10) || null;\r\n });\r\n return dateObj;\r\n }\r\n return null;\r\n }\r\n\r\n format(date: NgbDateStruct | null): string {\r\n return date ? `${padNumber(date.month)}/${padNumber(date.day)}/${padNumber(date.year)}` : '';\r\n }\r\n}\r\n//===========================================================================\r\n\r\n@Component({\r\n selector: 'app-couponmodal',\r\n templateUrl: './couponmodal.component.html',\r\n styleUrls: ['./couponmodal.component.css']\r\n})\r\nexport class NgbdModalConfirmAutofocus{\r\n @Input() public coupon;\r\n couponForm: FormGroup;\r\n model: DiscountCoupon = new DiscountCoupon();\r\n clonedCoupon: DiscountCoupon = new DiscountCoupon();\r\n isCreation = true;\r\n submitCouponForm = false;\r\n \r\n couponPattern = \"[A-Z0-9^\\s]+\";\r\n invalidDueDate = false;\r\n minDate: { year: number, month: number, day: number };\r\n dueDate: NgbDate;\r\n constructor(\r\n public modal: NgbActiveModal,\r\n private formBuilder: FormBuilder,\r\n private service: CouponsService,\r\n private alertService: AlertService,\r\n private calendar: NgbCalendar ) {\r\n\r\n const current = new Date();\r\n this.minDate = {\r\n year: current.getFullYear(),\r\n month: current.getMonth() + 1,\r\n day: current.getDate() + 1\r\n };\r\n\r\n //this.dueDate = this.calendar.getToday();\r\n\r\n this.couponForm = new FormGroup({\r\n Coupon: new FormControl(),\r\n DueDate: new FormControl(),\r\n Discount: new FormControl()\r\n });\r\n\r\n this.couponForm = this.formBuilder.group({\r\n Coupon: [this.model.Coupon, [Validators.required, Validators.pattern(/^(?:[A-Z0-9]+)?$/), Validators.minLength(5), Validators.maxLength(25)]],\r\n DueDate: [this.model.DueDate, Validators.required],\r\n Discount: [this.model.Discount, [Validators.required, Validators.min(1), Validators.max(100)]],\r\n });\r\n }\r\n\r\n saveModal() {\r\n \r\n this.submitCouponForm = true;\r\n this.model.DueDate = new Date(this.couponForm.controls.DueDate.value.year, (this.couponForm.controls.DueDate.value.month - 1), this.couponForm.controls.DueDate.value.day);//this.minDate;\r\n\r\n if (!this.isCreation && this.model.Coupon === this.clonedCoupon.Coupon) {\r\n this.exec(this.model);\r\n } else {\r\n this.service.validateExistingCoupon(this.model)\r\n .subscribe((response) => {\r\n\r\n if (response !== null && response.Id !== 0) {\r\n\r\n let $title = \"Sorry!\";\r\n let $content = \"You already have an active discount coupon with the same name \";\r\n\r\n this.alertService.onError($title, $content).then((result) => {\r\n if (result.value) {\r\n this.submitCouponForm = false;\r\n return true;\r\n }\r\n });\r\n\r\n } else {\r\n \r\n this.exec(this.model);\r\n }\r\n });\r\n }\r\n\r\n \r\n\r\n \r\n }\r\n\r\n ngOnInit(): void {\r\n \r\n if (this.coupon.Id !== 0) {\r\n this.model = this.coupon;\r\n this.clonedCoupon = Object.assign({}, this.model);\r\n var d = new Date(this.model.DueDate);\r\n this.dueDate = new NgbDate(d.getFullYear(), d.getMonth() + 1, d.getDate());\r\n this.isCreation = false;\r\n }\r\n \r\n\r\n }\r\n\r\n get cf() { return this.couponForm.controls; }\r\n\r\n onDateSelection(date: NgbDate) {\r\n\r\n let selectedDate = date.month + \"/\" + date.day + \"/\" + date.year;\r\n console.log(this.model.DueDate);\r\n\r\n }\r\n\r\n closeModal() {\r\n this.modal.close();\r\n }\r\n\r\n errorAlert() {\r\n let $title = \"Sorry!\";\r\n let $content = this.isCreation\r\n ? \"We cannot create your discount coupon, try again later.\"\r\n : \"We cannot update your discount coupon, try again later.\";\r\n\r\n this.alertService.onError($title, $content).then((result) => {\r\n if (result.value) {\r\n this.submitCouponForm = false;\r\n this.closeModal();\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n successAlert() {\r\n this.closeModal();\r\n\r\n let $title = \"Done!\";\r\n let $content = this.isCreation ? \"Your coupon was created successfully!\" : \"Your coupon was updated successfully!\";\r\n\r\n this.alertService\r\n .onConfirm($title, $content)\r\n .then((result) => {\r\n if (result.value) {\r\n this.submitCouponForm = false;\r\n\r\n }\r\n });\r\n }\r\n\r\n exec(data: DiscountCoupon) {\r\n this.service[this.isCreation ? \"addCoupon\" : \"editCoupon\"](data)\r\n .subscribe((res: any) => {\r\n\r\n if (res) {\r\n this.successAlert();\r\n }\r\n\r\n\r\n }, err => {\r\n this.errorAlert();\r\n });\r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvdXJzZXMvY291cnNlcy5jb21wb25lbnQuY3NzIn0= */\";","import { Component, OnInit } from '@angular/core';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { Category } from '../shared/models/Category';\r\nimport { ICourses } from '../shared/interfaces/courses';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { Product } from '../shared/models/Product';\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\nimport {NgbTabsetConfig} from '@ng-bootstrap/ng-bootstrap';\r\n\r\n//Interfaces\r\nimport { ICategory } from '../shared/interfaces/categories';\r\nimport { ILanguage } from '../shared/interfaces/language';\r\nimport { ILevel } from '../shared/interfaces/ILevel';\r\n\r\n//enums\r\nimport { ContentType } from '../shared/enums/ContentType'\r\n\r\n@Component({\r\n selector: 'app-courses',\r\n templateUrl: './courses.component.html',\r\n styleUrls: ['./courses.component.css'],\r\n providers: [NgbTabsetConfig]\r\n})\r\nexport class CoursesComponent implements OnInit {\r\n\r\n courseContentType = ContentType.Course;\r\n\r\n customOptions: any = {}\r\n categories: Array = new Array();\r\n loadCategories = false;\r\n\r\n fCourses: ICourses[];\r\n fCoursesLoaded = false;\r\n\r\n rCourses: ICourses[];\r\n rCoursesLoaded = false;\r\n\r\n searchCategories: ICategory[];\r\n constructor(\r\n private requestService: RequestsService,\r\n config: NgbTabsetConfig,\r\n private cartService: CartService,\r\n private toastService: ToastService) {\r\n\r\n config.justify = 'center';\r\n config.type = 'pills';\r\n\r\n this.requestService.courseHome_GetTopCategories().subscribe((res: Category[]) => { \r\n this.categories = res; \r\n this.categories.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnCategoryUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n GlobalConstans.imageExists(element.ImgSrc, function(exists) {\r\n if(!exists){\r\n console.log('RESULT: url=' + element.ImgSrc + ', exists=' + exists);\r\n element.ImgSrc = GlobalConstans.returnCategoryUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n }\r\n });\r\n \r\n });\r\n this.loadCategories = true;\r\n \r\n }, err => { console.log(err); });\r\n\r\n this.requestService.loadTopCourses().subscribe((res: ICourses[]) => { \r\n this.fCourses = res; \r\n this.fCourses.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n GlobalConstans.imageExists(element.ImgSrc, function(exists) {\r\n if(!exists){\r\n console.log('RESULT: url=' + element.ImgSrc + ', exists=' + exists);\r\n element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n }\r\n });\r\n \r\n });\r\n this.fCoursesLoaded = true;\r\n \r\n }, err => { console.log(err); });\r\n\r\n this.requestService.courseHome_GetRecentAdded().subscribe((res: ICourses[]) => { \r\n this.rCourses = res; \r\n this.rCourses.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n GlobalConstans.imageExists(element.ImgSrc, function(exists) {\r\n if(!exists){\r\n console.log('RESULT: url=' + element.ImgSrc + ', exists=' + exists);\r\n element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n }\r\n });\r\n \r\n });\r\n this.rCoursesLoaded = true;\r\n \r\n }, err => { console.log(err); });\r\n\r\n //Search requests\r\n this.requestService.loadCategories().subscribe((res: ICategory[]) => { this.searchCategories = res; }, err => { console.log(err); });\r\n \r\n }\r\n\r\n ngOnInit(): void {\r\n this.customOptions = {\r\n loop: false,\r\n mouseDrag: false,\r\n touchDrag: false,\r\n pullDrag: false,\r\n margin:15,\r\n dots: false,\r\n navSpeed: 700,\r\n navText: ['', ''],\r\n nav: true,\r\n responsive: {\r\n 0: {\r\n items: 1\r\n },\r\n 400: {\r\n items: 2\r\n },\r\n 740: {\r\n items: 3\r\n },\r\n 940: {\r\n items: 3\r\n }\r\n },\r\n }\r\n }\r\n\r\n addProduct(model: any){\r\n\r\n this.cartService._addProductToCart(model);\r\n \r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2N1c3RvbWl6YXRpb24vY3VzdG9taXphdGlvbi5jb21wb25lbnQuY3NzIn0= */\";","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl, FormGroupDirective, FormArray, Form } from '@angular/forms';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\n\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\n\r\n//Models\r\nimport { ContactInfo } from '../shared/models/ContactInfo';\r\nimport { EmailConfig } from '../shared/models/EmailConfig';\r\nimport { StripeConfig } from '../shared/models/StripeConfig';\r\nimport { AccountResponse } from '../shared/models/AccountResponse';\r\nimport { Address } from '../shared/models/Address';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { EmailService } from '../shared/services/email/email.service';\r\nimport { MailRequest } from '../shared/models/MailRequest';\r\n\r\n@Component({\r\n selector: 'app-customization',\r\n templateUrl: './customization.component.html',\r\n styleUrls: ['./customization.component.css']\r\n})\r\nexport class CustomizationComponent implements OnInit {\r\n //Bind data\r\n Contact: ContactInfo;\r\n Email: EmailConfig;\r\n Stripe: StripeConfig;\r\n \r\n \r\n\r\n //flags\r\n editMode = false;\r\n successAlert = false;\r\n errorAlert = false;\r\n response: AccountResponse;\r\n\r\n \r\n // EditFlags\r\n editContactInformation = false;\r\n editEmailSettings = false;\r\n editStripeSettings = false;\r\n \r\n //Forms\r\n contactInformationForm: FormGroup;\r\n emailSettingsForm: FormGroup;\r\n stripeSettingsForm: FormGroup;\r\n\r\n //submit vars\r\n submitContactInformationForm = false;\r\n submitEmailSettingsForm = false;\r\n submitStripeSettingsForm = false;\r\n\r\n //loading vars\r\n loadingContactInformationForm = false;\r\n loadingEmailSettingsForm = false;\r\n loadingStripeSettingsForm = false;\r\n\r\n\r\n\r\n public enableCaurouselEdition = false;\r\n\r\n constructor(private alert: AlertService, private service: RequestsService,\r\n private formBuilder: FormBuilder, private rutas: Router, private emailService: EmailService) {\r\n \r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if(userObject === null || !userObject.IsCartManager)\r\n {\r\n this.rutas.navigate(['/index']); \r\n }\r\n\r\n //Init response object\r\n this.response = new AccountResponse();\r\n\r\n //Contact Information Form\r\n this.contactInformationForm = new FormGroup({ \r\n Schedule:new FormControl(), \r\n Country: new FormControl(),\r\n State: new FormControl(),\r\n City: new FormControl(),\r\n Direction: new FormControl(),\r\n PostalCode: new FormControl(),\r\n Telephone: new FormControl(),\r\n });\r\n\r\n //Email Settings Form\r\n this.emailSettingsForm = new FormGroup({\r\n Mail: new FormControl(),\r\n DisplayName: new FormControl(),\r\n Password : new FormControl(),\r\n Host: new FormControl(),\r\n Port: new FormControl(),\r\n EmailReceiver: new FormControl(),\r\n EmailCopyPurchase: new FormControl(),\r\n TestEmail: new FormControl()\r\n });\r\n\r\n\r\n //Stripe Settings Form\r\n this.stripeSettingsForm = new FormGroup({\r\n PublicKey: new FormControl(),\r\n SecretKey: new FormControl(),\r\n });\r\n\r\n }\r\n \r\n//=====================================================================================================\r\n// ngOnInit() \r\n//=====================================================================================================\r\n ngOnInit(): void {\r\n \r\n this.getDataForEdit();\r\n this.enableCaurouselEdition = GlobalConstans.getCacheValue(\"ShowBanner\");\r\n \r\n }\r\n\r\n\r\ngetDataForEdit(){\r\n this.service.GetCustomizationInfo()\r\n .subscribe((info) => {\r\n\r\n this.Contact = info.ContactInfo;\r\n this.Email = info.EmailSettings;\r\n this.Stripe = info.StripeSettings;\r\n\r\n this.onInitContactInformationForm();\r\n this.onInitEmailSettingsForm();\r\n this.onInitStripeSettingsForm();\r\n });\r\n}\r\n\r\n//=====================================================================================================\r\n// Toggle Carousel Slider\r\n//=====================================================================================================\r\n onCheckboxCarousel(value) {\r\n \r\n let isChecked = value.target.checked;\r\n\r\n let $title = isChecked ? 'Enable Carousel Slider' : 'Disabled Carousel Slider';\r\n let $text = isChecked \r\n ? 'Do you want to enable the carousel slider?'\r\n : 'Do you want to disabled the carousel slider?'\r\n let $button = {'ConfirmButtonText': 'Change', 'cancelButtonText': 'Cancel'};\r\n\r\n this.alert.onBeforeConfirm($title, $text, $button)\r\n .then((response) => {\r\n\r\n if(response.value === true){\r\n \r\n this.service.ChangeShowBanner(isChecked)\r\n .subscribe((response:any) => {\r\n \r\n if(response.Success){\r\n this.enableCaurouselEdition = isChecked;\r\n let text = isChecked \r\n ? \"You have enabled the carousel successfully\"\r\n : \"You have disabled the carousel successfully\";\r\n return this.alert.onConfirm(\"Perfect\",text);\r\n }\r\n\r\n });\r\n \r\n \r\n }else{\r\n this.enableCaurouselEdition = !isChecked;\r\n }\r\n });\r\n\r\n }\r\n\r\n//=====================================================================================================\r\n// Inicialización de Formularios\r\n//=====================================================================================================\r\n\r\n onInitContactInformationForm()\r\n {\r\n this.contactInformationForm = this.formBuilder.group({\r\n Country: [this.Contact.Address.Country, Validators.required],\r\n City: [this.Contact.Address.City, Validators.required],\r\n State: [this.Contact.Address.State, Validators.required],\r\n Direction: [this.Contact.Address.Direction, Validators.required],\r\n PostalCode: [this.Contact.Address.PostalCode, Validators.required],\r\n Schedule: [this.Contact.Schedule],\r\n Telephone: [this.Contact.PhoneNumber],\r\n Email: [this.Contact.Email, Validators.email],\r\n })\r\n };\r\n\r\n onInitEmailSettingsForm()\r\n {\r\n this.emailSettingsForm = this.formBuilder.group({\r\n Mail: [this.Email.Mail, Validators.required],\r\n DisplayName: [this.Email.DisplayName, Validators.required],\r\n Password: [this.Email.Password, Validators.required],\r\n Host: [this.Email.Host, Validators.required],\r\n Port: [this.Email.Port === 0 ? '' : this.Email.Port, Validators.required],\r\n EmailReceiver: [this.Email.EmailReceiver, Validators.required],\r\n EmailCopyPurchase: [this.Email.EmailCopyPurchase, Validators.required],\r\n TestEmail: ['']\r\n })\r\n };\r\n\r\n onInitStripeSettingsForm()\r\n {\r\n this.stripeSettingsForm = this.formBuilder.group({\r\n PublicKey: [this.Stripe.PublicKey, Validators.required],\r\n SecretKey: [this.Stripe.SecretKey, Validators.required]\r\n })\r\n };\r\n\r\n \r\n// ====================================================================================================================================\r\n// FORMS PROPERTIES\r\n// ====================================================================================================================================\r\n get ci() { return this.contactInformationForm.controls; }\r\n get es() { return this.emailSettingsForm.controls; }\r\n get ss() { return this.stripeSettingsForm.controls; }\r\n\r\n\r\n// ====================================================================================================================================\r\n// Submit Forms Functions\r\n// ====================================================================================================================================\r\n\r\n onSubmitContactInformation(){\r\n this.submitContactInformationForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.contactInformationForm.invalid) { return; }\r\n\r\n this.loadingContactInformationForm = true;\r\n\r\n let contact = new ContactInfo();\r\n let address = new Address();\r\n address.PostalCode = this.contactInformationForm.value.PostalCode;\r\n address.City = this.contactInformationForm.value.City;\r\n address.State = this.contactInformationForm.value.State;\r\n address.Country = this.contactInformationForm.value.Country;\r\n address.Direction = this.contactInformationForm.value.Direction;\r\n contact.Address = address;\r\n contact.Email = this.contactInformationForm.value.Email;\r\n contact.PhoneNumber = this.contactInformationForm.value.Telephone;\r\n contact.Schedule = this.contactInformationForm.value.Schedule;\r\n \r\n this.service.UpdateContactInfo(contact)\r\n .subscribe((res:any) => {\r\n\r\n if(res.Success){\r\n\r\n this.successAlert = true;\r\n this.response.Message = \"You have updated the Contact information successfully!\";\r\n this.cancel('contactInformation', true);\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n }, err => { \r\n this.submitContactInformationForm = false;\r\n this.loadingContactInformationForm = false;\r\n console.log(err);\r\n })\r\n }\r\n\r\n onSubmitEmailSettings(){\r\n this.submitEmailSettingsForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.emailSettingsForm.invalid) { return; }\r\n\r\n this.loadingEmailSettingsForm = true;\r\n\r\n let email = new EmailConfig();\r\n email.Mail = this.emailSettingsForm.value.Mail;\r\n email.DisplayName = this.emailSettingsForm.value.DisplayName;\r\n email.Password = this.emailSettingsForm.value.Password;\r\n email.Host = this.emailSettingsForm.value.Host;\r\n email.Port = this.emailSettingsForm.value.Port;\r\n email.EmailReceiver = this.emailSettingsForm.value.EmailReceiver;\r\n email.EmailCopyPurchase = this.emailSettingsForm.value.EmailCopyPurchase; \r\n this.service.UpdateEmailSettings(email)\r\n .subscribe((res:any)=>{\r\n\r\n if(res.Success){\r\n\r\n this.successAlert = true;\r\n this.response.Message = \"You have updated the Email settings successfully!\";\r\n this.cancel('emailSettings', true);\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n }, err => { \r\n this.submitEmailSettingsForm = false;\r\n this.loadingEmailSettingsForm = false;\r\n console.log(err);\r\n });\r\n }\r\n\r\n onSubmitStripeSettings(){\r\n this.submitStripeSettingsForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.stripeSettingsForm.invalid) { return; }\r\n\r\n this.loadingStripeSettingsForm = true;\r\n\r\n let stripe = new StripeConfig();\r\n stripe.PublicKey = this.stripeSettingsForm.value.PublicKey;\r\n stripe.SecretKey = this.stripeSettingsForm.value.SecretKey;\r\n\r\n this.service.UpdateStripeSettings(stripe)\r\n .subscribe((res:any) => {\r\n\r\n if(res.Success){\r\n\r\n this.successAlert = true;\r\n this.response.Message = \"You have updated the Stripe settings successfully!\";\r\n this.cancel('stripeSettings', true);\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n }, err => { \r\n this.submitStripeSettingsForm = false;\r\n this.loadingStripeSettingsForm = false;\r\n console.log(err);\r\n });\r\n\r\n }\r\n\r\n\r\n// ====================================================================================================================================\r\n// Aux Functions\r\n// ====================================================================================================================================\r\n changeMode(enableForm: string){\r\n this.editMode = true;\r\n this.successAlert = false;\r\n\r\n switch (enableForm) {\r\n case 'contactInformation':\r\n this.editContactInformation = true;\r\n break;\r\n case 'emailSettings':\r\n this.editEmailSettings = true;\r\n break;\r\n case 'stripeSettings':\r\n this.editStripeSettings = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n \r\n cancel(disabledForm: string, execute?:boolean){\r\n this.editMode = false;\r\n this.errorAlert = false;\r\n\r\n this.editContactInformation = false;\r\n this.editEmailSettings = false;\r\n this.editStripeSettings = false;\r\n\r\n this.submitContactInformationForm = false;\r\n this.submitEmailSettingsForm = false;\r\n this.submitStripeSettingsForm = false;\r\n\r\n this.loadingContactInformationForm = false;\r\n this.loadingEmailSettingsForm = false;\r\n this.loadingStripeSettingsForm = false;\r\n\r\n if(execute){\r\n this.getDataForEdit();\r\n }\r\n\r\n }\r\n\r\n sendTestEmail() {\r\n \r\n const currentEmail = this.emailSettingsForm.value.TestEmail;\r\n\r\n if (currentEmail === '' || currentEmail === null) return;\r\n\r\n let model = new MailRequest();\r\n model.ToEmail = currentEmail;\r\n model.BearerToken = GlobalConstans.getAuthToken();\r\n\r\n this.emailService.emailDemo(model).subscribe((res: any) => {\r\n if (res) {\r\n this.alert\r\n .onConfirm('Perfect!', \"Email service is working!\")\r\n .then((result) => {\r\n if (result.value) {\r\n return;\r\n }\r\n });\r\n\r\n } else {\r\n this.alert\r\n .onError('Sorry!', \"There is a problem with the email service, please contact your administrator.\")\r\n .then((result) => {\r\n if (result.value) {\r\n return true;\r\n }\r\n });\r\n }\r\n })\r\n }\r\n}\r\n","export default \".pb-title{\\r\\n padding-bottom:30px;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGlzY291bnQvZGlzY291bnQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLG1CQUFtQjtBQUN2QiIsImZpbGUiOiJzcmMvYXBwL2Rpc2NvdW50L2Rpc2NvdW50LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucGItdGl0bGV7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTozMHB4O1xyXG59XHJcbiJdfQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgbdModalConfirmAutofocus } from '../couponmodal/couponmodal.component';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { DiscountCoupon } from '../shared/models/DiscountCoupon';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { CouponsService } from '../shared/services/coupons/coupons.service';\r\nimport { UsersbycouponComponent } from '../usersbycoupon/usersbycoupon.component';\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\n\r\n@Component({\r\n selector: 'app-discount',\r\n templateUrl: './discount.component.html',\r\n styleUrls: ['./discount.component.css']\r\n})\r\nexport class DiscountComponent implements OnInit {\r\n\r\n modalOption: NgbModalOptions = {};\r\n\r\n // Table vars\r\n coupons: Array = new Array();\r\n couponsCopy: Array = new Array();\r\n loadCoupons = false;\r\n\r\n orderCoupon = false;\r\n orderDiscount = false;\r\n orderDueDate = false;\r\n orderReleasedDate = false;\r\n\r\n enableCoupons = false;\r\n\r\n page = 1;\r\n pageSize = 25;\r\n collectionSize = 0;\r\n\r\n constructor(\r\n private alert: AlertService,\r\n private rutas: Router,\r\n private modalService: NgbModal,\r\n private service: CouponsService,\r\n private clipboard: Clipboard,\r\n private toastService: ToastService ) {\r\n\r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if (userObject === null || !userObject.IsManageCoupons) {\r\n this.rutas.navigate(['/index']);\r\n return;\r\n }\r\n this.enableCoupons = GlobalConstans.getCacheValue(\"DiscountCoupons\");\r\n this.OnGetCouponsByOrganization();\r\n }\r\n\r\n\r\n OnGetCouponsByOrganization() {\r\n this.service.getCouponsByOrganizationId().subscribe((res: DiscountCoupon[]) => {\r\n this.coupons = res;\r\n this.couponsCopy = res;\r\n this.loadCoupons = true;\r\n this.collectionSize = this.coupons.length;\r\n }, err => { console.log(err); });\r\n }\r\n\r\n //=====================================================================================================\r\n // ngOnInit() \r\n //=====================================================================================================\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n get result(): DiscountCoupon[] {\r\n if (this.coupons !== undefined) {\r\n return this.coupons.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);\r\n }\r\n }\r\n\r\n setLabel(status: number) {\r\n switch (status) {\r\n case 0:\r\n return 'Draft';\r\n case 1:\r\n return 'Edited';\r\n case 2:\r\n return 'Released';\r\n default:\r\n return 'Draft';\r\n }\r\n }\r\n\r\n\r\n parseDate(date) {\r\n var d = new Date(date)\r\n\r\n if (d.getFullYear() === 1) {\r\n return \" - - - \";\r\n } else {\r\n return d.toLocaleDateString(\"en-US\");\r\n }\r\n }\r\n\r\n\r\n addCoupon(data: DiscountCoupon) {\r\n\r\n this.modalOption.backdrop = 'static';\r\n this.modalOption.keyboard = false;\r\n this.modalOption.centered = true;\r\n\r\n const modalRef = this.modalService.open(NgbdModalConfirmAutofocus, this.modalOption);\r\n \r\n var model = data || new DiscountCoupon();\r\n modalRef.componentInstance.coupon = model;\r\n modalRef.result.then((result) => {\r\n this.OnGetCouponsByOrganization();\r\n });\r\n }\r\n\r\n publish(coupon: DiscountCoupon) {\r\n if (coupon.Status === 2) {\r\n return this.alert.onConfirm(\"Released\",\"Your discount coupon has already been published\");\r\n }\r\n\r\n let $title = \"Release coupon\";\r\n let $text = \"Do you want to publish the '\" + coupon.Coupon + \"' coupon?\";\r\n let $buttons = { 'ConfirmButtonText': 'Publish', 'cancelButtonText': 'Cancel' };\r\n\r\n this.alert.onBeforeConfirm($title, $text, $buttons)\r\n .then((response) => {\r\n if (response.value) {\r\n this.service.publishCoupon(coupon.Id)\r\n .subscribe((response) => {\r\n \r\n if (response) {\r\n\r\n this.alert\r\n .onConfirm('Done!', \"Your discount coupon has been published successfully\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.OnGetCouponsByOrganization();\r\n }\r\n });\r\n }\r\n })\r\n } else {\r\n return;\r\n }\r\n })\r\n }\r\n\r\n usersByCoupon(coupon: DiscountCoupon) {\r\n if (coupon.TotalRedemptions === 0) {\r\n return this.alert.onInfo(\"Ups!\", \"It looks like no one has redeemed this coupon yet\");\r\n } else {\r\n\r\n this.modalOption.backdrop = 'static';\r\n this.modalOption.keyboard = false;\r\n this.modalOption.centered = true;\r\n this.modalOption.size = 'xl';\r\n const modalRef = this.modalService.open(UsersbycouponComponent, this.modalOption);\r\n\r\n var model = coupon || new DiscountCoupon();\r\n modalRef.componentInstance.coupon = model;\r\n modalRef.result.then((result) => { return; });\r\n\r\n }\r\n }\r\n\r\n delete(coupon: DiscountCoupon) {\r\n \r\n let $title = \"Delete Coupon\";\r\n let $text = \"Do you want to delete the '\" + coupon.Coupon + \"' coupon?\";\r\n let $buttons = { 'ConfirmButtonText': 'Delete', 'cancelButtonText': 'Cancel' };\r\n\r\n this.alert.onBeforeConfirm($title, $text, $buttons)\r\n .then((response) => {\r\n if (response.value) {\r\n this.service.deleteCoupon(coupon.Id)\r\n .subscribe((response) => {\r\n console.log({ response });\r\n if (response) {\r\n\r\n this.alert\r\n .onConfirm('Done!', \"Your discount coupon has been deleted successfully\")\r\n .then((result) => {\r\n if (result.value) { \r\n this.OnGetCouponsByOrganization();\r\n }\r\n });\r\n }\r\n })\r\n } else {\r\n return;\r\n }\r\n })\r\n }\r\n\r\n setDiscountCoupons() {\r\n \r\n let isChecked = !this.enableCoupons;\r\n\r\n let $title = isChecked ? 'Enable Discount Coupons' : 'Disabled Discount Coupons';\r\n let $text = isChecked\r\n ? 'Do you want to enable discount coupons funcionality?'\r\n : 'Do you want to disabled discount coupons funcionality?'\r\n let $button = { 'ConfirmButtonText': 'Change', 'cancelButtonText': 'Cancel' };\r\n\r\n this.alert.onBeforeConfirm($title, $text, $button)\r\n .then((response) => {\r\n\r\n if (response.value) {\r\n\r\n this.service.changeDiscountCoupons(isChecked)\r\n .subscribe((response: any) => {\r\n\r\n if (response.Success) {\r\n\r\n GlobalConstans.updateCacheValue(\"DiscountCoupons\", isChecked);\r\n\r\n this.enableCoupons = isChecked;\r\n let text = isChecked\r\n ? \"You have enabled discount coupons funcionality\"\r\n : \"You have disabled discount coupons funcionality\";\r\n return this.alert.onConfirm(\"Perfect\", text);\r\n }\r\n\r\n });\r\n\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n //========================================\r\n \r\n onSortCoupon() {\r\n this.orderCoupon = !this.orderCoupon;\r\n\r\n if (this.orderCoupon) {\r\n // Ascending\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.Coupon > b.Coupon ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.Coupon > b.Coupon ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n onSortDiscount() {\r\n this.orderDiscount = !this.orderDiscount;\r\n\r\n if (this.orderDiscount) {\r\n // Ascending\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.Discount > b.Discount ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.Discount > b.Discount ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n onSortDueDate() {\r\n this.orderDueDate = !this.orderDueDate;\r\n\r\n if (this.orderDueDate) {\r\n // Ascending\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.DueDate > b.DueDate ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.DueDate > b.DueDate ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n onSortReleasedDate() {\r\n this.orderReleasedDate = !this.orderReleasedDate;\r\n\r\n if (this.orderReleasedDate) {\r\n // Ascending\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.ReleasedDate > b.ReleasedDate ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.coupons = this.coupons.sort((a, b) => 0 - (a.ReleasedDate > b.ReleasedDate ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n\r\n searchText(search: string) {\r\n \r\n if (search === '') {\r\n this.coupons = this.couponsCopy;\r\n return;\r\n }\r\n\r\n this.coupons = this.coupons.filter((a) => a.Coupon.match(search));\r\n }\r\n\r\n copyText(textToCopy:string) {\r\n this.clipboard.copy(textToCopy);\r\n this.toastService.onSuccess(\"Done!\",\"Copied\");\r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2V4YW1kZXRhaWxzL2V4YW1kZXRhaWxzLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n//Constants\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n//Service\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\n\r\n//Models\r\nimport { Test } from '../shared/models/Test';\r\nimport { Product } from '../shared/models/Product';\r\n\r\n//Interfaces\r\nimport { ITests } from '../shared/interfaces/tests';\r\nimport { IQuestion } from '../shared/interfaces/question';\r\n\r\n@Component({\r\n selector: 'app-examdetails',\r\n templateUrl: './examdetails.component.html',\r\n styleUrls: ['./examdetails.component.css']\r\n})\r\nexport class ExamdetailsComponent implements OnInit {\r\n testId: number;\r\n test: ITests;\r\n loading: boolean;\r\n videoId: string;\r\n isYouTube: boolean;\r\n\r\n constructor(private route: ActivatedRoute,\r\n private service: RequestsService,\r\n private cartService: CartService, \r\n private toastService: ToastService,\r\n private modalService: NgbModal) {\r\n\r\n this.route.params.subscribe(parameters => { this.testId = parameters.globalId; });\r\n this.test = new Test();\r\n this.loading = false;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.service.getExamDetailsById(this.testId).subscribe((res: ITests) => { \r\n this.test = res;\r\n console.log({ 'test': res });\r\n this.test.ImgSrc = GlobalConstans.returnExamsUrlImage(this.test.CompanyId.toString(), this.test.Id.toString(),this.test.ImgSrc);\r\n this.loading = true;\r\n }, err => { console.log(err); });\r\n }\r\n\r\n addProduct(model: any){\r\ndebugger;\r\n this.cartService._addProductToCart(model);\r\n \r\n }\r\n\r\n openWindowCustomClass(content) {\r\n //this.currentCourse.VideoSrc = \"https://vjs.zencdn.net/v/oceans.mp4\";\r\n this.getYouTubeId();\r\n this.modalService.open(content, { centered: true, size: 'lg' });\r\n }\r\n\r\n getYouTubeId(){\r\n //Extraje el componente de aqui: https://stackblitz.com/edit/angular-youtube-video?file=src%2Findex.html\r\n let $this = this.test.VideoSrc;\r\n \r\n if ($this.match(/(\\?|&)v=([^&#]+)/)) {\r\n $this = $this.match(/(\\?|&)v=([^&#]+)/).pop();\r\n this.isYouTube = true;\r\n \r\n } else if ($this.match(/(\\.be\\/)+([^\\/]+)/)) {\r\n $this = $this.match(/(\\.be\\/)+([^\\/]+)/).pop();\r\n this.isYouTube = true;\r\n \r\n } else if ($this.match(/(\\embed\\/)+([^\\/]+)/)) {\r\n $this = $this.match(/(\\embed\\/)+([^\\/]+)/).pop().replace('?rel=0','');\r\n this.isYouTube = true;\r\n }\r\n \r\n this.videoId = $this;\r\n }\r\n\r\n setDefaultPic() {\r\n this.test.ImgSrc = GlobalConstans.returnExamsUrlImage(\"0\", \"0\", undefined);\r\n }\r\n\r\n print(): void {\r\n \r\n let footer = document.getElementById('footer');\r\n footer.classList.add(\"d-none\");\r\n \r\n setTimeout(function () {\r\n window.print();\r\n }, 1000);\r\n \r\n setTimeout(function () {\r\n footer.classList.remove(\"d-none\");\r\n }, 1000);\r\n \r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2V4YW1zL2V4YW1zLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { Category } from '../shared/models/Category';\r\nimport { ICategory } from '../shared/interfaces/categories';\r\nimport { ITests } from '../shared/interfaces/tests';\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\nimport { Product } from '../shared/models/Product';\r\nimport {NgbTabsetConfig} from '@ng-bootstrap/ng-bootstrap';\r\n//Constants\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n//enums\r\nimport { ContentType } from '../shared/enums/ContentType'\r\n\r\n@Component({\r\n selector: 'app-exams',\r\n templateUrl: './exams.component.html',\r\n styleUrls: ['./exams.component.css'],\r\n providers: [NgbTabsetConfig]\r\n})\r\nexport class ExamsComponent implements OnInit {\r\n\r\n examContentType = ContentType.Exam;\r\n\r\n customOptions: any = {}\r\n categories: ICategory[];\r\n loadCategories = false;\r\n\r\n fTests: ITests[];\r\n loadFTests = false;\r\n\r\n rTests: ITests[];\r\n loadrTests = false;\r\n\r\n constructor(private requestService: RequestsService,\r\n config: NgbTabsetConfig,\r\n private cartService: CartService,\r\n private toastService: ToastService) {\r\n\r\n config.justify = 'center';\r\n config.type = 'pills';\r\n\r\n this.requestService.examHome_GetTopCategories().subscribe((res: ICategory[]) => { \r\n this.categories = res; \r\n this.categories.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnCategoryUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n GlobalConstans.imageExists(element.ImgSrc, function(exists) {\r\n if(!exists){\r\n console.log('RESULT: url=' + element.ImgSrc + ', exists=' + exists);\r\n element.ImgSrc = GlobalConstans.returnCategoryUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n }\r\n });\r\n });\r\n this.loadCategories = true;\r\n \r\n }, err => { console.log(err); });\r\n\r\n this.requestService.loadTopTests().subscribe((res: ITests[]) => { \r\n this.fTests = res; \r\n this.fTests.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(),element.ImgSrc);\r\n GlobalConstans.imageExists(element.ImgSrc, function(exists) {\r\n if(!exists){\r\n console.log('RESULT: url=' + element.ImgSrc + ', exists=' + exists);\r\n element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n }\r\n });\r\n });\r\n this.loadFTests = true;\r\n }, err => { console.log(err); });\r\n\r\n this.requestService.examHome_GetRecentAdded().subscribe((res: ITests[]) => { \r\n this.rTests = res; \r\n this.rTests.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(),element.ImgSrc);\r\n GlobalConstans.imageExists(element.ImgSrc, function(exists) {\r\n if(!exists){\r\n console.log('RESULT: url=' + element.ImgSrc + ', exists=' + exists);\r\n element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n }\r\n });\r\n });\r\n\r\n this.loadrTests = true;\r\n }, err => { console.log(err); });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.customOptions = {\r\n loop: false,\r\n mouseDrag: false,\r\n touchDrag: false,\r\n pullDrag: false,\r\n margin:15,\r\n dots: false,\r\n navSpeed: 700,\r\n navText: ['', ''],\r\n nav: true,\r\n responsive: {\r\n 0: {\r\n items: 1\r\n },\r\n 400: {\r\n items: 2\r\n },\r\n 740: {\r\n items: 3\r\n },\r\n 940: {\r\n items: 3\r\n }\r\n },\r\n }\r\n }\r\n\r\n addProduct(model: any){\r\n\r\n this.cartService._addProductToCart(model);\r\n \r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2ZvcmdvdC9mb3Jnb3QuY29tcG9uZW50LmNzcyJ9 */\";","import { ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { AuthenticationService } from '../shared/services/authentication/authentication.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { MailRequest } from '../shared/models/MailRequest';\r\nimport { EmailType } from '../shared/enums/EmailType';\r\nimport { EmailService } from '../shared/services/email/email.service';\r\nimport { User } from '../shared/models/User';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { InvisibleReCaptchaComponent, ReCaptcha2Component, ReCaptchaV3Service } from 'ngx-captcha';\r\n\r\n@Component({\r\n selector: 'app-forgot',\r\n templateUrl: './forgot.component.html',\r\n styleUrls: ['./forgot.component.css']\r\n})\r\nexport class ForgotComponent implements OnInit {\r\n recoverForm: FormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n error = '';\r\n siteKey: any;\r\n //captchaToken: string;\r\n\r\n public captchaIsLoaded = false;\r\n public captchaSuccess = false;\r\n public captchaResponse?: string;\r\n public captchaIsReady = false;\r\n\r\n public badge: 'bottomright' | 'bottomleft' | 'inline' = 'inline';\r\n public type: 'image' | 'audio';\r\n public theme: 'light' | 'dark' = 'light';\r\n\r\n public recaptcha: any = null;\r\n\r\n @ViewChild('captchaElem', { static: false }) captchaElem: InvisibleReCaptchaComponent;\r\n @ViewChild('langInput', { static: false }) langInput: ElementRef;\r\n\r\n //@ViewChild('recaptchaElement', { static: true }) recaptchaElement: ReCaptcha2Component;\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private authenticationService: AuthenticationService,\r\n private alertService: AlertService,\r\n private emailService: EmailService,\r\n private rutas: Router,\r\n private reCaptchaV3Service: ReCaptchaV3Service,\r\n private cdr: ChangeDetectorRef ) {\r\n\r\n this.recoverForm = new FormGroup({ useremail: new FormControl()});\r\n this.siteKey = GlobalConstans.CaptchaSiteKey;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.recoverForm = this.formBuilder.group({\r\n email: ['', [Validators.required, Validators.email]],\r\n });\r\n }\r\n\r\n get f() { return this.recoverForm.controls; }\r\n\r\n onSubmit() {\r\n \r\n this.submitted = true;\r\n\r\n // stop here if form is invalid\r\n if (this.recoverForm.invalid) { return; }\r\n\r\n //if (this.captchaToken !== undefined && this.captchaToken !== null && this.captchaToken !== \"\") {\r\n\r\n this.loading = true;\r\n\r\n this.authenticationService.validateUserByEmail(this.recoverForm.value.email)\r\n .subscribe((_user: User) => {\r\n \r\n if (_user) {\r\n\r\n let model = new MailRequest();\r\n model.UserId = _user.Id;\r\n model.Name = _user.FirstName;\r\n model.LastName = _user.LastName;\r\n model.Email = this.recoverForm.value.email;\r\n model.ToEmail = this.recoverForm.value.email;\r\n model.EmailType = EmailType.PasswordRecovery;\r\n //model.DomainId = currentDomain[0].id;\r\n model.CurrentUrl = document.location.origin;\r\n model.BearerToken = GlobalConstans.getAuthToken();\r\n\r\n this.emailService.recover(model).subscribe((res: any) => {\r\n if (res) {\r\n\r\n this.alertService\r\n .onConfirm('Perfect!', \"We have send you an email with instructions to recover your password\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.loading = false;\r\n this.rutas.navigate(['/index']);\r\n return true;\r\n }\r\n });\r\n return;\r\n\r\n\r\n }\r\n\r\n }, err => {\r\n this.alertService\r\n .onConfirm('Perfect!', \"We have send you an email with instructions to recover your password\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.loading = false;\r\n this.rutas.navigate(['/index']);\r\n return true;\r\n }\r\n });\r\n return;\r\n });\r\n\r\n } else {\r\n this.alertService\r\n .onConfirm('Perfect!', \"We have send you an email with instructions to recover your password\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.loading = false;\r\n this.rutas.navigate(['/index']);\r\n return true;\r\n }\r\n });\r\n return;\r\n }\r\n\r\n }, err => {\r\n\r\n this.alertService\r\n .onConfirm('Perfect!', \"We have send you an email with instructions to recover your password\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.loading = false;\r\n this.rutas.navigate(['/index']);\r\n return true;\r\n }\r\n });\r\n return;\r\n\r\n });\r\n //}\r\n\r\n\r\n\r\n}\r\n\r\n //handleLoad() { }\r\n //handleSuccess($event) { console.log('handleSuccess'); }\r\n //handleExpire() { }\r\n //handleReset() { }\r\n //handleReady() { }\r\n ngAfterViewInit(): void {\r\n this.captchaIsLoaded = true;\r\n this.cdr.detectChanges();\r\n //this.highlight();\r\n }\r\n\r\n execute(): void {\r\n this.captchaElem.execute();\r\n }\r\n\r\n handleReset(): void {\r\n this.captchaSuccess = false;\r\n this.captchaResponse = undefined;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleSuccess(captchaResponse: string): void {\r\n this.captchaSuccess = true;\r\n this.captchaResponse = captchaResponse;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleLoad(): void {\r\n this.captchaIsLoaded = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleReady(): void {\r\n this.captchaIsReady = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n changeBadge(badge: 'bottomright' | 'bottomleft' | 'inline' = 'bottomright'): void {\r\n this.badge = badge;\r\n }\r\n\r\n changeType(type: 'image' | 'audio'): void {\r\n this.type = type;\r\n }\r\n\r\n getResponse(): void {\r\n const response = this.captchaElem.getResponse();\r\n if (!response) {\r\n alert(`There is no response from grecaptcha script - try using 'getCurrentResponse' method or subscribe to 'success' event`);\r\n } else {\r\n alert(response);\r\n }\r\n }\r\n\r\n reload(): void {\r\n this.captchaElem.reloadCaptcha();\r\n }\r\n\r\n getCaptchaId(): void {\r\n alert(this.captchaElem.getCaptchaId());\r\n }\r\n\r\n reset(): void {\r\n this.captchaElem.resetCaptcha();\r\n }\r\n\r\n getCurrentResponse(): void {\r\n const currentResponse = this.captchaElem.getCurrentResponse();\r\n if (!currentResponse) {\r\n alert('There is no current response - have you submitted captcha?');\r\n } else {\r\n alert(currentResponse);\r\n }\r\n }\r\n\r\n changeTheme(theme: 'light' | 'dark'): void {\r\n this.theme = theme;\r\n }\r\n\r\n //private highlight(): void {\r\n // const highlightBlocks = document.getElementsByTagName('code');\r\n // for (let i = 0; i < highlightBlocks.length; i++) {\r\n // const block = highlightBlocks[i];\r\n // hljs.highlightBlock(block);\r\n // }\r\n //}\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2ZvcmdvdGNvbmZpcm1hdGlvbi9mb3Jnb3Rjb25maXJtYXRpb24uY29tcG9uZW50LmNzcyJ9 */\";","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\nimport { AuthenticationService } from '../shared/services/authentication/authentication.service';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\n// import custom validator to validate that password and confirm password fields match\r\nimport { MustMatch } from '../shared/helpers/must-match.validator';\r\nimport { User } from '../shared/models/User';\r\n\r\n@Component({\r\n selector: 'app-forgotconfirmation',\r\n templateUrl: './forgotconfirmation.component.html',\r\n styleUrls: ['./forgotconfirmation.component.css']\r\n})\r\nexport class ForgotconfirmationComponent implements OnInit {\r\n resetForm: FormGroup;\r\n submitted = false;\r\n userId = 0;\r\n\r\n constructor(private formBuilder: FormBuilder, \r\n private route: ActivatedRoute,\r\n private rutas: Router,\r\n private authenticationService: AuthenticationService,\r\n private alertService: AlertService) {\r\n\r\n this.route.params.subscribe(parameters => { this.userId = parameters.id; });\r\n \r\n if(this.userId === 0){\r\n this.rutas.navigate(['/index']); \r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.resetForm = this.formBuilder.group({\r\n password: ['', [Validators.required, Validators.minLength(6)]],\r\n confirmPassword: ['', Validators.required],\r\n }, { validator: MustMatch('password', 'confirmPassword')});\r\n }\r\n\r\n get f() { return this.resetForm.controls; }\r\n\r\n onSubmit() {\r\n this.submitted = true;\r\n\r\n // stop here if form is invalid\r\n if (this.resetForm.invalid) {\r\n return;\r\n }\r\n\r\n let model = new User();\r\n model.Id = this.userId;\r\n model.Password = this.resetForm.value.password;\r\n\r\n this.authenticationService.resetPassword(model).subscribe((res: any) => {\r\n if(res){\r\n \r\n this.alertService\r\n .onConfirm('Perfect!',\"We have send you an email with instructions to recover your password\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.submitted = false;\r\n this.rutas.navigate(['/index']);\r\n return true;\r\n }\r\n });\r\n return;\r\n\r\n \r\n }\r\n\r\n }, err => { \r\n this.alertService\r\n .onError('Sorry!',\"We cannot recover your password\")\r\n .then((result) => {\r\n if (result.value) {\r\n console.log(\"Error send: \" + err); \r\n this.submitted = false;\r\n return true;\r\n }\r\n });\r\n return;\r\n });\r\n\r\n // display form values on success\r\n // alert('SUCCESS!! :-)\\n\\n' + JSON.stringify(this.resetForm.value, null, 4));\r\n}\r\n\r\nonReset() {\r\n this.submitted = false;\r\n this.resetForm.reset();\r\n}\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2hvbWUvaG9tZS5jb21wb25lbnQuY3NzIn0= */\";","import { Component, Input, Output, Directive, EventEmitter } from '@angular/core';\r\nimport { OwlOptions } from 'ngx-owl-carousel-o';\r\nimport { Router } from '@angular/router';\r\nimport { NgbCarouselConfig } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n//Constants\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n//Models\r\nimport { Product } from '../shared/models/Product';\r\n\r\n//Interfaces\r\nimport { IFeaturedProducts } from '../shared/interfaces/featured-products';\r\nimport { ICourses } from '../shared/interfaces/courses';\r\nimport { ITests } from '../shared/interfaces/tests';\r\n\r\n//Service\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\n\r\n//Enum\r\nimport { ContentType } from '../shared/enums/ContentType'\r\nimport { Banner } from '../shared/models/Banner';\r\nimport { ButtonPosition } from '../shared/enums/ButtonPosition';\r\n\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.css'],\r\n providers: [NgbCarouselConfig]\r\n})\r\nexport class HomeComponent {\r\n\r\n images = [700, 800, 807].map((n) => `https://picsum.photos/id/${n}/900/500`);\r\n\r\n\r\n courseContent = 0;\r\n examContent = 0;\r\n\r\n //Angular Owl-carousel\r\n customOptions: any = {}\r\n carouselOptions: OwlOptions = {}\r\n\r\n fProducts: IFeaturedProducts[];\r\n loadedfProducts = false;\r\n\r\n fCourses: ICourses[];\r\n loadedfCourses = false;\r\n\r\n fTests: ITests[];\r\n loadedfTests = false;\r\n\r\n showBanner = false;\r\n enableCourses = false;\r\n enableExams = false;\r\n\r\n ImagesList: Array = new Array();\r\n\r\n contentType = 0;\r\n\r\n width: number;\r\n constructor(\r\n private service: RequestsService,\r\n private cartService: CartService,\r\n private toastService: ToastService,\r\n private router: Router,\r\n config: NgbCarouselConfig) {\r\n\r\n this.courseContent = ContentType.Course;\r\n this.examContent = ContentType.Exam;\r\n\r\n\r\n // customize default values of carousels used by this component tree\r\n config.interval = 1000000;//6000\r\n config.keyboard = true;\r\n config.pauseOnHover = true;\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n let config = JSON.parse(localStorage.getItem('jsonConfig'));\r\n\r\n if (config !== null && config !== undefined) {\r\n\r\n this.showBanner = config.ShowBanner;\r\n this.enableCourses = config.EnableCourses;\r\n this.enableExams = config.EnableExams;\r\n\r\n if (this.enableCourses && this.enableExams) {\r\n this.contentType = ContentType.AllContent;\r\n }\r\n else if (this.enableCourses && !this.enableExams) {\r\n this.contentType = ContentType.Course;\r\n }\r\n else if (!this.enableCourses && this.enableExams) {\r\n this.contentType = ContentType.Exam;\r\n }\r\n\r\n\r\n if (this.showBanner) {\r\n this.service.ImagesForBanner().subscribe((images) => {\r\n this.showBanner = images.length > 0;\r\n this.ImagesList = images;\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n this.customOptions = {\r\n loop: false,\r\n mouseDrag: false,\r\n touchDrag: false,\r\n pullDrag: false,\r\n margin: 10,\r\n dots: false,\r\n navSpeed: 700,\r\n navText: ['', ''],\r\n nav: true\r\n }\r\n\r\n this.carouselOptions = {\r\n items: 1,\r\n loop: true,\r\n nav: false,\r\n navSpeed: 700,\r\n autoplay: true,\r\n dots: true,\r\n navText: ['', '']\r\n }\r\n\r\n this.service.loadFeaturedProducts(this.contentType).subscribe((res: IFeaturedProducts[]) => {\r\n this.fProducts = res;\r\n this.fProducts.forEach(element => {\r\n if (element.Type === ContentType.Course) {\r\n element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n\r\n //GlobalConstans.imageExists(element.ImgSrc, function (exists) {\r\n // if (!exists) {\r\n // element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n // }\r\n //});\r\n\r\n } else {\r\n element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n\r\n //GlobalConstans.imageExists(element.ImgSrc, function (exists) {\r\n // if (!exists) {\r\n // element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n // }\r\n //});\r\n\r\n }\r\n });\r\n this.loadedfProducts = true;\r\n\r\n }, err => {\r\n console.log(err);\r\n });\r\n\r\n if (this.enableCourses) {\r\n this.service.loadTopCourses().subscribe((res: ICourses[]) => {\r\n this.fCourses = res;\r\n this.fCourses.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n //GlobalConstans.imageExists(element.ImgSrc, function (exists) {\r\n // if (!exists) {\r\n // element.ImgSrc = GlobalConstans.returnCoursesUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n // }\r\n //});\r\n });\r\n\r\n this.loadedfCourses = true;\r\n }, err => { console.log(err); });\r\n }\r\n\r\n if (this.enableExams) {\r\n this.service.loadTopTests().subscribe((res: ITests[]) => {\r\n this.fTests = res;\r\n this.fTests.forEach(element => {\r\n element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(), element.ImgSrc);\r\n //GlobalConstans.imageExists(element.ImgSrc, function (exists) {\r\n // if (!exists) {\r\n // element.ImgSrc = GlobalConstans.returnExamsUrlImage(element.CompanyId.toString(), element.Id.toString(), undefined);\r\n // }\r\n //});\r\n });\r\n\r\n this.loadedfTests = true;\r\n }, err => { console.log(err); });\r\n }\r\n\r\n\r\n }\r\n\r\n addProduct(model: any) {\r\n\r\n this.cartService._addProductToCart(model);\r\n\r\n }\r\n\r\n redirecTo(action: string) {\r\n\r\n switch (action) {\r\n case \"courses\":\r\n this.router.navigate(['/courses']);\r\n break;\r\n case \"exams\":\r\n this.router.navigate(['/exams']);\r\n break;\r\n case \"search\":\r\n this.router.navigate(['/search', { \"contentType\": 0, \"search\": '' }]);\r\n break;\r\n case \"login\":\r\n this.router.navigate(['/login']);\r\n break;\r\n case \"register\":\r\n this.router.navigate(['/register']);\r\n break;\r\n case \"contact\":\r\n this.router.navigate(['/contact']);\r\n break;\r\n }\r\n }\r\n\r\n getButtonPosition(position) {\r\n //return \"TopLeftCorner\";\r\n //return \"TopMiddle\";\r\n //return \"TopRightCorner\";\r\n //return \"LeftMiddle\";\r\n //return \"RightMiddle\";\r\n //return \"BottomLeftCorner\";\r\n //return \"BottomMiddle\";\r\n //return \"BottomRightCorner\";\r\n //return \"Center\";\r\n\r\n if (position === undefined || position === null || position === 0) {\r\n return \"Center\";\r\n }\r\n\r\n let enumNames = [];\r\n for (const log in ButtonPosition) {\r\n\r\n if (isNaN(Number(log))) {\r\n enumNames.push(log);\r\n }\r\n }\r\n\r\n return enumNames[position - 1];\r\n }\r\n\r\n onResize(event) {\r\n var width = event.target.innerWidth;\r\n\r\n let result = (width / 100) > 100 ? 100 : (width / 10);\r\n this.width = result;\r\n }\r\n\r\n imageRedirection(item) {\r\n\r\n if (item.EnableButton) {\r\n\r\n\r\n if (item.ButtonObject.IsExternal) {\r\n\r\n if (item.ButtonObject.Target) {\r\n window.open(item.ButtonObject.Action, '_blank');\r\n } else {\r\n window.location.href = item.ButtonObject.Action;\r\n }\r\n\r\n } else {\r\n this.redirecTo(item.ButtonObject.Type);\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5jc3MifQ== */\";","//https://jasonwatmore.com/post/2020/04/19/angular-9-jwt-authentication-example-tutorial#projectstructure\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\n\r\nimport { UserService } from '../shared/services/user/user.service';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { AuthenticationService } from '../shared/services/authentication/authentication.service';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\n\r\nimport { User } from '../shared/models/User';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n loginForm: FormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n error = '';\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private service: RequestsService,\r\n private alertService: AlertService) {\r\n\r\n this.loginForm = new FormGroup({ username: new FormControl(), password: new FormControl() });\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loginForm = this.formBuilder.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n });\r\n }\r\n\r\n get f() { return this.loginForm.controls; }\r\n\r\n onSubmit() {\r\n \r\n this.submitted = true;\r\n\r\n // stop here if form is invalid\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n debugger;\r\n this.authenticationService.login(this.f.username.value, this.f.password.value)\r\n .pipe(first())\r\n .subscribe(\r\n data => {\r\n debugger;\r\n if(data){ return this.router.navigate(['/']);}\r\n\r\n this.error=\"Username or password is incorrect\";\r\n this.loading = false;\r\n },\r\n error => {\r\n this.error = error;\r\n this.loading = false;\r\n });\r\n\r\n \r\n}\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL25hdmxpbmtzL25hdmxpbmtzLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { NavlinkType } from '../shared/enums/NavlinkType';\r\nimport { Menu } from '../shared/models/Menu';\r\nimport { MenuItem } from '../shared/models/MenuItem';\r\nimport { MenuItemBase } from '../shared/models/MenuItemBase';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-navlinks',\r\n templateUrl: './navlinks.component.html',\r\n styleUrls: ['./navlinks.component.css']\r\n})\r\nexport class NavlinksComponent implements OnInit {\r\n\r\n //Pagination\r\n page = 1;\r\n pageSize = 5;\r\n collectionSize = 0;\r\n\r\n //Flags\r\n public isCreation: boolean;\r\n public creationType: number;\r\n\r\n //Forms\r\n buttonForm : FormGroup;\r\n dropdownForm: FormGroup;\r\n\r\n //Submit vars\r\n submitButtonForm: boolean;\r\n submitDropdownForm: boolean;\r\n\r\n //Variables para la creación y/o edición de un elemento\r\n Menu: Menu;\r\n DropdownItems : MenuItemBase[];\r\n invalidUrls : boolean;\r\n\r\n constructor(private formBuilder: FormBuilder, private service: RequestsService, private alert : AlertService, private rutas : Router) {\r\n\r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if(userObject === null)\r\n {\r\n this.rutas.navigate(['/index']); \r\n }\r\n \r\n this.Menu = new Menu();\r\n this.DropdownItems = new Array();\r\n this.DropdownItems.push(new MenuItemBase());\r\n this._getMenu();\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n //Button form init\r\n this.buttonForm = new FormGroup({ \r\n Identifier:new FormControl(), \r\n Text:new FormControl(), \r\n Url: new FormControl(),\r\n Enable: new FormControl()\r\n });\r\n\r\n //Dropdown form init\r\n this.dropdownForm = new FormGroup({ \r\n Identifier:new FormControl(), \r\n Text:new FormControl(), \r\n Enable: new FormControl()\r\n });\r\n\r\n \r\n }\r\n\r\n // ====================================================================================================================================\r\n // GetMenu\r\n // ====================================================================================================================================\r\n\r\n _getMenu(){\r\n this.service.GetMenu().subscribe((menu:Menu) => {\r\n \r\n this.Menu = menu;\r\n this.collectionSize = this.Menu.Links.length;\r\n console.log({'menu':menu});\r\n });\r\n }\r\n\r\n // ====================================================================================================================================\r\n //Instance new FormBuilders\r\n // ====================================================================================================================================\r\n \r\n instanceButtonForm(item : MenuItemBase){\r\n\r\n const reg = '(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?';\r\n\r\n this.buttonForm = this.formBuilder.group({\r\n Identifier: [item.Identifier],\r\n Text: [item.Text, Validators.required],\r\n Url: [item.Url, [Validators.required, Validators.pattern(reg)]],\r\n Enable: [item.Enable],\r\n });\r\n }\r\n\r\n instanceDropdownForm(item : MenuItemBase){\r\n\r\n this.dropdownForm = this.formBuilder.group({\r\n Identifier: [item.Identifier],\r\n Text: [item.Text, Validators.required],\r\n Enable: [item.Enable],\r\n });\r\n }\r\n\r\n\r\n // ====================================================================================================================================\r\n // FORMS PROPERTIES\r\n // ====================================================================================================================================\r\n get bf() { return this.buttonForm.controls; }\r\n get df() { return this.dropdownForm.controls; }\r\n\r\n //===============================================================================================\r\n // START: Submit actions\r\n //===============================================================================================\r\n onSubmitButtonForm(){\r\n this.submitButtonForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.buttonForm.invalid) { return; }\r\n\r\n let navlink = new MenuItem();\r\n navlink.Identifier = this.buttonForm.value.Identifier;\r\n navlink.Text = this.buttonForm.value.Text;\r\n navlink.Url = this.buttonForm.value.Url;\r\n navlink.Enable = this.buttonForm.value.Enable;\r\n navlink.Type = NavlinkType.Navlink;\r\n\r\n this.service.UpdateItemsToMenu(navlink)\r\n .subscribe((res:any) => {\r\n \r\n if(res){\r\n console.log({res});\r\n this._getMenu();\r\n this.cancel();\r\n }\r\n\r\n }, (err) => {\r\n console.log({err});\r\n this.submitButtonForm = false;\r\n });\r\n\r\n }\r\n \r\n onSubmitDropdownForm(){\r\n this.submitDropdownForm = true;\r\n // stop here if form is invalid\r\n if (this.dropdownForm.invalid) { return; }\r\n\r\n let navlink = new MenuItem();\r\n navlink.Identifier = this.dropdownForm.value.Identifier;\r\n navlink.Text = this.dropdownForm.value.Text;\r\n navlink.Enable = this.dropdownForm.value.Enable;\r\n navlink.Type = NavlinkType.Dropdown;\r\n navlink.DropdownItems = this.DropdownItems;\r\n\r\n this.service.UpdateItemsToMenu(navlink)\r\n .subscribe((res:any) => {\r\n \r\n if(res){\r\n console.log({res});\r\n this._getMenu();\r\n this.cancel();\r\n }\r\n\r\n }, (err) => {\r\n console.log({err});\r\n this.submitDropdownForm = false;\r\n });\r\n\r\n }\r\n\r\n //===============================================================================================\r\n // START: Generic actions\r\n //===============================================================================================\r\n \r\n addNewNavlink(comesFrom){\r\n\r\n this.isCreation = true;\r\n let item = new MenuItemBase();\r\n\r\n switch (comesFrom) {\r\n case 'Dropdown':\r\n this.DropdownItems = new Array();\r\n this.DropdownItems.push(new MenuItemBase());\r\n this.instanceDropdownForm(item);\r\n this.creationType = NavlinkType.Dropdown;\r\n break;\r\n case 'Navlink':\r\n this.instanceButtonForm(item);\r\n this.creationType = NavlinkType.Navlink;\r\n default:\r\n break;\r\n }\r\n \r\n }\r\n\r\n cancel(){\r\n this.isCreation = false;\r\n this.creationType = 0;\r\n\r\n this.submitButtonForm = false;\r\n this.submitDropdownForm = false;\r\n }\r\n\r\n addNavlink(index){\r\n if(this.DropdownItems.length === 10) return;\r\n this.DropdownItems.push(new MenuItem());\r\n\r\n }\r\n\r\n deleteNavlink(index){\r\n\r\n if(this.DropdownItems.length === 1) return;\r\n\r\n this.DropdownItems.splice(index, 1);\r\n\r\n }\r\n\r\n returnMenuItemType(type : number){\r\n switch (type) {\r\n case NavlinkType.Dropdown:\r\n return 'Dropdown';\r\n break;\r\n case NavlinkType.Navlink:\r\n return 'Navlink';\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n editMenuItem(item:MenuItem){\r\n this.isCreation = true;\r\n \r\n switch (item.Type) {\r\n case NavlinkType.Dropdown:\r\n this.DropdownItems = item.DropdownItems;\r\n this.instanceDropdownForm(item);\r\n this.creationType = NavlinkType.Dropdown;\r\n break;\r\n case NavlinkType.Navlink:\r\n this.instanceButtonForm(item);\r\n this.creationType = NavlinkType.Navlink;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n deleteMenuItem(item){\r\n\r\n let $title = \"Delete\";\r\n let $text = \"Do you want to delete the \" + item.Text + \" navlink option?\";\r\n let $button = {'ConfirmButtonText': 'Delete', 'cancelButtonText': 'Cancel'};\r\n\r\n this.alert.onBeforeConfirm($title, $text, $button)\r\n .then((response) => {\r\n \r\n if(response.value === true){\r\n this.service.DeleteItemToMenu(item)\r\n .subscribe((res) => {\r\n if(res){\r\n this.alert.onConfirm(\"Perfect!\",\"Your navlink was deleted correctly\");\r\n this._getMenu();\r\n }\r\n \r\n });\r\n \r\n }\r\n \r\n });\r\n\r\n }\r\n\r\n // validateUrl(navlink:MenuItem){\r\n \r\n // var result = this.validURL(navlink.Url);\r\n \r\n // if(!result && !this.invalidUrls){\r\n // debugger;\r\n // this.invalidUrls = true;\r\n // }\r\n // return result;\r\n // }\r\n\r\n // validURL(str) {\r\n // var pattern = new RegExp('^(https?:\\\\/\\\\/)?'+ // protocol\r\n // '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|'+ // domain name\r\n // '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))'+ // OR ip (v4) address\r\n // '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*'+ // port and path\r\n // '(\\\\?[;&a-z\\\\d%_.~+=-]*)?'+ // query string\r\n // '(\\\\#[-a-z\\\\d_]*)?$','i'); // fragment locator\r\n // return !!pattern.test(str);\r\n // }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BvbGljeS9wb2xpY3kuY29tcG9uZW50LmNzcyJ9 */\";","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-policy',\r\n templateUrl: './policy.component.html',\r\n styleUrls: ['./policy.component.css']\r\n})\r\nexport class PolicyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb2R1Y3RkZXRhaWxzL3Byb2R1Y3RkZXRhaWxzLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Observable, forkJoin } from 'rxjs';\r\n\r\n//Constants\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n//Models\r\nimport { Course } from '../shared/models/Course';\r\nimport { Lesson } from '../shared/models/Lesson';\r\nimport { Product } from '../shared/models/Product';\r\n\r\n//Interfaces\r\nimport { ICourses } from '../shared/interfaces/courses';\r\nimport { ILesson } from '../shared/interfaces/lesson';\r\nimport { ICourseShell } from '../shared/interfaces/courseshell';\r\n\r\n//Service\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\n\r\n@Component({\r\n selector: 'app-productdetails',\r\n templateUrl: './productdetails.component.html',\r\n styleUrls: ['./productdetails.component.css']\r\n})\r\nexport class ProductdetailsComponent implements OnInit {\r\n globalId: string;\r\n currentCourse: ICourses;\r\n shell: ILesson[];\r\n loading = false;\r\n loadingShell: boolean;\r\n activeIds: string[] = [];\r\n videoId: string;\r\n isYouTube: boolean;\r\n totalHours: string;\r\n\r\n constructor(private route: ActivatedRoute,\r\n private service: RequestsService,\r\n private cartService: CartService,\r\n private toastService: ToastService,\r\n private modalService: NgbModal) {\r\n \r\n //this.videoId = \"\";\r\n \r\n this.currentCourse = new Course();\r\n this.shell = Array();\r\n this.loadingShell = false;\r\n this.route.params.subscribe(parameters => { this.globalId = parameters.globalId; });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.service.getCourseDetailsById(this.globalId).subscribe((res: ICourses) => { \r\n this.currentCourse = res;\r\n \r\n let companyId = this.currentCourse.CompanyId.toString();\r\n let courseId = this.currentCourse.Id.toString();\r\n this.currentCourse.ImgSrc = GlobalConstans.returnCoursesUrlImage(companyId, courseId, this.currentCourse.ImgSrc);\r\n this.totalHours = this.secondsToDhms(this.currentCourse.CourseTime);\r\n this.loading = true;\r\n \r\n }, err => { console.log(err); });\r\n\r\n this.service.getShell(this.globalId).subscribe((res: ICourseShell) => { \r\n this.shell = res.Lesson;\r\n this.loadingShell = true;\r\n }, err => { console.log(err); });\r\n\r\n }\r\n\r\n secondsToDhms(seconds) {\r\n seconds = Number(seconds);\r\n\r\n if(seconds > 0){\r\n var d = Math.floor(seconds / (3600*24));\r\n var h = Math.floor(seconds % (3600*24) / 3600);\r\n var m = Math.floor(seconds % 3600 / 60);\r\n var s = Math.floor(seconds % 60);\r\n \r\n // var dDisplay = d > 0 ? d + (d == 1 ? \" day, \" : \" days, \") : \"\";\r\n // var hDisplay = h > 0 ? h + (h == 1 ? \" hour, \" : \" hours, \") : \"\";\r\n // var mDisplay = m > 0 ? m + (m == 1 ? \" minute, \" : \" minutes, \") : \"\";\r\n // var sDisplay = s > 0 ? s + (s == 1 ? \" second\" : \" seconds\") : \"\";\r\n \r\n var dDisplay = d > 0 ? d + (d == 1 ? \"d \" : \"d \") : \"\";\r\n var hDisplay = h > 0 ? h + (h == 1 ? \"h \" : \"h \") : \"\";\r\n var mDisplay = m > 0 ? m + (m == 1 ? \"m \" : \"m \") : \"\";\r\n var sDisplay = s > 0 ? s + (s == 1 ? \"s\" : \"s\") : \"\";\r\n return dDisplay + hDisplay + mDisplay + sDisplay;\r\n }\r\n else{\r\n return \"0 s\"\r\n }\r\n \r\n \r\n }\r\n\r\n getIcon(type:any){\r\n return GlobalConstans.returnIconByContent(type);\r\n }\r\n\r\n openAll(){\r\n this.shell.forEach((element,key) => {\r\n this.activeIds.push(\"panel-\" + key.toString());\r\n });\r\n }\r\n \r\n addProduct(model: any){\r\n\r\n this.cartService._addProductToCart(model);\r\n \r\n }\r\n\r\n openWindowCustomClass(content) {\r\n //this.currentCourse.VideoSrc = \"https://vjs.zencdn.net/v/oceans.mp4\";\r\n this.getYouTubeId();\r\n this.modalService.open(content, { centered: true, size: 'lg' });\r\n }\r\n \r\ngetYouTubeId(){\r\n //Extraje el componente de aqui: https://stackblitz.com/edit/angular-youtube-video?file=src%2Findex.html\r\n let $this = this.currentCourse.VideoSrc;\r\n\r\n if ($this.match(/(\\?|&)v=([^&#]+)/)) {\r\n $this = $this.match(/(\\?|&)v=([^&#]+)/).pop();\r\n this.isYouTube = true;\r\n\r\n } else if ($this.match(/(\\.be\\/)+([^\\/]+)/)) {\r\n $this = $this.match(/(\\.be\\/)+([^\\/]+)/).pop();\r\n this.isYouTube = true;\r\n\r\n } else if ($this.match(/(\\embed\\/)+([^\\/]+)/)) {\r\n $this = $this.match(/(\\embed\\/)+([^\\/]+)/).pop().replace('?rel=0','');\r\n this.isYouTube = true;\r\n }\r\n \r\n this.videoId = $this;\r\n}\r\n\r\nsetDefaultPic() {\r\n this.currentCourse.ImgSrc = GlobalConstans.returnCoursesUrlImage(\"0\", \"0\", undefined);\r\n}\r\n\r\nprint(): void {\r\n this.openAll();\r\n let footer = document.getElementById('footer');\r\n footer.classList.add(\"d-none\");\r\n\r\n setTimeout(function () {\r\n window.print();\r\n }, 1000);\r\n\r\n setTimeout(function () {\r\n footer.classList.remove(\"d-none\");\r\n }, 1000);\r\n\r\n}\r\n\r\ngetFileTime(files){\r\n\r\n let time = 0;\r\n if(files !== undefined){\r\n\r\n if(files.File !== undefined && files.File.length > 0){\r\n files.File.forEach(element => {\r\n time = time + parseInt(element.Time);\r\n });\r\n }else if(files.File.Time !== undefined){\r\n time = parseInt(files.File.Time)\r\n }\r\n\r\n }\r\n return time;\r\n \r\n\r\n \r\n\r\n}\r\n\r\n getTimeBySubSection(section) {\r\n\r\n if(section.Content.length === 0) return;\r\n \r\n let time = 0;\r\n\r\n section.Content.forEach(element => {\r\n if (element.File !== undefined) {\r\n element.File.forEach(file => {\r\n\r\n if (file.Time !== null && file.Time !== undefined) {\r\n time = time + parseInt(file.Time);\r\n }\r\n\r\n \r\n });\r\n }\r\n \r\n });\r\n\r\n return time;\r\n}\r\n\r\ngetTimeByLesson(lesson){\r\n let time = 0;\r\n\r\n if (lesson) {\r\n\r\n lesson.Section.forEach(section => {\r\n \r\n if(section.Type === '4' && section.ContentType === '1'){\r\n \r\n const result = this.getTimeBySubSection(section);\r\n time += result;\r\n\r\n }\r\n });\r\n }\r\n\r\n return time;\r\n \r\n}\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuY3NzIn0= */\";","import { ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators, FormControl, FormGroupDirective } from '@angular/forms';\r\nimport { InvisibleReCaptchaComponent, ReCaptcha2Component, ReCaptchaV3Service } from 'ngx-captcha';\r\n\r\n\r\n//Models\r\nimport { User } from '../shared/models/User';\r\nimport { Country } from '../shared/models/Country';\r\nimport { SelectListItem } from '../shared/models/SelectListItem';\r\n\r\n//Services\r\nimport { UserService } from '../shared/services/user/user.service';\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { AuthenticationService } from '../shared/services/authentication/authentication.service';\r\nimport { AccountResponse } from '../shared/models/AccountResponse';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n\r\n@Component({\r\n selector: 'app-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n userObject: any;\r\n countries: Country[];\r\n timezones: SelectListItem[];\r\n response: AccountResponse;\r\n siteKey: any;\r\n\r\n public captchaIsLoaded = false;\r\n public captchaSuccess = false;\r\n public captchaResponse?: string;\r\n public captchaIsReady = false;\r\n\r\n public recaptchaEmailResponse: any = null;\r\n\r\n @ViewChild('recaptchaEmail', { static: false }) recaptchaEmail: InvisibleReCaptchaComponent;\r\n @ViewChild('recaptchaPassword', { static: false }) recaptchaPassword: InvisibleReCaptchaComponent;\r\n @ViewChild('recaptchaSecurity', { static: false }) recaptchaSecurity: InvisibleReCaptchaComponent;\r\n\r\n loadUser = false;\r\n editMode = false;\r\n\r\n editPersonalInformation = false;\r\n editEmail = false;\r\n editLocalization = false;\r\n editPassword = false;\r\n editSecurity = false;\r\n\r\n //alerts\r\n successAlert = false;\r\n errorAlert = false;\r\n\r\n //Forms\r\n personalInformationForm: FormGroup;\r\n emailForm: FormGroup;\r\n localizationForm: FormGroup;\r\n passwordForm: FormGroup;\r\n securityForm: FormGroup;\r\n\r\n //submit vars\r\n submitPersonalInformationForm = false;\r\n submitEmailForm = false;\r\n submitLocalizationForm = false;\r\n submitPasswordForm = false;\r\n submitSecurityForm = false;\r\n\r\n //submit vars\r\n loadingPersonalInformationForm = false;\r\n loadingEmailForm = false;\r\n loadingLocalizationForm = false;\r\n loadingPasswordForm = false;\r\n loadingSecurityForm = false;\r\n\r\n \r\n constructor(\r\n private rutas: Router,\r\n private formBuilder: FormBuilder,\r\n private userService: UserService,\r\n private service: RequestsService,\r\n private authService: AuthenticationService,\r\n private cdr: ChangeDetectorRef,\r\n private reCaptchaV3Service: ReCaptchaV3Service ) {\r\n\r\n this.userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if(this.userObject === null)\r\n {\r\n this.rutas.navigate(['/index']); \r\n }\r\n\r\n this.loadUser = true;\r\n this.siteKey = GlobalConstans.CaptchaSiteKey;\r\n //Get timezones for dropdown\r\n\r\n\r\n //Init object\r\n this.response = new AccountResponse();\r\n\r\n //Personal Information Form\r\n this.personalInformationForm = new FormGroup({ firstName:new FormControl(), lastName: new FormControl()});\r\n\r\n //Email Form\r\n this.emailForm = new FormGroup({ email: new FormControl(), recaptchaEmail: new FormControl });\r\n //this.emailForm = new FormGroup({ email: new FormControl() });\r\n\r\n //Localization Form\r\n this.localizationForm = new FormGroup({ countryId: new FormControl(), timezoneId: new FormControl() });\r\n\r\n //password Form\r\n this.passwordForm = new FormGroup({ currentPassword: new FormControl(), newPassword: new FormControl(), recaptchaPassword: new FormControl() });\r\n\r\n //securityForm Form\r\n this.securityForm = new FormGroup({ securityId: new FormControl(), answer: new FormControl(), recaptchaSecurity: new FormControl() });\r\n\r\n this.service.getTimezones().subscribe((res: SelectListItem[])=>{\r\n this.timezones = res; \r\n })\r\n\r\n //Get countries for dropdown\r\n this.userService.getCountries().subscribe((res: Country[])=>{\r\n this.countries = res;\r\n });\r\n\r\n \r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.onInitPersonalInformationForm();\r\n this.onInitEmailForm();\r\n this.onInitLocalizationForm();\r\n this.onInitPasswordForm();\r\n this.onInitSecurityForm();\r\n \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.captchaIsLoaded = true;\r\n this.cdr.detectChanges();\r\n //this.highlight();\r\n }\r\n\r\n // ====================================================================================================================================\r\n // INIT FORMS\r\n // ====================================================================================================================================\r\n onInitPersonalInformationForm(){\r\n //Personal information form\r\n this.personalInformationForm = this.formBuilder.group({ firstName: [ this.userObject.FirstName, Validators.required], lastName: [this.userObject.LastName, Validators.required], });\r\n }\r\n onInitEmailForm(){\r\n //Email Form\r\n this.emailForm = this.formBuilder.group({ email: [this.userObject.Email, [Validators.required, Validators.email]], recaptchaEmail: ['', Validators.required] });\r\n }\r\n onInitLocalizationForm(){\r\n //Localization Form\r\n this.localizationForm = this.formBuilder.group({ countryId: [this.userObject.CountryId === undefined ? '' : this.userObject.CountryId, Validators.required], timezoneId: [this.userObject.TimeZoneId === undefined ? '' : this.userObject.TimeZoneId, Validators.required] });\r\n }\r\n onInitPasswordForm() {\r\n //securityForm Form\r\n this.passwordForm = this.formBuilder.group({ currentPassword: ['', Validators.required], newPassword: ['', Validators.required], recaptchaPassword: ['', Validators.required] });\r\n }\r\n onInitSecurityForm() {\r\n //securityForm Form\r\n this.securityForm = this.formBuilder.group({ securityId: ['', Validators.required], answer: ['', Validators.required], recaptchaSecurity: ['', Validators.required] });\r\n }\r\n\r\n // ====================================================================================================================================\r\n // FORMS PROPERTIES\r\n // ====================================================================================================================================\r\n get pi() { return this.personalInformationForm.controls; }\r\n get e() { return this.emailForm.controls; }\r\n get l() { return this.localizationForm.controls; }\r\n get p() { return this.passwordForm.controls; }\r\n get s() { return this.securityForm.controls; }\r\n\r\n // ====================================================================================================================================\r\n // FORMS\r\n // ====================================================================================================================================\r\n onSubmitPersonalInformation(){\r\n this.submitPersonalInformationForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.personalInformationForm.invalid) { return; }\r\n\r\n this.loadingPersonalInformationForm = true;\r\n let data = new User();\r\n data.Id = this.userObject.Id;\r\n data.FirstName = this.personalInformationForm.value.firstName;\r\n data.LastName = this.personalInformationForm.value.lastName;\r\n \r\n this.authService.accountChangeName(data).subscribe((res: AccountResponse) => { \r\n \r\n this.response = res;\r\n if(this.response.Status === 1){\r\n\r\n this.response.Message = \"Your information has been changed correctly\";\r\n this.successAlert = true;\r\n //TODO: Actualizar la info del user\r\n this.userObject.FirstName = data.FirstName;\r\n this.userObject.LastName = data.LastName;\r\n this.userObject.FullName = this.userObject.FirstName + ' ' +this.userObject.LastName;\r\n localStorage.setItem('currentUser', JSON.stringify(this.userObject));\r\n\r\n this.cancel('personalInformation');\r\n\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Exception = this.response.Message !== '' ? this.response.Message : undefined;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n this.submitPersonalInformationForm = false;\r\n this.loadingPersonalInformationForm = false;\r\n }, err => { \r\n this.submitPersonalInformationForm = false;\r\n this.loadingPersonalInformationForm = false;\r\n console.log(err);\r\n });\r\n\r\n \r\n }\r\n\r\n onSubmitEmail() {\r\n \r\n this.submitEmailForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.emailForm.invalid) { return; }\r\n\r\n this.loadingEmailForm = true;\r\n let data = new User();\r\n data.Id = this.userObject.Id;\r\n data.Email = this.emailForm.value.email;\r\n\r\n this.authService.accountChangeEmail(data).subscribe((res: AccountResponse) => { \r\n\r\n this.response = res;\r\n if(this.response.Status === 1){\r\n\r\n this.response.Message = \"Your email has been changed correctly\";\r\n this.successAlert = true;\r\n //TODO: Actualizar la info del user\r\n this.userObject.Email = data.Email;\r\n localStorage.setItem('currentUser', JSON.stringify(this.userObject));\r\n\r\n this.cancel('email');\r\n\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Exception = this.response.Message !== '' ? this.response.Message : undefined;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n this.submitEmailForm = false;\r\n this.loadingEmailForm = false;\r\n\r\n }, err => { \r\n\r\n console.log(err); \r\n });\r\n }\r\n\r\n onSubmitLocalizationForm(){\r\n this.submitLocalizationForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.localizationForm.invalid) { return; }\r\n\r\n this.loadingLocalizationForm = true;\r\n let data = new User();\r\n data.Id = this.userObject.Id;\r\n data.CountryId = parseInt(this.localizationForm.value.countryId);\r\n data.TimeZoneId = this.localizationForm.value.timezoneId;\r\n\r\n this.authService.accountChangeLocation(data).subscribe((res: AccountResponse) => { \r\n\r\n this.response = res;\r\n if(this.response.Status === 1){\r\n \r\n let USER = JSON.parse(localStorage.getItem('currentUser'));\r\n if (USER !== undefined && USER !== null) {\r\n this.userObject.HaveLocalization = true;\r\n }\r\n \r\n\r\n this.response.Message = \"Your localization info has been changed correctly\";\r\n this.successAlert = true;\r\n //TODO: Actualizar la info del user\r\n this.userObject.CountryId = data.CountryId;\r\n this.userObject.TimeZoneId = data.TimeZoneId;\r\n localStorage.setItem('currentUser', JSON.stringify(this.userObject));\r\n\r\n this.cancel('localization');\r\n\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Exception = this.response.Message !== '' ? this.response.Message : undefined;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n this.submitLocalizationForm = false;\r\n this.loadingLocalizationForm = false;\r\n\r\n\r\n }, err => { \r\n this.submitLocalizationForm = false;\r\n this.loadingLocalizationForm = false;\r\n console.log(err);\r\n });\r\n }\r\n\r\n onSubmitPasswordForm(){\r\n this.submitPasswordForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.passwordForm.invalid) { return; }\r\n\r\n this.loadingPasswordForm = true;\r\n let data = new User();\r\n data.Id = this.userObject.Id;\r\n data.CurrentPassword = this.passwordForm.value.currentPassword;\r\n data.Password = this.passwordForm.value.newPassword;\r\n\r\n this.authService.accountChangePassword(data).subscribe((res: AccountResponse) => { \r\n\r\n this.response = res;\r\n if(this.response.Status === 1){\r\n\r\n this.response.Message = \"Your password has been updated correctly\";\r\n this.successAlert = true;\r\n this.cancel('password');\r\n\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Exception = this.response.Message !== '' ? this.response.Message : undefined;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n this.submitPasswordForm = false;\r\n this.loadingPasswordForm = false;\r\n //this.recaptchaPassword.resetCaptcha;\r\n\r\n }, err => { \r\n this.submitPasswordForm = false;\r\n this.loadingPasswordForm = false;\r\n console.log(err); \r\n });\r\n\r\n \r\n }\r\n\r\n onSubmitSecurityForm(){\r\n this.submitSecurityForm = true;\r\n\r\n // stop here if form is invalid\r\n if (this.securityForm.invalid) { return; }\r\n\r\n this.loadingSecurityForm = true;\r\n let data = new User();\r\n data.Id = this.userObject.Id;\r\n data.SecurityQuestionId = this.securityForm.value.securityId;\r\n data.Answer = this.securityForm.value.answer;\r\n\r\n this.authService.accountChangeQuestion(data).subscribe((res: AccountResponse) => { \r\n\r\n this.response = res;\r\n if(this.response.Status === 1){\r\n\r\n if (!this.haveSecurityQuestion()) {\r\n let USER = JSON.parse(localStorage.getItem('currentUser'));\r\n if (USER !== undefined && USER !== null) {\r\n USER.HaveSecurityQuestion = true;\r\n localStorage.setItem('currentUser', JSON.stringify(USER));\r\n }\r\n }\r\n\r\n this.response.Message = \"Your security question has been updated correctly\";\r\n this.successAlert = true;\r\n this.cancel('security');\r\n\r\n }else{\r\n this.errorAlert = true;\r\n this.response.Exception = this.response.Message !== '' ? this.response.Message : undefined;\r\n this.response.Message = \"We found an error, please try again later\";\r\n }\r\n\r\n this.submitSecurityForm = false;\r\n this.loadingSecurityForm = false;\r\n\r\n }, err => { \r\n this.submitSecurityForm = false;\r\n this.loadingSecurityForm = false;\r\n console.log(err); \r\n });\r\n\r\n }\r\n // ====================================================================================================================================\r\n // END: FORMS\r\n // ====================================================================================================================================\r\n changeMode(enableForm: string){\r\n this.editMode = true;\r\n this.successAlert = false;\r\n\r\n switch (enableForm) {\r\n case 'personalInformation':\r\n this.editPersonalInformation = true;\r\n break;\r\n case 'email':\r\n this.editEmail = true;\r\n break;\r\n case 'localization':\r\n this.editLocalization = true;\r\n break;\r\n case 'password':\r\n this.editPassword = true;\r\n break;\r\n case 'security':\r\n this.editSecurity = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n cancel(disabledForm: string){\r\n this.editMode = false;\r\n this.errorAlert = false;\r\n\r\n switch (disabledForm) {\r\n case 'personalInformation':\r\n this.onInitPersonalInformationForm();\r\n this.editPersonalInformation = false;\r\n this.loadingPersonalInformationForm = false;\r\n this.submitPersonalInformationForm = false;\r\n break;\r\n case 'email':\r\n this.onInitEmailForm();\r\n this.editEmail = false;\r\n this.loadingEmailForm = false;\r\n this.submitEmailForm = false;\r\n break;\r\n case 'localization':\r\n this.onInitLocalizationForm();\r\n this.editLocalization = false;\r\n this.loadingLocalizationForm = false;\r\n this.submitLocalizationForm = false;\r\n break;\r\n case 'password':\r\n this.onInitPasswordForm();\r\n this.editPassword = false;\r\n this.loadingPasswordForm = false;\r\n this.submitPasswordForm = false;\r\n break;\r\n case 'security':\r\n this.onInitSecurityForm();\r\n this.editSecurity = false;\r\n this.loadingSecurityForm = false;\r\n this.submitSecurityForm = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n haveSecurityQuestion() {\r\n const USER = JSON.parse(localStorage.getItem('currentUser'));\r\n if (USER !== undefined && USER !== null) {\r\n return USER.HaveSecurityQuestion;\r\n\r\n }\r\n return false;\r\n }\r\n\r\n haveLocalization() {\r\n return this.userObject.HaveLocalization;\r\n }\r\n // ====================================================================================================================================\r\n // CAPTCHA FUNCTIONS\r\n // ====================================================================================================================================\r\n handleEmailLoad() {\r\n this.reCaptchaV3Service.execute(this.siteKey, 'profile', (token) => {\r\n this.emailForm.controls.recaptchaEmail.setValue(token);\r\n }, {\r\n useGlobalDomain: false\r\n });\r\n }\r\n\r\n handlePasswordLoad() {\r\n this.reCaptchaV3Service.execute(this.siteKey, 'profile', (token) => {\r\n this.passwordForm.controls.recaptchaPassword.setValue(token);\r\n }, {\r\n useGlobalDomain: false\r\n });\r\n }\r\n\r\n handleSecurityLoad() {\r\n this.reCaptchaV3Service.execute(this.siteKey, 'profile', (token) => {\r\n this.securityForm.controls.recaptchaSecurity.setValue(token);\r\n }, {\r\n useGlobalDomain: false\r\n });\r\n }\r\n\r\n handleExpire(){ }\r\n\r\n handleReset() { }\r\n\r\n handleReady(): void { }\r\n\r\n handleSuccess(captchaResponse: string): void { }\r\n\r\n\r\n \r\n // ====================================================================================================================================\r\n // END: CAPTCHA FUNCTIONS\r\n // ====================================================================================================================================\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3B1cmNoYXNlcy9wdXJjaGFzZXMuY29tcG9uZW50LmNzcyJ9 */\";","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\n\r\n//Services\r\nimport { RequestsService } from '../shared/services/requests.service';\r\n\r\n//Models\r\nimport { Purchase } from '../shared/models/Purchase';\r\n\r\n@Component({\r\n selector: 'app-purchases',\r\n templateUrl: './purchases.component.html',\r\n styleUrls: ['./purchases.component.css']\r\n})\r\nexport class PurchasesComponent implements OnInit {\r\n userObject: any;\r\n\r\n purchases: Array = new Array();\r\n loadPurchase = false;\r\n\r\n orderTotal = false;\r\n orderCreated = false;\r\n orderTotalProducts = false;\r\n\r\n page = 1;\r\n pageSize = 25;\r\n collectionSize = 0;\r\n\r\n constructor(private rutas: Router, private service: RequestsService) { \r\n\r\n this.userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if(this.userObject === null)\r\n {\r\n this.rutas.navigate(['/index']); \r\n }\r\n \r\n this.onGetPurchases(this.userObject.Id);\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n onGetPurchases(userId: number){\r\n \r\n this.service.getPurchasesByUserId(userId).subscribe((res: Purchase[]) => { \r\n this.purchases = res;\r\n this.loadPurchase = true;\r\n this.collectionSize = this.purchases.length;\r\n console.log(this.purchases);\r\n }, err => { console.log(err); });\r\n \r\n\r\n }\r\n\r\n get orders(): Purchase[] {\r\n if(this.purchases !== undefined){\r\n return this.purchases.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);\r\n \r\n }\r\n \r\n }\r\n\r\n details(order: any){\r\n //Le mando el segundo parametro como 0 (cero) ya que significa que no va canjear, solo va consultar\r\n this.rutas.navigate(['/confirmation',order.Slug, 0]);\r\n }\r\n\r\n onSortTotal(){\r\n this.orderTotal = !this.orderTotal;\r\n\r\n if(this.orderTotal){\r\n // Ascending\r\n this.purchases = this.purchases.sort((a,b) => 0 - (a.Total > b.Total ? -1 : 1));\r\n }else{\r\n // Descengind\r\n this.purchases = this.purchases.sort((a,b) => 0 - (a.Total > b.Total ? 1 : -1));\r\n }\r\n }\r\n\r\n onSortCreated(){\r\n this.orderCreated = !this.orderCreated;\r\n\r\n if(this.orderCreated){\r\n // Ascending\r\n this.purchases = this.purchases.sort((a,b) => 0 - (a.Created > b.Created ? -1 : 1));\r\n }else{\r\n // Descengind\r\n this.purchases = this.purchases.sort((a,b) => 0 - (a.Created > b.Created ? 1 : -1));\r\n }\r\n }\r\n\r\n onSortTotalProducts(){\r\n this.orderTotalProducts = !this.orderTotalProducts;\r\n\r\n if(this.orderTotalProducts){\r\n // Ascending\r\n this.purchases = this.purchases.sort((a,b) => 0 - (a.TotalProducts > b.TotalProducts ? -1 : 1));\r\n }else{\r\n // Descengind\r\n this.purchases = this.purchases.sort((a,b) => 0 - (a.TotalProducts > b.TotalProducts ? 1 : -1));\r\n }\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit, ViewChild, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { InvisibleReCaptchaComponent, ReCaptcha2Component, ReCaptchaV3Service } from 'ngx-captcha';\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { UserService } from '../shared/services/user/user.service';\r\nimport { Country } from '../shared/models/Country';\r\nimport { AlertService } from '../shared/services/alert/alert.service';\r\nimport { User } from '../shared/models/User';\r\nimport { EmailType } from '../shared/enums/EmailType';\r\nimport { EmailTemplate } from '../shared/models/EmailTemplate';\r\nimport { SelectListItem } from '../shared/models/SelectListItem';\r\nimport { Response } from '../shared/models/Response';\r\nimport { MailRequest } from '../shared/models/MailRequest';\r\nimport { EmailService } from '../shared/services/email/email.service';\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\nimport { CustomValidators } from '../shared/custom-validators/custom-validators';\r\nimport { Router } from '@angular/router';\r\nimport { timeout } from 'rxjs/operators';\r\n\r\n//https://w3path.com/how-to-integrate-recaptcha-in-angular-8/\r\n@Component({\r\n selector: 'app-register',\r\n templateUrl: './register.component.html',\r\n styleUrls: ['./register.component.css']\r\n})\r\nexport class RegisterComponent implements OnInit {\r\n\r\n registerForm: FormGroup;\r\n submitted = false;\r\n loading = false;\r\n revealPassword = false;\r\n countries: Country[];\r\n timezones: SelectListItem[];\r\n siteKey: any;\r\n //captchaToken: string;\r\n //public captchaSuccess = false;\r\n\r\n //@ViewChild('recaptchaElement', {static: true }) recaptchaElement: ReCaptcha2Component;\r\n\r\n public captchaIsLoaded = false;\r\n public captchaSuccess = false;\r\n public captchaResponse?: string;\r\n public captchaIsReady = false;\r\n\r\n public badge: 'bottomright' | 'bottomleft' | 'inline' = 'inline';\r\n public type: 'image' | 'audio';\r\n public theme: 'light' | 'dark' = 'light';\r\n\r\n public recaptcha: any = null;\r\n\r\n @ViewChild('captchaElem', { static: false }) captchaElem: InvisibleReCaptchaComponent;\r\n @ViewChild('langInput', { static: false }) langInput: ElementRef;\r\n\r\n constructor(private userService: UserService,\r\n private formBuilder: FormBuilder,\r\n private alertService: AlertService,\r\n private service: RequestsService,\r\n private emailService: EmailService,\r\n private router: Router,\r\n private reCaptchaV3Service: ReCaptchaV3Service,\r\n private cdr: ChangeDetectorRef,\r\n private spinner: NgxSpinnerService) {\r\n\r\n\r\n this.registerForm = new FormGroup({\r\n firstName:new FormControl(),\r\n lastName: new FormControl(),\r\n email: new FormControl(),\r\n username: new FormControl(),\r\n password: new FormControl()\r\n });\r\n\r\n this.siteKey = GlobalConstans.CaptchaSiteKey;\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.registerForm = this.formBuilder.group({\r\n firstName: ['', [Validators.required, Validators.pattern(\"[a-zA-Z][a-zA-Z ]+\")]],\r\n lastName: ['', [Validators.required, Validators.pattern(\"[a-zA-Z][a-zA-Z ]+\")]],\r\n email: ['', [Validators.required, Validators.email]],\r\n username: ['', Validators.required],\r\n password: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n // check whether the entered password has a number\r\n CustomValidators.patternValidator(/\\d/, { hasNumber: true }),\r\n // check whether the entered password has upper case letter\r\n CustomValidators.patternValidator(/[A-Z]/, { hasCapitalCase: true }),\r\n // check whether the entered password has a lower case letter\r\n CustomValidators.patternValidator(/[a-z]/, { hasSmallCase: true }),\r\n // check whether the entered password has a special character\r\n //CustomValidators.patternValidator(/[ !@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/, { hasSpecialCharacters: true }),\r\n CustomValidators.patternValidator(/[ #$%&*+]/, { hasSpecialCharacters: true }),\r\n Validators.minLength(8)\r\n ])\r\n ],\r\n });\r\n\r\n \r\n }\r\n\r\n get f() { return this.registerForm.controls; }\r\n\r\n startTypingPassword() {\r\n this.revealPassword = this.registerForm.value.password === \"\" || this.registerForm.value.password === null;\r\n }\r\n\r\n onSubmit() {\r\n \r\n this.submitted = true;\r\n \r\n if (this.registerForm.invalid) {\r\n return;\r\n }\r\n\r\n this.spinner.show(\"registering\");\r\n this.loading = true;\r\n let data = new User();\r\n data.FirstName = this.registerForm.value.firstName;\r\n data.LastName = this.registerForm.value.lastName;\r\n data.Email = this.registerForm.value.email;\r\n data.UserName = this.registerForm.value.username;\r\n data.Password = this.registerForm.value.password;\r\n \r\n this.userService.insertUser(data).subscribe((res: Response) => {\r\n if (res.Success) {\r\n \r\n let model = new MailRequest();\r\n model.Name = data.FirstName;\r\n model.LastName = data.LastName;\r\n model.ToEmail = data.Email;\r\n model.Email = data.Email;\r\n model.Username = data.UserName;\r\n model.EmailType = EmailType.UserRegistration;\r\n //model.DomainId = currentDomain[0].id;\r\n model.BearerToken = GlobalConstans.getAuthToken();\r\n\r\n this.emailService.register(model).subscribe((res: any) => {\r\n if (res) {\r\n this.spinner.hide(\"registering\");\r\n this.alertService\r\n .onConfirm('Perfect!', \"Thanks for register with us!\")\r\n .then((result) => {\r\n if (result.value) {\r\n this.registerForm.reset();\r\n this.loading = false;\r\n this.submitted = false;\r\n \r\n this.router.navigate(['/checkout']);\r\n }\r\n });\r\n return;\r\n\r\n\r\n }\r\n\r\n }, err => {\r\n this.spinner.hide(\"registering\");\r\n this.alertService\r\n .onError('Sorry!', \"Your new account was successfully created but we couldn't send you an email confirmation at this moment\")\r\n .then((result) => {\r\n if (result.value) {\r\n \r\n console.log(\"Error send: \" + err);\r\n this.loading = false;\r\n return true;\r\n }\r\n });\r\n return;\r\n });\r\n\r\n\r\n\r\n\r\n\r\n\r\n } else {\r\n \r\n let $text = res.Message != undefined ? res.Message : undefined;\r\n let alert = \"
    If you already have an account at onlineexpert.com, you can use it here. If you don't remember your password, you can recover it here.
    \";\r\n \r\n let fullText = alert + $text;\r\n this.spinner.hide(\"registering\");\r\n this.alertService\r\n .onError('Sorry!', fullText, true)\r\n .then((result) => {\r\n \r\n if (result.value) {\r\n this.loading = false;\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n }, err => {\r\n \r\n //InsertUser process\r\n this.spinner.hide(\"registering\");\r\n this.alertService\r\n .onError('Sorry!', \"Please try it again later!\")\r\n .then((result) => {\r\n \r\n if (result.value) {\r\n this.loading = false;\r\n console.log(\"REGISTER\");\r\n console.log(err);\r\n return true;\r\n }\r\n });\r\n return;\r\n\r\n });\r\n //}\r\n\r\n \r\n \r\n}\r\n\r\n\r\n writeUserName() {\r\n this.registerForm.get('username')?.patchValue(this.registerForm.controls['email']?.value.trim());\r\n this.registerForm.get('username')?.markAsTouched();\r\n }\r\n\r\nonReset() {\r\n this.submitted = false;\r\n this.registerForm.reset();\r\n}\r\n\r\n ngAfterViewInit(): void {\r\n this.captchaIsLoaded = true;\r\n this.cdr.detectChanges();\r\n //this.highlight();\r\n }\r\n\r\n execute(): void {\r\n this.captchaElem.execute();\r\n }\r\n\r\n handleReset(): void {\r\n this.captchaSuccess = false;\r\n this.captchaResponse = undefined;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleSuccess(captchaResponse: string): void {\r\n this.captchaSuccess = true;\r\n this.captchaResponse = captchaResponse;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleLoad(): void {\r\n this.captchaIsLoaded = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleReady(): void {\r\n this.captchaIsReady = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n changeBadge(badge: 'bottomright' | 'bottomleft' | 'inline' = 'bottomright'): void {\r\n this.badge = badge;\r\n }\r\n\r\n changeType(type: 'image' | 'audio'): void {\r\n this.type = type;\r\n }\r\n\r\n getResponse(): void {\r\n const response = this.captchaElem.getResponse();\r\n if (!response) {\r\n alert(`There is no response from grecaptcha script - try using 'getCurrentResponse' method or subscribe to 'success' event`);\r\n } else {\r\n alert(response);\r\n }\r\n }\r\n\r\n reload(): void {\r\n this.captchaElem.reloadCaptcha();\r\n }\r\n\r\n getCaptchaId(): void {\r\n alert(this.captchaElem.getCaptchaId());\r\n }\r\n\r\n reset(): void {\r\n this.captchaElem.resetCaptcha();\r\n }\r\n\r\n getCurrentResponse(): void {\r\n const currentResponse = this.captchaElem.getCurrentResponse();\r\n if (!currentResponse) {\r\n alert('There is no current response - have you submitted captcha?');\r\n } else {\r\n alert(currentResponse);\r\n }\r\n }\r\n\r\n changeTheme(theme: 'light' | 'dark'): void {\r\n this.theme = theme;\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NlYXJjaC9zZWFyY2guY29tcG9uZW50LmNzcyJ9 */\";","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Observable, forkJoin } from 'rxjs';\r\n\r\n//Interfaces\r\nimport { ICategory } from '../shared/interfaces/categories';\r\nimport { ILanguage } from '../shared/interfaces/language';\r\nimport { ILevel } from '../shared/interfaces/ILevel';\r\nimport { ICourses } from '../shared/interfaces/courses';\r\nimport { IFeaturedProducts } from '../shared/interfaces/featured-products';\r\nimport { ITests } from '../shared/interfaces/tests';\r\n\r\n//Models\r\nimport { Search } from '../shared/models/Search';\r\nimport { Category } from '../shared/models/Category';\r\nimport { Language } from '../shared/models/Language';\r\nimport { Level } from '../shared/models/Level';\r\nimport { FeaturedProduct } from '../shared/models/FeaturedProduct';\r\nimport { Product } from '../shared/models/Product';\r\nimport { Course } from '../shared/models/Course';\r\n\r\n//Service\r\nimport { RequestsService } from '../shared/services/requests.service';\r\nimport { CartService } from '../shared/services/cart.service';\r\nimport { ToastService } from '../shared/services/toast/toast.service';\r\n\r\n//Constans\r\nimport { GlobalConstans } from '../shared/global-constants/constants';\r\n\r\n//Enums\r\nimport { ContentType } from '../shared/enums/ContentType';\r\n\r\n@Component({\r\n selector: 'app-search',\r\n templateUrl: './search.component.html',\r\n styleUrls: ['./search.component.css']\r\n})\r\nexport class SearchComponent implements OnInit {\r\n public isCollapsed = false;\r\n public orderByContentType = 0;\r\n public sortAlpha = false;\r\n disabled = false;\r\n ShowFilter = false;\r\n appliedFilters = true;\r\n limitSelection = false;\r\n \r\n\r\n contentType: Array = [];\r\n checkContentType = false;\r\n contentTypeButton = false;\r\n\r\n languagesLoaded = false;\r\n checkLanguages = false;\r\n languagesButton = false;\r\n \r\n categoriesLoaded = false;\r\n checkCategories = false;\r\n categoriesButton = false;\r\n\r\n levelsLoaded = false;\r\n checkLevels = false;\r\n levelsButton = false;\r\n\r\n model: Search;\r\n type: number;\r\n\r\n page = 1;\r\n pageSize = 10;\r\n collectionSize = 0;\r\n\r\n courses: ICourses[];\r\n exams: ITests[];\r\n allContent: IFeaturedProducts[];\r\n\r\n loaded = false;\r\n noResults = true;\r\n\r\n enableCourses = true;\r\n enableExams = true;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private service: RequestsService,\r\n private cartService: CartService,\r\n private toastService: ToastService) { \r\n //====================================================================================================================================\r\n // Declarations\r\n //====================================================================================================================================\r\n this.model = new Search();\r\n this.allContent = new Array();\r\n this.courses = new Array();\r\n this.exams = new Array();\r\n this.contentType.push(\r\n {'Id': 0, 'Name': 'All content', 'Value': 0, 'Checked': false},\r\n {'Id': 2, 'Name': 'Courses', 'Value': 1, 'Checked': false},\r\n {'Id': 1, 'Name': 'Exams', 'Value': 2, 'Checked': false}\r\n );\r\n\r\n //====================================================================================================================================\r\n // END: Declarations\r\n //====================================================================================================================================\r\n\r\n //====================================================================================================================================\r\n // Getting parameters\r\n //====================================================================================================================================\r\n \r\n let contentType = parseInt(this.route.snapshot.paramMap.get('contentType'));\r\n this.checkContent({'Id': contentType});\r\n \r\n let paramCategoryId = this.route.snapshot.paramMap.get('categoryId');\r\n let categoryId = 0;\r\n if(paramCategoryId !== null){\r\n categoryId = parseInt(paramCategoryId);\r\n }\r\n\r\n let txtSearch = this.route.snapshot.paramMap.get('search');\r\n this.model.Text = txtSearch;\r\n //====================================================================================================================================\r\n // END: Getting parameters\r\n //====================================================================================================================================\r\n\r\n //====================================================================================================================================\r\n // Getting filters\r\n //====================================================================================================================================\r\n let loadCategories = this.service.loadCategories();\r\n let loadLanguages = this.service.loadLanguages();\r\n let getcourseLevels = this.service.getCourseLevels();\r\n \r\n forkJoin([loadCategories, loadLanguages, getcourseLevels]).subscribe(results => {\r\n let categories = results[0];\r\n let languages = results[1];\r\n let levels = results[2];\r\n\r\n this.model.CategoryList = categories;\r\n \r\n if(categoryId !== 0){\r\n this.model.CategoryList.find(c => c.Id === categoryId).Checked = true;\r\n }\r\n this.categoriesLoaded = true; \r\n\r\n \r\n this.model.LanguageList = languages;\r\n this.languagesLoaded = true;\r\n\r\n \r\n this.model.LevelList = levels;\r\n this.levelsLoaded = true;\r\n \r\n this.allContent = new Array();\r\n this.executeSearch(this.model, this.allContent);\r\n });\r\n //====================================================================================================================================\r\n // END: Getting filters\r\n //====================================================================================================================================\r\n \r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n let config = JSON.parse(localStorage.getItem('jsonConfig'));\r\n this.enableCourses = config.EnableCourses;\r\n this.enableExams = config.EnableExams;\r\n \r\n }\r\n\r\n // ====================================================================================\r\n // FILTER FUNCTIONS\r\n // ====================================================================================\r\n\r\n searchText(text: string){\r\n this.model.Text = text;\r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n checkContent(content: any){\r\n this.model.ContentType = content.Id;\r\n \r\n if(content.Id === ContentType.AllContent){\r\n \r\n let checked = this.contentType.find(x => x.Id === content.Id).Checked;\r\n this.contentType.map(x => x.Checked = !checked);\r\n\r\n if(checked){\r\n this.allContent = new Array();\r\n this.loaded = true;\r\n this.noResults = true;\r\n return;\r\n }\r\n }else{\r\n \r\n let find = this.contentType.find(x => x.Id === content.Id);\r\n find.Checked = !find.Checked;\r\n\r\n let otherContent = find.Id === ContentType.Exam ? ContentType.Course : ContentType.Exam;\r\n let findOtherContent = this.contentType.find(x => x.Id === otherContent).Checked;\r\n\r\n if(findOtherContent && !this.contentType.find(x => x.Id === ContentType.AllContent).Checked){\r\n this.model.ContentType = ContentType.AllContent;\r\n this.contentType.map(x => x.Checked = true);\r\n }\r\n\r\n if(!this.contentType.find(x => x.Id === content.Id).Checked || !this.contentType.find(x => x.Id === otherContent).Checked){\r\n \r\n this.contentType.find(x => x.Id === ContentType.AllContent).Checked = false;\r\n \r\n }\r\n\r\n }\r\n \r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n\r\n }\r\n\r\n categoryListFiltered(){\r\n return this.model.CategoryList.filter(x => x.Checked);\r\n }\r\n\r\n checkCategory(category: any) {\r\n \r\n let find = this.model.CategoryList.find(x => x.Id === category.Id);\r\n find.Checked = !find.Checked;\r\n\r\n if (find.ParentId === 0) {\r\n this.model.CategoryList.forEach(sub => {\r\n\r\n if (sub.ParentId !== 0 && sub.ParentId === find.Id) {\r\n sub.Checked = !sub.Checked;\r\n }\r\n\r\n });\r\n }\r\n\r\n \r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n checkAllCategories(){\r\n this.checkCategories = !this.checkCategories;\r\n this.model.CategoryList.map(x => x.Checked = this.checkCategories);\r\n\r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n languageListFiltered(){\r\n return this.model.LanguageList.filter(x => x.Checked);\r\n }\r\n\r\n checkLanguage(language: any){\r\n let find = this.model.LanguageList.find(x => x.Id === language.Id);\r\n find.Checked = !find.Checked;\r\n\r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n checkAllLanguages(){\r\n this.checkLanguages = !this.checkLanguages;\r\n this.model.LanguageList.map(x => x.Checked = this.checkLanguages);\r\n\r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n levelListFiltered(){\r\n return this.model.LevelList.filter(x => x.Checked);\r\n }\r\n\r\n checkLevel(level: any){\r\n let find = this.model.LevelList.find(x => x.Id === level.Id);\r\n find.Checked = !find.Checked;\r\n\r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n checkAllLevels(){\r\n this.checkLevels = !this.checkLevels;\r\n this.model.LevelList.map(x => x.Checked = this.checkLevels);\r\n\r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n searchByPrice(){\r\n this.allContent = new Array(); //TODO: Necesito averiguar como mejorar este proceso para limpiarlo en cada busqueda de mejor manera\r\n // console.log(this.model.MinPrice);\r\n // console.log(this.model.MaxPrice);\r\n\r\n // let minPrice = typeof this.model.MinPrice === \"number\";\r\n // let maxPrice = typeof this.model.MaxPrice === \"number\";\r\n this.executeSearch(this.model, this.allContent);\r\n }\r\n\r\n filterSubcategories(categoryId, categoryList) {\r\n\r\n if (categoryId === 0 || categoryList === undefined) return;\r\n\r\n var subCategoryList = [];\r\n \r\n categoryList.forEach(sub => {\r\n\r\n if (sub.Id === categoryId) {\r\n subCategoryList.push(sub)\r\n }\r\n\r\n });\r\n\r\n return subCategoryList;\r\n\r\n }\r\n\r\n hasSubcategories(categoryId, categoryList) {\r\n\r\n if (categoryId === 0 || categoryList === undefined) return;\r\n\r\n var subCategoryList = [];\r\n\r\n categoryList.forEach(sub => {\r\n\r\n if (sub.ParentId === categoryId) {\r\n subCategoryList.push(sub)\r\n }\r\n\r\n });\r\n \r\n return subCategoryList.length > 0;\r\n\r\n }\r\n\r\n // ====================================================================================\r\n // PRIVATE FUNCTIONS\r\n // ====================================================================================\r\n\r\n addProduct(model: any){\r\n\r\n this.cartService._addProductToCart(model);\r\n \r\n }\r\n\r\n _searchCourses(model: any, allContent: any) {\r\n \r\n this.service.searchCourses(model).subscribe((res: ICourses[]) => {\r\n this.courses = res;\r\n this.collectionSize = this.courses.length;\r\n \r\n this.courses.map(function(course){\r\n let item = new FeaturedProduct();\r\n item.Type = ContentType.Course;\r\n item.Id = course.Id;\r\n item.Name = course.Name;\r\n item.ImgSrc = GlobalConstans.returnCoursesUrlImage(course.CompanyId.toString(), course.Id.toString(), course.ImgSrc);\r\n item.Summary = course.Summary;\r\n item.CategoryName = course.CategoryName;\r\n item.Level = course.Level;\r\n item.Price = course.Price;\r\n item.OldPrice = course.OldPrice;\r\n item.GlobalId = course.GlobalId;\r\n item.ComingSoon = course.ComingSoon;\r\n allContent.push(item);\r\n });\r\n \r\n this.loaded = true;\r\n this.noResults = this.collectionSize === 0;\r\n }, err => { console.log(err); });\r\n }\r\n\r\n _searchExams(model: any, allContent: any){\r\n this.service.searchExams(model).subscribe((res: ITests[]) => { \r\n this.exams = res;\r\n this.collectionSize = this.exams.length;\r\n this.exams.forEach(exam => {\r\n\r\n let item = new FeaturedProduct();\r\n item.Type = ContentType.Exam;\r\n item.Id = exam.Id;\r\n item.Name = exam.Name;\r\n item.ImgSrc = GlobalConstans.returnExamsUrlImage(exam.CompanyId.toString(), exam.Id.toString(),exam.ImgSrc);\r\n item.Description = exam.Description;\r\n item.CategoryName = exam.CategoryName;\r\n item.Price = exam.Price;\r\n item.OldPrice = exam.OldPrice;\r\n item.GlobalId = exam.GlobalId;\r\n item.ComingSoon = exam.ComingSoon;\r\n allContent.push(item);\r\n\r\n });\r\n\r\n this.loaded = true;\r\n this.noResults = this.collectionSize === 0;\r\n }, err => { console.log(err); });\r\n }\r\n\r\n\r\n _searchAllContentV2(model: any, allContent: any){\r\n\r\n let getCourses = this.service.searchCourses(model);\r\n let getExams = this.service.searchExams(model);\r\n \r\n forkJoin([getCourses, getExams]).subscribe(results => {\r\n\r\n this.courses = results[0];\r\n this.courses.map(function(course){\r\n let item = new FeaturedProduct();\r\n item.Type = ContentType.Course;\r\n item.Id = course.Id;\r\n item.Name = course.Name;\r\n item.ImgSrc = GlobalConstans.returnCoursesUrlImage(course.CompanyId.toString(), course.Id.toString(), course.ImgSrc);\r\n item.Summary = course.Summary;\r\n item.CategoryName = course.CategoryName;\r\n item.Level = course.Level;\r\n item.Price = course.Price;\r\n item.OldPrice = course.OldPrice;\r\n item.GlobalId = course.GlobalId;\r\n allContent.push(item);\r\n });\r\n\r\n this.exams = results[1];\r\n this.exams.map(function(exam){\r\n \r\n let item = new FeaturedProduct();\r\n item.Type = ContentType.Exam;\r\n item.Id = exam.Id;\r\n item.Name = exam.Name;\r\n item.ImgSrc = GlobalConstans.returnExamsUrlImage(exam.CompanyId.toString(), exam.Id.toString(),exam.ImgSrc);\r\n item.Description = exam.Description;\r\n item.CategoryName = exam.CategoryName;\r\n item.Price = exam.Price;\r\n item.OldPrice = exam.OldPrice;\r\n item.GlobalId = exam.GlobalId;\r\n allContent.push(item);\r\n });\r\n \r\n this.collectionSize = this.allContent.length;\r\n this.loaded = true;\r\n this.noResults = this.collectionSize === 0;\r\n\r\n });\r\n\r\n \r\n }\r\n\r\n get resultData(): any[] {\r\n \r\n let currentType = typeof this.model.ContentType === \"number\" ? this.model.ContentType : 0 ;\r\n \r\n switch (currentType) {\r\n \r\n case ContentType.Course:\r\n if(this.courses !== undefined){ \r\n this.sortAlpha = this.sortAlpha === undefined ? false : this.sortAlpha;\r\n\r\n if(this.sortAlpha){\r\n //asc\r\n this.allContent.sort((a,b) => (a.Name > b.Name ? 1 : -1));\r\n \r\n }else{\r\n //desc\r\n this.allContent.sort((a,b) => (a.Name > b.Name ? -1 : 1))\r\n }\r\n\r\n return this.allContent.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);\r\n } \r\n break;\r\n \r\n case ContentType.Exam:\r\n if(this.exams !== undefined){\r\n\r\n this.sortAlpha = this.sortAlpha === undefined ? false : this.sortAlpha;\r\n\r\n if(this.sortAlpha){\r\n //asc\r\n this.allContent.sort((a,b) => (a.Name > b.Name ? 1 : -1));\r\n \r\n }else{\r\n //desc\r\n this.allContent.sort((a,b) => (a.Name > b.Name ? -1 : 1))\r\n }\r\n\r\n return this.allContent.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);\r\n }\r\n break;\r\n \r\n default:\r\n if(this.courses !== undefined && this.exams !== undefined){\r\n \r\n let orderBy = this.orderByContentType === undefined ? 0 : this.orderByContentType;\r\n this.sortAlpha = this.sortAlpha === undefined ? false : this.sortAlpha;\r\n \r\n if(orderBy !== 0){\r\n this.allContent.sort(function(x, y) { return (x.Type === orderBy) ? 0 : x ? -1 : 1; });\r\n }\r\n \r\n this.allContent.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);\r\n\r\n if(this.sortAlpha){\r\n //asc\r\n this.allContent.sort((a,b) => (a.Name > b.Name ? 1 : -1));\r\n \r\n }else{\r\n //desc\r\n this.allContent.sort((a,b) => (a.Name > b.Name ? -1 : 1))\r\n }\r\n\r\n return this.allContent;//.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);\r\n } \r\n break;\r\n }\r\n\r\n }\r\n\r\n get enableFilter(): any{\r\n return this.contentType.find(x => x.Id === 0).Checked;//this.contentType.find(x => x.ContenttypeId === 0).Cheked;\r\n }\r\n\r\n changeOrderFilter($event: any){\r\n this.orderByContentType = parseInt($event);\r\n }\r\n\r\n // sortingData(){\r\n // this.sortAlpha = !this.sortAlpha;\r\n // }\r\n\r\n executeSearch(model: Search, allContent: any){\r\n if(model.CategoryList.length === 0 && model.LanguageList.length === 0 && model.LevelList.length === 0) return;\r\n this.loaded = !this.loaded;\r\n let searchModel = new Search();\r\n searchModel.Text = model.Text,\r\n searchModel.ContentType = model.ContentType,\r\n searchModel.MinPrice = model.MinPrice,\r\n searchModel.MaxPrice = model.MaxPrice,\r\n searchModel.LevelId = model.LevelId,\r\n searchModel.CategoryList = model.CategoryList.filter(c => c.Checked),\r\n searchModel.LanguageList = model.LanguageList.filter(c => c.Checked),\r\n searchModel.LevelList = model.LevelList.filter(c => c.Checked)\r\n \r\n switch(searchModel.ContentType){\r\n case ContentType.Course:\r\n this._searchCourses(searchModel, allContent);\r\n break;\r\n case ContentType.Exam:\r\n this._searchExams(searchModel, allContent);\r\n break;\r\n default:\r\n this._searchAllContentV2(searchModel, allContent);\r\n break;\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n setDefaultPic(product){\r\nif(product.Type === ContentType.Course){\r\n product.ImgSrc = GlobalConstans.returnCoursesUrlImage(\"\", \"\", undefined);\r\n}else{\r\n product.ImgSrc = GlobalConstans.returnExamsUrlImage(\"\", \"\", undefined);;\r\n}\r\n }\r\n}\r\n\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NlY3VyaXR5L3NlY3VyaXR5LmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-security',\r\n templateUrl: './security.component.html',\r\n styleUrls: ['./security.component.css']\r\n})\r\nexport class SecurityComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { ValidationErrors, ValidatorFn, AbstractControl } from '@angular/forms';\r\n\r\nexport class CustomValidators {\r\n static patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value) {\r\n // if control is empty return no error\r\n return null;\r\n }\r\n\r\n // test the value of the control against the regexp supplied\r\n const valid = regex.test(control.value);\r\n\r\n // if true, return no error (no error), else return error passed in the second parameter\r\n return valid ? null : error;\r\n };\r\n }\r\n\r\n static passwordMatchValidator(control: AbstractControl) {\r\n const password: string = control.get('password').value; // get password from our password form control\r\n const confirmPassword: string = control.get('confirmPassword').value; // get password from our confirmPassword form control\r\n // compare is the password math\r\n if (password !== confirmPassword) {\r\n // if they don't match, set an error in our confirmPassword form control\r\n control.get('confirmPassword').setErrors({ NoPassswordMatch: true });\r\n }\r\n }\r\n}\r\n","import { Directive, Input, ElementRef } from '@angular/core';\r\nimport { StorageService } from '../../services/storage/storage.services';\r\nimport { GlobalConstans } from '../../global-constants/constants';\r\n@Directive({\r\n selector: '[resolveStorageDirective]'\r\n})\r\nexport class ResolveStorageDirective {\r\n @Input() valueStorage: string;\r\n\r\n constructor(private storageService: StorageService, private el: ElementRef) { }\r\n\r\n ngOnInit() {\r\n // Lógica de la directiva aquí\r\n console.log(\"entra a la directiva\", this.valueStorage);\r\n //storefront/13/banner/b9319a86-b8ca-4ec0-b18e-ac07eb9754ad.png/\r\n let processUrl = `${this.valueStorage.replace(GlobalConstans.replaceUrl, \"\")}/`;;\r\n this.storageService.resolveStorage(processUrl).subscribe((res: any) => {\r\n const byteCharacters = atob(res);\r\n //mimeType\r\n let splitUrl = processUrl.split('/');\r\n let mimeType = \"\";\r\n for (const i of splitUrl) {\r\n if (i.indexOf('.') > -1) {\r\n mimeType = this._resolveMimeType(i);\r\n }\r\n }\r\n\r\n // Crear un array buffer a partir de los bytes decodificados\r\n const buffer = new ArrayBuffer(byteCharacters.length);\r\n const bufferView = new Uint8Array(buffer);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n bufferView[i] = byteCharacters.charCodeAt(i);\r\n }\r\n\r\n // Crear un objeto Blob a partir del array buffer\r\n const blob = new Blob([buffer], { type: mimeType });\r\n\r\n // Crear una URL (Object URL) a partir del Blob\r\n const url_blob = URL.createObjectURL(blob);\r\n this.el.nativeElement.src = url_blob;\r\n\r\n const tiempoEspera = 3000;\r\n\r\n // Ejecuta la función miFuncion() después del tiempo de espera\r\n setTimeout(() => {\r\n URL.revokeObjectURL(url_blob);\r\n }, tiempoEspera);\r\n\r\n\r\n })\r\n\r\n\r\n\r\n //console.log(\"Valor de el \", el);\r\n }\r\n\r\n _resolveMimeType(name: string) {\r\n\r\n const mimetypes = {\r\n \".html\": \"text/html\",\r\n \".css\": \"text/css\",\r\n \".js\": \"application/javascript\",\r\n \".json\": \"application/json\",\r\n \".png\": \"image/png\",\r\n \".jpg\": \"image/jpeg\",\r\n \".gif\": \"image/gif\",\r\n \".pdf\": \"application/pdf\",\r\n \".mp3\": \"audio/mpeg\",\r\n \".mp4\": \"video/mp4\",\r\n // Agrega más extensiones y mimetypes según se requieran\r\n };\r\n\r\n // Obtener la extensión del archivo\r\n const extension = \".\" + name.split(\".\").pop().toLowerCase();\r\n\r\n // Obtener el mimetype correspondiente de acuerdo a la extensión\r\n const mimetype = mimetypes[extension] || \"application/octet-stream\";\r\n\r\n return mimetype;\r\n }\r\n\r\n}\r\n","export enum ButtonPosition {\r\n TopLeftCorner = 1,\r\n TopMiddle = 2,\r\n TopRightCorner = 3,\r\n LeftMiddle = 4,\r\n RightMiddle = 5,\r\n BottomLeftCorner = 6,\r\n BottomMiddle = 7,\r\n BottomRightCorner = 8,\r\n Center = 9\r\n\r\n}\r\n","export enum ContentType {\r\n Course = 2,\r\n Exam = 1,\r\n AllContent = 0\r\n}\r\n","export enum EmailType {\r\n UserRegistration = 1,\r\n\tPasswordRecovery = 2,\r\n\tPurchaseConfirmation = 3,\r\n\tContact = 4\r\n}","export enum NavlinkType {\r\n Navlink = 1,\r\n Dropdown = 2\r\n}","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5jc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\nimport { RequestsService } from '../services/requests.service';\r\nimport { ContactInfo } from '../models/ContactInfo';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n\r\n contact: ContactInfo;\r\n loaded = false;\r\n constructor(private service: RequestsService) {\r\n this.contact = new ContactInfo();\r\n }\r\n\r\n ngOnInit() {\r\n this.service.GetContactInfo()\r\n .subscribe((address) => {\r\n this.contact = address;\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n}\r\n","import { WebsiteStyle } from \"../models/WebsiteStyle\";\r\n//import { AppConfiguration } from \"read-appsettings-json\";\r\nimport { environment } from '../../../environments/environment';\r\nimport { isDevMode } from '@angular/core';\r\nexport class GlobalConstans {\r\n constructor() {\r\n\r\n }\r\n // =====================================================================================================================================================\r\n // API Path\r\n // =====================================================================================================================================================\r\n //private static apiURLBase: string = \"http://localhost:61273\";\r\n //private static apiURLBase: string = \"https://apidevlms.azurewebsites.net\"; // CADENA PARA TEST\r\n private static apiURLBase: string = \"https://apiprodlms.azurewebsites.net\" // CADENA PARA PROD\r\n private static prefix: string = \"api\";\r\n private static version: string = \"v1\";\r\n private static controller = \"storefront\";\r\n public static apiURL = GlobalConstans.apiURLBase + '/' + GlobalConstans.prefix + '/' + GlobalConstans.version + '/' + GlobalConstans.controller;\r\n public static apiURLStorage = GlobalConstans.apiURLBase + '/' + GlobalConstans.prefix + '/' + GlobalConstans.version + '/resoveContent';\r\n\r\n private static isTesting = false;\r\n private static blobUrl: string = GlobalConstans.isTesting ? \"https://gkanmediadev.blob.core.windows.net/\" : \"https://gkanmedia.blob.core.windows.net/\";\r\n public static replaceUrl = \"https://gkanmedia.blob.core.windows.net/\";\r\n // =====================================================================================================================================================\r\n // Id para guardar los items del cart\r\n // =====================================================================================================================================================\r\n public static cookieId = \"8a223add-aaf9-49f3-8a85-260cd264fc38\";\r\n\r\n // =====================================================================================================================================================\r\n // Variables para el logeo de la aplicación\r\n // =====================================================================================================================================================\r\n public static USERNAME = \"73956B7E-0BC0-46DA-8EFE-11A3F0C2BF8C\";\r\n public static PASSWORD = \"648BBAAC-194E-441D-854B-5DBC32E96952\";\r\n public static APPID = \"A24baa42-Pbff-P2ae-I60b-Dffd51626f81\"\r\n\r\n private static authController: string = \"login\";\r\n public static loginAPP = GlobalConstans.apiURLBase + '/' + GlobalConstans.prefix + '/' + GlobalConstans.version + '/' + GlobalConstans.authController;\r\n // =====================================================================================================================================================\r\n // Variables STRIPE\r\n // =====================================================================================================================================================\r\n //\"pk_live_518lotnCWdXdH6345HPAGdA6u23IxjgPEH6aGi9vl3Okt61qMbDkF02F8Wtbe41pXButFE6yGHxBx5HL4tPMRGazJ00IEUZTKDv\";\r\n public static GetStripePublicKey() {\r\n\r\n const PUBLICKEY = GlobalConstans.getCacheValue(\"PublicKey\");\r\n\r\n return PUBLICKEY === null || PUBLICKEY === undefined || PUBLICKEY === ''\r\n ? ''\r\n : PUBLICKEY;\r\n\r\n }\r\n\r\n\r\n public static CaptchaSiteKey = \"6LebJ_giAAAAAEyMpCt-fZf75MYffBVSxcCSW349\";\r\n /**\r\n * Método que se encarga de armar y regresar la URL de la imagen (Courses)\r\n */\r\n public static returnCoursesUrlImage(companyId: string, elementId: string, img: string) {\r\n\r\n //console.log(AppConfiguration.Setting().EnviromentInformation.FileName);\r\n //console.log({ environment});\r\n //console.log(isDevMode());\r\n\r\n const blobName = GlobalConstans.isTesting ? \"test2-\" : \"\";\r\n\r\n if (img === undefined || img === null) {\r\n const position = Math.floor(Math.random() * (+6 - +1) + +1);\r\n return `${GlobalConstans.blobUrl}${blobName}courselanding/test_template${position}.png`;\r\n } else {\r\n const url = `${GlobalConstans.blobUrl}${blobName}courselanding/${companyId}/${elementId}/Asset/${img}`;\r\n return url;\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Método que se encarga de armar y regresar la URL de la imagen (Tests)\r\n */\r\n public static returnExamsUrlImage(companyId: string, elementId: string, img: string) {\r\n\r\n const blobName = GlobalConstans.isTesting ? \"dev2-\" : \"\";\r\n\r\n if (img === undefined || img === null) {\r\n var position = Math.floor(Math.random() * (+6 - +1) + +1);\r\n return `${GlobalConstans.blobUrl}${blobName}test-imagepreview/test_template${position}.png`;\r\n } else {\r\n var url = `${GlobalConstans.blobUrl}${blobName}testlanding/${companyId}/${elementId}/Asset/${img}`;\r\n GlobalConstans.imageExists(url, function (exists) {\r\n\r\n if (!exists) {\r\n return GlobalConstans.returnExamsUrlImage(companyId, elementId, undefined);\r\n }\r\n });\r\n return url;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Método que se encarga de armar y regresar la URL de la imagen (Categories)\r\n */\r\n public static returnCategoryUrlImage(companyId: string, elementId: string, img: string) {\r\n\r\n const blobName = GlobalConstans.isTesting ? \"test2-\" : \"\";\r\n\r\n if (img === undefined || img === null) {\r\n const position = Math.floor(Math.random() * (+6 - +1) + +1);\r\n\r\n return `${GlobalConstans.blobUrl}${blobName}categories-imagepreview/cat_template${position}.png`;\r\n } else {\r\n const url = `${GlobalConstans.blobUrl}${blobName}categorytlanding/${companyId}/${elementId}/Asset/${img}`;\r\n GlobalConstans.imageExists(url, function (exists) {\r\n if (!exists) {\r\n return GlobalConstans.returnCategoryUrlImage(companyId, elementId, undefined);\r\n }\r\n });\r\n return url;\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Método para validar que las imagenes existan\r\n */\r\n public static imageExists(url, callback) {\r\n var img = new Image();\r\n img.onload = function () { callback(true); };\r\n img.onerror = function () { callback(false); };\r\n img.src = url;\r\n }\r\n\r\n /**\r\n * Método que se encarga de armar y regresar la URL de la imagen (Categories)\r\n */\r\n\r\n public static getAuthToken() {\r\n return JSON.parse(localStorage.getItem('access_token'));\r\n }\r\n\r\n public static returnGUID() {\r\n\r\n let d = new Date().getTime();\r\n let d2 = (performance && performance.now && (performance.now() * 1000)) || 0;//Time in microseconds since page-load or 0 if unsupported\r\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16;\r\n if (d > 0) {\r\n var r = (d + r) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n } else {\r\n var r = (d2 + r) % 16 | 0;\r\n d2 = Math.floor(d2 / 16);\r\n }\r\n return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);\r\n });\r\n\r\n return uuid;\r\n }\r\n\r\n public static SetWebsiteTheme(element: HTMLBodyElement, theme: any) {\r\n\r\n if (theme.PrimaryColor) {\r\n element.style.setProperty('--primary-color', theme.PrimaryColor);\r\n }\r\n\r\n if (theme.PrimaryColorBlurry) {\r\n element.style.setProperty('--primary-color-blurry', theme.PrimaryColorBlurry);\r\n }\r\n\r\n if (theme.LinkColor) {\r\n element.style.setProperty('--link-color', theme.LinkColor);\r\n }\r\n\r\n if (theme.PrimaryColor2) {\r\n element.style.setProperty('--primary-color2', theme.PrimaryColor2);\r\n }\r\n\r\n if (theme.PrimaryColor3) {\r\n element.style.setProperty('--primary-color3', theme.PrimaryColor3);\r\n }\r\n\r\n if (theme.TitleColor) {\r\n element.style.setProperty('--title-color', theme.TitleColor);\r\n }\r\n\r\n if (theme.TextColor) {\r\n element.style.setProperty('--text-color', theme.TextColor);\r\n }\r\n\r\n if (theme.BaseColor) {\r\n element.style.setProperty('--baseColor', theme.BaseColor);\r\n }\r\n\r\n if (theme.Dip) {\r\n element.style.setProperty('--dip', theme.Dip);\r\n }\r\n\r\n if (theme.Pfont) {\r\n element.style.setProperty('--pfont', theme.Pfont);\r\n }\r\n\r\n if (theme.White) {\r\n element.style.setProperty('--white', theme.White);\r\n }\r\n\r\n if (theme.Black) {\r\n element.style.setProperty('--black', theme.Black);\r\n }\r\n\r\n if (theme.Offwhite) {\r\n element.style.setProperty('--offwhite', theme.Offwhite);\r\n }\r\n }\r\n\r\n public static ReloadTheme() {\r\n var queryString = '?reload=' + new Date().getTime();\r\n\r\n var links = document.getElementsByTagName(\"link\");\r\n for (var i = 0; i < links.length; i++) {\r\n\r\n if (links[i].getAttribute(\"rel\") === \"stylesheet\") {\r\n if (links[i].getAttribute(\"href\").includes(\"style.css\") || links[i].getAttribute(\"href\").includes(\"custom.css\")) {\r\n links[i].setAttribute(\"href\", links[i].getAttribute(\"href\").replace(/\\?.*|$/, queryString));\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n public static GetUrlLogo() {\r\n \r\n let jsonConfig = localStorage.getItem(\"jsonConfig\");\r\n let data = JSON.parse(jsonConfig);\r\n\r\n if (data) {\r\n if (data.Logo === undefined || data.Logo === null) {\r\n data.Logo = \"assets/img/logo.png\";\r\n } else {\r\n data.Logo = GlobalConstans.returnUrlLogo(data.Logo);\r\n }\r\n }\r\n //localStorage.setItem('jsonConfig', JSON.stringify(data));\r\n return data.Logo;\r\n }\r\n\r\n public static GetUrlFavicon() {\r\n\r\n const jsonConfig = localStorage.getItem(\"jsonConfig\");\r\n const data = JSON.parse(jsonConfig);\r\n let urlFav = \"\";\r\n\r\n if (data) {\r\n if (data.Favicon === null || data.Favicon === undefined) {\r\n urlFav = \"assets/img/Favicon.ico\";\r\n } else {\r\n const orgId = data.OrganizationId;\r\n const icon = data.Favicon;\r\n urlFav = `${GlobalConstans.blobUrl}storefront/${orgId}/${icon}`;\r\n }\r\n\r\n return urlFav;\r\n }\r\n }\r\n\r\n public static returnUrlLogo(img: string) {\r\n\r\n const config = JSON.parse(localStorage.getItem('jsonConfig'));\r\n return `${GlobalConstans.blobUrl}storefront/${config.OrganizationId}/${img}`;\r\n }\r\n\r\n public static GetBannerImage(img: string) {\r\n\r\n const jsonConfig = localStorage.getItem(\"jsonConfig\");\r\n const data = JSON.parse(jsonConfig);\r\n\r\n return `${GlobalConstans.blobUrl}storefront/${data.OrganizationId}/banner/${img}`;\r\n }\r\n\r\n public static generateShortGuid() {\r\n var gfirstPart = (Math.random() * 46656) | 0;\r\n var gsecondPart = (Math.random() * 46656) | 0;\r\n let firstPart = (\"000\" + gfirstPart.toString(36)).slice(-3);\r\n let secondPart = (\"000\" + gsecondPart.toString(36)).slice(-3);\r\n return firstPart + secondPart;\r\n }\r\n\r\n public static returnIconByContent(type: any) {\r\n // Types\r\n // 1.- Media\r\n // 2.- Questions\r\n // 3.- Tests\r\n // 4.- Sections\r\n\r\n let $type = parseInt(type.Type || 1);\r\n let $contentType = parseInt(type.ContentType);\r\n var icon = \"fal fa- unlink\";\r\n if ($type === 1) {\r\n switch ($contentType) {\r\n case 0:\r\n icon = \"fal fa-newspaper\";\r\n break;\r\n case 1:\r\n icon = \"fal fa-music\";\r\n break;\r\n case 2:\r\n icon = \"fal fa-image\";\r\n break;\r\n case 3:\r\n icon = \"fal fa-video\";\r\n break;\r\n case 5:\r\n icon = \"fal fa-file-powerpoint\";\r\n break;\r\n case 6:\r\n icon = \"fal fa-file-pdf\";\r\n break;\r\n case 7:\r\n icon = \"fal fa-font\";\r\n break;\r\n case 8:\r\n icon = \"fal fa-file-archive\";\r\n break;\r\n case 15:\r\n icon = \"fal fa-download\";\r\n break;\r\n case 11:\r\n icon = \"fal fa-font\";\r\n break;\r\n case 16:\r\n icon = \"fal fa-video-plus\";\r\n break;\r\n }\r\n } else if ($type === 2) {\r\n switch ($contentType) {\r\n case 1:\r\n icon = \"fa fa-file-o\";\r\n break;\r\n case 2:\r\n icon = \"fal fa-clone\";\r\n break;\r\n case 3:\r\n icon = \"fal fa-paste\";\r\n break;\r\n case 4:\r\n icon = \"fal fa-check-circle\";\r\n break;\r\n case 5:\r\n icon = \"fal fa-check-square\";\r\n break;\r\n case 6:\r\n icon = \"fal fa-sticky-note\";\r\n break;\r\n case 7:\r\n icon = \"fal fa-toggle-off\";\r\n break;\r\n case 10:\r\n icon = \"fal fa-terminal\";\r\n break;\r\n case 11:\r\n icon = \"fal fa-object-ungroup\";\r\n break;\r\n case 17:\r\n icon = \"fal fa-sort-amount-down\";\r\n\r\n break;\r\n case 19:\r\n icon = \"far fa-image-polaroid\";\r\n break;\r\n case 18:\r\n icon = \"fal fa-window-alt\";\r\n break;\r\n case 20:\r\n icon = \"far fa-book-reader\";\r\n break;\r\n case 21:\r\n icon = \"far fa-images\";\r\n break;\r\n case 22:\r\n icon = \"far fa-photo-video\";\r\n break;\r\n case 23:\r\n icon = \"fas fa-columns\";\r\n break;\r\n case 24:\r\n icon = \"far fa-image-polaroid fa-rotate-90\";//\r\n break;\r\n\r\n }\r\n }\r\n else if ($type === 3) {\r\n icon = \"fal fa-file-alt\";\r\n }\r\n else if ($type === 4) {\r\n icon = \"\";\r\n }\r\n\r\n return icon;\r\n }\r\n\r\n public static getCacheValue(key: string) {\r\n\r\n if (key === '') return undefined;\r\n\r\n let config = JSON.parse(localStorage.getItem(\"jsonConfig\"));\r\n if (config !== null && config !== undefined) {\r\n return config[key];\r\n }\r\n }\r\n\r\n public static getUserCacheObject(key: string) {\r\n if (key === '') return undefined;\r\n\r\n let config = JSON.parse(localStorage.getItem(\"currentUser\"));\r\n if (config !== null && config !== undefined) {\r\n return config[key];\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public static updateCacheValue(key: string, value: any) {\r\n\r\n if (key === '') return false;\r\n\r\n let config = JSON.parse(localStorage.getItem(\"jsonConfig\"));\r\n if (config !== null && config !== undefined) {\r\n config[key] = value;\r\n localStorage.setItem('jsonConfig', JSON.stringify(config));\r\n return true;\r\n }\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../services/authentication/authentication.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) {}\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n \r\n return next.handle(request).pipe(catchError(err => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n this.authenticationService.logout();\r\n location.reload();\r\n }\r\n\r\n const error = err.error.message || err.statusText;\r\n return throwError(error);\r\n }))\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { GlobalConstans } from '../global-constants/constants';\r\nimport { AuthenticationService } from '../services/authentication/authentication.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\r\n apiUrl: string = GlobalConstans.apiURL;\r\n token: string;\r\n executed = false;\r\n\r\n constructor(private authenticationService: AuthenticationService) { }\r\n \r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n \r\n if (request.url.includes(\"login/auth\") || request.url.includes(\"getInit\")) return next.handle(request);\r\n\r\n const token = GlobalConstans.getAuthToken();\r\n \r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: \"Bearer \" + token\r\n }\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\n\r\n// custom validator to check that two fields match\r\nexport function MustMatch(controlName: string, matchingControlName: string) {\r\n return (formGroup: FormGroup) => {\r\n const control = formGroup.controls[controlName];\r\n const matchingControl = formGroup.controls[matchingControlName];\r\n\r\n if (matchingControl.errors && !matchingControl.errors.mustMatch) {\r\n // return if another validator has already found an error on the matchingControl\r\n return;\r\n }\r\n\r\n // set error on matchingControl if validation fails\r\n if (control.value !== matchingControl.value) {\r\n matchingControl.setErrors({ mustMatch: true });\r\n } else {\r\n matchingControl.setErrors(null);\r\n }\r\n }\r\n}","export default \".borderless td, .borderless th {\\r\\n border: none;\\r\\n}\\r\\n/*https://www.codeply.com/p/PQB9hrEgQ9*/\\r\\n/*https://www.c-sharpcorner.com/article/upload-download-and-delete-blob-files-using-asp-net-core-and-angular-8/*/\\r\\n\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL21lbnUvbWVudS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksWUFBWTtBQUNoQjtBQUNBLHVDQUF1QztBQUN2QyxnSEFBZ0giLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvbWVudS9tZW51LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYm9yZGVybGVzcyB0ZCwgLmJvcmRlcmxlc3MgdGgge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG59XHJcbi8qaHR0cHM6Ly93d3cuY29kZXBseS5jb20vcC9QUUI5aHJFZ1E5Ki9cclxuLypodHRwczovL3d3dy5jLXNoYXJwY29ybmVyLmNvbS9hcnRpY2xlL3VwbG9hZC1kb3dubG9hZC1hbmQtZGVsZXRlLWJsb2ItZmlsZXMtdXNpbmctYXNwLW5ldC1jb3JlLWFuZC1hbmd1bGFyLTgvKi9cclxuXHJcbiJdfQ== */\";","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { Router, ActivatedRoute, ParamMap, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { CartService } from '../services/cart.service';\r\nimport { RequestsService } from '../services/requests.service';\r\nimport { AuthenticationService } from '../services/authentication/authentication.service';\r\n\r\nimport { AzurestorageService } from '../services/azurestorage/azurestorage.service';\r\n\r\nimport { AlertService } from '../services/alert/alert.service';\r\nimport { User } from '../models/User';\r\n\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { GlobalConstans } from '../global-constants/constants';\r\nimport { ContentType } from '../enums/ContentType';\r\nimport { Domains } from '../models/Domains';\r\nimport { WebsiteStyle } from '../models/WebsiteStyle';\r\nimport { Menu } from '../models/Menu';\r\n\r\n@Component({\r\n selector: 'app-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.css']\r\n})\r\nexport class MenuComponent implements OnInit{\r\n Menu: Menu;\r\n /**\r\n * Variables para Logotipo: azure storage\r\n */\r\n files: string[] = []; \r\n fileToUpload: FormData; \r\n fileUpload: any; \r\n fileUpoadInitiated: boolean; \r\n fileDownloadInitiated: boolean;\r\n fileName: string; \r\n /**\r\n * TERMINA: Variables para Logotipo: azure storage\r\n */\r\n\r\n /**\r\n * Variables para Favicon: azure storage\r\n */\r\n Favfiles: string[] = []; \r\n FavfileToUpload: FormData; \r\n FavfileUpload: any; \r\n FavfileUpoadInitiated: boolean; \r\n FavfileDownloadInitiated: boolean;\r\n FavfileName: string; \r\n /**\r\n * TERMINA: Variables para Favicon: azure storage\r\n */\r\n\r\n public isCollapsed = true;\r\n public displayOverlay = false;\r\n\r\n public totalOpen: number;\r\n\r\n baseUrl: string;\r\n opened: boolean;\r\n item: string;\r\n userData: User;\r\n contentType = 0;\r\n txtSearch = \"\";\r\n urlLogo = \"\";\r\n themeModel = new WebsiteStyle();\r\n private themeWrapper = document.querySelector('body');\r\n isCartManager = false;\r\n isManageCoupons = false;\r\n /**\r\n * Variables para habilitar o deshabilitar Courses/Exams\r\n */\r\n enableCourses = true;\r\n enableExams = true;\r\n txtPlaceholder = \"\";\r\n\r\n constructor(\r\n private cartService: CartService,\r\n private authenticationService: AuthenticationService,\r\n private service: RequestsService,\r\n private alertService: AlertService,\r\n private route: Router,\r\n private httpClient: HttpClient,\r\n private azureClient: AzurestorageService,\r\n @Inject('BASE_URL') baseUrl: string\r\n ) {\r\n\r\n \r\n this.Menu = new Menu();\r\n\r\n this.baseUrl = baseUrl;\r\n this.userData = new User();\r\n\r\n this.totalOpen = 0;\r\n\r\n const config = JSON.parse(localStorage.getItem('jsonConfig'));\r\n this.themeModel = config.CssConfig;\r\n this.enableCourses = config.EnableCourses;\r\n this.enableExams = config.EnableExams;\r\n\r\n\r\n if (this.enableCourses && this.enableExams) {\r\n this.contentType = ContentType.AllContent;\r\n this.txtPlaceholder = \"Search...\"\r\n }\r\n else if (this.enableCourses && !this.enableExams) {\r\n this.contentType = ContentType.Course;\r\n this.txtPlaceholder = \"Search courses...\"\r\n }\r\n else if (!this.enableCourses && this.enableExams) {\r\n this.contentType = ContentType.Exam;\r\n this.txtPlaceholder = \"Search exams...\"\r\n }\r\n\r\n\r\n GlobalConstans.SetWebsiteTheme(this.themeWrapper, this.themeModel);\r\n this.urlLogo = GlobalConstans.GetUrlLogo();\r\n \r\n this._getMenu();\r\n this._setFavicon();\r\n\r\n\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n calcTotal() { return this.cartService._getProductsCart().length; }\r\n\r\n isLogged(){\r\n this.userData = this.userData === null ? new User() : this.userData;\r\n this.userData = JSON.parse(localStorage.getItem('currentUser'));\r\n this.setIsCartManager();\r\n return JSON.parse(localStorage.getItem('currentUser')) !== null;\r\n }\r\n\r\n logout(){\r\n this.authenticationService.logout();\r\n this.totalOpen == 0;\r\n if(!this.isCollapsed) this.isCollapsed = true;\r\n\r\n let currentConfig = JSON.parse(localStorage.getItem('jsonConfig'));\r\n let currentTheme = this.themeModel;\r\n\r\n if(currentConfig !== null && currentConfig !== undefined){\r\n\r\n if(JSON.stringify(currentConfig.CssConfig) !== JSON.stringify(currentTheme)){\r\n\r\n GlobalConstans.SetWebsiteTheme(this.themeWrapper, currentConfig.CssConfig);\r\n GlobalConstans.ReloadTheme();\r\n\r\n }\r\n\r\n }\r\n\r\n this.route.navigate(['/']);\r\n }\r\n\r\n goTo(redirect: string){\r\n this.route.navigate(['/' + redirect]);\r\n }\r\n\r\n setIsCartManager() {\r\n //Validacion del IsCartManagement\r\n const USER = JSON.parse(localStorage.getItem('currentUser'));\r\n if (USER !== undefined && USER !== null) {\r\n this.isCartManager = USER.IsCartManager;\r\n this.isManageCoupons = USER.IsManageCoupons;\r\n }\r\n }\r\n\r\n haveMissingInformation() {\r\n const USER = JSON.parse(localStorage.getItem('currentUser'));\r\n if (USER !== undefined && USER !== null) {\r\n return USER.HaveSecurityQuestion && USER.HaveLocalization;\r\n \r\n }\r\n return false;\r\n }\r\n\r\n searchContent(){\r\n this.route.navigate(['/search', {\"contentType\": this.contentType, \"search\": this.txtSearch}]);\r\n }\r\n\r\n openThemeCustomization(){\r\n \r\n if(this.isCollapsed && this.totalOpen === 0){\r\n //TODO: Revisamos si el usuario tiene algun tema pendiente\r\n this.service.GetCssConfigByUserId().subscribe((result:any) => {\r\n if(result){\r\n \r\n this.alertService.onBeforeConfirm(\r\n \"Theme customization\",\r\n \"We have found a theme that has not been published. Do you want to apply it right now? These changes will not be reflected until they are published.\",\r\n {\"ConfirmButtonText\": \"Apply\", \"cancelButtonText\": \"Continue\"})\r\n .then((response) => {\r\n if (response.value) {\r\n //let themeWrapper = document.querySelector('body');\r\n this.displayOverlay = true;\r\n this.themeModel = result.CssConfig;\r\n GlobalConstans.SetWebsiteTheme(this.themeWrapper,result.CssConfig);\r\n GlobalConstans.ReloadTheme();\r\n \r\n } else if (response.dismiss) {\r\n return true;\r\n }\r\n })\r\n }\r\n\r\n });\r\n }\r\n\r\n this.totalOpen++;\r\n this.isCollapsed = !this.isCollapsed;\r\n }\r\n\r\n onSubmit(form) {\r\n \r\n //GlobalConstans.SetWebsiteTheme(this.themeWrapper, form.value);\r\n }\r\n\r\n onPreview(form){\r\n \r\n GlobalConstans.SetWebsiteTheme(this.themeWrapper, form.value);\r\n }\r\n\r\n onSaveTheme(form){\r\n \r\n this.alertService.onBeforeConfirm(\r\n \"Change theme\",\r\n \"The current theme customization will be applied ONLY when you will be logged\",\r\n {\"ConfirmButtonText\": \"Confirm\", \"cancelButtonText\": \"Cancel\"})\r\n .then((result) => {\r\n\r\n if (result.value) {\r\n\r\n this.service.SaveCssConfig(form.value).subscribe((result)=>{\r\n \r\n this.alertService.onConfirm(\"Perfect\", \"Theme was changed successfully\", \"Reload page\")\r\n .then((result)=>{\r\n this.displayOverlay = true;\r\n GlobalConstans.SetWebsiteTheme(this.themeWrapper, form.value);\r\n GlobalConstans.ReloadTheme();\r\n //location.reload(true);\r\n\r\n });\r\n });\r\n\r\n \r\n // For more information about handling dismissals please visit\r\n // https://sweetalert2.github.io/#handling-dismissals\r\n } else if (result.dismiss) {\r\n return true;\r\n }\r\n })\r\n }\r\n\r\n onSaveAndPublishTheme(form){\r\n \r\n this.alertService.onBeforeConfirm(\r\n \"Change theme\",\r\n \"The current theme customization will be applied for all users\",\r\n {\"ConfirmButtonText\": \"Confirm\", \"cancelButtonText\": \"Cancel\"})\r\n .then((result) => {\r\n if (result.value) {\r\n\r\n this.service.SaveAndPublishCssConfig(form.value).subscribe((result)=>{\r\n \r\n this.alertService.onConfirm(\"Perfect\", \"Theme was changed successfully\", \"Reload page\")\r\n .then((result)=>{\r\n this.displayOverlay = true;\r\n let config = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if(config !== null && config !== undefined){\r\n config.CssConfig = form.value;\r\n localStorage.setItem(\"jsonConfig\", JSON.stringify(config));\r\n }\r\n GlobalConstans.SetWebsiteTheme(this.themeWrapper, form.value);\r\n GlobalConstans.ReloadTheme();\r\n location.reload();\r\n\r\n });\r\n });\r\n\r\n \r\n // For more information about handling dismissals please visit\r\n // https://sweetalert2.github.io/#handling-dismissals\r\n } else if (result.dismiss) {\r\n return true;\r\n }\r\n })\r\n\r\n }\r\n\r\n onReset(){\r\n \r\n let config = JSON.parse(localStorage.getItem('jsonConfig'));\r\n this.themeModel = config.CssConfig;\r\n GlobalConstans.SetWebsiteTheme(this.themeWrapper, this.themeModel);\r\n }\r\n\r\n //========================================================================\r\n // Logotipo\r\n //========================================================================\r\n addFile() { \r\n if (!this.fileUpoadInitiated) { \r\n document.getElementById('fileUpload').click(); \r\n } \r\n }\r\n\r\n handleFileInput(files: any) { \r\n \r\n const allowed_types = ['image/png', 'image/jpeg','image/gif']\r\n\r\n if(files.length > 0){\r\n\r\n let found = allowed_types.find(x => x.includes(files[0].type))\r\n\r\n if (!found) {\r\n this.alertService.onError(\"Ups!\",\"Only Images are allowed ( JPG | PNG | GIF )\");\r\n return;\r\n }\r\n }\r\n\r\n //Validar size\r\n let max_height = 75;\r\n let max_width = 300;\r\n var reader = new FileReader();\r\n\r\n reader.readAsDataURL(files[0]); \r\n reader.onload = (event) => { \r\n var img = new Image();\r\n img.src = event.target.result as string;\r\n img.onload = rs => {\r\n \r\n const img_height = rs.currentTarget['height'];\r\n const img_width = rs.currentTarget['width'];\r\n\r\n if (img_height > max_height && img_width > max_width) {\r\n this.alertService.onError(\"Ups!\",'Maximum dimentions allowed: width ' + max_width + 'px * height ' + max_height + 'px');\r\n return;\r\n } else {\r\n \r\n let formData: FormData = new FormData(); \r\n formData.append(\"asset\", files[0], files[0].name); \r\n if(files.length > 0){\r\n this.fileName = files[0].name;\r\n }\r\n this.fileToUpload = formData; \r\n this.onUploadFiles(); \r\n }\r\n };\r\n\r\n }\r\n \r\n //END: Validar size\r\n \r\n }\r\n\r\n onUploadFiles() { \r\n if (this.fileUpoadInitiated) { \r\n return; \r\n } \r\n this.fileUpoadInitiated = true; \r\n if (this.fileToUpload == undefined) { \r\n this.fileUpoadInitiated = false; \r\n return false; \r\n } \r\n else { \r\n\r\n let jsonConfig = localStorage.getItem(\"jsonConfig\");\r\n let data = JSON.parse(jsonConfig);\r\n \r\n this.azureClient.DeleteFile(data.Logo)\r\n .subscribe((e : any) => {\r\n \r\n if(e){\r\n\r\n this.azureClient.InsertFile(this.fileToUpload)\r\n .subscribe((response: any) => { \r\n \r\n this.fileUpoadInitiated = false; \r\n this.fileUpload = ''; \r\n \r\n if (response.ok) { \r\n this.service.UpdateLogo(this.fileName)\r\n .subscribe((res: any) => {\r\n \r\n if(res.Success){\r\n \r\n this.alertService.onConfirm(\"Perfect\", \"You logo has been changed successfully\", \"Reload page\")\r\n .then((result)=>{\r\n this.urlLogo = GlobalConstans.returnUrlLogo(this.fileName);\r\n \r\n \r\n let jsonConfig = localStorage.getItem(\"jsonConfig\");\r\n let data = JSON.parse(jsonConfig);\r\n \r\n if(data){\r\n data.Logo = this.fileName;\r\n }\r\n localStorage.setItem('jsonConfig', JSON.stringify(data));\r\n this.fileName = '';\r\n \r\n });\r\n }\r\n \r\n });\r\n \r\n } \r\n else { \r\n alert('Error occured!'); \r\n this.fileUpoadInitiated = false; \r\n } \r\n }, \r\n err => console.log(err), \r\n ); \r\n\r\n\r\n\r\n }//cierra e\r\n\r\n\r\n\r\n });\r\n\r\n \r\n \r\n } \r\n }\r\n\r\n deleteFile(fileName: string) { \r\n \r\n this.azureClient.DeleteFile(fileName)\r\n .subscribe(result => { \r\n if (result != null) { \r\n //this.showBlobs(); \r\n return true;\r\n } \r\n }, error => console.error(error)); \r\n }\r\n //========================================================================\r\n // END: Logotipo\r\n //========================================================================\r\n\r\n //========================================================================\r\n // Favicon\r\n //========================================================================\r\n\r\n setDefaultPic(){\r\n this.urlLogo = \"assets/img/logo.png\";\r\n }\r\n\r\n favaddFile() { \r\n if (!this.FavfileUpoadInitiated) { \r\n document.getElementById('FavfileUpload').click(); \r\n } \r\n }\r\n\r\n favhandleFileInput(files: any) { \r\n \r\n const allowed_types = ['image/png', 'image/x-icon'];\r\n\r\n if(files.length > 0){\r\n\r\n let found = allowed_types.find(x => x.includes(files[0].type))\r\n\r\n if (!found) {\r\n this.alertService.onError(\"Ups!\",\"Only Images are allowed ( PNG | ICO )\");\r\n return;\r\n }\r\n }\r\n\r\n //Validar size\r\n let max_height = 48;\r\n let max_width = 48;\r\n var reader = new FileReader();\r\n\r\n reader.readAsDataURL(files[0]); \r\n reader.onload = (event) => { \r\n var img = new Image();\r\n img.src = event.target.result as string;\r\n img.onload = rs => {\r\n \r\n const img_height = rs.currentTarget['height'];\r\n const img_width = rs.currentTarget['width'];\r\n\r\n if (img_height > max_height && img_width > max_width) {\r\n this.alertService.onError(\"Ups!\",'Maximum dimentions allowed: width ' + max_width + 'px * height ' + max_height + 'px');\r\n return;\r\n } else {\r\n \r\n let formData: FormData = new FormData(); \r\n formData.append(\"asset\", files[0], files[0].name); \r\n if(files.length > 0){\r\n this.FavfileName = files[0].name;\r\n }\r\n this.FavfileToUpload = formData; \r\n this.favonUploadFiles(); \r\n }\r\n };\r\n\r\n }\r\n \r\n //END: Validar size\r\n\r\n\r\n\r\n }\r\n\r\n favonUploadFiles() { \r\n if (this.FavfileUpoadInitiated) { \r\n return; \r\n } \r\n this.FavfileUpoadInitiated = true; \r\n if (this.FavfileToUpload == undefined) { \r\n this.FavfileUpoadInitiated = false; \r\n return false; \r\n } \r\n else { \r\n\r\n let jsonConfig = localStorage.getItem(\"jsonConfig\");\r\n let data = JSON.parse(jsonConfig);\r\n \r\n this.azureClient.DeleteFile(data.Favicon)\r\n .subscribe((e) => {\r\n\r\n if(e){\r\n this.azureClient.InsertFile(this.FavfileToUpload)\r\n .subscribe((response: any) => { \r\n this.FavfileUpoadInitiated = false; \r\n this.FavfileUpload = ''; \r\n \r\n if (response.ok) { \r\n this.service.UpdateFavicon(this.FavfileName)\r\n .subscribe((res: any) => {\r\n \r\n if(res.Success){\r\n \r\n this.alertService.onConfirm(\"Perfect\", \"You favicon has been changed successfully\", \"Reload page\")\r\n .then((result)=>{\r\n var favUrl = GlobalConstans.returnUrlLogo(this.FavfileName);\r\n \r\n var links = document.getElementsByClassName(\"favicon\");//.setAttribute(\"href\", favUrl);\r\n for ( var i = 0; i < links.length; i++ ) {\r\n var queryString = '?reload=' + new Date().getTime();\r\n links[i].setAttribute(\"href\", favUrl.replace(/\\?.*|$/, queryString));\r\n }\r\n \r\n this.FavfileName = '';\r\n\r\n });\r\n }\r\n \r\n });\r\n \r\n } \r\n else { \r\n alert('Error occured!'); \r\n this.fileUpoadInitiated = false; \r\n } \r\n }, \r\n err => console.log(err), \r\n ); \r\n }\r\n });\r\n\r\n\r\n\r\n\r\n \r\n \r\n } \r\n }\r\n\r\n favdeleteFile(fileName: string) { \r\n \r\n this.azureClient.DeleteFile(fileName)\r\n .subscribe(result => { \r\n if (result != null) { \r\n //this.showBlobs(); \r\n return true;\r\n } \r\n }, error => console.error(error)); \r\n }\r\n //========================================================================\r\n // END: Favicon\r\n //========================================================================\r\n\r\n // ====================================================================================================================================\r\n // GetMenu\r\n // ====================================================================================================================================\r\n\r\n _getMenu(){\r\n this.service.GetMenu().subscribe((menu:Menu) => {\r\n \r\n let temp = menu.Links.filter(x => x.Enable);\r\n let enableMenu = new Menu();\r\n enableMenu.Links = temp;\r\n this.Menu = enableMenu;\r\n \r\n });\r\n }\r\n\r\n // ====================================================================================================================================\r\n // setFavicon\r\n // ====================================================================================================================================\r\n _setFavicon() {\r\n \r\n let link = document.getElementsByClassName('favicon')[0];\r\n link.setAttribute('href', GlobalConstans.GetUrlFavicon());\r\n }\r\n}\r\n","export class AccountResponse{\r\n ReturnValue: number;\r\n Status: number;\r\n Message: string;\r\n Exception: any;\r\n}","\r\n\r\nexport class Address{\r\n PostalCode:string;\r\n City:string;\r\n State:string;\r\n Country:string;\r\n Direction:string;\r\n}","import { Text } from './Text';\r\nimport { Button } from './Button';\r\nimport { ImageItem } from './ImageItem';\r\n\r\nexport class Banner {\r\n \r\n constructor () {\r\n //this.ImageList = new Array();\r\n this.ButtonObject = new Button();\r\n this.TextObject = new Text();\r\n }\r\n \r\n public Image: ImageItem;\r\n \r\n public Style: string;\r\n \r\n public EnableButton: boolean;\r\n \r\n public ButtonObject: Button;\r\n \r\n public EnableText: boolean;\r\n \r\n public TextObject: Text;\r\n\r\n public Toogle : boolean;\r\n}","export class Button {\r\n /**\r\n *\r\n */\r\n constructor() {\r\n //this.Action = \"external\";\r\n\r\n }\r\n \r\n public Text: string;\r\n \r\n public Action: string;\r\n \r\n public IsExternal: boolean;\r\n \r\n public Target: boolean;\r\n \r\n public Type: string;\r\n\r\n public Position: string;\r\n}\r\n","import { Address } from \"./Address\";\r\n\r\nexport class ContactInfo\r\n{\r\n constructor()\r\n {\r\n this.Address = new Address();\r\n }\r\n\r\n Schedule:string;\r\n Address:Address;\r\n PhoneNumber:string;\r\n Email:string;\r\n\r\n}\r\n","export class Course{\r\n Id: number;\r\n CompanyId: number;\r\n Name: string;\r\n ProductId: string;\r\n Language: string;\r\n Level: string;\r\n CategoryId: number;\r\n Category: string;\r\n Subcategory: string;\r\n Summary: string;\r\n Experts: any;\r\n Price: number;\r\n OldPrice: number;\r\n ImgSrc:string;\r\n VideoSrc:string;\r\n HasWorkbook: boolean;\r\n HasResources: boolean;\r\n CourseTime: number;\r\n}","export class DiscountCoupon {\r\n constructor() {\r\n this.Id = 0;\r\n this.Coupon = \"\";\r\n this.Discount = 0;\r\n this.DueDate = new Date();\r\n }\r\n Id?: number;\r\n Coupon: string;\r\n Discount: number;\r\n Status?: number;\r\n IsDeleted?: boolean;\r\n DueDate: Date;\r\n CreatedDate?: Date;\r\n ModifiedDate?: Date;\r\n ReleasedDate?: Date;\r\n OrganizationId?: number;\r\n Subtotal?: number;\r\n TotalRedemptions?: number;\r\n}\r\n","import { MailSettings } from \"./MailSettings\";\r\nimport { StripeConfig } from \"./StripeConfig\";\r\nimport { WebsiteStyle } from \"./WebsiteStyle\";\r\n\r\nexport class Domains{\r\n \r\n constructor() {\r\n this.ContactSettings = new MailSettings();\r\n this.StripeConfig = new StripeConfig();\r\n this.CssConfig = new WebsiteStyle();\r\n }\r\n Logo: string;\r\n Favicon: string;\r\n OrganizationId: number;\r\n Direction: string;\r\n ContactSettings: MailSettings;\r\n StripeConfig: StripeConfig;\r\n CssConfig: WebsiteStyle;\r\n}","export class EmailConfig\r\n{\r\n public Mail : string;\r\n public DisplayName : string;\r\n public Password : string;\r\n public Host : string;\r\n public Port : number;\r\n public EmailReceiver: string;\r\n public EmailCopyPurchase: string;\r\n}\r\n","export class FeaturedProduct{\r\n Id: number;\r\n Name: string;\r\n CompanyId: number;\r\n ProductId: string;\r\n Language: string;\r\n Level: string;\r\n CategoryId: number;\r\n CategoryName: string;\r\n Category: string;\r\n Subcategory: string;\r\n Summary: string;\r\n Description: string;\r\n Experts: any;\r\n Price: number;\r\n OldPrice: number;\r\n ImgSrc:string;\r\n VideoSrc:string;\r\n Type:number;\r\n GlobalId: string;\r\n ComingSoon: boolean;\r\n}\r\n","export class ImageItem {\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n this.Order = 0;\r\n this.Enable = true;\r\n }\r\n \r\n public Src: string;\r\n \r\n public Enable: boolean;\r\n \r\n public Order: number;\r\n \r\n public Id: string;\r\n}","export class MailRequest{\r\n UserId: number;\r\n Name: string;\r\n LastName: string;\r\n Email: string; //Cuenta de la persona que esta enviando el correo\r\n Username: string;\r\n Subject : string;\r\n Body : string;\r\n Template : string;\r\n ToEmail : string; //¿A que cuenta se va enviar el correo?\r\n DomainId: number;\r\n EmailType: number;\r\n ProductList: string[];\r\n CurrentUrl: string;\r\n BearerToken: string;\r\n OrderId: string;\r\n}\r\n","export class MailSettings{\r\n Mail: string;\r\n DisplayName: string;\r\n Password: string;\r\n Host: string;\r\n Port: string;\r\n EmailReceiver: string;\r\n}","import { MenuItem } from \"./MenuItem\";\r\n\r\nexport class Menu{\r\n\r\n constructor() {\r\n this.Links = new Array();\r\n }\r\n\r\n public Links : MenuItem[];\r\n}","import { MenuItemBase } from \"./MenuItemBase\";\r\n\r\nexport class MenuItem extends MenuItemBase{\r\n \r\n constructor() {\r\n super();\r\n this.DropdownItems = new Array();\r\n }\r\n public DropdownItems : MenuItemBase[];\r\n Type : number;\r\n}","import { GlobalConstans } from \"../global-constants/constants\";\r\n\r\nexport class MenuItemBase{\r\n \r\n constructor() {\r\n this.NewTab = true;\r\n this.Enable = true;\r\n this.Identifier = GlobalConstans.generateShortGuid();\r\n }\r\n \r\n Identifier: string;\r\n Text: string;\r\n Url: boolean;\r\n NewTab: boolean;\r\n Enable: boolean;\r\n \r\n}","import { Product } from './Product';\r\n\r\nexport class Order{\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n this.ProductList = new Array();\r\n }\r\n Id: string;\r\n Date: Date;\r\n DateText: string;\r\n Total: number;\r\n PaymentType: string;\r\n ProductList: Product[];\r\n TotalDiscount: number;\r\n CouponApplied: boolean;\r\n}\r\n","export class Product{\r\n UserId : number;\r\n Id : number;\r\n Name : string;\r\n ImgSrc : string;\r\n Price : number;\r\n Quantity : number;\r\n Type : number;\r\n Total : number;\r\n CompanyId: number;\r\n RedeemCode: string;\r\n CategoryId: number;\r\n CategoryName: string;\r\n GlobalId: string;\r\n ContentId: number;\r\n}","export class RedeemOrder{\r\n GlobalOrderId: string;\r\n UserId: number;\r\n OrganizationId: number;\r\n UrlDomain: string;\r\n}\r\n","import { Category } from \"./Category\";\r\nimport { Language } from \"./Language\";\r\nimport { Level } from \"./Level\";\r\nimport { newArray } from \"@angular/compiler/src/util\";\r\n\r\nexport class Search{\r\n /**\r\n *\r\n */\r\n constructor() {\r\n this.CategoryList = new Array();\r\n this.LanguageList = new Array();\r\n this.LevelList = new Array();\r\n this.MinPrice = 0;\r\n this.MaxPrice = 0;\r\n \r\n }\r\n Text: string;\r\n ContentType: number;\r\n MinPrice: number;\r\n MaxPrice: number;\r\n LevelId: number;\r\n CategoryList: Category[];\r\n LanguageList: Language[];\r\n LevelList: Level[];\r\n}","export class StripeConfig{\r\n PublicKey: string;\r\n SecretKey: string;\r\n}","import { Question } from './Question';\r\n\r\nexport class Test{\r\nId?:number;\r\nCompanyId ?:number;\r\nName?: string;\r\nDescription ?: string;\r\nCategoryId?: number;\r\nCategoryName ?: string;\r\nTotalQuestions?:number;\r\nTotalTime?:number;\r\nLanguage ?: string;\r\nQuestionList: Question[];\r\nPrice?:number;\r\nPriceHistory?:number;\r\nImgSrc ?: string;\r\nVideoSrc ?: string;\r\nType?:number;\r\nLevel?:string;\r\n}","export class Text {\r\n \r\n public Title: string;\r\n \r\n public Body: string;\r\n}","export class User{\r\n Id: number;\r\n Initials: string;\r\n FirstName: string;\r\n LastName: string;\r\n CountryId: number;\r\n TimeZoneId :string;\r\n Email :string;\r\n UserName: string;\r\n CurrentPassword : string;\r\n Password: string;\r\n PasswordSalt: string;\r\n SecurityQuestionId: number;\r\n Answer: string;\r\n AnswerSalt: string;\r\n FullName: string;\r\n token?: string;\r\n IsCartManager: boolean;\r\n UrlDomain: string;\r\n}\r\n","export class WebsiteStyle\r\n{\r\n /**\r\n *\r\n */\r\n constructor() {\r\n this.PrimaryColor = \"#557700\";\r\n this.PrimaryColorBlurry = \"#8C2711\";\r\n this.LinkColor = \"#7b838a\";\r\n this.PrimaryColor2 = \"#ff6c00\";\r\n this.PrimaryColor3 = \"#828bb3\";\r\n this.TitleColor = \"#222222\";\r\n this.TextColor = \"#777777\";\r\n this.BaseColor = \"#c5322d\";\r\n this.Dip = \"#222222\";\r\n this.Pfont = \"#777777\";\r\n this.White = \"#fff\";\r\n this.Black = \"#c5322d\";\r\n this.Offwhite = \"#fcfcfc\";\r\n }\r\n PrimaryColor: string;\r\n PrimaryColorBlurry: string;\r\n LinkColor: string;\r\n PrimaryColor2: string;\r\n PrimaryColor3: string;\r\n TitleColor: string;\r\n TextColor: string;\r\n BaseColor: string;\r\n Dip: string;\r\n Pfont: string;\r\n White: string;\r\n Black: string;\r\n Offwhite: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport Swal from 'sweetalert2/dist/sweetalert2.js';\r\n//DOCUMENTATION AT: https://sweetalert2.github.io/\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor() { }\r\n\r\n\r\n onConfirm(title: string, text: string, button?: string){\r\n\r\n let $title = title || 'Good job!';\r\n let $text = text || 'Everything is working!';\r\n let $button = button || 'Nice';\r\n\r\n return Swal.fire({\r\n title: $title,\r\n text: $text,\r\n icon: 'success',\r\n confirmButtonColor: '#28a745',\r\n showCancelButton: false,\r\n confirmButtonText: $button\r\n });\r\n }\r\n\r\n onBeforeConfirm($title: string, $text: string, $buttons : any){\r\n return Swal.fire({\r\n title: $title,\r\n text: $text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: $buttons[\"ConfirmButtonText\"],\r\n cancelButtonText: $buttons[\"cancelButtonText\"]\r\n });\r\n }\r\n\r\n onError(title: string, text: string, isHtml = false){\r\n\r\n let $title = title || 'Sorry!';\r\n let $text = text || 'Something went wrong!';\r\n\r\n if (isHtml) {\r\n return Swal.fire({\r\n title: $title,\r\n html: $text,\r\n icon: 'error',\r\n confirmButtonColor: '#3085d6',\r\n showCancelButton: false,\r\n confirmButtonText: 'Understood'\r\n });\r\n } else {\r\n return Swal.fire({\r\n title: $title,\r\n text: $text,\r\n icon: 'error',\r\n confirmButtonColor: '#3085d6',\r\n showCancelButton: false,\r\n confirmButtonText: 'Understood'\r\n });\r\n }\r\n\r\n \r\n }\r\n\r\n onInfo(title: string, text: string) {\r\n Swal.fire({\r\n icon: 'info',\r\n title: title,\r\n text: text\r\n })\r\n }\r\n\r\n opensweetalert()\r\n {\r\n Swal.fire({\r\n text: 'Hello!',\r\n icon: 'success'\r\n });\r\n }\r\n\r\n opensweetalertdng()\r\n {\r\n Swal.fire('Oops...', 'Something went wrong!', 'error')\r\n }\r\n\r\n opensweetalertcst(){\r\n Swal.fire({\r\n title: 'Are you sure?',\r\n text: 'You will not be able to recover this imaginary file!',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: 'Yes, delete it!',\r\n cancelButtonText: 'No, keep it'\r\n }).then((result) => {\r\n if (result.value) {\r\n Swal.fire(\r\n 'Deleted!',\r\n 'Your imaginary file has been deleted.',\r\n 'success'\r\n )\r\n // For more information about handling dismissals please visit\r\n // https://sweetalert2.github.io/#handling-dismissals\r\n } else if (result.dismiss === Swal.DismissReason.cancel) {\r\n Swal.fire(\r\n 'Cancelled',\r\n 'Your imaginary file is safe :)',\r\n 'error'\r\n )\r\n }\r\n })\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { GlobalConstans } from '../../global-constants/constants';\r\nimport { User } from '../../models/User';\r\nimport { AccountResponse } from '../../models/AccountResponse';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n \r\n private currentUserSubject: BehaviorSubject;\r\n public currentUser: Observable;\r\n apiUrl: string = GlobalConstans.apiURL;\r\n domainId: number;\r\n\r\n constructor(private http: HttpClient) {\r\n this.currentUserSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('currentUser')));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n\r\n const jsonConfig = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if (jsonConfig !== undefined && jsonConfig !== null) {\r\n this.domainId = jsonConfig.Id;\r\n \r\n }\r\n\r\n }\r\n\r\n public get currentUserValue(): User {\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n login(username: string, password: string) {\r\n \r\n let API_URL = `${this.apiUrl}/ValidateUser/${this.domainId}`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n \r\n return this.http.post(API_URL, { username, password }, options)\r\n .pipe(map(user => {\r\n \r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n if(user){\r\n localStorage.setItem('currentUser', JSON.stringify(user));\r\n this.currentUserSubject.next(user);\r\n }\r\n \r\n return user;\r\n }));\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n localStorage.removeItem('currentUser');\r\n this.currentUserSubject.next(null);\r\n }\r\n\r\n loginAPP(): Observable {\r\n\r\n let API_URL = `${GlobalConstans.loginAPP}/auth`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n const username = GlobalConstans.USERNAME;\r\n const password = GlobalConstans.PASSWORD;\r\n return this.http.post(API_URL, {username, password}, options);\r\n \r\n }\r\n\r\n async isAuthenticated(){\r\n\r\n let API_URL = `${GlobalConstans.loginAPP}/auth`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n const username = GlobalConstans.USERNAME;\r\n const password = GlobalConstans.PASSWORD;\r\n \r\n const response = await this.http.post(API_URL, {username, password}, options).toPromise();\r\n return response;\r\n }\r\n\r\n getToken(){\r\n return localStorage.getItem('access_token');\r\n }\r\n\r\n validateUserByEmail(email: string): Observable {\r\n\r\n \r\n let API_URL = `${GlobalConstans.apiURL}/ValidateUserByEmail`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, {email}, options).pipe(catchError(this.error));\r\n\r\n }\r\n\r\n resetPassword(model: User): Observable {\r\n\r\n \r\n let API_URL = `${GlobalConstans.apiURL}/ResetPassword`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n\r\n }\r\n\r\n // Account methods\r\n accountChangeName(data: User): Observable {\r\n let API_URL = `${this.apiUrl}/AccountChangeName`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n }\r\n\r\n accountChangeEmail(data: User): Observable {\r\n let API_URL = `${this.apiUrl}/AccountChangeEmail`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n }\r\n\r\n accountChangeLocation(data: User): Observable {\r\n let API_URL = `${this.apiUrl}/AccountChangeLocation`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n }\r\n\r\n accountChangePassword(data: User): Observable {\r\n let API_URL = `${this.apiUrl}/AccountChangePassword`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n }\r\n\r\n accountChangeQuestion(data: User): Observable {\r\n let API_URL = `${this.apiUrl}/AccountChangeQuestion`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n }\r\n //END: Account methods\r\n // Handle Errors \r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = error.error.message;\r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AzurestorageService {\r\n appSettings: any;\r\n url = \"\";\r\n prefix = \"\";\r\n controller = \"\";\r\n\r\n constructor(\r\n @Inject('BASE_URL') baseUrl: string,\r\n private http: HttpClient\r\n ){ \r\n //=====================================================================================\r\n // Lectura de appsetings.json\r\n //=====================================================================================\r\n this.appSettings = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if(this.appSettings === null || this.appSettings === undefined){\r\n console.log(\"RequestService: No hay datos en this.appSettings\");\r\n }\r\n //=====================================================================================\r\n // TERMINA: Lectura de appsetings.json\r\n //=====================================================================================\r\n this.prefix = \"api/\";\r\n this.controller = \"blobstorage/\";\r\n this.url = baseUrl + this.prefix + this.controller;\r\n }\r\n\r\n DeleteFile(filename: string): Observable {\r\n let API_URL = `${this.url}DeleteFile/${filename}/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n InsertFile(file: any):Observable{\r\n let API_URL = `${this.url}InsertFile/${this.appSettings.OrganizationId}`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n return this.http.post(API_URL, file,{ observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error InsertFile: ${error}`);\r\n }\r\n ));\r\n \r\n }\r\n\r\n\r\n UploadBannerImage(images: any):Observable{\r\n let API_URL = `${this.url}UploadBannerImage/${this.appSettings.OrganizationId}`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n return this.http.post(API_URL, images,{ observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error UploadBannerImage: ${error}`);\r\n }\r\n ));\r\n \r\n }\r\n\r\n DeleteBannerImage(filename: string): Observable {\r\n let API_URL = `${this.url}DeleteBannerImage/${filename}/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n // Handle Errors \r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n if(error){\r\n errorMessage = error.error.message;\r\n }\r\n \r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(\"error\" + error);\r\n console.log(\"error.error\" + error.error);\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of as observableOf, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { GlobalConstans } from '../global-constants/constants';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\r\n//import { Observable, of as observableOf } from 'rxjs';\r\n\r\n//Interfaces\r\nimport { IProduct } from '../interfaces/IProduct';\r\nimport { THIS_EXPR, ReturnStatement } from '@angular/compiler/src/output/output_ast';\r\n\r\n//Models\r\nimport { Product } from '../models/Product';\r\nimport { CheckoutConfirmation } from '../models/CheckoutConfirmation';\r\nimport { Domains } from '../models/Domains';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CartService {\r\n apiUrl: string = GlobalConstans.apiURL;\r\n userId: any;\r\n appSettings: Domains; \r\n\r\n constructor(private http: HttpClient, private cookieService: CookieService,private route: Router) {\r\n this.userId = GlobalConstans.returnGUID();\r\n this.appSettings = new Domains();\r\n //this.appSettings.OrganizationId = 1;\r\n\r\n const jsonConfig = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if (jsonConfig !== undefined && jsonConfig !== null) {\r\n this.appSettings.OrganizationId = jsonConfig.OrganizationId;\r\n }\r\n\r\n }\r\n\r\n//************************************************************************************************************************* */\r\n// Database\r\n//************************************************************************************************************************* */\r\n\r\n AddProductToCart(data: IProduct): Observable {\r\n \r\n if(typeof this.userId !== 'number'){\r\n let API_URL = `${this.apiUrl}/AddProductToCart`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n }\r\n\r\n //return this.addToLocalstorage(this.userId,data);\r\n \r\n }\r\n\r\n getProductsCart(): Observable{\r\n if(typeof this.userId !== 'number'){\r\n let API_URL = `${this.apiUrl}/GetProductsCart/${5}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n \r\n }\r\n\r\n updateProductToCart(data: IProduct): Observable {\r\n let API_URL = `${this.apiUrl}/UpdateProductToCart`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n deleteProductToCart(productId: number): Observable {\r\n let userId = 5;\r\n let API_URL = `${this.apiUrl}/DeleteProductToCart/${userId}/${productId}`;\r\n\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n return this.http.post(API_URL, options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n//************************************************************************************************************************* */\r\n// cookies\r\n//************************************************************************************************************************* */\r\n\r\nprivate _checkIfCookieExists(){\r\n \r\n let exist = this.cookieService.check(GlobalConstans.cookieId);\r\n if(!exist){\r\n this.cookieService.set( GlobalConstans.cookieId, undefined );\r\n }\r\n\r\n}\r\n\r\n_addProductToCart(model: any){\r\n \r\n let products = this._getProductsCart();\r\n let exist = false;\r\n if(model == null) return;\r\n\r\n let data = new Product();\r\n data.Id = model.Id;\r\n data.Quantity = 1;\r\n data.Price = model.Price;\r\n data.Total = (data.Quantity * data.Price)\r\n data.CompanyId = model.CompanyId;\r\n data.Type = model.Type;\r\n data.Name = model.Name;\r\n data.ImgSrc = model.ImgSrc;\r\n data.CategoryId = model.CategoryId;\r\n data.CategoryName = model.CategoryName;\r\n data.GlobalId = model.GlobalId;\r\n\r\n products.forEach((element,key) => { if(element.Id === data.Id){ exist = true; return;} });\r\n\r\n if(!exist){ products.push(data); }\r\n\r\n this.cookieService.set( GlobalConstans.cookieId, JSON.stringify(products) );\r\n this.route.navigate(['/added',data.GlobalId]);\r\n}\r\n\r\n_getProductsCart(){\r\n this._checkIfCookieExists();\r\n\r\n let products = new Array();\r\n\r\n let currentData = this.cookieService.get(GlobalConstans.cookieId);\r\n \r\n if(currentData != \"undefined\") products = JSON.parse(currentData);\r\n\r\n return products;\r\n}\r\n\r\n_updateProductToCart(data: Product){\r\n\r\n let products = this._getProductsCart();\r\n \r\n products.forEach((element,key) => {\r\n if(element.Id === data.Id){\r\n element.Quantity = data.Quantity;\r\n element.Price = data.Price;\r\n element.Total = (element.Quantity * element.Price);\r\n return;\r\n }\r\n });\r\n\r\n this.cookieService.set( GlobalConstans.cookieId, JSON.stringify(products) );\r\n return true;\r\n\r\n}\r\n\r\n_deleteProductToCart(globalId: string){\r\n let products = this._getProductsCart();\r\n \r\n let index = products.findIndex(p => p.GlobalId === globalId );\r\n products.splice(index, 1);\r\n\r\n this.cookieService.set( GlobalConstans.cookieId, JSON.stringify(products) );\r\n return true;\r\n\r\n}\r\n\r\n_deleteAllProducts(){\r\n this.cookieService.deleteAll();\r\n return true;\r\n}\r\n\r\n_getProductById(globalId: string){\r\n let data = this._getProductsCart();\r\n if(data.length == 0) return new Product();\r\n\r\n return data.find(c => c.GlobalId === globalId);\r\n}\r\n\r\n//************************************************************************************************************************* */\r\n// Generate Orders\r\n//************************************************************************************************************************* */\r\n\r\n generateOrder(coupons: string, discountTotal: number): Observable {\r\n \r\n const products = this._getProductsCart();\r\n let userId = 0;\r\n const userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if(userObject !== null)\r\n {\r\n userId = userObject.Id;\r\n };\r\n \r\n const data = {\r\n 'UserId': userId,\r\n 'OrganizationId': this.appSettings.OrganizationId,\r\n 'ProductList': products,\r\n 'Coupons': coupons,\r\n 'DiscountTotal': discountTotal\r\n };\r\n\r\n const API_URL = `${this.apiUrl}/GenerateOrder`;\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const options = { headers: headers };\r\n \r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n\r\n}\r\n\r\ngetOrderDetailsBySlug(slug: string): Observable{\r\n\r\n let API_URL = `${this.apiUrl}/GetOrderDetailsBySlug`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n let data = JSON.stringify({Slug: slug});\r\n \r\n return this.http.post(API_URL,data,options).pipe(catchError(this.error));\r\n}\r\n\r\n // Handle Errors \r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = error.error.message;\r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { GlobalConstans } from '../../global-constants/constants';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\n\r\nimport { DiscountCoupon } from '../../models/DiscountCoupon';\r\nimport { UsersByCoupon } from '../../models/UsersByCoupon';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouponsService {\r\n apiUrl: string = GlobalConstans.apiURL;\r\n headers = new HttpHeaders().set('Content-Type', 'application/json');\r\n\r\n appSettings: any;\r\n loaded = false;\r\n constructor(private http: HttpClient) {\r\n //=====================================================================================\r\n // Lectura de appsetings.json\r\n //=====================================================================================\r\n this.appSettings = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if (this.appSettings === null || this.appSettings === undefined) {\r\n console.log(\"RequestService: No hay datos en coupon service\");\r\n }\r\n //=====================================================================================\r\n // TERMINA: Lectura de appsetings.json\r\n //=====================================================================================\r\n }\r\n\r\n addCoupon(data: DiscountCoupon): Observable {\r\n let API_URL = `${this.apiUrl}/AddCoupon`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n const model = {\r\n 'Coupon': data.Coupon,\r\n 'Discount': data.Discount,\r\n 'DueDate': data.DueDate,\r\n 'OrganizationId': this.appSettings.OrganizationId\r\n };\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n }\r\n\r\n editCoupon(data: DiscountCoupon): Observable {\r\n let API_URL = `${this.apiUrl}/EditCoupon`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n const model = {\r\n 'Id': data.Id,\r\n 'Coupon': data.Coupon,\r\n 'Discount': data.Discount,\r\n 'DueDate': data.DueDate,\r\n 'OrganizationId': this.appSettings.OrganizationId\r\n };\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n }\r\n\r\n getCouponsByOrganizationId(): Observable {\r\n let organizationId = this.appSettings.OrganizationId;\r\n let API_URL = `${this.apiUrl}/GetCouponsByOrganizationId/${organizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n deleteCoupon(id: number): Observable {\r\n let API_URL = `${this.apiUrl}/DeleteCoupon`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n const model = {\r\n 'Id': id,\r\n 'OrganizationId': this.appSettings.OrganizationId\r\n };\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n }\r\n\r\n publishCoupon(id: number): Observable {\r\n let API_URL = `${this.apiUrl}/PublishCoupon`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n const model = {\r\n 'Id': id,\r\n 'OrganizationId': this.appSettings.OrganizationId\r\n };\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n }\r\n\r\n validateExistingCoupon(data: DiscountCoupon): Observable {\r\n let API_URL = `${this.apiUrl}/ValidateExistingCoupon`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n const model = {\r\n 'Coupon': data.Coupon,\r\n 'OrganizationId': this.appSettings.OrganizationId\r\n };\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n }\r\n\r\n changeDiscountCoupons(status: boolean): Observable {\r\n let API_URL = `${this.apiUrl}/ChangeDiscountCoupons`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n\r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n\r\n return this.http.post(API_URL,\r\n {\r\n 'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Status': status,\r\n 'UserId': userObject.Id\r\n }\r\n , options).pipe(catchError(this.error));\r\n\r\n }\r\n\r\n redeemCoupon(data: DiscountCoupon): Observable {\r\n let API_URL = `${this.apiUrl}/RedeemCoupon`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n const model = {\r\n 'Coupon': data.Coupon,\r\n 'OrganizationId': this.appSettings.OrganizationId\r\n };\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n }\r\n\r\n getUsersByCoupon(couponId: number): Observable {\r\n const organizationId = this.appSettings.OrganizationId;\r\n let API_URL = `${this.apiUrl}/GetUsersByCoupon/${couponId}/${organizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n // Handle Errors \r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = error.error.message;\r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { SendContactEmail } from '../../models/SendContactEmail';\r\nimport { MailRequest } from '../../models/MailRequest';\r\nimport { Domains } from '../../models/Domains';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmailService {\r\n\r\n url = \"\";\r\n prefix = \"\";\r\n controller = \"\";\r\n\r\n appSettings : any;\r\n\r\n constructor(@Inject('BASE_URL') baseUrl: string,private http: HttpClient) { \r\n\r\n this.prefix = \"api/\";\r\n this.controller = \"mail/\";\r\n this.url = baseUrl + this.prefix + this.controller;\r\n\r\n //=====================================================================================\r\n // Lectura de appsetings.json\r\n //=====================================================================================\r\n this.appSettings = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if(this.appSettings === null || this.appSettings === undefined){\r\n console.log(\"EmailService: No hay datos en this.appSettings\");\r\n }\r\n //=====================================================================================\r\n // TERMINA: Lectura de appsetings.json\r\n //=====================================================================================\r\n }\r\n\r\n getDomains(): Observable {\r\n let API_URL = `${this.url}domains`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n // Método que se encarga de enviar el correo electronico desde la vista de log in \r\n register(model: MailRequest):Observable{\r\n let API_URL = `${this.url}register`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n model.DomainId = this.appSettings.Id;\r\n return this.http.post(API_URL, model,{ observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error register: ${error}`);\r\n }\r\n ));\r\n \r\n }\r\n\r\n recover(model: MailRequest):Observable{\r\n let API_URL = `${this.url}recover`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n model.DomainId = this.appSettings.Id;\r\n return this.http.post(API_URL, model,{ observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error recovery: ${error}`);\r\n }\r\n ));\r\n \r\n }\r\n\r\n confirmation(model: MailRequest):Observable{\r\n let API_URL = `${this.url}confirmation`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n model.DomainId = this.appSettings.Id;\r\n return this.http.post(API_URL, model,{ observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error confirmation: ${error}`);\r\n }\r\n ));\r\n \r\n }\r\n\r\n contact(model: MailRequest):Observable{\r\n let API_URL = `${this.url}contact`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n \r\n return this.http.post(API_URL, model,{ observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error SEND: ${error}`);\r\n }\r\n ));\r\n \r\n }\r\n\r\n \r\n emailDemo(model: MailRequest): Observable {\r\n let API_URL = `${this.url}emaildemo`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n model.DomainId = this.appSettings.Id;\r\n return this.http.post(API_URL, model, { observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error register: ${error}`);\r\n }\r\n ));\r\n\r\n }\r\n // Handle Errors \r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n if(error){\r\n errorMessage = error.error.message;\r\n }\r\n \r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(\"error\" + error);\r\n console.log(\"error.error\" + error.error);\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n \r\n \r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { SendContactEmail } from '../../models/SendContactEmail';\r\nimport { MailRequest } from '../../models/MailRequest';\r\nimport { Domains } from '../../models/Domains';\r\nimport { GlobalConstans } from '../../global-constants/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaymentService {\r\n url = \"\";\r\n prefix = \"\";\r\n controller = \"\";\r\n domainId:number;\r\n\r\n constructor(@Inject('BASE_URL') baseUrl: string,private http: HttpClient) {\r\n\r\n this.prefix = \"api/\";\r\n this.controller = \"payment/\";\r\n this.url = baseUrl + this.prefix + this.controller;\r\n\r\n let jsonConfig = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if(jsonConfig !== undefined && jsonConfig !== null){\r\n this.domainId =parseInt(jsonConfig[\"Id\"]);\r\n }\r\n\r\n }\r\n\r\n charge(token: string, email: string, total: number, products: string, fullName:string): Observable{\r\n \r\n const API_URL = `${this.url}charge`;\r\n\r\n let userId = 0;\r\n const userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n if (userObject !== null) {\r\n userId = userObject.Id;\r\n };\r\n\r\n const $parameters = {\r\n 'Token': token,\r\n 'Email': email,\r\n 'Total': total,\r\n 'DomainId': this.domainId,\r\n 'BarerToken': GlobalConstans.getAuthToken(),\r\n 'UserId': userId,\r\n 'Products': products,\r\n 'FullName': fullName\r\n };\r\n console.log({ $parameters });\r\n debugger;\r\n return this.http.post(API_URL, $parameters,{ observe: 'response' })\r\n .pipe(catchError((error): any => {\r\n\r\n return throwError(`Connection Error CHARGE method: ${error}`);\r\n }\r\n ));\r\n \r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { GlobalConstans } from '../global-constants/constants';\r\n\r\n//Interfaces\r\nimport { ILanguage } from '../interfaces/language';\r\nimport { ICurrency } from '../interfaces/currency';\r\nimport { ICategory } from '../interfaces/categories';\r\nimport { ICourses } from '../interfaces/courses';\r\nimport { IFeaturedProducts } from '../interfaces/featured-products';\r\nimport { ITests } from '../interfaces/tests';\r\nimport { ICourseShell } from '../interfaces/courseshell';\r\nimport { CourseShell } from '../models/CourseShell';\r\nimport { ILesson } from '../interfaces/lesson';\r\nimport { ISearch } from '../interfaces/ISearch';\r\nimport { ILevel } from '../interfaces/ILevel';\r\nimport { Search } from '../models/Search';\r\nimport { Category } from '../models/Category';\r\nimport { Language } from '../models/Language';\r\nimport { Level } from '../models/Level';\r\nimport { EmailTemplate } from '../models/EmailTemplate';\r\nimport { FeaturedProduct } from '../models/FeaturedProduct';\r\nimport { Purchase } from '../models/Purchase';\r\nimport { SelectListItem } from '../models/SelectListItem';\r\nimport { Domains } from '../models/Domains';\r\nimport { RedeemOrder } from '../models/RedeemOrder';\r\nimport { ContactInfo } from '../models/ContactInfo';\r\nimport { EmailConfig } from '../models/EmailConfig';\r\nimport { StripeConfig } from '../models/StripeConfig';\r\nimport { MenuItem } from '../models/MenuItem';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RequestsService {\r\n\r\n apiUrl: string = GlobalConstans.apiURL;\r\n headers = new HttpHeaders().set('Content-Type', 'application/json');\r\n\r\n appSettings: any; \r\n loaded = false;\r\n\r\n constructor(private http: HttpClient) { \r\n //=====================================================================================\r\n // Lectura de appsetings.json\r\n //=====================================================================================\r\n this.appSettings = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if(this.appSettings === null || this.appSettings === undefined){\r\n console.log(\"RequestService: No hay datos en this.appSettings\");\r\n }\r\n //=====================================================================================\r\n // TERMINA: Lectura de appsetings.json\r\n //=====================================================================================\r\n \r\n }\r\n\r\n\r\n initSettings(){\r\n let API_URL = `${this.apiUrl}/GetInitialSettings`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n return this.http.post(API_URL, {'Url': url}, options).toPromise();\r\n }\r\n\r\n loadLanguages(): Observable {\r\n let API_URL = `${this.apiUrl}/GetLang`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n loadCurrencyTypes(): Observable{\r\n let API_URL = `${this.apiUrl}/GetCurrencyTypes`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n loadCategories(): Observable{\r\n let API_URL = `${this.apiUrl}/GetCategories/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n getTimezones(): Observable{\r\n let API_URL = `${this.apiUrl}/GetTimezones`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n /**\r\n * Métodos para HOME\r\n */\r\n loadTopCourses(): Observable{\r\n let API_URL = `${this.apiUrl}/GetTopCourses/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n loadFeaturedProducts(contentType): Observable{\r\n \r\n let API_URL = `${this.apiUrl}/GetFeaturedProducts/${this.appSettings.OrganizationId}/${contentType}`;\r\n \r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n \r\n return this.http.get(API_URL, options).pipe(catchError(this.error));\r\n \r\n \r\n }\r\n\r\n loadTopTests(): Observable{\r\n let API_URL = `${this.apiUrl}/GetTopTests/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n/**\r\n * Métodos para COURSE DETAILS\r\n */\r\n getCourseDetailsById(id): Observable{\r\n let API_URL = `${this.apiUrl}/GetCourseDetailsById/${id}/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n getShell(id): Observable{\r\n let API_URL = `${this.apiUrl}/GetCourseShellById/${id}/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n /**\r\n * Métodos para EXAM DETAILS\r\n */\r\n getExamDetailsById(id): Observable{\r\n let API_URL = `${this.apiUrl}/GetTestDetailsById/${id}/${this.appSettings.OrganizationId}`;\r\n let result = this.http.get(API_URL).pipe(catchError(this.error));\r\n return result;\r\n }\r\n\r\n getCourseLevels(): Observable{\r\n let API_URL = `${this.apiUrl}/GetCourseLevels`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n // Handle Errors \r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = error.error.message;\r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n\r\n searchCourses(data: ISearch): Observable {\r\n let API_URL = `${this.apiUrl}/SearchCourses`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n searchExams(data: ISearch): Observable {\r\n let API_URL = `${this.apiUrl}/searchExams`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n courseHome_GetTopCategories(): Observable{\r\n let API_URL = `${this.apiUrl}/CourseHome_GetTopCategories/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n examHome_GetTopCategories(): Observable{\r\n let API_URL = `${this.apiUrl}/ExamHome_GetTopCategories/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n courseHome_GetRecentAdded(): Observable{\r\n let API_URL = `${this.apiUrl}/CourseHome_GetRecentAdded/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n examHome_GetRecentAdded(): Observable{\r\n let API_URL = `${this.apiUrl}/ExamHome_GetRecentAdded/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n getEmailTemplate(url: string, emailTypeId: number):Observable{\r\n let API_URL = `${this.apiUrl}/GetEmailTemplate`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n return this.http.post(API_URL, {'Domain': url, 'EmailTypeId': emailTypeId}, options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n getRelatedProductsByCategoryId(typeId: number, categoryId: number): Observable{\r\n let API_URL = `${this.apiUrl}/GetRelatedProductsByCategoryId/${typeId}/${categoryId}/${this.appSettings.OrganizationId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n getPurchasesByUserId(userId: number): Observable{\r\n let API_URL = `${this.apiUrl}/GetPurchasesByUserId/${userId}`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n redeemOrder(model: RedeemOrder): Observable{\r\n \r\n const API_URL = `${this.apiUrl}/order/redeem`;\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const options = { headers: headers };\r\n \r\n model.OrganizationId = this.appSettings.OrganizationId;\r\n model.UrlDomain = document.location.origin;\r\n\r\n return this.http.post(API_URL, model, options).pipe(catchError(this.error));\r\n }\r\n\r\n\r\n /**\r\n * SECTION: UI REQUESTS\r\n */\r\n\r\n SetCssConfig(cssConfig: any):Observable{\r\n let API_URL = `${this.apiUrl}/SetCssConfig`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n let cssConfigString = JSON.stringify(cssConfig);\r\n\r\n return this.http.post(API_URL, {'OrganizationId': this.appSettings.OrganizationId, 'UrlDomain': url, 'CssConfigString': cssConfigString }, options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n SaveCssConfig(cssConfig: any):Observable{\r\n let API_URL = `${this.apiUrl}/SaveCssConfig`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n let cssConfigString = JSON.stringify(cssConfig);\r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n\r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'CssConfigString': cssConfigString,\r\n 'UserId': userObject.Id }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n SaveAndPublishCssConfig(cssConfig: any):Observable{\r\n let API_URL = `${this.apiUrl}/SaveAndPublishCssConfig`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n let cssConfigString = JSON.stringify(cssConfig);\r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'CssConfigString': cssConfigString,\r\n 'UserId': userObject.Id }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n GetCssConfigByUserId(){\r\n let API_URL = `${this.apiUrl}/GetCssConfigByUserId`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n let url = document.location.origin;\r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'UserId': userObject.Id }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n UpdateLogo(logo: string):Observable{\r\n let API_URL = `${this.apiUrl}/UpdateLogo`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Logo': logo,\r\n 'UserId': userObject.Id }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n UpdateFavicon(favicon: string):Observable{\r\n let API_URL = `${this.apiUrl}/UpdateFavicon`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Favicon': favicon,\r\n 'UserId': userObject.Id }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n ChangeShowBanner(status: boolean):Observable{\r\n let API_URL = `${this.apiUrl}/ChangeShowBanner`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n let userObject = JSON.parse(localStorage.getItem('currentUser'));\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Status': status,\r\n 'UserId': userObject.Id }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n\r\n GetBannerForEdit():Observable{\r\n let API_URL = `${this.apiUrl}/GetBannerForEdit`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url}\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n InsertBannerImage(image:any):Observable{\r\n let API_URL = `${this.apiUrl}/InsertBannerImage`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Images': image}\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n UpdateImageStatus(image:any, status: boolean):Observable{\r\n let API_URL = `${this.apiUrl}/UpdateImageStatus`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Images': image,\r\n 'Status': status}\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n DeleteImageFromBanner(image:any):Observable{\r\n let API_URL = `${this.apiUrl}/DeleteImageFromBanner`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Images': image\r\n }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n SaveImage(image:any):Observable{\r\n let API_URL = `${this.apiUrl}/SaveImage`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'Images': image\r\n }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n ImagesForBanner():Observable{\r\n let API_URL = `${this.apiUrl}/ImagesForBanner`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url}\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n /**\r\n * END UI REQUESTS\r\n */\r\n\r\n\r\n /**\r\n * SECTION: CUSTOMIZATION REQUESTS\r\n */\r\n\r\n GetCustomizationInfo():Observable{\r\n let API_URL = `${this.apiUrl}/GetCustomizationInfo`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url}\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n UpdateContactInfo(contactInfo:ContactInfo):Observable{\r\n let API_URL = `${this.apiUrl}/UpdateContactInfo`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'ContactInfo': contactInfo\r\n }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n UpdateEmailSettings(emailSettings:EmailConfig):Observable{\r\n let API_URL = `${this.apiUrl}/UpdateEmailSettings`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'EmailSettings': emailSettings\r\n }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n UpdateStripeSettings(stripeSettings:StripeConfig):Observable{\r\n let API_URL = `${this.apiUrl}/UpdateStripeSettings`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url,\r\n 'StripeSettings': stripeSettings\r\n }\r\n , options).pipe(catchError(this.error));\r\n \r\n }\r\n\r\n GetContactInfo():Observable{\r\n let API_URL = `${this.apiUrl}/GetContactInfo`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n let info:any = [];\r\n\r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url\r\n }\r\n , options).pipe(catchError(this.error));\r\n }\r\n\r\n GetMenu():Observable{\r\n let API_URL = `${this.apiUrl}/GetMenu`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n let info:any = [];\r\n\r\n return this.http.post(API_URL, \r\n {'OrganizationId': this.appSettings.OrganizationId,\r\n 'UrlDomain': url\r\n }\r\n , options).pipe(catchError(this.error));\r\n }\r\n\r\n UpdateItemsToMenu(item : MenuItem):Observable{\r\n let API_URL = `${this.apiUrl}/UpdateItemsToMenu`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n let data = {'OrganizationId': this.appSettings.OrganizationId, 'UrlDomain': url, 'Menu':item };\r\n return this.http.post(API_URL, data , options).pipe(catchError(this.error));\r\n }\r\n\r\n DeleteItemToMenu(item : MenuItem):Observable{\r\n let API_URL = `${this.apiUrl}/DeleteItemToMenu`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n let url = document.location.origin;\r\n \r\n let data = {'OrganizationId': this.appSettings.OrganizationId, 'UrlDomain': url, 'Menu':item };\r\n return this.http.post(API_URL, data , options).pipe(catchError(this.error));\r\n }\r\n /**\r\n * END CUSTOMIZATION REQUESTS\r\n */\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { GlobalConstans } from '../../global-constants/constants';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n\r\n apiUrl: string = GlobalConstans.apiURLStorage;\r\n headers = new HttpHeaders().set('Content-Type', 'application/json');\r\n\r\n appSettings: any;\r\n loaded = false;\r\n\r\n\r\n\r\n // Handle Errors \r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = error.error.message;\r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n\r\n constructor(private http: HttpClient) {\r\n //=====================================================================================\r\n // Lectura de appsetings.json\r\n //=====================================================================================\r\n this.appSettings = JSON.parse(localStorage.getItem('jsonConfig'));\r\n if (this.appSettings === null || this.appSettings === undefined) {\r\n console.log(\"RequestService: No hay datos en this.appSettings\");\r\n }\r\n //=====================================================================================\r\n // TERMINA: Lectura de appsetings.json\r\n //=====================================================================================\r\n\r\n }\r\n\r\n resolveStorage(blobfile): Observable {\r\n let API_URL = `${this.apiUrl}/GetStorage/${blobfile}`;\r\n\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n return this.http.get(API_URL, options).pipe(catchError(this.error));\r\n\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService {\r\n\r\n constructor(private toastr: ToastrService) { }\r\n\r\n options:{\r\n closeButton: true,\r\n timeOut: 10000,\r\n positionClass: 'toast-top-right'\r\n };\r\n\r\n onSuccess(title: string, message: string){\r\n this.toastr.success(message, title);\r\n }\r\n\r\n onError(title: string, message: string){\r\n this.toastr.error(message, title);\r\n }\r\n\r\n onInfo(title: string, message: string){\r\n this.toastr.info(message, title);\r\n }\r\n\r\n onWarning(title: string, message: string){\r\n this.toastr.warning(message, title);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { GlobalConstans } from '../../global-constants/constants';\r\nimport { ICountry } from '../../interfaces/ICountry';\r\nimport { User } from '../../models/User';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService {\r\n\r\n apiUrl: string = GlobalConstans.apiURL;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getCountries(): Observable {\r\n let API_URL = `${this.apiUrl}/GetCountries`;\r\n return this.http.get(API_URL).pipe(catchError(this.error));\r\n }\r\n\r\n insertUser(data: User): Observable{\r\n let API_URL = `${this.apiUrl}/InsertUser`;\r\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n let options = { headers: headers };\r\n\r\n data.UrlDomain = document.location.origin;\r\n debugger;\r\n return this.http.post(API_URL, data, options).pipe(catchError(this.error));\r\n }\r\n\r\n\r\n getInit() {\r\n \r\n const API_URL = `${GlobalConstans.loginAPP}/getInit`;\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const options = { headers: headers };\r\n const url = document.location.origin;\r\n\r\n const promise = new Promise((resolve) => {\r\n setTimeout(() => {\r\n \r\n this.http.post(API_URL, { 'Url': url }, options).toPromise()\r\n .then((resp) => {\r\n localStorage.setItem('jsonConfig', JSON.stringify(resp));\r\n\r\n const auth_url = `${GlobalConstans.loginAPP}/auth`;\r\n const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n const username = GlobalConstans.USERNAME;\r\n const password = GlobalConstans.PASSWORD;\r\n\r\n this.http.post(auth_url, { username, password }, options).toPromise()\r\n .then((data) => {\r\n \r\n localStorage.setItem('access_token', JSON.stringify(data));\r\n resolve(true);\r\n }).catch((error) => {\r\n console.log(\"NO se resolvio authApp() en user service\");\r\n });\r\n\r\n\r\n \r\n });\r\n }, 100);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n getInitv2(): Promise {\r\n const API_URL = `${GlobalConstans.loginAPP}/getInit`;\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const options = { headers: headers };\r\n const url = document.location.origin;\r\n\r\n return this.http.post(API_URL, { 'Url': url }, options).toPromise();\r\n }\r\n\r\n authApp(): Promise {\r\n\r\n const API_URL = `${GlobalConstans.loginAPP}/auth`;\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const options = { headers: headers };\r\n const username = GlobalConstans.USERNAME;\r\n const password = GlobalConstans.PASSWORD;\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n\r\n this.http.post(API_URL, { username, password }, options).toPromise()\r\n .then((data) => {\r\n localStorage.setItem('access_token', JSON.stringify(data));\r\n resolve(true);\r\n }).catch((error) => {\r\n resolve(false);\r\n console.log(\"NO se resolvio authApp() en user service\");\r\n console.log(JSON.stringify(error));\r\n });\r\n\r\n \r\n }, 100);\r\n });\r\n\r\n }\r\n\r\n authAppv2(): Promise {\r\n\r\n const API_URL = `${GlobalConstans.loginAPP}/auth`;\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const options = { headers: headers };\r\n const username = GlobalConstans.USERNAME;\r\n const password = GlobalConstans.PASSWORD;\r\n\r\n return this.http.post(API_URL, { username, password }, options).toPromise();\r\n\r\n }\r\n\r\n // Handle Errors\r\n error(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = error.error.message;\r\n } else {\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VzZXJzYnljb3Vwb24vdXNlcnNieWNvdXBvbi5jb21wb25lbnQuY3NzIn0= */\";","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DiscountCoupon } from '../shared/models/DiscountCoupon';\r\nimport { UsersByCoupon } from '../shared/models/UsersByCoupon';\r\nimport { CouponsService } from '../shared/services/coupons/coupons.service';\r\n\r\n@Component({\r\n selector: 'app-usersbycoupon',\r\n templateUrl: './usersbycoupon.component.html',\r\n styleUrls: ['./usersbycoupon.component.css']\r\n})\r\nexport class UsersbycouponComponent implements OnInit {\r\n\r\n @Input() public coupon;\r\n model: DiscountCoupon = new DiscountCoupon();\r\n\r\n //DT variables\r\n page = 1;\r\n pageSize = 25;\r\n collectionSize = 0;\r\n\r\n //order vars\r\n orderFistName = false;\r\n orderLastName = false;\r\n orderEmail = false;\r\n orderTotal = false;\r\n\r\n // Table vars\r\n users: Array = new Array();\r\n usersCopy: Array = new Array();\r\n\r\n constructor(private service: CouponsService,\r\n public modal: NgbActiveModal ) { }\r\n\r\n ngOnInit(): void {\r\n this.model = this.coupon;\r\n this.onGetUsersByCoupon(this.model.Id);\r\n }\r\n\r\n onGetUsersByCoupon(couponId:number) {\r\n this.service.getUsersByCoupon(couponId)\r\n .subscribe((res: UsersByCoupon[]) => {\r\n this.users = res;\r\n this.usersCopy = res;\r\n //this.loadCoupons = true;\r\n this.collectionSize = this.users.length;\r\n console.log(this.users);\r\n }, err => { console.log(err); });\r\n }\r\n\r\n get result(): UsersByCoupon[] {\r\n if (this.users !== undefined) {\r\n return this.users.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);\r\n }\r\n }\r\n\r\n countDates(dates:string) {\r\n return JSON.parse(dates).length;\r\n }\r\n\r\n showDates(user: UsersByCoupon) {\r\n user.Expand = !user.Expand;\r\n }\r\n getDates(dates: string) {\r\n return JSON.parse(dates);\r\n }\r\n\r\n parseDate(date) {\r\n var d = new Date(date)\r\n\r\n if (d.getFullYear() === 1) {\r\n return \" - - - \";\r\n } else {\r\n return d.toLocaleDateString(\"en-US\");\r\n }\r\n }\r\n\r\n onSortFirstName() {\r\n this.orderFistName = !this.orderFistName;\r\n\r\n if (this.orderFistName) {\r\n // Ascending\r\n this.users = this.users.sort((a, b) => 0 - (a.FirstName > b.FirstName ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.users = this.users.sort((a, b) => 0 - (a.FirstName > b.FirstName ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n onSortLastName() {\r\n this.orderLastName = !this.orderLastName;\r\n\r\n if (this.orderLastName) {\r\n // Ascending\r\n this.users = this.users.sort((a, b) => 0 - (a.LastName > b.LastName ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.users = this.users.sort((a, b) => 0 - (a.LastName > b.LastName ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n onSortEmail() {\r\n this.orderEmail = !this.orderEmail;\r\n\r\n if (this.orderEmail) {\r\n // Ascending\r\n this.users = this.users.sort((a, b) => 0 - (a.Email > b.Email ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.users = this.users.sort((a, b) => 0 - (a.Email > b.Email ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n onSortTotal() {\r\n this.orderTotal = !this.orderTotal;\r\n\r\n if (this.orderTotal) {\r\n // Ascending\r\n this.users = this.users.sort((a, b) => 0 - (this.getDates(a.RedemptionsDate).length > this.getDates(b.RedemptionsDate).length ? -1 : 1));\r\n } else {\r\n // Descengind\r\n this.users = this.users.sort((a, b) => 0 - (this.getDates(a.RedemptionsDate).length > this.getDates(b.RedemptionsDate).length ? 1 : -1));\r\n }\r\n\r\n }\r\n\r\n searchText(search: string) {\r\n\r\n if (search === '') {\r\n this.users = this.usersCopy;\r\n return;\r\n }\r\n\r\n this.users = this.users.filter((a) => a.FirstName.match(search) || a.LastName.match(search) || a.Email.match(search));\r\n }\r\n\r\n //Modal functions\r\n closeModal() {\r\n this.modal.close();\r\n }\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: true,\r\n APIUrlBase: \"http://apitest.skillify.com/\"\r\n};\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n//https://localhost:44330/exam/detail/BCC0D119-81BA-4262-8EF1-B7AE2387B789\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n];\r\n\r\nconsole.log({ environment });\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule).catch(err => console.log(err));\r\n"],"sourceRoot":"webpack:///"}