瀏覽代碼

CSV/XLSV Service For Partner and Table Data

master
prahalad 3 年之前
父節點
當前提交
933c1ba06a
共有 4 個文件被更改,包括 272 次插入437 次删除
  1. +8
    -216
      src/app/dashboard/partner-details/partner-details.component.ts
  2. +10
    -221
      src/app/dashboard/table/table.component.ts
  3. +16
    -0
      src/app/services/format-csv-xlsv.service.spec.ts
  4. +238
    -0
      src/app/services/format-csv-xlsv.service.ts

+ 8
- 216
src/app/dashboard/partner-details/partner-details.component.ts 查看文件

@@ -4,7 +4,8 @@ import * as Papa from 'papaparse';
import { PartnerProfileService } from 'src/app/services/partner-profile.service';
import { AREAS_OF_WORK, COUNTRIES, STATES, COMMUNITIES, PREFERRED_MODE_OF_COMMUNICATION, PREFERRED_LANGUAGES, AREAS_OF_SUPPORT } from 'src/shared/data/form-options';
import { UserData, UserDataOption } from 'src/shared/structure/user';
import * as XLSX from 'xlsx'
import * as XLSX from 'xlsx';
import { FormatCsvXlsvService } from '../../services/format-csv-xlsv.service'

type ExportType = "CSV" | "XLSX";

