aefe20661d30e61f4e77739b873045b1171ed831
[usecase-ui.git] /
1 import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
2 import { Util } from '../../../../shared/utils/utils';
3 import { NzMessageService, UploadFile } from 'ng-zorro-antd';
4 import { HttpClient, HttpHeaders } from '@angular/common/http';
5 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
6 import { MaasApi } from '@src/app/api/maas.api';
7 import { Operator } from 'rxjs';
8 import { MaaSPlatform, Operators } from '../knowledge-base.type';
9
10 @Component({
11   selector: 'app-create-knowledge-base',
12   templateUrl: './create-knowledge-base.component.html',
13   styleUrls: ['./create-knowledge-base.component.less']
14 })
15 export class CreateKnowledgeBaseComponent implements OnInit {
16   title = 'Add Knowledge Base';
17   @Input() showModal: boolean;
18   @Output() modalOpreation = new EventEmitter();
19   fileList: File[] = [];
20   operators: Operators[] = [];
21   filteredPlatforms: MaaSPlatform[] = [];
22   validateForm: FormGroup;
23
24   constructor(
25     private myhttp: MaasApi,
26     private Util: Util,
27     private message: NzMessageService,
28     private http: HttpClient,
29     private fb: FormBuilder
30   ) { }
31
32   ngOnInit() {
33     this.fetchOperators();
34     this.validateForm = this.fb.group({
35       name: [null, [Validators.required]],
36       description: [null],
37       selectedOperator: [null, [Validators.required]],
38       selectedPlatform: [null, [Validators.required]]
39     });
40   }
41   fetchOperators(): void {
42     this.myhttp.getOperators().subscribe(
43       (response) => {
44         this.operators = response.result_body;
45       },
46       () => {
47         this.message.error('Failed to fetch operators');
48       }
49     );
50   }
51   submitForm(): void {
52     for (const i in this.validateForm.controls) {
53       this.validateForm.controls[i].markAsDirty();
54       this.validateForm.controls[i].updateValueAndValidity();
55     }
56   }
57   handleOperatorChange(value: Operators): void {
58     if (value) {
59       this.filteredPlatforms = value.maaSPlatformList;
60     } else {
61       this.filteredPlatforms = [];
62     }
63     this.validateForm.get('selectedPlatform').setValue(null);
64   }
65   beforeUpload = (file: File): boolean => {
66     this.fileList.push(file);
67     return false;
68   }
69   handleCancel(): void {
70     this.showModal = false;
71     this.modalOpreation.emit({ "cancel": true });
72   }
73
74   constructBody() {
75     const formData = new FormData();
76     const metaData = {
77       knowledgeBaseName: this.validateForm.value.name,
78       knowledgeBaseDescription: this.validateForm.value.description,
79       operatorId: this.validateForm.value.selectedOperator.operatorId,
80       operatorName: this.validateForm.value.selectedOperator.operatorName,
81       maaSPlatformId: this.validateForm.value.selectedPlatform.maaSPlatformId,
82       maaSPlatformName: this.validateForm.value.selectedPlatform.maaSPlatformName
83     };
84     const metaDataJson = JSON.stringify(metaData);
85     formData.append('metaData', metaDataJson);
86     this.fileList.forEach((file: File) => {
87       formData.append('files', file);
88     });
89     return formData
90   }
91
92   handleOk(): void {
93     this.submitForm();
94     if (this.validateForm.invalid) {
95       this.showModal = true;
96       return;
97     }
98     this.myhttp.createKnowledgeBase(this.constructBody()).subscribe(
99       (response) => {
100         if (response.result_header.result_code === 200) {
101           this.message.success('Created successfully');
102         } else {
103           this.message.error(response.result_header.result_message);
104         }
105         this.modalOpreation.emit({ "cancel": false });
106       },
107       (error) => {
108         console.log('Upload failed', error);
109       }
110     );
111   }
112 }