import { Component, Injector, OnInit, Output, EventEmitter, ViewChild } from '@angular/core'; import { AppComponentBase } from '@shared/common/app-component-base'; import { AppLocalizationService } from '@app/shared/common/localization/app-localization.service'; import { appModuleAnimation } from '@shared/animations/routerTransition'; import { ModalDirective } from 'ngx-bootstrap'; import { MobileAppVersionServiceProxy, CreateMobileVersionInput, MobileVersionListDto, GetMobileOsTypeListItemDto, GetMobileClientCodesListItemDto } from '@shared/service-proxies/service-proxies'; @Component({ selector: 'add-mobile-app-version-modal', templateUrl: './add-mobile-app-version-modal.component.html', animations: [appModuleAnimation()] }) export class AddMobileAppVersionModalComponent extends AppComponentBase implements OnInit { @Output() showLoaderEvent = new EventEmitter(); @Output() modalSaveEvent = new EventEmitter(); @ViewChild('modalDirective', { static: false }) modalDirective: ModalDirective; dialogTitle: string = ""; clientCodes: Array = []; mobileOsTypes: Array = []; selectedClientCode: GetMobileClientCodesListItemDto; selectedMobileOsType: GetMobileOsTypeListItemDto; appVersionNumberValue: string; appVersionCodeValue: string; constructor( injector: Injector, private _mobileAppVersionServiceProxy: MobileAppVersionServiceProxy, private _localizationService: AppLocalizationService ) { super(injector); } ngOnInit(): void { } close(): void { this.modalDirective.hide(); } save(): void { if (this.areInputsOk()) { var data = new CreateMobileVersionInput({ "clientCode": this.selectedClientCode.clientCode, "osName": this.selectedMobileOsType.osName, "minimumVersion": parseInt(this.appVersionNumberValue), "versionName": this.appVersionCodeValue }); this._mobileAppVersionServiceProxy.createOrUpdateMobileVersion(data) .subscribe(result => { this.modalSaveEvent.emit(null); this.close(); }) return } this.close(); } show(record?: MobileVersionListDto): void { this.dialogTitle = this._localizationService.l('CreateDriverAppVersion'); if (record != null) { this.dialogTitle = this._localizationService.l('UpdateDriverAppVersion'); } this.selectedClientCode = null; this.selectedMobileOsType = null; this.appVersionNumberValue = ""; this.appVersionCodeValue = ""; this.getClientCodes(() => { this.getMobileOsTypes(() => { if (record != null) { this.selectedClientCode = this.clientCodes.filter(clientCode => clientCode.clientCode == record.clientCode)[0]; this.selectedMobileOsType = this.mobileOsTypes.filter(mobileOsType => mobileOsType.osName == record.osName)[0]; this.appVersionNumberValue = record.minimumVersion.toString(); this.appVersionCodeValue = record.versionName; } this.modalDirective.show(); }); }); } getClientCodes(onFinish: () => void): void { this._mobileAppVersionServiceProxy.getMobileClientCodes() .subscribe(result => { this.clientCodes = result.items; onFinish(); }); } getMobileOsTypes(onFinish: () => void): void { this._mobileAppVersionServiceProxy.getMobileOsTypes() .subscribe(result => { this.mobileOsTypes = result.items; onFinish(); }); } selectedOsTypeChange($event): void { } areInputsOk(): boolean { var fieldsCheck = [ this.selectedClientCode != null, this.selectedMobileOsType != null, !isNaN(parseInt(this.appVersionNumberValue)), this.appVersionCodeValue != null && this.appVersionCodeValue.length > 0]; for (let fieldCheck of fieldsCheck) { if (!fieldCheck) return false; } return true; } }