@@ -37,7 +38,8 @@ export class PartnerDetailsComponent implements OnInit {

constructor(
private activateRouter: ActivatedRoute,
private partnerProfileService: PartnerProfileService
private partnerProfileService: PartnerProfileService,
private formatCsvXlsvService: FormatCsvXlsvService
) { }

ngOnInit(): void {
@@ -55,161 +57,6 @@ export class PartnerDetailsComponent implements OnInit {
this.districts = states.map(state => state.districts).flat();
}


loadExportData(partnerData: UserData) {
let exportData: Array<any> = [];
let exportHiiData: Array<any> = [];
let exportSpData: Array<any> = [];
let exportSPSchemaData: Array<any> = [];

let surveyCtoData: Array<any> = [];


let areaOfWork: any = [];
let branchLocationCountries: any = [];
let communities: any = [];
let preferredLanguages: any = [];
let primaryAreasOfSupportOffered: any = [];
let primaryAreasOfSupportRequired: any = [];

let states: any = [];
let districts: any = [];
let preferredModeOfCommunications : any = [];


partnerData.strengthAndCapability.primaryAreasOfSupportOffered.forEach(x => { primaryAreasOfSupportOffered.push(x.name) })
partnerData.strengthAndCapability.primaryAreasOfSupportRequired.forEach(x => { primaryAreasOfSupportRequired.push(x.name) })
partnerData.detailedProfile.preferredLanguages.forEach(x => { preferredLanguages.push(x.name) })
partnerData.detailedProfile.communities.forEach(x => { communities.push(x.name) })
partnerData.detailedProfile.branchLocationCountries.forEach(x => { branchLocationCountries.push(x.name) })
partnerData.organizationBasicInfo.areasOfWork.forEach(x => { areaOfWork.push(x.name) })
partnerData.detailedProfile.states.forEach(x => { states.push(x.name)})
partnerData.detailedProfile.districts.forEach(x => { districts.push(x.name)})
partnerData.detailedProfile.preferredModeOfCommunications.forEach(x => { preferredModeOfCommunications.push(x.name)})



exportData = [{
"PortalID": partnerData.portalId ? partnerData.portalId : '-',

// Primary Contact

"Primary Name": partnerData.primaryContact.name,
"Primary Contact Number": partnerData.primaryContact.contactNumber,
"Primary Email": partnerData.primaryContact.email,
"Primary Designation": partnerData.primaryContact.designation,

// Basic Info

"Areas Of Work": areaOfWork.toString(),
"Name": partnerData.organizationBasicInfo.name,
"Reason For Becoming Member": partnerData.organizationBasicInfo.reasonForBecomingMember,
"Referral Name": partnerData.organizationBasicInfo.referralName,
"Source": partnerData.organizationBasicInfo.source,
"Type": partnerData.organizationBasicInfo.type,
"Website": partnerData.organizationBasicInfo.website,
"Would Like Updates": partnerData.organizationBasicInfo.wouldLikeUpdates,

// Alternative Contact

'Alternative Name': partnerData.alternateContact.name,
'Alternative ContactNumber': partnerData.alternateContact.contactNumber,
'Alternative Email': partnerData.alternateContact.email,
'Alternative Designation': partnerData.alternateContact.designation,

// Detailed Profile

'Bio': partnerData.detailedProfile.bio,
'Branch Location Countries': branchLocationCountries.toString(),
"Communities": communities.toString(),
"District": partnerData.detailedProfile.district,
"Districts": partnerData.detailedProfile.districts ? districts.toString() : '',
"Files": partnerData.detailedProfile.files,
"Have Branches In Other Districts": partnerData.detailedProfile.haveBranchesInOtherDistricts,
"Logo": partnerData.detailedProfile.logo,
"partner Location": partnerData.detailedProfile.partnerLocation,
"Preferred Languages": preferredLanguages.toString(),
"Preferred Mode Of Communications": partnerData.detailedProfile.preferredModeOfCommunications ? preferredModeOfCommunications.toString() : '',
"State": partnerData.detailedProfile.state,
"States": partnerData.detailedProfile.states ? states.toString() : '',
"Total Reach Of Organization": partnerData.detailedProfile.totalReachOfOrganization,
"Year Of Establishment": partnerData.detailedProfile.yearOfEstablishment,
// Strength

"Other Specific Support Required": partnerData.strengthAndCapability.otherSpecificSupportRequired,
"Primary Areas Of Support Offered": partnerData.strengthAndCapability.otherSpecificSupportRequired ? partnerData.strengthAndCapability.otherSpecificSupportRequired.toString() : '',
"Primary Areas Of Support Offered Description": primaryAreasOfSupportOffered.toString(),
"Primary Areas Of Support Offered Other": partnerData.strengthAndCapability.primaryAreasOfSupportOfferedDescription,
"Primary Areas Of Support Required": partnerData.strengthAndCapability.primaryAreasOfSupportOfferedOther ? partnerData.strengthAndCapability.primaryAreasOfSupportOfferedOther.toString() : '',
"Primary Areas Of Support Required Description": primaryAreasOfSupportRequired.toString(),
"Primary Areas Of Support Required Other": partnerData.strengthAndCapability.primaryAreasOfSupportRequiredOther,
}]


console.log(exportData)

let surveyCtoHIIData = [];
for (const hiidata of partnerData.surveyCtoData.hiiData) {
let partnerHiiDetails = {
"HII Id": hiidata.id,
"HII Name": hiidata.name,
"HII Packages Health": hiidata.packagesHealth,
"HII Implementation Status": hiidata.implementationStatus,
"HII Disaggregation Note": hiidata.disaggregationNote,
"HII No Of Males": hiidata.id,
"HII No Of Females": hiidata.noOfMales,
"HII No Of Transgender": hiidata.noOfTransgender,
"HII Health Remarks": hiidata.healthRemarks,
"HII Relevant Documents": hiidata.relevantDocuments,
}
surveyCtoHIIData.push(partnerHiiDetails)
}
surveyCtoHIIData.forEach(data => {
exportHiiData.push(data)
})

let surveyCtoSpData = []
for (const spData of partnerData.surveyCtoData.spData) {
let partnerSpDetails = {
"SP Id": spData.id,
"SP Name": spData.name,
"SP Status": spData.status,
'SP Reason Name': spData.reasonName,
"SP Female Number": spData.femaleNo ? spData.femaleNo : '',
"SP Male Number": spData.maleNo ? spData.maleNo : '',
"Tg Number": spData.tgNo ? spData.tgNo : '',
"SP TotalAggregation": spData.totalAggregation,
"SP OtherRemarks": spData.otherRemarks,
"SP RelevantDocuments": spData.relevantDocuments,
}

surveyCtoSpData.push(partnerSpDetails)
}
surveyCtoSpData.forEach(data => {
exportSpData.push(data)
})

let surveyCtoSpSchemaData = []
for (const spSchema of partnerData.surveyCtoData.spSchemeData) {
let partnerSpSchemaDetails = {
"SPSchema SchemeId": spSchema.schemeId,
"SPSchema Count": spSchema.count,
}

surveyCtoSpSchemaData.push(partnerSpSchemaDetails)
}
surveyCtoSpSchemaData.forEach(data => {
exportSPSchemaData.push(data)
})

surveyCtoData.push(exportHiiData)
surveyCtoData.push(exportSpData)
surveyCtoData.push(exportSPSchemaData)

this.exportData = exportData;
this.exportSurveyCtoData = surveyCtoData
}

async save() {

this.isFormEditable = false;
@@ -228,64 +75,9 @@ export class PartnerDetailsComponent implements OnInit {
return;
}

this.loadExportData(this.partnerDetails)

const fileTypeCSV = 'text/csv;charset=utf-8;',
element = document.createElement('a');
let blob;

const partnerData = XLSX.utils.json_to_sheet(this.exportData);
const hiiData = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[0]);
const spData = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[1]);
const spSchema = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[2]);
const wb = XLSX.utils.book_new();

