EchoTex_Payroll/HRM.UI/ClientApp/src/app/authentication/system-configuration/system-configuration.component.ts
2024-10-14 10:01:49 +06:00

344 lines
11 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { ApiService } from '../../app.api.service'
import { FileInfo, UploadEvent, SelectEvent, SuccessEvent, RemoveEvent, ErrorEvent, FileRestrictions } from '@progress/kendo-angular-upload';
import { UploadFile } from '../../_models/common/uploadFile';
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
import { SystemConfigurationService } from '../../_services/common/systemconfiguration.service';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { EnumConfigurationType, EnumExtension } from '../../_models/enums';
import { UntilityHandlerService } from '../../utility.hanldler.service';
import { HRMNotificationService } from '../../app.notification.service';
import { loadingPanelService } from '../../hrm-loding panel/loding.panel.service';
import * as fileSaver from 'file-saver';
@Component({
selector: 'app-system-configuration',
templateUrl: './system-configuration.component.html',
styleUrls: ['./system-configuration.component.css']
})
export class SystemConfigurationComponent implements OnInit {
private _kendoFiles: FileInfo[];
uploadSaveUrl = '';
uploadRemoveUrl = '';
filename: string;
myFiles: Array<FileInfo> = [];
allFiles: Array<FileInfo> = [];
myfile: FileInfo;
name: string;
size: number;
fileTypeid: number;
public uploadAttachment: UploadFile[] = [];
public uploadFile: UploadFile;
public count = 0;
public successCount = 0;
public originalName: string;
public filedlName: string;
subscribers: any = {};
private _filesSet: Set<File>;
public fileRestrictions: FileRestrictions = {
allowedExtensions: ['.xml']
};
public seletedFiles: Array<File>;
_fromValidator: FormGroup;
selectedFiles?: FileList;
configtypes: any = EnumExtension.getNamesAndValues(EnumConfigurationType);
constructor(public systemConfigService: SystemConfigurationService,
public apiService: ApiService, public utilityHandlerService: UntilityHandlerService,
public notificationService: HRMNotificationService, public loadingPanelService: loadingPanelService) {
this.apiService.selectedMenuName="System Configuration"
this.uploadSaveUrl = apiService.base_url + '/filemanager/uploadConfiurationfile';
this.uploadRemoveUrl = apiService.base_url + '/filemanager/uploadConfiurationfile';
// this.systemConfigService.UpdateConfiguration(EnumConfigurationType.Logic);
}
ngOnInit() {
this.loadingPanelService.ShowLoadingPanel = false;
this.createForm();
}
public createForm() {
this._fromValidator = new FormBuilder().group({
filetype: ['', Validators.required],
filerequired: ['', Validators.required],
});
}
//uploadEventHandler(e: UploadEvent) {
// console.log('Upload event: ', e);
// this._kendoFiles = e.files;
// this._filesSet = new Set<File>();
// for (var i = 0; i < this._kendoFiles.length; i++) {
// let rawFile: File = this._kendoFiles[i].rawFile;
// this._filesSet.add(rawFile);
// }
// this.upload(this._filesSet); //manualy post form data
// //e.preventDefault(); //comment this in to see how files sent automatially aren't catched by api controller
//}
download() {
// const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });
// fileSaver.saveAs(data, '');
if (this.fileTypeid == undefined) {
this.notificationService.showWarning("select a configuration type");
return;
}
var filename: string;
if (this.fileTypeid == EnumConfigurationType.Logic) {
filename = "Logic"
}
else if (this.fileTypeid == EnumConfigurationType.Menu) {
filename = "Menu"
}
else if (this.fileTypeid == EnumConfigurationType.UI) {
filename = "UI"
}
else {
this.notificationService.showWarning("select a configuration type.");
return;
}
this.loadingPanelService.ShowLoadingPanel = true;
this.systemConfigService.getConfigXmlFile(this.fileTypeid).subscribe(
(filedata) => {
const data: Blob = new Blob([filedata], { type: 'xml' });
fileSaver.saveAs(data, filename + '.xml');
},
(err) => {
this.loadingPanelService.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
this.loadingPanelService.ShowLoadingPanel = false;
this.notificationService.showSuccess("Data downloded successfully.")
});
}
public upload() {
if (this.fileTypeid == undefined) {
this.notificationService.showWarning("select a configuration type");
return;
}
if (this.selectedFiles.length > 0) {
const file: File | null = this.selectedFiles.item(0);
const formData: FormData = new FormData();
formData.append('confile', file);
formData.append('fileTypeid', String(this.fileTypeid));
this.loadingPanelService.ShowLoadingPanel = true;
this.systemConfigService.uploadConfigFile(formData).subscribe(
(data) => {
},
(err) => {
this.loadingPanelService.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
this.loadingPanelService.ShowLoadingPanel = false;
this.notificationService.showSuccess("Data uploaded successfully.")
});
}
}
successEventHandler1(e: SuccessEvent) {
this.uploadFile = new UploadFile();
if (e.operation == 'upload') {
if (e.response) {
const response1 = e.response.body;
for (let i = 0; i < response1.length; i++) {
this.uploadFile = response1[i];
const date = new Date();
this.uploadFile.UploadDate = new Date(date);
this.uploadAttachment.push(this.uploadFile);
const tempFile: FileInfo = {
uid: this.uploadFile.GeneratedFileName,
name: this.uploadFile.OriginalFileName,
size: 0
};
this.myFiles.push(tempFile);
}
}
}
}
removeEventHandler1(e: RemoveEvent) {
this.filename = e.files[0].name;
e.data = {
attachmentType: e.files[0].name
};
}
errorEventHandler1(e: ErrorEvent) {
const fileNames: string[] = [];
const customeError: any = e;
let count = 0;
for (let i = 0; i < customeError.files.length; i++) {
if (customeError.files[i].size > 512000) {
fileNames[count] = customeError.files[i].name;
count++;
}
}
const file = fileNames.join(',');
if (customeError.response.error.ExceptionMessage != undefined) {
// this.notificationService.showWarning(file + customeError.response.error.ExceptionMessage);
}
}
public getFile(uid: string) {
let tempName = '';
let tempext = '';
for (let i = 0; i < this.uploadAttachment.length; i++) {
if (this.uploadAttachment[i].GeneratedFileName === uid) {
tempName = this.uploadAttachment[i].GeneratedFileName;
tempext = this.uploadAttachment[i].OriginalFileName.split('.').pop();
}
}
const data = {
fileName: tempName + '.' + tempext,
};
let tempBlob: any;
this.apiService.httpPost('filemanager/uploadConfigurationfile/', data)
.subscribe(x => {
for (let i = 0; i < this.uploadAttachment.length; i++) {
if (this.uploadAttachment[i].GeneratedFileName === uid) {
this.uploadAttachment.splice(i, 1);
}
}
for (let i = 0; i < this.myFiles.length; i++) {
if (this.myFiles[i].uid === uid) {
this.myFiles.splice(i, 1);
}
}
},
(error) => {
// this.notificationService.showError(error);
}, () => {
// this.downloadBlob(tempBlob);
});
}
selectFile(event: any): void {
this.selectedFiles = event.target.files;
//if (this.selectedFiles.length > 0) {
// const file: File | null = this.selectedFiles.item(0);
// this.selectedFiles = file;
//}
}
public downloadFile(uid: string): void {
const temporiginalName = '';
let tempName = '';
let tempext = '';
for (let i = 0; i < this.uploadAttachment.length; i++) {
if (this.uploadAttachment[i].GeneratedFileName === uid) {
tempName = this.uploadAttachment[i].GeneratedFileName;
tempext = this.uploadAttachment[i].OriginalFileName.split('.').pop();
this.originalName = this.uploadAttachment[i].OriginalFileName;
}
}
this.filedlName = tempName + '.' + tempext;
const data = {
fileName: tempName + '.' + tempext,
mappingPath: '~/Documents/' + this.filedlName
};
this.subscribers.fileSubscriber = this.apiService.httpPost('download/get-file-type', data).
subscribe(
result => {
// this.contentType = ((result) as any);
},
error => {
// this.notificationService.showError(error);
},
() => {
let tempBlob: any;
this.apiService.httpPostFile('download/get-download-file/', data)
.subscribe(fileData => {
// tempBlob = new Blob([fileData], { type: this.contentType });
},
(error) => {
// this.notificationService.showError(error);
}, () => {
this.downloadBlob(tempBlob);
});
});
}
downloadBlob(data: any): void {
//const blob: Blob = new Blob([data], { type: this.contentType });
//// const fileName: string = this.workOrderBillReceive.UploadAttachment[0].OriginalFileName;
//const fileName: string = this.originalName;
//const objectUrl: string = URL.createObjectURL(blob);
//const a: HTMLAnchorElement = document.createElement('a') as HTMLAnchorElement;
//a.href = objectUrl;
//a.download = fileName;
//document.body.appendChild(a);
//a.click();
//document.body.removeChild(a);
//URL.revokeObjectURL(objectUrl);
}
}