// Angular Core
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

// Services
import { ApiService } from '../api/api.service';

@Injectable({
  providedIn: 'root'
})
export class ProductUploadService {

  constructor(private http: HttpClient, public api: ApiService) { }

  /**
  * Sends request to get product upload sample file
  * @returns {object} promise
  */
  downloadSampleFile() {
    return this.api.read('/Supplier-ProductUpload/downloadSample');
  }

  /**
   * sends respose to api service for handling
   * @param {object} response object
   * @returns {undefined}
   */
  errorCallBack(response: any) {
    this.api.errorCallback(response);
  };

  /**
   * Request to Upload a Products
   * @param {type} data
   * @returns {unresolved}
   */
  uploadProducts(data: any) {
    return this.api.upload('/Supplier-ProductUpload', data);
  }

  /**
   * Sends request to get product upload sample file
   * @returns {object} promise
   */
  insertImport(data: any) {
    return this.api.upload('/Supplier-ProductUpload/insertImport', data);
  }

  /**
   * Sends request to get last 5 catalogs information
   * @returns {object} promise
   */
  getCatalogQueue() {
    return this.api.read('/Supplier-ProductUpload/getCatalogQueue');
  };
  
  /**
   * Sends request to get catalog errors information
   * @returns {object} promise
   */
  getCatalogErrors(ctlgId: number) {
    return this.api.read(`/Supplier-ProductUpload/getCatalogErrors?logCtlgId=${ctlgId}`);
  };
  
  /**
   *
   * @param {object} args
   * @returns {object} promise
   */
  exportQueueErrors(args: any) {
    return this.api.create('/Supplier-ProductUpload', args);
  };

}