if (exportType === 'CSV') {
if (this.isProfileData) {
let csvData = Papa.unparse(this.exportData);
blob = new Blob([csvData], { type: fileTypeCSV });
let url = URL.createObjectURL(blob);
element.href = url;
element.setAttribute('download', 'ProfileData' + '.csv');
element.click();
} else if (this.isImplementationData) {
this.exportJsonToCSV(this.exportSurveyCtoData, ['HiiData', 'SPData', 'SPSchemaData'])
} else {
let completeData = this.exportSurveyCtoData
completeData.push(this.exportData)
this.exportJsonToCSV(completeData, ['HiiData', 'SPData', 'SPSchemaData', 'ProfileData',])
}
} else {
if (this.isProfileData) {
XLSX.utils.book_append_sheet(wb, partnerData, "Partner Profile");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
} else if (this.isImplementationData) {
XLSX.utils.book_append_sheet(wb, hiiData, "Hii Data");
XLSX.utils.book_append_sheet(wb, spData, "Sp DATA");
XLSX.utils.book_append_sheet(wb, spSchema, "SP Schema Data");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
} else {
XLSX.utils.book_append_sheet(wb, partnerData, "PartneData");
XLSX.utils.book_append_sheet(wb, hiiData, "HiiData");
XLSX.utils.book_append_sheet(wb, spData, "SPData");
XLSX.utils.book_append_sheet(wb, spSchema, "SPSchemaData");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
}
}
}

exportJsonToCSV(csvData: any, fileName?: any) {
const fileTypeCSV = 'text/csv;charset=utf-8;',
element = document.createElement('a');
let blob;

csvData.forEach((exportData: any, index: number) => {
let csvData = Papa.unparse(exportData);
blob = new Blob([csvData], { type: fileTypeCSV });
let url = URL.createObjectURL(blob);
element.href = url;
element.setAttribute('download', fileName[index] + '.csv');
element.click();
});
this.formatCsvXlsvService.exportCsvXlsv([this.partnerDetails], exportType, this.isProfileData, this.isImplementationData)
.then((response: any) => {
console.log(response)
}, (e)=> console.log(e))
}
}

+ 10
- 221
src/app/dashboard/table/table.component.ts 查看文件

@@ -6,6 +6,8 @@ import * as XLSX from 'xlsx'
import { UserData, UserDataOption } from 'src/shared/structure/user';
import { COUNTRIES, STATES, COMMUNITIES } from 'src/shared/data/form-options';
import { PartnerType, PARTNER_MAPPING } from 'src/shared/data/partner-mapping';
import { FormatCsvXlsvService } from '../../services/format-csv-xlsv.service'


type exportType = "CSV" | "XLSX";

