import { Component, OnInit, Input } from '@angular/core'; import { DialogService, Message } from 'primeng/api'; import { AddMessageComponent } from '../popups/add-message/add-message.component'; import { IMessages } from '../../shared/core/IMessages'; import { IMessageType } from '../../shared/core/IMessageType'; import { IMessageStatus } from '../../shared/core/IMessageStatus'; import { ActivityServicesService } from '../../shared/services/activity-services.service'; @Component({ selector: 'app-job-messages', templateUrl: './job-messages.component.html', styleUrls: ['./job-messages.component.css'] }) export class JobMessagesComponent implements OnInit { columns: { field: string; header: string; width: string }[]; phases: any; brands: any; checked = true; // Paginator numberOfRows = 20; // Input @Input() jobPlanId: number; // Internal Messages internalIMessages: IMessages[] = []; // External Messages externalMessages: IMessages[] = []; // Selected Message Types selectedMessageType: IMessageType; MessageTypeList: IMessageType[] = [ { MessageTypeId: 1, Description: 'Any' }, { MessageTypeId: 2, Description: 'Client Messages' }, { MessageTypeId: 3, Description: 'Internal Messages' } ]; // Show by message type showClientMessages: boolean; showInternalMessages: boolean; // Message status messageStatusList: IMessageStatus[] = []; selectedMessageStatus: IMessageStatus; // Message search searchMessage: string; // page sizes pageSizes: { label: string; value: number; }[]; // No data Message noDataMessage: Message[] = []; noInternalMessage: Message[] = []; // No data flag nodataFlagClient = true; nodataFlagInternal = true; constructor(public dialogService: DialogService, private activityServicesService: ActivityServicesService) { this.columns = [ { field: 'cPhase', header: 'Message Types', width: '30%' }, { field: 'cPending', header: 'Subject', width: '10%' }, { field: 'cActioned', header: 'Created', width: '15%' }, { field: 'cComplete', header: 'Updated', width: '10%' }, { field: 'cClosed', header: 'Message Status', width: '10%' }, { field: 'cInternalNotes', header: 'Closed Message', width: '20%' }, ]; this.pageSizes = [ { label: '20 record per page', value: 20 }, { label: '40 record per page', value: 40 }, { label: '100 record per page', value: 100 }]; } ngOnInit() { // No record message // Client this.noDataMessage = []; this.noDataMessage.push({ severity: 'info', summary: 'No Client Messages Found', detail: '' }); // Internal this.noInternalMessage = []; this.noInternalMessage.push({ severity: 'info', summary: 'No Internal Messages Found', detail: '' }); this.getMessagesInternal(this.jobPlanId, 'INTERNAL'); this.getMessagesExternal(this.jobPlanId, 'EXTERNAL'); this.showClientMessages = true; this.showInternalMessages = true; // Get Message Status this.activityServicesService.GetAllMessageStatus().subscribe( data => { this.messageStatusList = data; this.selectedMessageStatus = this.messageStatusList[0]; // console.log('Message Status List'); // console.log(this.messageStatusList); } ); } showAddMessage() { const ref = this.dialogService.open(AddMessageComponent, { header: 'Add Message ', width: '40%' }); } getMessagesInternal(jobPlanId, parentType) { this.activityServicesService.GetAllMessage(jobPlanId, parentType) .subscribe(res => { // console.log('Messages Internal', res); this.internalIMessages = res; // console.log('Messages Internal'); // console.log(this.internalIMessages); if (this.internalIMessages.length > 0) { this.nodataFlagInternal = false; } } , error => { console.log('Error', error); }); } getMessagesExternal(jobPlanId, parentType) { this.activityServicesService.GetAllMessage(jobPlanId, parentType) .subscribe(res => { // console.log('Messages External', res); this.externalMessages = res; // console.log('Messages External'); // console.log(this.externalMessages); if (this.externalMessages.length > 0) { this.nodataFlagClient = false; } } , error => { console.log('Error', error); }); } setExternelMsgDetails(externalMessages: IMessages[]) { this.externalMessages = externalMessages; } // Filter by Message Types FilterByMessageType() { // console.log(this.selectedMessageType); if (this.selectedMessageType.Description === 'Client Messages') { this.showClientMessages = true; this.showInternalMessages = false; } else if (this.selectedMessageType.Description === 'Internal Messages') { this.showClientMessages = false; this.showInternalMessages = true; } else { this.showClientMessages = true; this.showInternalMessages = true; } } // Filter by message status FilterByMessageStatus() { if (this.selectedMessageType !== undefined && this.selectedMessageType.Description === 'Client Messages') { this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.selectedMessageStatus.Description, 'STATUS', 'EXTERNAL') .subscribe( data => { this.externalMessages = data; } ); } else if (this.selectedMessageType !== undefined && this.selectedMessageType.Description === 'Internal Messages') { this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.selectedMessageStatus.Description, 'STATUS', 'INTERNAL') .subscribe( data => { this.internalIMessages = data; } ); } else { this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.selectedMessageStatus.Description, 'STATUS', 'EXTERNAL') .subscribe( data => { this.externalMessages = data; } ); this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.selectedMessageStatus.Description, 'STATUS', 'INTERNAL') .subscribe( data => { this.internalIMessages = data; } ); } } // Search Messages Search() { if (this.selectedMessageType !== undefined && this.selectedMessageType.Description === 'Client Messages') { this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.searchMessage, 'SEARCH', 'EXTERNAL').subscribe( data => { this.externalMessages = data; } ); } else if (this.selectedMessageType !== undefined && this.selectedMessageType.Description === 'Internal Messages') { this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.searchMessage, 'SEARCH', 'INTERNAL').subscribe( data => { this.internalIMessages = data; } ); } else { this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.searchMessage, 'SEARCH', 'EXTERNAL').subscribe( data => { this.externalMessages = data; } ); this.activityServicesService.GetFilteredMessages(this.jobPlanId, this.searchMessage, 'SEARCH', 'INTERNAL').subscribe( data => { this.internalIMessages = data; } ); } } // Grid page size pageSizesChange(e) { // console.log('Page size', e.value); this.numberOfRows = e.value; } }