import { Component, OnInit, Input, EventEmitter, Output, ViewChild, ElementRef } from '@angular/core'; import { UserInfo } from '@ucap-webmessenger/protocol-sync'; import { UserInfoF, UserInfoSS } from '@ucap-webmessenger/protocol-query'; import { FileUploadItem } from '@ucap-webmessenger/api'; import { FormControl } from '@angular/forms'; @Component({ selector: 'ucap-profile-profile', templateUrl: './profile.component.html', styleUrls: ['./profile.component.scss'] }) export class ProfileComponent implements OnInit { @Input() profileImageRoot: string; @Input() isMe: boolean; @Input() isBuddy: boolean; @Input() isFavorit: boolean; @Input() userInfo: UserInfoSS; @Input() myMadn?: string; @Output() openChat = new EventEmitter(); @Output() sendMessage = new EventEmitter(); @Output() sendCall = new EventEmitter(); @Output() toggleFavorit = new EventEmitter<{ userInfo: UserInfoSS; isFavorit: boolean; }>(); @Output() toggleBuddy = new EventEmitter<{ userInfo: UserInfoSS; isBuddy: boolean; }>(); @Output() uploadProfileImage = new EventEmitter(); @ViewChild('profileImageFileInput', { static: false }) profileImageFileInput: ElementRef; userIntroFormControl = new FormControl(''); profileImageFileUploadItem: FileUploadItem; constructor() {} ngOnInit() {} onClickOpenChat() { this.openChat.emit(this.userInfo); } onClickCall(type: string) { let calleeNumber = ''; if (type === 'LINE') { calleeNumber = this.userInfo.lineNumber; } else { calleeNumber = this.userInfo.hpNumber; } this.sendCall.emit(calleeNumber); } onClickSMS() {} onClickVideoConference() {} onClickMessage() { this.sendMessage.emit(this.userInfo); } onToggleFavorit() { this.isFavorit = !this.isFavorit; this.toggleFavorit.emit({ userInfo: this.userInfo, isFavorit: this.isFavorit }); } onClickAddBuddy() { this.toggleBuddy.emit({ userInfo: this.userInfo, isBuddy: true }); } onClickDelBuddy() { this.toggleBuddy.emit({ userInfo: this.userInfo, isBuddy: false }); } onChangeFileInput() { this.profileImageFileUploadItem = FileUploadItem.fromFiles( this.profileImageFileInput.nativeElement.files )[0]; this.uploadProfileImage.emit(this.profileImageFileUploadItem); this.profileImageFileInput.nativeElement.value = ''; } getWorkstatus(userInfo: UserInfoSS): string { let workstatus = ''; if (!!userInfo && !!userInfo.workstatus) { switch (userInfo.workstatus) { case 'V01': workstatus = '오전휴가'; break; case 'V02': workstatus = '오후휴가'; break; case 'V03': workstatus = '종일휴가'; break; case 'V04': workstatus = '장기휴가'; break; } } return workstatus; } getDisabledBtn(type: string): boolean { if (!this.myMadn || this.myMadn.trim().length === 0) { if (type === 'LINE' || type === 'MOBILE') { return true; } } if (type === 'LINE') { if ( !!this.userInfo && !!this.userInfo.lineNumber && this.userInfo.lineNumber.trim().length > 0 ) { return false; } else { return true; } } else if (type === 'MOBILE') { if ( !!this.userInfo && !!this.userInfo.hpNumber && this.userInfo.hpNumber.trim().length > 0 ) { return false; } else { return true; } } else if (type === 'SMS') { if ( !!this.userInfo && !!this.userInfo.hpNumber && this.userInfo.hpNumber.trim().length > 0 ) { return false; } else { return true; } } return true; } }