@@ -38,12 +40,10 @@ export class TableComponent implements OnInit {
filteredDistricts: Array<string> = [];
filteredPartnerTypes: Array<PartnerType> = [];

exportData: Array<any> = [];
exportSurveyCtoData: Array<any> = [];

constructor(
private partnerProfileService: PartnerProfileService,
private router: Router
private router: Router,
private formatCsvXlsvService: FormatCsvXlsvService
) { }

ngOnInit(): void {
@@ -163,162 +163,6 @@ export class TableComponent implements OnInit {
}
}

loadExportData() {
let exportData: Array<any> = [];
let exportHiiData: Array<any> = [];
let exportSpData: Array<any> = [];
let exportSPSchemaData: Array<any> = [];

let surveyCtoData: Array<any> = [];

for (const partner of this.selectedPartnerList) {

let areaOfWork: any = [];
let branchLocationCountries: any = [];
let communities: any = [];
let preferredLanguages: any = [];
let primaryAreasOfSupportOffered: any = [];
let primaryAreasOfSupportRequired: any = [];

let states: any = [];
let districts: any = [];
let preferredModeOfCommunications : any = [];


partner.strengthAndCapability.primaryAreasOfSupportOffered.forEach(x => { primaryAreasOfSupportOffered.push(x.name)})
partner.strengthAndCapability.primaryAreasOfSupportRequired.forEach(x => { primaryAreasOfSupportRequired.push(x.name)})
partner.detailedProfile.preferredLanguages.forEach(x => { preferredLanguages.push(x.name)})
partner.detailedProfile.communities.forEach(x => { communities.push(x.name)})
partner.detailedProfile.branchLocationCountries.forEach(x => { branchLocationCountries.push(x.name)})
partner.organizationBasicInfo.areasOfWork.forEach(x => { areaOfWork.push(x.name)})
partner.detailedProfile.states.forEach(x => { states.push(x.name)})
partner.detailedProfile.districts.forEach(x => { districts.push(x.name)})
partner.detailedProfile.preferredModeOfCommunications.forEach(x => { preferredModeOfCommunications.push(x.name)})


let partnerDetails = {
"PortalID": partner.portalId ? partner.portalId : '-',

// Primary Contact

"Primary Name": partner.primaryContact.name,
"Primary Contact Number": partner.primaryContact.contactNumber,
"Primary Email": partner.primaryContact.email,
"Primary Designation": partner.primaryContact.designation,

// Basic Info

"Areas Of Work": areaOfWork.toString(),
"Name": partner.organizationBasicInfo.name,
"Reason For Becoming Member": partner.organizationBasicInfo.reasonForBecomingMember,
"Referral Name": partner.organizationBasicInfo.referralName,
"Source": partner.organizationBasicInfo.source,
"Type": partner.organizationBasicInfo.type,
"Website": partner.organizationBasicInfo.website,
"Would Like Updates": partner.organizationBasicInfo.wouldLikeUpdates,

// Alternative Contact

'Alternative Name': partner.alternateContact.name,
'Alternative ContactNumber': partner.alternateContact.contactNumber,
'Alternative Email': partner.alternateContact.email,
'Alternative Designation': partner.alternateContact.designation,

// Detailed Profile

'Bio': partner.detailedProfile.bio,
'Branch Location Countries': branchLocationCountries.toString(),
"Communities": communities.toString(),
"District": partner.detailedProfile.district,
"Districts": partner.detailedProfile.districts ? districts.toString() : '',
"Files": partner.detailedProfile.files,
"Have Branches In Other Districts": partner.detailedProfile.haveBranchesInOtherDistricts,
"Logo": partner.detailedProfile.logo,
"partner Location": partner.detailedProfile.partnerLocation,
"Preferred Languages": preferredLanguages.toString(),
"Preferred Mode Of Communications": partner.detailedProfile.preferredModeOfCommunications ? preferredModeOfCommunications.toString() : '',
"State": partner.detailedProfile.state,
"States": partner.detailedProfile.states ? states.toString() : '',
"Total Reach Of Organization": partner.detailedProfile.totalReachOfOrganization,
"Year Of Establishment": partner.detailedProfile.yearOfEstablishment,

// Strength

"Other Specific Support Required": partner.strengthAndCapability.otherSpecificSupportRequired,
"Primary Areas Of Support Offered": partner.strengthAndCapability.otherSpecificSupportRequired ? partner.strengthAndCapability.otherSpecificSupportRequired.toString() : '',
"Primary Areas Of Support Offered Description": primaryAreasOfSupportOffered.toString(),
"Primary Areas Of Support Offered Other": partner.strengthAndCapability.primaryAreasOfSupportOfferedDescription,
"Primary Areas Of Support Required": partner.strengthAndCapability.primaryAreasOfSupportOfferedOther ? partner.strengthAndCapability.primaryAreasOfSupportOfferedOther.toString() : '',
"Primary Areas Of Support Required Description": primaryAreasOfSupportRequired.toString(),
"Primary Areas Of Support Required Other": partner.strengthAndCapability.primaryAreasOfSupportRequiredOther,
}

exportData.push(partnerDetails);
console.log(exportData)

let surveyCtoHIIData = [];
for (const hiidata of partner.surveyCtoData.hiiData) {
let partnerHiiDetails = {
"HII Id": hiidata.id,
"HII Name": hiidata.name,
"HII Packages Health": hiidata.packagesHealth,
"HII Implementation Status": hiidata.implementationStatus,
"HII Disaggregation Note": hiidata.disaggregationNote,
"HII No Of Males": hiidata.id,
"HII No Of Females": hiidata.noOfMales,
"HII No Of Transgender": hiidata.noOfTransgender,
"HII Health Remarks": hiidata.healthRemarks,
"HII Relevant Documents": hiidata.relevantDocuments,
}
surveyCtoHIIData.push(partnerHiiDetails)
}
surveyCtoHIIData.forEach(data => {
exportHiiData.push(data)
})

let surveyCtoSpData = []
for (const spData of partner.surveyCtoData.spData) {
let partnerSpDetails = {
"SP Id": spData.id,
"SP Name": spData.name,
"SP Status": spData.status,
'SP Reason Name': spData.reasonName,
"SP Female Number": spData.femaleNo ? spData.femaleNo : '',
"SP Male Number": spData.maleNo ? spData.maleNo : '',
"Tg Number": spData.tgNo ? spData.tgNo : '',
"SP TotalAggregation": spData.totalAggregation,
"SP OtherRemarks": spData.otherRemarks,
"SP RelevantDocuments": spData.relevantDocuments,
}

surveyCtoSpData.push(partnerSpDetails)
}
surveyCtoSpData.forEach(data => {
exportSpData.push(data)
})

let surveyCtoSpSchemaData = []
for (const spSchema of partner.surveyCtoData.spSchemeData) {
let partnerSpSchemaDetails = {
"SPSchema SchemeId": spSchema.schemeId,
"SPSchema Count": spSchema.count,
}

surveyCtoSpSchemaData.push(partnerSpSchemaDetails)
}
surveyCtoSpSchemaData.forEach(data => {
exportSPSchemaData.push(data)
})
}


surveyCtoData.push(exportHiiData)
surveyCtoData.push(exportSpData)
surveyCtoData.push(exportSPSchemaData)

this.exportData = exportData;
this.exportSurveyCtoData = surveyCtoData
}

isInputChecked(partner: any) {
return this.selectedPartnerList.some(x => JSON.stringify(x) === JSON.stringify(partner));
@@ -333,66 +177,11 @@ export class TableComponent implements OnInit {
}

exportProfileData(exportType: exportType) {
this.loadExportData();

const fileTypeCSV = 'text/csv;charset=utf-8;',
element = document.createElement('a');
let blob;

const partnerData = XLSX.utils.json_to_sheet(this.exportData);
const hiiData = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[0]);
const spData = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[1]);
const spSchema = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[2]);
const wb = XLSX.utils.book_new();


