@@ -4,7 +4,8 @@ import * as Papa from 'papaparse'; | |||||
import { PartnerProfileService } from 'src/app/services/partner-profile.service'; | 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 { 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 { 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"; | type ExportType = "CSV" | "XLSX"; | ||||
@@ -37,7 +38,8 @@ export class PartnerDetailsComponent implements OnInit { | |||||
constructor( | constructor( | ||||
private activateRouter: ActivatedRoute, | private activateRouter: ActivatedRoute, | ||||
private partnerProfileService: PartnerProfileService | |||||
private partnerProfileService: PartnerProfileService, | |||||
private formatCsvXlsvService: FormatCsvXlsvService | |||||
) { } | ) { } | ||||
ngOnInit(): void { | ngOnInit(): void { | ||||
@@ -55,161 +57,6 @@ export class PartnerDetailsComponent implements OnInit { | |||||
this.districts = states.map(state => state.districts).flat(); | 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() { | async save() { | ||||
this.isFormEditable = false; | this.isFormEditable = false; | ||||
@@ -228,64 +75,9 @@ export class PartnerDetailsComponent implements OnInit { | |||||
return; | 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)) | |||||
} | } | ||||
} | } |
@@ -6,6 +6,8 @@ import * as XLSX from 'xlsx' | |||||
import { UserData, UserDataOption } from 'src/shared/structure/user'; | import { UserData, UserDataOption } from 'src/shared/structure/user'; | ||||
import { COUNTRIES, STATES, COMMUNITIES } from 'src/shared/data/form-options'; | import { COUNTRIES, STATES, COMMUNITIES } from 'src/shared/data/form-options'; | ||||
import { PartnerType, PARTNER_MAPPING } from 'src/shared/data/partner-mapping'; | import { PartnerType, PARTNER_MAPPING } from 'src/shared/data/partner-mapping'; | ||||
import { FormatCsvXlsvService } from '../../services/format-csv-xlsv.service' | |||||
type exportType = "CSV" | "XLSX"; | type exportType = "CSV" | "XLSX"; | ||||
@@ -38,12 +40,10 @@ export class TableComponent implements OnInit { | |||||
filteredDistricts: Array<string> = []; | filteredDistricts: Array<string> = []; | ||||
filteredPartnerTypes: Array<PartnerType> = []; | filteredPartnerTypes: Array<PartnerType> = []; | ||||
exportData: Array<any> = []; | |||||
exportSurveyCtoData: Array<any> = []; | |||||
constructor( | constructor( | ||||
private partnerProfileService: PartnerProfileService, | private partnerProfileService: PartnerProfileService, | ||||
private router: Router | |||||
private router: Router, | |||||
private formatCsvXlsvService: FormatCsvXlsvService | |||||
) { } | ) { } | ||||
ngOnInit(): void { | 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) { | isInputChecked(partner: any) { | ||||
return this.selectedPartnerList.some(x => JSON.stringify(x) === JSON.stringify(partner)); | return this.selectedPartnerList.some(x => JSON.stringify(x) === JSON.stringify(partner)); | ||||
@@ -333,66 +177,11 @@ export class TableComponent implements OnInit { | |||||
} | } | ||||
exportProfileData(exportType: exportType) { | 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) | |||||
) | |||||
} | } | ||||
} | } | ||||
@@ -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(); | |||||
}); | |||||
}); |
@@ -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(); | |||||
}); | |||||
} | |||||
} |