diff --git a/src/app/dashboard/partner-details/partner-details.component.ts b/src/app/dashboard/partner-details/partner-details.component.ts index bee6633..63770b2 100644 --- a/src/app/dashboard/partner-details/partner-details.component.ts +++ b/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 = []; - let exportHiiData: Array = []; - let exportSpData: Array = []; - let exportSPSchemaData: Array = []; - - let surveyCtoData: Array = []; - - - 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)) } } diff --git a/src/app/dashboard/table/table.component.ts b/src/app/dashboard/table/table.component.ts index 4f8b679..ee6e60f 100644 --- a/src/app/dashboard/table/table.component.ts +++ b/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 = []; filteredPartnerTypes: Array = []; - exportData: Array = []; - exportSurveyCtoData: Array = []; - 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 = []; - let exportHiiData: Array = []; - let exportSpData: Array = []; - let exportSPSchemaData: Array = []; - - let surveyCtoData: Array = []; - - 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) + ) } } + \ No newline at end of file diff --git a/src/app/services/format-csv-xlsv.service.spec.ts b/src/app/services/format-csv-xlsv.service.spec.ts new file mode 100644 index 0000000..db77e71 --- /dev/null +++ b/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(); + }); +}); diff --git a/src/app/services/format-csv-xlsv.service.ts b/src/app/services/format-csv-xlsv.service.ts new file mode 100644 index 0000000..0a8808c --- /dev/null +++ b/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, exportType: ExportType, isProfileData: boolean, isImplementationData: boolean) { + let exportData: Array = []; + let exportHiiData: Array = []; + let exportSpData: Array = []; + let exportSPSchemaData: Array = []; + + let surveyCtoData: Array = []; + + 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(); + }); + } +}