// Angular Core
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
 
// Services
import { SessionService } from '../../services/session/session.service';
import { CartService } from '../../services/cart/cart.service';
import { UtilitiesService } from 'src/app/services/utilities/utilities.service';
 
// Interfaces
import { SessionDataInterface } from 'src/app/interfaces/session-data-interface';
import { environment } from 'src/environments/environment';
 
@Component({
  standalone: false,
  selector: 'app-thankyou',
  templateUrl: './thankyou.component.html',
  styleUrls: ['./thankyou.component.scss']
})
export class ThankyouComponent implements OnInit {
    session!: SessionDataInterface['data'];
    imgUrl: string = environment.imageUrl;
    renderMe: boolean = false;
    checkoutData!: any;
    isCollapsed:boolean[] = [];
    isStandSuppExists: boolean = false;
    paymentSuppIndex: any = {};
 
    constructor(
        private sessionService : SessionService,
        private router : Router,
        private cartService : CartService,
        private utilities: UtilitiesService,
    ) {
      this.utilities = utilities;
    }
    
    ngOnInit(): void {
        let paymentSuppCounter = 0;
        this.session = this.sessionService.getSession();
        this.renderMe = this.session.logged_in && (this.session.reg_step > 6) && this.session.is_buyer;
        this.checkoutData = this.utilities.getCheckoutData();
        let supplierInfo = Object.keys(this.checkoutData.suppItemsData).map(key => ({key, value: this.checkoutData.suppItemsData[key]}));
        supplierInfo.forEach((supplier: any) => {
          if (!supplier.value.is_supp_payment_acc_exists) 
          {
            this.isStandSuppExists = true;
          } else {
            paymentSuppCounter = paymentSuppCounter + 1;
            this.paymentSuppIndex[supplier.value.supplierData.id] = paymentSuppCounter;
          }
        });
        this.cartService.RefreshQuickCart.emit("");
        this.cartService.QuickCart.emit("");
    }
    
    redirectPurchasePage(){
        this.router.navigate(["/market/managePurchases"], {queryParams: {orders: "all", pageNumber: 1}})
    }
  
    /**
     * Calculating totals for each supplier
     * @param {type} supplier
     * @return {total|fee}
     */
    getSuppOrderTotal(supplier: any, surchargeAmnt: any) {
       let totalAmount = this.utilities.getSuppOrderTotal(supplier);
       return totalAmount+parseFloat(surchargeAmnt);
    };

    /**
     * Calculating complete items total amount for standard suppliers
     * @param object orderData
     * @return {Number}
     */
    getStandardSuppTotal(orderData: any) {
        return this.utilities.getStandardSuppTotal(orderData);
    };

    /**
     * Calculating complete shipping fee amount for cart
     * @param {type} orderData
     * @return {Number}
     */
    getShipphingFeeTotal(orderData: any) {
        return this.utilities.getShipphingFeeTotal(orderData);
    };

    /**
     * Method to calculate order subtotal for each payment setup enabled supplier
     * @param supplier
     * @return number
    */
    getSuppSubTotal(supplier: any): number{
        return this.utilities.getSuppSubTotal(supplier);
    };
}
