You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

153 lines
4.5 KiB

import { Component, OnInit } from '@angular/core';
import IHeaderProps from 'src/app/models/header';
import { logOutButton, login, home } from 'src/app/constants/constants';
import { RouterService } from 'src/app/shared/services/routerService';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { LeadscoreService } from 'src/app/shared/services/leadscore.service';
import { first, finalize } from 'rxjs/operators';
import { IGoogleFormData } from 'src/app/models/googleFormData';
import { AuthenticationService } from 'src/app/shared/services/authentication.service';
import { Subscription } from 'rxjs';
import * as XLSX from 'xlsx';
import { HomeService } from './home.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
})
export class HomeComponent {
headerProps: IHeaderProps = {
rightIcon: logOutButton,
rightIconRoute: 'logout',
title: 'NPS EXPORTS VIEW',
};
fileUploadForm: FormGroup;
isLoading = false;
error = '';
isSalesForm = true;
file: any;
arrayBuffer: any;
filelist: any = [];
arrayToBeSend: any = [];
customerPhonenumbers: string[] = [];
constructor(
private routerService: RouterService,
private formBuilder: FormBuilder,
private homeService: HomeService
) {
this.fileUploadForm = this.formBuilder.group({
fileUpload: [
'',
[
Validators.required,
Validators.minLength(10),
Validators.pattern('^[0-9]*'),
],
],
});
}
get f() {
return this.fileUploadForm.controls;
}
switchSalesServiceTab() {
this.arrayToBeSend = [];
this.isSalesForm = !this.isSalesForm;
}
triggerWhatsappMessages(phoneNumber: string[]) {
const httpBody = {
messages: [
{
from: '447491163530',
// TODO: need check if we can send array here
to: phoneNumber[1],
messageId: 'a28dd97c-1ffb-4fcf-99f1-0b557ed381da',
content: {
templateName: 'infobip_kz_test_hsm_2',
templateData: {
body: {
placeholders: ['BFL Credit Card'],
},
},
language: 'en_GB',
},
callbackData: 'Callback data',
},
],
};
this.homeService.sendWhatsApp(httpBody).subscribe(
(res) => {
console.log('success', res);
this.isLoading = false;
},
(err) => {
console.log('failed',err);
this.isLoading = false;
}
)
}
readExcelFile(){
this.isLoading = true;
let fileReader = new FileReader();
fileReader.readAsArrayBuffer(this.file);
fileReader.onload = (e) => {
this.arrayBuffer = fileReader.result;
let data = new Uint8Array(this.arrayBuffer);
let arr = new Array();
let phoneNumber: string[] = [];
for (let i = 0; i != data.length; ++i){
arr[i] = String.fromCharCode(data[i]);
}
let bstr = arr.join('');
let workbook = XLSX.read(bstr, { type: 'binary' });
let first_sheet_name = workbook.SheetNames[0];
let worksheet = workbook.Sheets[first_sheet_name];
this.filelist = XLSX.utils.sheet_to_json(worksheet, { raw: true });
// pull data according to upload file type
if (this.isSalesForm) {
for (let i = 0; i < this.filelist.length; i++) {
var details = {
'CUSTOMER NAME': this.filelist[i]['CUSTOMER NAME'],
'PHONE NUMBER': this.filelist[i]['PHONE NUMBER'],
'LEAD ID': this.filelist[i]['LEAD ID'],
'DATE OF ENQUIRY': this.filelist[i]['DATE OF ENQUIRY'],
};
this.arrayToBeSend.push(details);
phoneNumber.push(this.filelist[i]['PHONE NUMBER']);
}
} else {
for (let i = 0; i < this.filelist.length; i++) {
var details = {
'CUSTOMER NAME': this.filelist[i]['Customer'],
'PHONE NUMBER': this.filelist[i]['Mobile No'],
'LEAD ID': this.filelist[i]['__EMPTY'],
'DATE OF ENQUIRY': this.filelist[i]['Ready For Invoice Date Time'],
};
this.arrayToBeSend.push(details);
phoneNumber.push(this.filelist[i]['PHONE NUMBER']);
}
}
// after reading file and storing all phonenumbers in an array
// call whatsapp sending api function here
this.triggerWhatsappMessages(phoneNumber);
};
}
addfile(event: any) {
this.file = event.target.files[0];
}
}