if (exportType === 'CSV') {
if (this.isProfileData) {
let csvData = Papa.unparse(this.exportData);
blob = new Blob([csvData], { type: fileTypeCSV });
let url = URL.createObjectURL(blob);
element.href = url;
element.setAttribute('download', 'ProfileData' + '.csv');
element.click();
} else if (this.isImplementationData) {
this.exportJsonToCSV(this.exportSurveyCtoData, ['HiiData', 'SPData', 'SPSchemaData'])
} else {
let completeData = this.exportSurveyCtoData
completeData.push(this.exportData)

this.exportJsonToCSV(completeData, ['HiiData', 'SPData', 'SPSchemaData', 'ProfileData',])
}
} else {
if (this.isProfileData) {
XLSX.utils.book_append_sheet(wb, partnerData, "Partner Profile");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
} else if (this.isImplementationData) {
XLSX.utils.book_append_sheet(wb, hiiData, "Hii Data");
XLSX.utils.book_append_sheet(wb, spData, "Sp DATA");
XLSX.utils.book_append_sheet(wb, spSchema, "SP Schema Data");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
} else {
XLSX.utils.book_append_sheet(wb, partnerData, "PartneData");
XLSX.utils.book_append_sheet(wb, hiiData, "HiiData");
XLSX.utils.book_append_sheet(wb, spData, "SPData");
XLSX.utils.book_append_sheet(wb, spSchema, "SPSchemaData");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
}
}
}

