import { Component, Injector, OnInit } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; import { AppComponentBase } from '@shared/common/app-component-base'; import { accountModuleAnimation } from '@shared/animations/routerTransition'; import { XmlHttpRequestHelper } from '@shared/helpers/XmlHttpRequestHelper'; import { StripePaymentServiceProxy, PaymentServiceProxy, StripeUpdateSubscriptionInput, SubscriptionPaymentDto } from '@shared/service-proxies/service-proxies'; @Component({ selector: 'stripe-update-subscirption-component', templateUrl: './stripe-update-subscription.component.html', animations: [accountModuleAnimation()] }) export class StripeUpdateSubscriptionComponent extends AppComponentBase implements OnInit { description = ''; paymentId; successCallbackUrl; errorCallbackUrl; redirectUrl = ''; constructor( injector: Injector, private _activatedRoute: ActivatedRoute, private _stripePaymentAppService: StripePaymentServiceProxy, private _paymentAppService: PaymentServiceProxy, private _router: Router ) { super(injector); } ngOnInit(): void { this.paymentId = this._activatedRoute.snapshot.queryParams['paymentId']; this.redirectUrl = this._activatedRoute.snapshot.queryParams['redirectUrl']; this._paymentAppService.getPayment(this.paymentId) .subscribe((result: SubscriptionPaymentDto) => { this.description = result.description; this.successCallbackUrl = result.successUrl; this.errorCallbackUrl = result.errorUrl; }); } upgradeSubscription(): void { this.spinnerService.show() let input = new StripeUpdateSubscriptionInput(); input.paymentId = this.paymentId; this._stripePaymentAppService.updateSubscription(input).subscribe(() => { XmlHttpRequestHelper.ajax('POST', this.successCallbackUrl + (this.successCallbackUrl.indexOf('?') >= 0 ? '&' : '?') + 'paymentId=' + this.paymentId, null, null, (result) => { this.spinnerService.hide(); this._router.navigate([this.redirectUrl]); }); }); } }