|
- import { Component, OnInit } from '@angular/core';
- import { ActivatedRoute } from '@angular/router';
- 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'
-
- type ExportType = "CSV" | "XLSX";
-
- @Component({
- selector: 'app-partner-details',
- templateUrl: './partner-details.component.html',
- styleUrls: ['./partner-details.component.scss']
- })
- export class PartnerDetailsComponent implements OnInit {
- partnerDetails: UserData | undefined;
- isFormEditable: boolean = false;
- selectedSegment: 1 | 2 | 3 = 1;
- showExportOptions: boolean = false;
-
- areasOfWork = AREAS_OF_WORK;
- countries = COUNTRIES;
- states = STATES;
- districts: Array<UserDataOption> = [];
- communities = COMMUNITIES;
- preferredModesOfCommunication = PREFERRED_MODE_OF_COMMUNICATION;
- preferredLanguages = PREFERRED_LANGUAGES;
- areasOfSupport = AREAS_OF_SUPPORT;
-
- exportData: Array<any> = [];
- exportSurveyCtoData: Array<any> = [];
-
- isProfileData: boolean = true;
- isImplementationData: boolean = false;
- isBothData: boolean = false;
-
- constructor(
- private activateRouter: ActivatedRoute,
- private partnerProfileService: PartnerProfileService
- ) { }
-
- ngOnInit(): void {
- this.activateRouter.queryParams.subscribe((data: any) => {
- this.partnerDetails = JSON.parse(data.data);
- }).unsubscribe();
- }
-
- hasIndiaBranchLocation() {
- return this.partnerDetails?.detailedProfile.branchLocationCountries.find(country => country.name === 'India');
- }
-
- updateDistricts(states: Array<{ districts: Array<UserDataOption> }>) {
- console.log(states);
- 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 = [];
-
- 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) })
-
-
- 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 ? partnerData.detailedProfile.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 ? partnerData.detailedProfile.preferredModeOfCommunications.toString() : '',
- "State": partnerData.detailedProfile.state,
- "States": partnerData.detailedProfile.states ? partnerData.detailedProfile.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,
- }]
-
-
-
- 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;
-
- if (this.partnerDetails) {
- try {
- await this.partnerProfileService.updatePartnerData(this.partnerDetails);
- } catch (e) {
- console.error('Could not update partner data', e);
- }
- }
- }
-
- exportProfileData(exportType: ExportType) {
- if (!this.partnerDetails) {
- 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();
- });
- }
- }
|