exportJsonToCSV(csvData: any, fileName?: any) {
const fileTypeCSV = 'text/csv;charset=utf-8;',
element = document.createElement('a');
let blob;

csvData.forEach((exportData: any, index: number) => {
let csvData = Papa.unparse(exportData);
blob = new Blob([csvData], { type: fileTypeCSV });
let url = URL.createObjectURL(blob);
element.href = url;
element.setAttribute('download', fileName[index] + '.csv');
element.click();
});
this.formatCsvXlsvService.exportCsvXlsv(this.selectedPartnerList, exportType, this.isProfileData, this.isImplementationData)
.then((response: any) => {
console.log(response)
},(e)=> console.log(e)
)
}
}

+ 16
- 0
src/app/services/format-csv-xlsv.service.spec.ts 查看文件

@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';

import { FormatCsvXlsvService } from './format-csv-xlsv.service';

describe('FormatCsvXlsvService', () => {
let service: FormatCsvXlsvService;

beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(FormatCsvXlsvService);
});

it('should be created', () => {
expect(service).toBeTruthy();
});
});

+ 238
- 0
src/app/services/format-csv-xlsv.service.ts 查看文件

@@ -0,0 +1,238 @@
import { Injectable } from '@angular/core';
import { UserData } from 'src/shared/structure/user';
import * as XLSX from 'xlsx';
import * as Papa from 'papaparse';


type ExportType = "CSV" | "XLSX";

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

constructor() { }

