|
- import { Component, OnInit } from '@angular/core';
- import { ActivatedRoute } from '@angular/router';
- import * as Papa from 'papaparse';
- 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
- ) { }
-
- 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> = [];
-
-
- 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": partnerData.organizationBasicInfo.areasOfWork ? partnerData.organizationBasicInfo.areasOfWork.map(option => option.name).join(', ') : '',
- "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': partnerData.detailedProfile.branchLocationCountries ? partnerData.detailedProfile.branchLocationCountries.map(option => option.name).join(', ') : '',
- "Communities": partnerData.detailedProfile.communities ? partnerData.detailedProfile.communities.map(option => option.name).join(', ') : '',
- "District": partnerData.detailedProfile.district,
- "Districts": partnerData.detailedProfile.districts ? partnerData.detailedProfile.districts.map(option => option.name).join(', ') : '',
- "Files": partnerData.detailedProfile.files,
- "Have Branches In Other Districts": partnerData.detailedProfile.haveBranchesInOtherDistricts,
- "Logo": partnerData.detailedProfile.logo,
- "partnerData Location": partnerData.detailedProfile.partnerLocation,
- "Preferred Languages": partnerData.detailedProfile.preferredLanguages ? partnerData.detailedProfile.preferredLanguages.map(option => option.name).join(', ') : '',
- "Preferred Mode Of Communications": partnerData.detailedProfile.preferredModeOfCommunications ? partnerData.detailedProfile.preferredModeOfCommunications.map(option => option.name).join(', ') : '',
- "State": partnerData.detailedProfile.state,
- "States": partnerData.detailedProfile.states ? partnerData.detailedProfile.states.map(option => option.name).join(', ') : '',
- "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": partnerData.strengthAndCapability.primaryAreasOfSupportOffered.map(option => option.name).join(', '),
- "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": partnerData.strengthAndCapability.primaryAreasOfSupportRequired.map(option => option.name).join(', '),
- "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 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
- }
-
- exportProfileData(exportType: ExportType) {
- const fileTypeXLS = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8',
- fileTypeCSV = 'text/csv;charset=utf-8;',
- fileExtension = exportType === 'CSV' ? '.csv' : '.xlsx',
- element = document.createElement('a');
-
- let blob;
-
- if (!this.partnerDetails) {
- return;
- }
-
- this.loadExportData(this.partnerDetails)
-
- 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') {
- let csvData = Papa.unparse(this.exportData);
- blob = new Blob([csvData], { type: fileTypeCSV });
- let url = URL.createObjectURL(blob);
- element.href = url;
- element.setAttribute('download', 'PartnerProfile' + fileExtension);
- element.click();
-
- } 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' + fileExtension);
-
- } else if (this.isBothData) {
- XLSX.utils.book_append_sheet(wb, partnerData, "Partner Profile");
- 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' + fileExtension);
- } else {
- XLSX.utils.book_append_sheet(wb, partnerData, "Partner Profile");
- XLSX.writeFile(wb, 'PartnerProfile' + fileExtension);
- }
- }
- }
|