Angular app for CAC desktop
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

partner-details.component.ts 10 KiB

pirms 3 gadiem
pirms 3 gadiem
pirms 3 gadiem
pirms 3 gadiem
pirms 3 gadiem
pirms 3 gadiem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. import { Component, OnInit } from '@angular/core';
  2. import { ActivatedRoute } from '@angular/router';
  3. import * as Papa from 'papaparse';
  4. import { AREAS_OF_WORK, COUNTRIES, STATES, COMMUNITIES, PREFERRED_MODE_OF_COMMUNICATION, PREFERRED_LANGUAGES, AREAS_OF_SUPPORT } from 'src/shared/data/form-options';
  5. import { UserData, UserDataOption } from 'src/shared/structure/user';
  6. import * as XLSX from 'xlsx'
  7. type ExportType = "CSV" | "XLSX";
  8. @Component({
  9. selector: 'app-partner-details',
  10. templateUrl: './partner-details.component.html',
  11. styleUrls: ['./partner-details.component.scss']
  12. })
  13. export class PartnerDetailsComponent implements OnInit {
  14. partnerDetails: UserData | undefined;
  15. isFormEditable: boolean = false;
  16. selectedSegment: 1 | 2 | 3 = 1;
  17. showExportOptions: boolean = false;
  18. areasOfWork = AREAS_OF_WORK;
  19. countries = COUNTRIES;
  20. states = STATES;
  21. districts: Array<UserDataOption> = [];
  22. communities = COMMUNITIES;
  23. preferredModesOfCommunication = PREFERRED_MODE_OF_COMMUNICATION;
  24. preferredLanguages = PREFERRED_LANGUAGES;
  25. areasOfSupport = AREAS_OF_SUPPORT;
  26. exportData: Array<any> = [];
  27. exportSurveyCtoData: Array<any> = [];
  28. isProfileData: boolean = true;
  29. isImplementationData: boolean = false;
  30. isBothData: boolean = false;
  31. constructor(
  32. private activateRouter: ActivatedRoute
  33. ) { }
  34. ngOnInit(): void {
  35. this.activateRouter.queryParams.subscribe((data: any) => {
  36. this.partnerDetails = JSON.parse(data.data);
  37. }).unsubscribe();
  38. }
  39. hasIndiaBranchLocation() {
  40. return this.partnerDetails?.detailedProfile.branchLocationCountries.find(country => country.name === 'India');
  41. }
  42. updateDistricts(states: Array<{ districts: Array<UserDataOption> }>) {
  43. console.log(states);
  44. this.districts = states.map(state => state.districts).flat();
  45. }
  46. loadExportData(partnerData: UserData) {
  47. let exportData: Array<any> = [];
  48. let exportHiiData: Array<any> = [];
  49. let exportSpData: Array<any> = [];
  50. let exportSPSchemaData: Array<any> = [];
  51. let surveyCtoData: Array<any> = [];
  52. exportData = [{
  53. "PortalID": partnerData.portalId ? partnerData.portalId : '-',
  54. // Primary Contact
  55. "Primary Name": partnerData.primaryContact.name,
  56. "Primary Contact Number": partnerData.primaryContact.contactNumber,
  57. "Primary Email": partnerData.primaryContact.email,
  58. "Primary Designation": partnerData.primaryContact.designation,
  59. // Basic Info
  60. "Areas Of Work": partnerData.organizationBasicInfo.areasOfWork ? partnerData.organizationBasicInfo.areasOfWork.map(option => option.name).join(', ') : '',
  61. "Name": partnerData.organizationBasicInfo.name,
  62. "Reason For Becoming Member": partnerData.organizationBasicInfo.reasonForBecomingMember,
  63. "Referral Name": partnerData.organizationBasicInfo.referralName,
  64. "Source": partnerData.organizationBasicInfo.source,
  65. "Type": partnerData.organizationBasicInfo.type,
  66. "Website": partnerData.organizationBasicInfo.website,
  67. "Would Like Updates": partnerData.organizationBasicInfo.wouldLikeUpdates,
  68. // Alternative Contact
  69. 'Alternative Name': partnerData.alternateContact.name,
  70. 'Alternative ContactNumber': partnerData.alternateContact.contactNumber,
  71. 'Alternative Email': partnerData.alternateContact.email,
  72. 'Alternative Designation': partnerData.alternateContact.designation,
  73. // Detailed Profile
  74. 'Bio': partnerData.detailedProfile.bio,
  75. 'Branch Location Countries': partnerData.detailedProfile.branchLocationCountries ? partnerData.detailedProfile.branchLocationCountries.map(option => option.name).join(', ') : '',
  76. "Communities": partnerData.detailedProfile.communities ? partnerData.detailedProfile.communities.map(option => option.name).join(', ') : '',
  77. "District": partnerData.detailedProfile.district,
  78. "Districts": partnerData.detailedProfile.districts ? partnerData.detailedProfile.districts.map(option => option.name).join(', ') : '',
  79. "Files": partnerData.detailedProfile.files,
  80. "Have Branches In Other Districts": partnerData.detailedProfile.haveBranchesInOtherDistricts,
  81. "Logo": partnerData.detailedProfile.logo,
  82. "partnerData Location": partnerData.detailedProfile.partnerLocation,
  83. "Preferred Languages": partnerData.detailedProfile.preferredLanguages ? partnerData.detailedProfile.preferredLanguages.map(option => option.name).join(', ') : '',
  84. "Preferred Mode Of Communications": partnerData.detailedProfile.preferredModeOfCommunications ? partnerData.detailedProfile.preferredModeOfCommunications.map(option => option.name).join(', ') : '',
  85. "State": partnerData.detailedProfile.state,
  86. "States": partnerData.detailedProfile.states ? partnerData.detailedProfile.states.map(option => option.name).join(', ') : '',
  87. "Total Reach Of Organization": partnerData.detailedProfile.totalReachOfOrganization,
  88. "Year Of Establishment": partnerData.detailedProfile.yearOfEstablishment,
  89. // Strength
  90. "Other Specific Support Required": partnerData.strengthAndCapability.otherSpecificSupportRequired,
  91. "Primary Areas Of Support Offered": partnerData.strengthAndCapability.otherSpecificSupportRequired ? partnerData.strengthAndCapability.otherSpecificSupportRequired.toString() : '',
  92. "Primary Areas Of Support Offered Description": partnerData.strengthAndCapability.primaryAreasOfSupportOffered.map(option => option.name).join(', '),
  93. "Primary Areas Of Support Offered Other": partnerData.strengthAndCapability.primaryAreasOfSupportOfferedDescription,
  94. "Primary Areas Of Support Required": partnerData.strengthAndCapability.primaryAreasOfSupportOfferedOther ? partnerData.strengthAndCapability.primaryAreasOfSupportOfferedOther.toString() : '',
  95. "Primary Areas Of Support Required Description": partnerData.strengthAndCapability.primaryAreasOfSupportRequired.map(option => option.name).join(', '),
  96. "Primary Areas Of Support Required Other": partnerData.strengthAndCapability.primaryAreasOfSupportRequiredOther,
  97. }]
  98. let surveyCtoHIIData = [];
  99. for (const hiidata of partnerData.surveyCtoData.hiiData) {
  100. let partnerHiiDetails = {
  101. "HII Id": hiidata.id,
  102. "HII Name": hiidata.name,
  103. "HII Packages Health": hiidata.packagesHealth,
  104. "HII Implementation Status": hiidata.implementationStatus,
  105. "HII Disaggregation Note": hiidata.disaggregationNote,
  106. "HII No Of Males": hiidata.id,
  107. "HII No Of Females": hiidata.noOfMales,
  108. "HII No Of Transgender": hiidata.noOfTransgender,
  109. "HII Health Remarks": hiidata.healthRemarks,
  110. "HII Relevant Documents": hiidata.relevantDocuments,
  111. }
  112. surveyCtoHIIData.push(partnerHiiDetails)
  113. }
  114. surveyCtoHIIData.forEach(data => {
  115. exportHiiData.push(data)
  116. })
  117. let surveyCtoSpData = []
  118. for (const spData of partnerData.surveyCtoData.spData) {
  119. let partnerSpDetails = {
  120. "SP Id": spData.id,
  121. "SP Name": spData.name,
  122. "SP Status": spData.status,
  123. "SP TotalAggregation": spData.totalAggregation,
  124. "SP OtherRemarks": spData.otherRemarks,
  125. "SP RelevantDocuments": spData.relevantDocuments,
  126. }
  127. surveyCtoSpData.push(partnerSpDetails)
  128. }
  129. surveyCtoSpData.forEach(data => {
  130. exportSpData.push(data)
  131. })
  132. let surveyCtoSpSchemaData = []
  133. for (const spSchema of partnerData.surveyCtoData.spSchemeData) {
  134. let partnerSpSchemaDetails = {
  135. "SPSchema SchemeId": spSchema.schemeId,
  136. "SPSchema Count": spSchema.count,
  137. }
  138. surveyCtoSpSchemaData.push(partnerSpSchemaDetails)
  139. }
  140. surveyCtoSpSchemaData.forEach(data => {
  141. exportSPSchemaData.push(data)
  142. })
  143. surveyCtoData.push(exportHiiData)
  144. surveyCtoData.push(exportSpData)
  145. surveyCtoData.push(exportSPSchemaData)
  146. this.exportData = exportData;
  147. this.exportSurveyCtoData = surveyCtoData
  148. }
  149. exportProfileData(exportType: ExportType) {
  150. const fileTypeXLS = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8',
  151. fileTypeCSV = 'text/csv;charset=utf-8;',
  152. fileExtension = exportType === 'CSV' ? '.csv' : '.xlsx',
  153. element = document.createElement('a');
  154. let blob;
  155. if (!this.partnerDetails) {
  156. return;
  157. }
  158. this.loadExportData(this.partnerDetails)
  159. const partnerData = XLSX.utils.json_to_sheet(this.exportData);
  160. const hiiData = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[0]);
  161. const spData = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[1]);
  162. const spSchema = XLSX.utils.json_to_sheet(this.exportSurveyCtoData[2]);
  163. const wb = XLSX.utils.book_new();
  164. if (exportType === 'CSV') {
  165. let csvData = Papa.unparse(this.exportData);
  166. blob = new Blob([csvData], { type: fileTypeCSV });
  167. let url = URL.createObjectURL(blob);
  168. element.href = url;
  169. element.setAttribute('download', 'PartnerProfile' + fileExtension);
  170. element.click();
  171. } else if (this.isImplementationData) {
  172. XLSX.utils.book_append_sheet(wb, hiiData, "Hii Data");
  173. XLSX.utils.book_append_sheet(wb, spData, "Sp DATA");
  174. XLSX.utils.book_append_sheet(wb, spSchema, "SP Schema Data");
  175. XLSX.writeFile(wb, 'PartnerProfile' + fileExtension);
  176. } else if (this.isBothData) {
  177. XLSX.utils.book_append_sheet(wb, partnerData, "Partner Profile");
  178. XLSX.utils.book_append_sheet(wb, hiiData, "Hii Data");
  179. XLSX.utils.book_append_sheet(wb, spData, "Sp DATA");
  180. XLSX.utils.book_append_sheet(wb, spSchema, "SP Schema Data");
  181. XLSX.writeFile(wb, 'PartnerProfile' + fileExtension);
  182. } else {
  183. XLSX.utils.book_append_sheet(wb, partnerData, "Partner Profile");
  184. XLSX.writeFile(wb, 'PartnerProfile' + fileExtension);
  185. }
  186. }
  187. }