async exportCsvXlsv(partnerData: Array<UserData>, exportType: ExportType, isProfileData: boolean, isImplementationData: boolean) {
let exportData: Array<any> = [];
let exportHiiData: Array<any> = [];
let exportSpData: Array<any> = [];
let exportSPSchemaData: Array<any> = [];

let surveyCtoData: Array<any> = [];

for (const partner of partnerData) {

let areaOfWork: any = [];
let branchLocationCountries: any = [];
let communities: any = [];
let preferredLanguages: any = [];
let primaryAreasOfSupportOffered: any = [];
let primaryAreasOfSupportRequired: any = [];

let states: any = [];
let districts: any = [];
let preferredModeOfCommunications: any = [];


partner.strengthAndCapability.primaryAreasOfSupportOffered.forEach(x => { primaryAreasOfSupportOffered.push(x.name) })
partner.strengthAndCapability.primaryAreasOfSupportRequired.forEach(x => { primaryAreasOfSupportRequired.push(x.name) })
partner.detailedProfile.preferredLanguages.forEach(x => { preferredLanguages.push(x.name) })
partner.detailedProfile.communities.forEach(x => { communities.push(x.name) })
partner.detailedProfile.branchLocationCountries.forEach(x => { branchLocationCountries.push(x.name) })
partner.organizationBasicInfo.areasOfWork.forEach(x => { areaOfWork.push(x.name) })
partner.detailedProfile.states.forEach(x => { states.push(x.name) })
partner.detailedProfile.districts.forEach(x => { districts.push(x.name) })
partner.detailedProfile.preferredModeOfCommunications.forEach(x => { preferredModeOfCommunications.push(x.name) })



let partnerDetails = {
"PortalID": partner.portalId ? partner.portalId : '-',

// Primary Contact

"Primary Name": partner.primaryContact.name,
"Primary Contact Number": partner.primaryContact.contactNumber,
"Primary Email": partner.primaryContact.email,
"Primary Designation": partner.primaryContact.designation,

// Basic Info

"Areas Of Work": areaOfWork.toString(),
"Name": partner.organizationBasicInfo.name,
"Reason For Becoming Member": partner.organizationBasicInfo.reasonForBecomingMember,
"Referral Name": partner.organizationBasicInfo.referralName,
"Source": partner.organizationBasicInfo.source,
"Type": partner.organizationBasicInfo.type,
"Website": partner.organizationBasicInfo.website,
"Would Like Updates": partner.organizationBasicInfo.wouldLikeUpdates,

// Alternative Contact

'Alternative Name': partner.alternateContact.name,
'Alternative ContactNumber': partner.alternateContact.contactNumber,
'Alternative Email': partner.alternateContact.email,
'Alternative Designation': partner.alternateContact.designation,

// Detailed Profile

'Bio': partner.detailedProfile.bio,
'Branch Location Countries': branchLocationCountries.toString(),
"Communities": communities.toString(),
"District": partner.detailedProfile.district,
"Districts": partner.detailedProfile.districts ? districts.toString() : '',
"Files": partner.detailedProfile.files,
"Have Branches In Other Districts": partner.detailedProfile.haveBranchesInOtherDistricts,
"Logo": partner.detailedProfile.logo,
"partner Location": partner.detailedProfile.partnerLocation,
"Preferred Languages": preferredLanguages.toString(),
"Preferred Mode Of Communications": partner.detailedProfile.preferredModeOfCommunications ? preferredModeOfCommunications.toString() : '',
"State": partner.detailedProfile.state,
"States": partner.detailedProfile.states ? states.toString() : '',
"Total Reach Of Organization": partner.detailedProfile.totalReachOfOrganization,
"Year Of Establishment": partner.detailedProfile.yearOfEstablishment,
// Strength

"Other Specific Support Required": partner.strengthAndCapability.otherSpecificSupportRequired,
"Primary Areas Of Support Offered": partner.strengthAndCapability.otherSpecificSupportRequired ? partner.strengthAndCapability.otherSpecificSupportRequired.toString() : '',
"Primary Areas Of Support Offered Description": primaryAreasOfSupportOffered.toString(),
"Primary Areas Of Support Offered Other": partner.strengthAndCapability.primaryAreasOfSupportOfferedDescription,
"Primary Areas Of Support Required": partner.strengthAndCapability.primaryAreasOfSupportOfferedOther ? partner.strengthAndCapability.primaryAreasOfSupportOfferedOther.toString() : '',
"Primary Areas Of Support Required Description": primaryAreasOfSupportRequired.toString(),
"Primary Areas Of Support Required Other": partner.strengthAndCapability.primaryAreasOfSupportRequiredOther,
}

exportData.push(partnerDetails);

let surveyCtoHIIData = [];
for (const hiidata of partner.surveyCtoData.hiiData) {
let partnerHiiDetails = {
"PortalID": partner.portalId,
"HII Id": hiidata.id,
"HII Name": hiidata.name,
"HII Packages Health": hiidata.packagesHealth,
"HII Implementation Status": hiidata.implementationStatus,
"HII Disaggregation Note": hiidata.disaggregationNote,
"HII No Of Males": hiidata.id,
"HII No Of Females": hiidata.noOfMales,
"HII No Of Transgender": hiidata.noOfTransgender,
"HII Health Remarks": hiidata.healthRemarks,
"HII Relevant Documents": hiidata.relevantDocuments,
}
surveyCtoHIIData.push(partnerHiiDetails)
}
surveyCtoHIIData.forEach(data => {
exportHiiData.push(data)
})

let surveyCtoSpData = []
for (const spData of partner.surveyCtoData.spData) {
let partnerSpDetails = {
"PortalID": partner.portalId,
"SP Id": spData.id,
"SP Name": spData.name,
"SP Status": spData.status,
'SP Reason Name': spData.reasonName,
"SP Female Number": spData.femaleNo ? spData.femaleNo : '',
"SP Male Number": spData.maleNo ? spData.maleNo : '',
"Tg Number": spData.tgNo ? spData.tgNo : '',
"SP TotalAggregation": spData.totalAggregation,
"SP OtherRemarks": spData.otherRemarks,
"SP RelevantDocuments": spData.relevantDocuments,
}

surveyCtoSpData.push(partnerSpDetails)
}
surveyCtoSpData.forEach(data => {
exportSpData.push(data)
})

let surveyCtoSpSchemaData = []
for (const spSchema of partner.surveyCtoData.spSchemeData) {
let partnerSpSchemaDetails = {
"PortalID": partner.portalId,
"SPSchema SchemeId": spSchema.schemeId,
"SPSchema Count": spSchema.count,
}

surveyCtoSpSchemaData.push(partnerSpSchemaDetails)
}
surveyCtoSpSchemaData.forEach(data => {
exportSPSchemaData.push(data)
})
}

surveyCtoData.push(exportHiiData)
surveyCtoData.push(exportSpData)
surveyCtoData.push(exportSPSchemaData)


const fileTypeCSV = 'text/csv;charset=utf-8;',
element = document.createElement('a');
let blob;

const partnerExportData = XLSX.utils.json_to_sheet(exportData);
const hiiData = XLSX.utils.json_to_sheet(exportHiiData);
const spData = XLSX.utils.json_to_sheet(exportSpData);
const spSchema = XLSX.utils.json_to_sheet(exportSPSchemaData);
const wb = XLSX.utils.book_new();

if (exportType === 'CSV') {
if (isProfileData) {
let csvData = Papa.unparse(exportData);
blob = new Blob([csvData], { type: fileTypeCSV });
let url = URL.createObjectURL(blob);
element.href = url;
element.setAttribute('download', 'ProfileData' + '.csv');
element.click();
} else if (isImplementationData) {
this.exportJsonToCSV(surveyCtoData, ['HiiData', 'SPData', 'SPSchemaData'])
} else {
let completeData = surveyCtoData
completeData.push(exportData)
this.exportJsonToCSV(completeData, ['HiiData', 'SPData', 'SPSchemaData', 'ProfileData',])
}
} else {
if (isProfileData) {
XLSX.utils.book_append_sheet(wb, partnerExportData, "Partner Profile");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
} else if (isImplementationData) {
XLSX.utils.book_append_sheet(wb, hiiData, "Hii Data");
XLSX.utils.book_append_sheet(wb, spData, "Sp DATA");
XLSX.utils.book_append_sheet(wb, spSchema, "SP Schema Data");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
} else {
XLSX.utils.book_append_sheet(wb, partnerExportData, "PartneData");
XLSX.utils.book_append_sheet(wb, hiiData, "HiiData");
XLSX.utils.book_append_sheet(wb, spData, "SPData");
XLSX.utils.book_append_sheet(wb, spSchema, "SPSchemaData");
XLSX.writeFile(wb, 'PartnerProfile.xlsx');
}
}

let formatedData = {
'Export ProfileData': exportData,
'Export HiiData': exportHiiData,
'Export SpData': exportSpData,
'Export SPSchemaData': exportSPSchemaData,
}

return formatedData;
}

private exportJsonToCSV(csvData: any, fileName?: any) {
const fileTypeCSV = 'text/csv;charset=utf-8;',
element = document.createElement('a');
let blob;

csvData.forEach((exportData: any, index: number) => {
let csvData = Papa.unparse(exportData);
blob = new Blob([csvData], { type: fileTypeCSV });
let url = URL.createObjectURL(blob);
element.href = url;
element.setAttribute('download', fileName[index] + '.csv');
element.click();
});
}
}

Loading…
取消
儲存