lot of changes

This commit is contained in:
Eudes Inácio
2023-10-19 16:51:12 +01:00
parent ff52c56cde
commit 57f51903bc
51 changed files with 43514 additions and 1079 deletions
+2 -1
View File
@@ -14,7 +14,8 @@
</ion-content>
<ion-footer>
<div class="buttons width-100">
<button class="btn-ok-medium" shape="round" (click)="close()">Não</button>
<button class="btn-delete-medium" shape="round" (click)="save()">Sim</button>
<button class="btn-ok-medium" shape="round" (click)="close()">Não</button>
</div>
</ion-footer>
@@ -170,6 +170,7 @@
<app-attendee-modal
*ngIf="showAttendees"
[footer]="false"
[taskType]="taskType"
class="d-flex flex-column height-100"
[adding]="adding"
[taskParticipants]="taskParticipants"
@@ -186,9 +187,10 @@
</ion-content>
<ion-footer>
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="cancelTask()">Cancelar</button>
<button *ngIf="taskType == '0'" class="btn-ok" shape="round" (click)="saveTask()">Concluir</button>
<button *ngIf="taskType == '1'" class="btn-ok" shape="round" (click)="saveTask()">Solicitar</button>
<button *ngIf="taskType == '2'" class="btn-ok" shape="round" (click)="saveTask()">Solicitar</button>
<button class="btn-cancel" shape="round" (click)="cancelTask()">Cancelar</button>
</div>
</ion-footer>
@@ -120,6 +120,7 @@ export class CreateProcessPage implements OnInit {
this.taskType = this.navParams.get('taskAction');
console.log('this.taskType ',this.taskType )
this.postData = new Despacho();
this.participants = this.participants = new Array();
@@ -598,7 +599,8 @@ export class CreateProcessPage implements OnInit {
componentProps: {
adding: this.adding,
taskParticipants: this.taskParticipants,
taskParticipantsCc: this.taskParticipantsCc
taskParticipantsCc: this.taskParticipantsCc,
taskType: this.taskType
},
cssClass: 'modal attendee modal-desktop',
backdropDismiss: false
@@ -351,8 +351,9 @@
</ion-content>
<ion-footer>
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="close()">Cancelar</button>
<button class="btn-ok" shape="round" (click)="saveTask()">Gravar</button>
<button class="btn-cancel" shape="round" (click)="close()">Cancelar</button>
</div>
</ion-footer>
@@ -163,16 +163,17 @@
<div class="d-flex justify-space-between">
<ion-buttons slot="start" (click)="close()">
<button class="btn-cancel" fill="clear" color="#061b52">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end" (click)="close()">
<button class="btn-ok" fill="clear" color="#fff">
<ion-label>Enviar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="start" (click)="close()">
<button class="btn-cancel" fill="clear" color="#061b52">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</div>
</ion-footer>
+1
View File
@@ -3,4 +3,5 @@ export class EventPerson{
Name: string;
IsRequired: boolean;
UserType: string;
IsPR: boolean
}
@@ -361,15 +361,16 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar px-20">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<ion-buttons slot="start">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -315,15 +315,16 @@
</ion-content>
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar px-20">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<ion-buttons slot="start">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -247,17 +247,17 @@ export class ViewEventPage implements OnInit {
header: 'Eliminar evento?',
message: '',
buttons: [
{
text: 'Não',
handler: () => {
// sconsole.log('Let me think');
}
},
{
text: 'Sim',
handler: () => {
this.deleteEvent();
}
},
{
text: 'Não',
handler: () => {
// sconsole.log('Let me think');
}
}
]
}).then(res => {
@@ -84,14 +84,15 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="d-flex">
<ion-buttons class="flex-grow-1" slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons class="flex-grow-1" slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons class="flex-grow-1" slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -5,6 +5,7 @@ import { ContactsService } from 'src/app/services/contacts.service';
import { ThemeService } from 'src/app/services/theme.service'
import { LoginUserRespose } from 'src/app/models/user.model';
import { SessionStore } from 'src/app/store/session.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-attendees',
@@ -25,6 +26,7 @@ export class AttendeesPageModal implements OnInit {
taskParticipantsCc:EventPerson[] = [];
loggeduser: LoginUserRespose;
@Input() loggedAttendSon: boolean;
taskType: any;
constructor(
@@ -32,16 +34,20 @@ export class AttendeesPageModal implements OnInit {
private contactsService: ContactsService,
private navParams: NavParams,
private modalController: ModalController,
public ThemeService: ThemeService) {
public ThemeService: ThemeService,
private router: Router,) {
this.adding = this.navParams.get('adding');
this.taskParticipants = this.navParams.get('taskParticipants');
this.taskParticipantsCc = this.navParams.get('taskParticipantsCc');
this.taskType = this.navParams.get('taskType');
this.loggeduser = SessionStore.user;
}
ngOnInit() {
console.log('Pesquisa de contactos current path1',this.router.url)
this.fetchContacts("");
if(this.taskParticipants == null || this.taskParticipants == undefined){
@@ -149,8 +155,12 @@ export class AttendeesPageModal implements OnInit {
this.contacts = result;
console.log('Attendes Email',this.loggeduser.Email)
let filterLoggedUserEmail = this.contacts.filter(item => item.EmailAddress.toLocaleLowerCase() != this.loggeduser.Email.toLocaleLowerCase())
if(this.taskType == 0 || this.taskType == 1){
filterLoggedUserEmail = this.contacts.filter(item => item.IsPR == false)
}
console.log('Attendes Email', filterLoggedUserEmail)
let filterEmptyEmail = filterLoggedUserEmail.filter(item => item.EmailAddress.toLocaleLowerCase() != "")
this.contacts = filterEmptyEmail;
console.log('Attendes Email', this.contacts)
this.showLoader = false;
@@ -1,7 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { ModalController, PopoverController, ToastController } from '@ionic/angular';
import { ProcessesService } from 'src/app/services/processes.service';
import { momentG } from 'src/plugin/momentG';
import { momentG } from 'src/plugin/momentG';
import { ActivatedRoute } from '@angular/router';
import { DiplomaOptionsPage } from 'src/app/shared/popover/deploma-options/deploma-options.page';
@@ -9,7 +9,7 @@ import { ToastService } from 'src/app/services/toast.service';
import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page';
import { ThemeService } from 'src/app/services/theme.service'
import { RouteService } from 'src/app/services/route.service';
import {HttpErrorHandle } from 'src/app/services/http-error-handle.service';
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
import { AddNotePage } from 'src/app/modals/add-note/add-note.page';
import { DespachoService } from 'src/app/Rules/despacho.service'
import { AttachmentList } from 'src/app/models/Excludetask';
@@ -35,12 +35,13 @@ export class DiplomaAssinarPage implements OnInit {
fulltask: any
intervenientes: any = []
cc: any = [];
attachments:any;
attachments: any;
customDate: any;
caller:string;
caller: string;
mergedArray: any = [];
DraftIds = ""
DraftNames = ""
asDraft = true;
constructor(
private processes: ProcessesService,
@@ -57,10 +58,10 @@ export class DiplomaAssinarPage implements OnInit {
public p: PermissionService,
) {
this.activatedRoute.paramMap.subscribe(params => {
if(params["params"].SerialNumber) {
if (params["params"].SerialNumber) {
this.serialnumber = params["params"].SerialNumber;
}
if(params["params"].caller) {
if (params["params"].caller) {
this.caller = params["params"].caller;
}
});
@@ -91,7 +92,8 @@ export class DiplomaAssinarPage implements OnInit {
showEnviarPendentes: false,
fulltask: this.fulltask,
DraftNames: this.DraftNames,
DraftIds: this.DraftIds
DraftIds: this.DraftIds,
asDraft: this.asDraft
},
translucent: true
@@ -112,7 +114,7 @@ export class DiplomaAssinarPage implements OnInit {
"SerialNumber": res.serialNumber,
"Folio": res.workflowInstanceDataFields.Subject,
"Senders": res.originator.email,
"CreateDate": momentG(new Date(res.taskStartDate),'yyyy-MM-dd HH:mm:ss'),
"CreateDate": momentG(new Date(res.taskStartDate), 'yyyy-MM-dd HH:mm:ss'),
"DocumentURL": res.workflowInstanceDataFields.ViewerRequest,
"Remetente": res.workflowInstanceDataFields.Sender,
"Note": res.workflowInstanceDataFields.TaskMessage || res.workflowInstanceDataFields.Note,
@@ -144,13 +146,13 @@ export class DiplomaAssinarPage implements OnInit {
this.getDocumentPdf(this.fulltask.Documents)
let thedate = new Date(this.task.CreateDate);
this.customDate = this.days[thedate.getDay()]+ ", " + thedate.getDate() +" de " + ( this.months[thedate.getMonth()]);
this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]);
this.processes.GetTaskParticipants(this.task.FolderId).subscribe(users=>{
this.intervenientes = users.filter(user=>{
this.processes.GetTaskParticipants(this.task.FolderId).subscribe(users => {
this.intervenientes = users.filter(user => {
return user.Type == 'I';
});
this.cc = users.filter(user=>{
this.cc = users.filter(user => {
return user.Type == 'CC';
});
@@ -158,20 +160,20 @@ export class DiplomaAssinarPage implements OnInit {
});
this.getDocumentDetails(this.task.FolderId, '361');
}, (error)=>{
}, (error) => {
try {
this.httpErroHandle.httpStatusHandle(error)
this.goBack()
} catch (e) {
window.history.back();
} finally {
} finally {
this.httpErroHandle.httpStatusHandle(error)
}
});
}
async viewDocument({Document, content}) {
async viewDocument({ Document, content }) {
if (Document.content == "") {
const modal = await this.modalController.create({
@@ -197,7 +199,12 @@ export class DiplomaAssinarPage implements OnInit {
component: TinyMCEPage,
componentProps: {
Document,
content
content,
InstanceID: this.task.InstanceID,
FolderId: this.task.FolderID,
DraftIds: this.DraftIds,
OriginalFileName: this.DraftNames,
Serialnumber:this.serialnumber
},
cssClass: 'modal modal-desktop'
});
@@ -208,8 +215,8 @@ export class DiplomaAssinarPage implements OnInit {
}
getDocumentDetails(forlderId:string, applicationId:string) {
this.processes.GetDocumentDetails(forlderId,applicationId).subscribe(res=>{
getDocumentDetails(forlderId: string, applicationId: string) {
this.processes.GetDocumentDetails(forlderId, applicationId).subscribe(res => {
this.attachments = res.Documents;
@@ -239,28 +246,28 @@ export class DiplomaAssinarPage implements OnInit {
await this.processes.CompleteTask(body).toPromise()
this.httpErroHandle.httpsSucessMessagge('Assinado')
} catch (error) {
this.httpErroHandle.httpStatusHandle(error)
this.httpErroHandle.httpStatusHandle(error)
}
finally {}
finally { }
}
async AssinarDraft() {
if (this.asDraft) {
const modal = await this.modalController.create({
component: PopupQuestionPage,
componentProps: {
title: 'Deseja assinar este Diploma?',
/* message: 'Nota: Ao Efetuar esta operação, o tratamento deste diploma não poderá ser realizado a partir da caixa de correspondência' */
},
cssClass: "popup-question discart-expedient-modal",
backdropDismiss: true
});
const modal = await this.modalController.create({
component: PopupQuestionPage,
componentProps: {
title: 'Deseja assinar este Diploma?',
/* message: 'Nota: Ao Efetuar esta operação, o tratamento deste diploma não poderá ser realizado a partir da caixa de correspondência' */
},
cssClass: "popup-question discart-expedient-modal",
backdropDismiss: true
});
modal.onDidDismiss().then(async (res) => {
const data = res.data
if(data == "Yes") {
modal.onDidDismiss().then(async (res) => {
const data = res.data
if (data == "Yes") {
let body = {
"InstanceId": this.task.InstanceID,
"FolderId": this.task.FolderID,
@@ -278,18 +285,22 @@ export class DiplomaAssinarPage implements OnInit {
this.TaskService.loadDiplomas();
this.goBack();
} catch (error) {
this.httpErroHandle.httpStatusHandle(error)
this.httpErroHandle.httpStatusHandle(error)
}
finally {
loader.remove()
}
}
}
}, (error) => {
console.log(error)
});
}, (error) => {
console.log(error)
});
await modal.present();
} else {
this.httpErroHandle.validationMessagge("diplomaAsDraft");
}
await modal.present();
}
async openAddNoteModal(actionName: string) {
@@ -338,7 +349,7 @@ export class DiplomaAssinarPage implements OnInit {
else if (actionName == 'Reexecução') {
/* await this.reexecute(res.data.note, docs);
this.goBack(); */
} else if(actionName == 'Gerar Diploma') {
} else if (actionName == 'Gerar Diploma') {
/* await this.generateDiploma(res.data.note, docs);
this.goBack(); */
}
@@ -382,7 +393,8 @@ export class DiplomaAssinarPage implements OnInit {
taskAction: taskAction,
task: task,
profile: this.profile,
fulltask: this.fulltask
fulltask: this.fulltask,
asDrat: this.asDraft
},
cssClass: classs,
});
@@ -458,34 +470,47 @@ export class DiplomaAssinarPage implements OnInit {
async getDraft(split_stringDraft: string[]) {
this.DraftNames = ""
this.DraftNames = "";
this.DraftIds = "";
for(const strg of split_stringDraft) {
console.log('List of ids', strg)
const resd = await this.processes.GetDraftByID(strg).toPromise()
const draftPromises = split_stringDraft.map(async (strg) => {
console.log('List of ids', strg);
try {
const resd = await this.processes.GetDraftByID(strg).toPromise();
let object = {
"ApplicationId": "",
"Assunto": resd.data.description,
"DocDate": "",
"DocId": resd.data.id,
"DocNumber": "",
"FolderId": "",
"Sender": "",
"SourceDocId": "",
"content": resd.data.content,
"path": resd.data.path,
"ownerId": resd.data.ownerId,
"status": resd.data.status,
let object = {
"ApplicationId": "",
"Assunto": resd.data.description,
"DocDate": "",
"DocId": resd.data.id,
"DocNumber": "",
"FolderId": "",
"Sender": "",
"SourceDocId": "",
"content": resd.data.content,
"path": resd.data.path,
"ownerId": resd.data.ownerId,
"status": resd.data.status,
};
this.mergedArray.push(object);
this.DraftNames += resd.data.description + ";";
this.DraftIds += resd.data.id + ";";
console.log('List of draft', resd);
} catch (error) {
console.log('Error getting draft', error);
}
this.mergedArray.push(object)
this.DraftNames = this.DraftNames + resd.data.description+";"
console.log('List of draff', resd)
});
await Promise.all(draftPromises);
if (this.DraftNames) {
this.DraftNames = this.DraftNames.slice(0, -1);
this.DraftIds = this.DraftIds.slice(0, -1);
} else {
console.log('No draft found.');
this.asDraft = false
}
this.DraftNames = this.DraftNames.slice(0, -1);
this.DraftIds = this.DraftIds.slice(0, -1);
}
}
@@ -314,8 +314,8 @@
</ion-content>
<ion-footer>
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="close()">Cancelar</button>
<button class="btn-ok" shape="round" (click)="saveTask()">Gravar</button>
<button class="btn-cancel" shape="round" (click)="close()">Cancelar</button>
</div>
</ion-footer>
@@ -221,6 +221,7 @@
class="d-flex flex-column height-100 hide-footer"
[adding]="adding"
[footer]="false"
[taskType]="taskType"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
(closeComponent)="closeComponent()"
@@ -235,7 +236,7 @@
</ion-content>
<ion-footer>
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="cancelTask()">Cancelar</button>
<button class="btn-ok" shape="round" (click)="saveTask()">Concluir</button>
<button class="btn-cancel" shape="round" (click)="cancelTask()">Cancelar</button>
</div>
</ion-footer>
@@ -533,7 +533,8 @@ export class ExpedientTaskModalPage implements OnInit {
componentProps: {
adding: this.adding,
taskParticipants: this.taskParticipants,
taskParticipantsCc: this.taskParticipantsCc
taskParticipantsCc: this.taskParticipantsCc,
taskType: this.taskType
},
cssClass: 'attendee modal modal-desktop',
backdropDismiss: false
@@ -88,15 +88,16 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar width-100 justify-space-between d-flex px-20">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -100,14 +100,15 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar width-100">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Criar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -94,14 +94,15 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
+146 -75
View File
@@ -1,9 +1,10 @@
<!-- HEADER-->
<ion-header class="ion-no-border header-main d-md-flex">
<div *ngIf="select" class="btn-close d-none d-lg-flex cursor-pointer font-35-rem" (click)="close()">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "class="icon" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="icon"
src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon"
src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div>
<div class="d-md-flex flex-md-row-reverse flex-grow-1">
@@ -12,14 +13,15 @@
<div class="top-box d-flex ion-justify-content-between pb-10">
<!-- search -->
<div *ngIf="!showAdvanceSearch" class="icon-z icon-most-searched-word-open cursor-pointer" (click)="showHideAdvanceSearch(true)">
<!-- <div *ngIf="!showAdvanceSearch" class="icon-z icon-most-searched-word-open cursor-pointer" (click)="showHideAdvanceSearch(true)">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && type!='Agenda'" src="assets/images/theme/blue/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme != 'default'&& type!='Agenda' " src="assets/images/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
</div>
<div *ngIf="showAdvanceSearch " class="icon-z icon-most-searched-word-open align-md-baseline pl-10 cursor-pointer" (click)="showHideAdvanceSearch(false)" >
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && type!='Agenda' "src="assets/images/advance-search-show-modal.svg" class="icon" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && type!='Agenda'" src="assets/images/theme/gov/advance-search-show-modal.svg" class="icon" slot="end"></ion-icon>
</div>
</div> -->
<div class="profile">
<ion-icon class="icon" src="assets/images/icons-profile.svg"></ion-icon>
@@ -30,37 +32,54 @@
margin: 0px;
padding: 0px;
background: transparent;
color: white;
">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "class="icon font-40-rem" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon font-40-rem" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="icon font-40-rem"
src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon font-40-rem"
src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</button>
</div>
</div>
<!-- Search drop down -->
<div class="advance-search pa-0 pt-10 pr-10 flex-md-grow-1" >
<ion-form [class.d-none]="!showSearchInput">
<div class="d-flex search-input-container ion-justify-content-between" >
<!-- <div class="icon">
<button class="btn-no-color" (click)="basicSearch()">
<ion-icon class="icon-z" slot="end" src="assets/images/theme/gov/search.svg"></ion-icon>
</button>
</div> -->
<div class="input-text d-flex ion-align-items-center pm-10">
<ion-input (keyup.enter)="basicSearch()" [(ngModel)]='searchSubject' class="search-input" type="search" placeholder="Pesquisar assunto"></ion-input>
<div class="advance-search pa-0 pt-10 pr-10 flex-md-grow-1">
<ion-form >
<div class="searchParent">
<div class="d-flex search-input-container ion-justify-content-between searchChild">
<!-- <div class="icon">
<button class="btn-no-color" (click)="basicSearch()">
<ion-icon class="icon-z" slot="end" src="assets/images/theme/gov/search.svg"></ion-icon>
</button>
</div> -->
<div class="input-text d-flex ion-align-items-center pm-10 pl-10">
<ion-input (keyup.enter)="basicSearch()" [(ngModel)]='searchSubject' class="search-input" type="search"
placeholder="Assunto"></ion-input>
</div>
<!-- <div (click)="clearSearchInput()" class="d-flex align-center icon">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="font-25" name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="font-25" name="restaurant-outline" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div> -->
</div>
<!-- <div (click)="clearSearchInput()" class="d-flex align-center icon">
<div (click)="basicSearch()" class="d-flex align-center searchChild pl-10">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="font-25" name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="font-25" name="restaurant-outline" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div> -->
<div (click)="basicSearch()" class="d-flex align-center icon">
<ion-icon class="icon-z" slot="end" src="assets/images/theme/gov/search.svg"></ion-icon>
<ion-icon class="icon-z" slot="end" src="assets/images/theme/gov/icons-search.svg"></ion-icon>
</div>
<div *ngIf="!showAdvanceSearch" class="icon-z icon-most-searched-word-open pl-10 cursor-pointer" (click)="showHideAdvanceSearch(true)">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && type!='Agenda'" src="assets/images/theme/gov/filter_icon_grey.svg" class="icon" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme != 'default'&& type!='Agenda' " src="assets/images/theme/gov/filter_icon_grey.svg" class="icon" slot="end"></ion-icon>
</div>
<div *ngIf="showAdvanceSearch " class="icon-z icon-most-searched-word-open align-md-baseline pl-10 cursor-pointer" (click)="showHideAdvanceSearch(false)" >
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && type!='Agenda' "src="assets/images/theme/gov/filter_icon.svg" class="icon" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && type!='Agenda'" src="assets/images/theme/gov/filter_icon.svg" class="icon" slot="end"></ion-icon>
</div>
</div>
</ion-form>
<!-- -->
@@ -74,25 +93,50 @@
margin-top: -11px;
margin-left: 10px;
">
<input matInput [ngxMatDatetimePicker]="picker1"
placeholder="Data Inicio*"
[(ngModel)]="searchDocumentDate"
>
<mat-datepicker-toggle id="new-inicio" matSuffix [for]="picker1" (click)="clickDate()" ></mat-datepicker-toggle>
<ngx-mat-datetime-picker #picker1 (click)="clickDate()"
[showSpinners]="showSpinners"
[showSeconds]="showSeconds"
[stepHour]="stepHour" [stepMinute]="stepMinute"
[stepSecond]="stepSecond"
[touchUi]="touchUi"
[hideTime]="true"
>
<input matInput [ngxMatDatetimePicker]="picker1" placeholder="{{datePickerPlaceholder}}"
[(ngModel)]="searchDocumentDate">
<mat-datepicker-toggle id="new-inicio" matSuffix [for]="picker1"
(click)="clickDate()"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #picker1 (click)="clickDate()" [showSpinners]="showSpinners"
[showSeconds]="showSeconds" [stepHour]="stepHour" [stepMinute]="stepMinute" [stepSecond]="stepSecond"
[touchUi]="touchUi" [hideTime]="true">
</ngx-mat-datetime-picker>
</mat-form-field>
<div class="icon cursor-pointer" (click)="clearInputDocumentDate()">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " name="restaurant-outline"
src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline"
src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div>
</div>
</li>
<li *ngIf="showAdvanceSearch" class="d-flex date-container ion-justify-content-between">
<div *ngIf="checkDateEnd" class="icon-mer icon">
<ion-icon name="restaurant-outline" src="assets/images/icons-advance-search-document.svg"></ion-icon>
</div>
<div *ngIf="checkDateEnd" class="input-container d-flex flex-grow-1 justify-center align-center materia-top">
<mat-form-field appearance="none" class="date-hour-picker" (click)="clickDate()" style="
margin-top: -11px;
margin-left: 10px;
">
<input matInput [ngxMatDatetimePicker]="picker2" placeholder="Data Fim*"
[(ngModel)]="searchDocumentDateEnd">
<mat-datepicker-toggle id="new-inicio" matSuffix [for]="picker2"
(click)="clickDate()"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #picker2 (click)="clickDate()" [showSpinners]="showSpinners"
[showSeconds]="showSeconds" [stepHour]="stepHour" [stepMinute]="stepMinute" [stepSecond]="stepSecond"
[touchUi]="touchUi" [hideTime]="true">
</ngx-mat-datetime-picker>
</mat-form-field>
<div class="icon cursor-pointer" (click)="clearInputDocumentDate()">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " name="restaurant-outline"
src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline"
src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div>
</div>
@@ -103,10 +147,13 @@
<ion-icon name="restaurant-outline" src="assets/images/icons-advance-search-sender.svg"></ion-icon>
</div>
<div *ngIf="checkRoutPublication" class="input-container d-flex ion-align-items-center">
<ion-input [(ngModel)]='searchSenderdescription' class="search-input cursor-pointer" (click)="openAdvanceSearchSelection()" type="search" placeholder="Remetentes"></ion-input>
<div class="icon cursor-pointer" (click)="clearInputRemetente()" >
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
<ion-input [(ngModel)]='searchSenderdescription' class="search-input cursor-pointer"
(click)="openAdvanceSearchSelection()" type="search" placeholder="Remetentes"></ion-input>
<div class="icon cursor-pointer" (click)="clearInputRemetente()">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " name="restaurant-outline"
src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline"
src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div>
</div>
</li>
@@ -116,30 +163,34 @@
<ion-icon name="restaurant-outline" src="assets/images/icons-arrow-arrow-down-25-copy.svg"></ion-icon>
</div>
<div *ngIf="checkRoutPublication" class="input-container d-flex ion-align-items-center">
<ion-input [(ngModel)]='searchOrganicEntiryDescription' class="search-input custom-checkbox" type="search" placeholder="Entidade Orgânica" (click)="openOrganicEntitySelection()"></ion-input>
<div class="icon cursor-pointer" (click)="clearInputOrganicEntity()" >
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
<ion-input [(ngModel)]='searchOrganicEntiryDescription' class="search-input custom-checkbox" type="search"
placeholder="Entidade Orgânica" (click)="openOrganicEntitySelection()"></ion-input>
<div class="icon cursor-pointer" (click)="clearInputOrganicEntity()">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " name="restaurant-outline"
src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline"
src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div>
</div>
</li>
</div>
<!-- search result categories-->
<div class="options flex-md-grow-1 " *ngIf="showDocuments"
style="border-bottom: 1px solid #f3f3f3;width: unset"
>
<div class="options flex-md-grow-1 " *ngIf="showDocuments" style="border-bottom: 1px solid #f3f3f3;width: unset">
<div class="container ">
<div class="d-flex overflow-x-auto">
<!-- SLIDE -->
<div class="d-flex py-10" style="width:0px" [ngClass]="{'active-category': TodosCategory}" class="button cursor-pointer" (click)="noFilter()">
<div class="d-flex py-10" style="width:0px" [ngClass]="{'active-category': TodosCategory}"
class="button cursor-pointer" (click)="noFilter()">
<span>Todos</span>
<ion-label class="label">{{ searchDocuments.length }}</ion-label>
</div>
<div *ngFor="let category of searchCategories; index as i;" class="d-flex py-10" style="width:0px" [ngClass]="{'active-category': category.Active}" class="button cursor-pointer" (click)="activeCategoty(i); filterDocList(category.Name)">
<div *ngFor="let category of searchCategories; index as i;" class="d-flex py-10" style="width:0px"
[ngClass]="{'active-category': category.Active}" class="button cursor-pointer"
(click)="activeCategoty(i); filterDocList(category.Name)">
<span>{{ category.Name }}</span>
<ion-label class="label">{{ category.Qtd }}</ion-label>
@@ -148,10 +199,12 @@
</div>
<div class="pl-10" >
<button class="icon-z icon-most-searched-word-open cursor-pointer" ion-button icon-only >
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/theme/blue/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme != 'default' " src="assets/images/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
<div class="pl-10">
<button class="icon-z icon-most-searched-word-open cursor-pointer" ion-button icon-only>
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "
src="assets/images/theme/blue/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme != 'default' "
src="assets/images/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
</button>
</div>
@@ -169,7 +222,7 @@
<div class="height-100">
<div class="d-flex seach-wrapper height-100 flex-row justify-space-between">
<div class="d-flex height-100 overflow-y-auto flex-1" *ngIf="!showDocuments || windowWidth >= 1024"
<div class="d-flex height-100 overflow-y-auto flex-1" *ngIf="!showDocuments || windowWidth >= 1024"
style="border-right: 1px solid #ddd7d7;">
<!-- most searched word-->
@@ -180,11 +233,11 @@
</div>
</div>
<div class=" height-100 overflow-y-auto flex-1" *ngIf="showDocuments">
<div class=" height-100 overflow-y-auto flex-1" *ngIf="showDocuments">
<div>
<!-- search result document-->
<div class="search-result" >
<div class="search-result">
<div class="header">
<div class="d-flex ion-justify-content-between ion-align-items-center">
<div class="d-flex sort-by ion-justify-content-center">
@@ -195,36 +248,54 @@
</p>
</div>
<div>
<div *ngIf="ordinance == 'old'" (click)="reorderList('recent')">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-arrow-arrow-up.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/images/theme/gov/icons-arrow-arrow-up.svg"></ion-icon>
<div *ngIf="ordinance == 'old'" (click)="reorderList('recent')">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "
src="assets/images/icons-arrow-arrow-up.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' "
src="assets/images/theme/gov/icons-arrow-arrow-up.svg"></ion-icon>
</div>
<div *ngIf="ordinance == 'recent'" (click)="reorderList('old')">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-arrow-arrow-down-25.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/images/theme/gov/icons-arrow-arrow-down.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "
src="assets/images/icons-arrow-arrow-down-25.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' "
src="assets/images/theme/gov/icons-arrow-arrow-down.svg"></ion-icon>
</div>
</div>
</div>
</div>
<ul>
<li *ngFor="let searchDocument of showSearchDocuments" (click)="viewDetail( searchDocument); selectItem(searchDocument)" class="d-flex cursor-pointer">
<li *ngFor="let searchDocument of showSearchDocuments"
(click)="viewDetail( searchDocument); selectItem(searchDocument)" class="d-flex cursor-pointer">
<div class="icon">
<ion-icon *ngIf="itemIcons() == 'AccoesPresidenciais & ArquivoDespachoElect' && ThemeService.currentTheme == 'default' " src="assets/images/icons-search-document.svg"></ion-icon>
<ion-icon *ngIf="itemIcons() == 'AccoesPresidenciais & ArquivoDespachoElect' && ThemeService.currentTheme == 'gov'" src="assets/images/theme/gov/icons-search-document.svg"></ion-icon>
<ion-icon
*ngIf="itemIcons() == 'AccoesPresidenciais & ArquivoDespachoElect' && ThemeService.currentTheme == 'default' "
src="assets/images/icons-search-document.svg"></ion-icon>
<ion-icon
*ngIf="itemIcons() == 'AccoesPresidenciais & ArquivoDespachoElect' && ThemeService.currentTheme == 'gov'"
src="assets/images/theme/gov/icons-search-document.svg"></ion-icon>
<ion-icon *ngIf="itemIcons() == 'Agenda' " src="assets/images/icons-default-agenda.svg"></ion-icon>
<ion-icon *ngIf="itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Publicações'" src="assets/images/icons-viagem.svg"></ion-icon>
<ion-icon *ngIf="itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Publicações'"
src="assets/images/icons-viagem.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Acções' " slot="end" src='assets/images/theme/gov/icons-nav-actions.svg'></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' && itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Acções' " slot="end" src='assets/images/theme/{{ThemeService.currentTheme}}/icons-nav-actions.svg'></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'default' && itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Acções' " slot="end" src='assets/images/icons-nav-actions.svg'></ion-icon>
<ion-icon
*ngIf="ThemeService.currentTheme == 'gov' && itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Acções' "
slot="end" src='assets/images/theme/gov/icons-nav-actions.svg'></ion-icon>
<ion-icon
*ngIf="ThemeService.currentTheme == 'doneIt' && itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Acções' "
slot="end" src='assets/images/theme/{{ThemeService.currentTheme}}/icons-nav-actions.svg'></ion-icon>
<ion-icon
*ngIf="ThemeService.currentTheme == 'default' && itemIcons() == 'AccoesPresidenciais' && searchDocument.DocTypeDesc == 'Acções' "
slot="end" src='assets/images/icons-nav-actions.svg'></ion-icon>
</div>
<div class="content ion-align-items-center">
<div class="d-flex ion-justify-content-between ">
<span class="result-name">{{ searchDocument.Assunto}}</span>
<span class="app-name" *ngIf="itemIcons() == 'AccoesPresidenciais & ArquivoDespachoElect' || itemIcons() == 'Correspondencia' ">{{ searchDocument.appName}}</span>
<span class="app-name"
*ngIf="itemIcons() == 'AccoesPresidenciais & ArquivoDespachoElect' || itemIcons() == 'Correspondencia' ">{{
searchDocument.appName}}</span>
</div>
<div class="d-flex ion-justify-content-between ">
<span class="organic-entity">{{ searchDocument.EntidadeOrganicaNome }}</span>
@@ -245,4 +316,4 @@
</div>
</div>
</ion-content>
</ion-content>
+69 -72
View File
@@ -1,20 +1,21 @@
@import '~src/function.scss';
@import "~src/function.scss";
.top-box{
.top-box {
display: flex;
align-content: center;
align-items: center;
justify-content: center;
flex-direction: row-reverse;
}
.header-main{
.header-main {
padding: 5px 18px;
padding-bottom: 2px;
padding-top: 25px;
ion-form{
ion-form {
width: 100%;
padding-right: 10px;
}
.btn-modal-dismiss{
.btn-modal-dismiss {
display: flex;
width: 50px !important;
height: fit-content;
@@ -24,16 +25,16 @@
margin-top: 5px !important;
align-content: center;
align-items: center;
}
.ion-align-content-center{
.ion-align-content-center {
align-content: center;
}
.search-input-container{
.search-input-container {
width: 100%;
background-color: white;
border-radius: 27.5px;
border: solid 1px #ebebeb;
.icon{
.icon {
color: #797979;
width: rem(45);
height: rem(45);
@@ -42,38 +43,45 @@
font-size: rem(25);
align-items: center;
}
.input-text{
.input-text {
width: 100%;
}
.icon-z{
.icon-z {
width: 20px;
}
}
.icon-z{
.icon-z {
display: flex;
justify-content: center;
align-items: center;
font-size: rem(45);
}
.profile{
.profile {
display: none;
font-size: rem(45);
}
}
ion-slide{
padding-top: 5px
.searchParent {
display: flex;
justify-content: center;
}
.searchChild {
display: inline !important;
}
ion-slide {
padding-top: 5px;
}
// search result type
.options{
.options {
max-width: 900px;
margin-top: rem(10);
.container{
.d-flex{
.container {
.d-flex {
width: 100%;
.button{
.button {
min-width: 116px;
border: solid 1px #e9e9e9;
margin: 0px rem(5);
@@ -84,15 +92,15 @@ ion-slide{
flex-wrap: wrap;
justify-content: center;
align-items: center;
span{
span {
padding: 0px;
margin: 0px;
font-family: Roboto;
color: var(--title-text-color);;
color: var(--title-text-color);
font-size: rem(15);
text-align: center;
}
.label{
.label {
width: 100%;
font-family: Roboto;
font-size: rem(13);
@@ -102,84 +110,80 @@ ion-slide{
}
border-radius: 15px;
}
.active-category{
.active-category {
background-color: #42b9fe;
color: white;
span{
span {
color: white;
}
.label{
.label {
color: white;
}
}
}
.icon{
.icon {
display: none;
width: rem(45);
height: rem(45);
justify-content: center;
align-items: center;
ion-icon{
ion-icon {
width: rem(25);
}
}
}
}
.d-flex{
.d-flex {
display: flex;
}
// search result
.search-result{
.search-result {
width: 100%;
border-bottom: unset;
padding: 0px 20px;
.header{
/* border-top: 1px solid #ebebeb; */
.sort-by{
.header {
/* border-top: 1px solid #ebebeb; */
.sort-by {
width: 100%;
.order{
.order {
font-family: Roboto;
font-size: rem(13);
font-weight: 300;
color:#797979
color: #797979;
}
.order-labal{
.order-labal {
font-family: Roboto;
font-size: rem(15);
color: var(--title-text-color);
margin-left: 20px;
}
}
ion-icon{
ion-icon {
font-size: rem(25);
}
}
ul{
ul {
padding: 0px;
margin: 0px;
li{
li {
padding-top: 8px;
padding-bottom: 8px;
border-top: 1px solid #ebebeb;
display: flex;
align-items: center;
.icon{
.icon {
font-size: rem(35);
align-items: center;
display: flex;
}
.content{
.content {
width: 100%;
margin-left: 10px;
.result-name{
.result-name {
margin: 0px;
width: 100%;
font-family: Roboto;
@@ -187,13 +191,13 @@ ion-slide{
color: var(--title-text-color);
line-height: 1.67;
}
span{
span {
font-family: Roboto;
font-size: rem(13);
font-weight: 300;
color: #797979;
}
.app-name{
.app-name {
background: var(--font-awesome);
border-radius: 18px;
text-align: center;
@@ -209,10 +213,9 @@ ion-slide{
-ms-border-radius: 18px;
-o-border-radius: 18px;
}
span.documente-date{
span.documente-date {
}
span.organic-entity{
span.organic-entity {
width: 100%;
}
}
@@ -220,10 +223,10 @@ ion-slide{
}
}
// most searched word
.most-searched-words{
.most-searched-words {
width: 100% !important;
//min-width: 441px;
p.title{
p.title {
width: 100%;
height: 24px;
font-family: Roboto;
@@ -233,26 +236,23 @@ ion-slide{
margin-bottom: 25px;
}
.most-searched-word-container{
.most-searched-word-container {
height: 400px;
}
}
@media only screen and (min-width: 1024px) {
.advance-search{
.advance-search {
max-width: 47%;
}
}
/* Advance search */
.advance-search{
.advance-search {
padding: 20px 20px;
padding-top: 14px;
.icon{
.icon {
color: #797979;
width: rem(45);
height: rem(45);
@@ -261,35 +261,32 @@ ion-slide{
font-size: rem(25);
align-items: center;
}
.input-container{
.input-container {
margin-bottom: 15px;
width: 100%;
border-radius: 5px;
border: solid 1px #ebebeb;
}
.date-container{
.icon-mer{
.date-container {
.icon-mer {
margin-right: 10px;
}
}
ion-datetime{
ion-datetime {
width: 100%;
}
.subject-container{
.subject-container {
}
}
.loader{
.loader {
position: absolute;
margin-top: -14px;
width: calc(100% - 39px);
}
.swiper-container{
.swiper-container {
width: 100%;
}
}
+24 -12
View File
@@ -52,6 +52,7 @@ export class SearchPage implements OnInit {
// https params
searchSubject: string;
searchDocumentDate: string;
searchDocumentDateEnd: string;
searchSenderdescription: string;
searchSenderId: number;
searchOrganicEntiryDescription: string;
@@ -90,9 +91,12 @@ export class SearchPage implements OnInit {
showSearchInput = false
checkRoutPublication: boolean;
checkDateEnd: boolean;
datePickerPlaceholder: string;
@ViewChild('picker1') picker1: any;
checkAgenda: boolean;
constructor(private modalController: ModalController,
private search: SearchService,
@@ -199,9 +203,13 @@ export class SearchPage implements OnInit {
if(this.currentPath.includes('/home/publications')) {
this.checkRoutPublication = false;
this.checkDateEnd = true;
this.datePickerPlaceholder = 'Data Inicio*'
console.log(this.checkRoutPublication)
} else {
this.checkRoutPublication = true;
this.checkDateEnd = false;
this.datePickerPlaceholder = 'Data*'
console.log(this.checkRoutPublication)
}
@@ -346,10 +354,14 @@ export class SearchPage implements OnInit {
basicSearch() {
let searchDocumentDate
let searchDocumentDateEnd;
if (this.searchDocumentDate) {
searchDocumentDate = momentG(new Date(this.searchDocumentDate), 'yyyy-MM-dd')
}
if (this.searchDocumentDateEnd) {
searchDocumentDateEnd = momentG(new Date(this.searchDocumentDate), 'yyyy-MM-dd')
}
searchDocumentDate;
@@ -361,13 +373,13 @@ export class SearchPage implements OnInit {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
} else {
this.showLoader = true;
this.search.basicSearch(this.searchSubject, searchDocumentDate, this.searchSenderId
this.search.basicSearch(this.searchSubject, searchDocumentDate,searchDocumentDateEnd, this.searchSenderId
, this.searchOrganicEntiryCode, this.searchDocTypeId, '0').subscribe(res => {
if (!res.Categories.length) {
@@ -412,7 +424,7 @@ export class SearchPage implements OnInit {
if (this.select) {
let counter = 0;
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
@@ -462,7 +474,7 @@ export class SearchPage implements OnInit {
});
}
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
@@ -515,13 +527,13 @@ export class SearchPage implements OnInit {
} else {
let counter = 0;
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
} else {
this.showLoader = true;
this.search.basicSearch(this.searchSubject, searchDocumentDate, this.searchSenderId
this.search.basicSearch(this.searchSubject, searchDocumentDate,searchDocumentDateEnd, this.searchSenderId
, this.searchOrganicEntiryCode, this.searchDocTypeId, '8').subscribe(res => {
if (!res.Categories.length) {
this.searchResult = "Não encontramos o que procura";
@@ -564,7 +576,7 @@ export class SearchPage implements OnInit {
}
});
}
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null&& searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
@@ -626,7 +638,7 @@ export class SearchPage implements OnInit {
if (this.select) {
let counter = 0;
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
@@ -673,13 +685,13 @@ export class SearchPage implements OnInit {
} else {
let counter = 0;
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
} else {
this.showLoader = true;
this.search.basicSearch(this.searchSubject, searchDocumentDate, this.searchSenderId
this.search.basicSearch(this.searchSubject, searchDocumentDate, searchDocumentDateEnd, this.searchSenderId
, this.searchOrganicEntiryCode, this.searchDocTypeId, '8').subscribe(res => {
if (!res.Categories.length) {
this.searchResult = "Não encontramos o que procura";
@@ -778,13 +790,13 @@ export class SearchPage implements OnInit {
// });
if (this.searchSubject.trim() == "" && searchDocumentDate == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
if (this.searchSubject.trim() == "" && searchDocumentDate == null && searchDocumentDateEnd == null && this.searchSenderId == null && this.searchOrganicEntiryCode == null && this.searchDocTypeId == null) {
this.searchResult = "Campo de pesquisa esta vazio, entre com assunto que deseja pesquisa";
console.log('enter text');
} else {
this.showLoader = true;
this.search.basicSearchPublication(this.searchSubject, searchDocumentDate, this.searchSenderId
this.search.basicSearchPublication(this.searchSubject, searchDocumentDate,searchDocumentDateEnd, this.searchSenderId
, this.searchOrganicEntiryCode, this.searchDocTypeId, '386').subscribe(res => {
if (!res.Categories.length) {
this.searchResult = "Não encontramos o que procura";
+1 -1
View File
@@ -98,7 +98,7 @@ export class AuthService {
}
} catch (error) {
this.errorHandler.handleError(error);
this.httpErroHandle.httpStatusHandle(error)
this.httpErroHandle.loginHttpStatusHandle(error)
captureException(error);
} finally {
return response
@@ -78,16 +78,17 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="d-flex">
<ion-buttons class="flex-grow-1" slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
<ion-icon name="close" slot="start"></ion-icon>
</button>
</ion-buttons>
<ion-buttons class="flex-grow-1" slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
<ion-icon name="checkmark" slot="start"></ion-icon>
</button>
</ion-buttons>
<ion-buttons class="flex-grow-1" slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
<ion-icon name="close" slot="start"></ion-icon>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -5,6 +5,7 @@ import { ContactsService } from 'src/app/services/contacts.service';
import { ThemeService } from 'src/app/services/theme.service'
import { LoginUserRespose } from 'src/app/models/user.model';
import { SessionStore } from 'src/app/store/session.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-attendees',
@@ -25,22 +26,27 @@ export class AttendeesPageModal implements OnInit {
taskParticipantsCc:EventPerson[] = [];
loggeduser: LoginUserRespose;
@Input() loggedAttendSon: boolean;
taskType: any;
constructor(
private modalCtrl: ModalController,
private contactsService: ContactsService,
private navParams: NavParams,
private modalController: ModalController,
public ThemeService: ThemeService) {
public ThemeService: ThemeService,
private router: Router,) {
this.adding = this.navParams.get('adding');
this.taskParticipants = this.navParams.get('taskParticipants');
this.taskParticipantsCc = this.navParams.get('taskParticipantsCc');
this.taskType = this.navParams.get('taskType');
this.loggeduser = SessionStore.user;
}
ngOnInit() {
console.log('Pesquisa de contactos current path2',this.router.url)
this.fetchContacts("");
if(this.taskParticipants == null || this.taskParticipants == undefined){
@@ -13,6 +13,44 @@ export class HttpErrorHandle {
) { }
async httpStatusHandle(error) {
switch (error.status
) {
case 0:
const result = await this.backgroundService.offline()
if(result) {
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
} else {
}
break;
case 400:
this.toastService._badRequest('Lamentamos, mas houve um problema com sua solicitação. Por favor, tente novamente')
break;
case 401:
this.toastService._badRequest('Lamento, parece que não tem acesso a essas informações. Entre em contacto com o administrador.');
break;
case 403:
this.toastService._badRequest('Lamentamos, você não tem permissão para acessar este serviço.')
break;
case 404:
this.toastService._badRequest('Lamentamos, não encontramos o que procura.')
break;
case 500:
this.toastService._badRequest('Lamentamos, mas houve um erro interno do servidor. Por favor, tente novamente mais tarde.')
break;
case 502:
this.toastService._badRequest('Lamentamos, houve um problema com o servidor. Por favor, tente novamente mais tarde.')
break;
case 503:
this.toastService._badRequest('Lamentamos, o serviço está indisponível no momento. Por favor, tente novamente mais tarde.')
break
default:
break;
}
}
async loginHttpStatusHandle(error) {
switch (error.status
) {
case 0:
@@ -50,6 +88,18 @@ export class HttpErrorHandle {
}
}
validationMessagge(service: string, callback?: any) {
switch (service) {
case 'diplomaAsDraft':
this.toastService._badRequest('Este diploma não contem um draft para ser assinado!')
break;
default:
this.toastService._badRequest('')
break;
}
}
httpsSucessMessagge(service: string, callback?: any) {
switch (service) {
case 'new event':
@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { Platform } from '@ionic/angular';
import { CapacitorConfig } from '@capacitor/cli';
import { LocalNotifications, LocalNotificationSchema } from '@capacitor/local-notifications';
/* import { LocalNotifications, LocalNotificationSchema } from '@capacitor/local-notifications'; */
@Injectable({
+6 -4
View File
@@ -42,7 +42,7 @@ export class SearchService {
}
basicSearch(subject:string, date:string = null, sender:number = null, organicEntity:number = null, docTypeId:string = null, applicationType:string): Observable<EventSearch>{
basicSearch(subject:string, date:string = null, dateend:string = null, sender:number = null, organicEntity:number = null, docTypeId:string = null, applicationType:string): Observable<EventSearch>{
// Endpoint
const geturl = environment.apiURL + 'search';
// store params
@@ -51,7 +51,8 @@ export class SearchService {
params = params.set("assunto", subject);
params = params.set("data", date);
params = params.set("StartDate", date);
params = params.set("EndDate", dateend);
params = params.set("remetente", sender);
params = params.set("entidadeOrganica", organicEntity);
params = params.set("docTypeId", docTypeId);
@@ -67,7 +68,7 @@ export class SearchService {
}
basicSearchPublication(subject:string, date:string = null, sender:number = null, organicEntity:number = null, docTypeId:string = null, applicationType:string): Observable<EventSearch>{
basicSearchPublication(subject:string, date:string = null, dateEnd:string = null, sender:number = null, organicEntity:number = null, docTypeId:string = null, applicationType:string): Observable<EventSearch>{
// Endpoint
const geturl = environment.apiURL + 'search';
// store params
@@ -76,7 +77,8 @@ export class SearchService {
params = params.set("assunto", subject);
params = params.set("data", date);
params = params.set("StartDate", date);
params = params.set("EndDate", dateEnd);
params = params.set("remetente", sender);
params = params.set("entidadeOrganica", organicEntity);
params = params.set("docTypeId", docTypeId);
@@ -371,7 +371,7 @@
<ion-footer class="background-whit">
<div class="buttons">
<button class="btn-cancel cursor-pointer" shape="round" (click)="close()">Cancelar</button>
<button class="btn-ok cursor-pointer" shape="round" (click)="gravasAction()">Gravar</button>
<button class="btn-cancel cursor-pointer" shape="round" (click)="close()">Cancelar</button>
</div>
</ion-footer>
@@ -316,15 +316,15 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="width-100 d-flex justify-space-between px-20">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-title></ion-title>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-title></ion-title>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -343,17 +343,19 @@
</ion-content>
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-title></ion-title>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-title></ion-title>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<!-- <app-new-event
[loggedAttend]="loggedAttend"
@@ -171,16 +171,16 @@ export class ViewEventPage implements OnInit {
header: 'Eliminar evento?',
message: '',
buttons: [
{
text: 'Não',
handler: () => {
}
},
{
text: 'Sim',
handler: () => {
this.deleteEvent();
}
},
{
text: 'Não',
handler: () => {
}
}
]
}).then(res => {
@@ -81,14 +81,14 @@
<ion-footer class="ion-no-border" *ngIf="footer" >
<ion-toolbar class="width-100 d-flex justify-space-between px-20">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -8,6 +8,7 @@ import { ViewChild } from '@angular/core';
import { Searchbar } from 'ionic-angular';
import { LoginUserRespose } from 'src/app/models/user.model';
import { SessionStore } from 'src/app/store/session.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-attendee-modal',
@@ -31,8 +32,8 @@ export class AttendeePage implements OnInit {
@Output() dynamicSetIntervenient = new EventEmitter<any>();
@Input() taskParticipants:EventPerson[] = [];
@Input() taskParticipantsCc:EventPerson[] = [];
@Input() taskParticipants: EventPerson[] = [];
@Input() taskParticipantsCc: EventPerson[] = [];
@Input() loggedAttendSon: boolean;
@Input() footer: boolean;
@@ -40,49 +41,67 @@ export class AttendeePage implements OnInit {
@Input() selectLogUser: boolean = true;
@ViewChild('Searchbar') searchbar: Searchbar;
@Input() taskType: any;
LtaskParticipants: EventPerson[] = [];
LtaskParticipantsCc: EventPerson[] = [];
loggeduser: LoginUserRespose;
listOfNotAllowdRoute = ['/home/gabinete-digital/despachos/', ]
constructor(
private modalCtrl: ModalController,
private modalCtrl: ModalController,
private contactsService: ContactsService,
public ThemeService: ThemeService ) {
public ThemeService: ThemeService,
private router: Router,) {
this.LtaskParticipants = removeDuplicate(this.taskParticipants);
this.LtaskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
this.loggeduser = SessionStore.user;
this.LtaskParticipants = removeDuplicate(this.taskParticipants);
this.LtaskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
this.loggeduser = SessionStore.user;
}
ngOnChanges() {
this.LtaskParticipants = removeDuplicate(this.taskParticipants);
this.LtaskParticipants = removeDuplicate(this.taskParticipants);
this.LtaskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
console.log('PARTE PARTE',this.loggedAttendSon)
console.log('PARTE PARTE', this.loggedAttendSon)
}
currentPath = window.location.pathname;
@Input() adding: "intervenient" | "CC";
ngOnInit() {
console.log('TASK TYPE',this.taskType);
console.log('Pesquisa de contactos current path3', this.router.url)
setTimeout(() => {
console.log('PARTE PARTE',this.loggedAttendSon)
});
console.log('PARTE PARTE', this.loggedAttendSon)
});
this.fetchContacts("");
if(this.LtaskParticipants == null || this.LtaskParticipants == undefined) {
if (this.LtaskParticipants == null || this.LtaskParticipants == undefined) {
this.LtaskParticipants = [];
}
if(this.LtaskParticipantsCc == null || this.LtaskParticipantsCc == undefined) {
if (this.LtaskParticipantsCc == null || this.LtaskParticipantsCc == undefined) {
this.LtaskParticipantsCc = [];
}
}
removeIdfromRoute(route: string) {
let lastIndex: number = route.lastIndexOf('/');
if (lastIndex !== -1) {
let modifiedString: string = route.slice(0, lastIndex + 1);
console.log(modifiedString);
} else {
console.log("No '/' found in the string.");
}
}
save() {
this.setIntervenient.emit(removeDuplicate(this.LtaskParticipants));
@@ -94,10 +113,10 @@ export class AttendeePage implements OnInit {
setContactWithClose() {
if(this.currentPath == '/home/gabinete-digital') {
if (this.currentPath == '/home/gabinete-digital') {
this.setIntervenient.emit(this.LtaskParticipants);
this.setIntervenientCC.emit(this.LtaskParticipantsCc);
}
}
this.dynamicSetIntervenient.emit({
taskParticipants: this.LtaskParticipants,
@@ -108,19 +127,19 @@ export class AttendeePage implements OnInit {
async selectContact(itm: EventPerson) {
if(this.adding == "intervenient") {
if (this.adding == "intervenient") {
itm.IsRequired = true;
this.LtaskParticipants.push(itm);
} else if (this.adding == "CC") {
itm.IsRequired = false;
this.LtaskParticipantsCc.push(itm);
} else {
//
}
// run only in gabinete digital
this.setContactWithClose();
@@ -136,115 +155,116 @@ export class AttendeePage implements OnInit {
filterSearchList(itm: EventPerson): boolean {
const result = this.LtaskParticipants.concat(this.LtaskParticipantsCc).find((contact, index)=>{
const result = this.LtaskParticipants.concat(this.LtaskParticipantsCc).find((contact, index) => {
if(this.checkStringNull(contact.Name) == this.checkStringNull(itm.Name) && this.checkStringNull(contact.EmailAddress) == this.checkStringNull(itm.EmailAddress)){
if (this.checkStringNull(contact.Name) == this.checkStringNull(itm.Name) && this.checkStringNull(contact.EmailAddress) == this.checkStringNull(itm.EmailAddress)) {
index = index;
return contact;
}
});
// if to show
if(undefined != result){
if (undefined != result) {
return false;
}
const result2 = this.LtaskParticipantsCc.find((contact, index)=>{
if(this.checkStringNull(contact.Name) == itm.Name && this.checkStringNull(contact.EmailAddress) == this.checkStringNull(itm.EmailAddress)){
const result2 = this.LtaskParticipantsCc.find((contact, index) => {
if (this.checkStringNull(contact.Name) == itm.Name && this.checkStringNull(contact.EmailAddress) == this.checkStringNull(itm.EmailAddress)) {
index = index;
return contact;
}
});
// if to show
if(undefined != result2) {
if (undefined != result2) {
return false;
}
// don't show
return true;
}
remove(itm: EventPerson) {
if(this.adding == "intervenient"){
if (this.adding == "intervenient") {
this.LtaskParticipants = this.LtaskParticipants.filter((contact, index) =>{
this.LtaskParticipants = this.LtaskParticipants.filter((contact, index) => {
if(contact.Name.toLocaleLowerCase() != itm.Name.toLocaleLowerCase() && contact.EmailAddress.toLocaleLowerCase() != itm.EmailAddress.toLocaleLowerCase()){
if (contact.Name.toLocaleLowerCase() != itm.Name.toLocaleLowerCase() && contact.EmailAddress.toLocaleLowerCase() != itm.EmailAddress.toLocaleLowerCase()) {
return contact;
}
return false;
});
} else if (this.adding == "CC") {
this.LtaskParticipantsCc = this.LtaskParticipantsCc.filter((contact, index) =>{
this.LtaskParticipantsCc = this.LtaskParticipantsCc.filter((contact, index) => {
if(contact.Name.toLocaleLowerCase() != itm.Name.toLocaleLowerCase() && contact.EmailAddress.toLocaleLowerCase() != itm.EmailAddress.toLocaleLowerCase()){
if (contact.Name.toLocaleLowerCase() != itm.Name.toLocaleLowerCase() && contact.EmailAddress.toLocaleLowerCase() != itm.EmailAddress.toLocaleLowerCase()) {
return contact;
}
return false;
});
}
this.setContactWithClose();
}
sort(data: []) {
return data.sort(function (a: any, b: any) {
if (a.Name > b.Name) {
return -1;
return -1;
}
if (b.Name > a.Name) {
return 1;
return 1;
}
return 0;
}).reverse()
}).reverse()
}
async fetchContacts(filter: string) {
this.showLoader = true;
this.contactsService.getContacts(filter).subscribe(result =>
{
if (this.eventPersons != null)
{
this.eventPersons.forEach(attendee => {
const index: number = result.findIndex((cont) => {
return this.checkStringNull(cont.EmailAddress) == this.checkStringNull(attendee.EmailAddress)
});
result.splice(index, 1);
this.contactsService.getContacts(filter).subscribe(result => {
if (this.eventPersons != null) {
this.eventPersons.forEach(attendee => {
const index: number = result.findIndex((cont) => {
return this.checkStringNull(cont.EmailAddress) == this.checkStringNull(attendee.EmailAddress)
});
}
if(this.loggedAttendSon) {
this.contacts = this.sort(result as any);
this.showLoader = false;
} else {
this.contacts = this.sort(result as any);
console.log('Attendes Email',this.loggeduser.Email)
result.splice(index, 1);
});
}
if (this.loggedAttendSon) {
this.contacts = this.sort(result as any);
this.showLoader = false;
} else {
this.contacts = this.sort(result as any);
console.log('Attendes Email', this.loggeduser.Email)
let filterLoggedUserEmail = this.contacts.filter(item => item.EmailAddress.toLocaleLowerCase() != this.loggeduser.Email.toLocaleLowerCase())
if(this.taskType == 0 || this.taskType == 1){
filterLoggedUserEmail = this.contacts.filter(item => item.IsPR == false)
}
console.log('Attendes Email', filterLoggedUserEmail)
let filterEmptyEmail = filterLoggedUserEmail.filter(item => item.EmailAddress.toLocaleLowerCase() != "")
this.contacts = filterEmptyEmail;
console.log('Attendes Email', this.contacts)
this.showLoader = false;
}
}
}
);
}
checkStringNull(value: string) {
if(value) {
if (value) {
return value.toLowerCase();
} else {
return value
@@ -323,7 +323,8 @@
<ion-footer class="background-whit">
<div class="buttons">
<button class="btn-cancel cursor-pointer" shape="round" (click)="close()">Cancelar</button>
<button class="btn-ok cursor-pointer" shape="round" (click)="save()">Gravar</button>
<button class="btn-cancel cursor-pointer" shape="round" (click)="close()">Cancelar</button>
</div>
</ion-footer>
+4 -4
View File
@@ -187,21 +187,21 @@
<!-- <div class="icon" (click)="basicSearch()">
<ion-icon class="icon-z" slot="end" name="search"></ion-icon>
</div> -->
<div class="input-text d-flex ion-align-items-center">
<!-- <div class="input-text d-flex ion-align-items-center">
<ion-input (keyup.enter)="basicSearch()" [(ngModel)]='searchSubject' (ngModelChange)="dynamicSearch()"
class="search-input text-black" type="search" placeholder="Pesquisar assunto"></ion-input>
</div>
</div> -->
<!-- <div class="icon" (click)="clearSearchInput()">
<ion-icon title="Limpar" *ngIf="ThemeService.currentTheme == 'default' "name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
<ion-icon title="Limpar" *ngIf="ThemeService.currentTheme == 'doneIt' "name="restaurant-outline" src="assets/images/theme/doneIt/icons-search.svg"></ion-icon>
<ion-icon title="Limpar" *ngIf="ThemeService.currentTheme == 'gov' " name="restaurant-outline" src="assets/images/theme/gov/icons-search-close.svg"></ion-icon>
</div> -->
<div (click)="basicSearch()" class="d-flex align-center icon">
<!-- <div (click)="basicSearch()" class="d-flex align-center icon">
<ion-icon class="icon-z" slot="end" src="assets/images/theme/gov/search.svg"></ion-icon>
</div>
</div> -->
</div>
</div>
</div>
@@ -27,7 +27,8 @@ export class DiplomaOptionsPage implements OnInit {
task: any
fulltask: any
DraftIds = ""
DraftNames= ""
DraftNames = ""
asDrat: boolean;
constructor(
@@ -41,42 +42,43 @@ export class DiplomaOptionsPage implements OnInit {
private despachoService: DespachoService,
private httpErroHandle: HttpErrorHandle,
public TaskService: TaskService) {
this.serialNumber = this.navParams.get('serialNumber');
this.task = this.navParams.get('task');
this.fulltask = this.navParams.get('fulltask');
this.serialNumber = this.navParams.get('serialNumber');
this.task = this.navParams.get('task');
this.fulltask = this.navParams.get('fulltask');
this.DraftIds = this.navParams.get("DraftIds");
this.DraftNames = this.navParams.get("DraftNames");
this.DraftIds = this.navParams.get("DraftIds");
this.DraftNames = this.navParams.get("DraftNames");
this.asDrat = this.navParams.get('asDrat');
console.log('this.task', this.task)
console.log('this.task', this.task)
}
}
ngOnInit() {
console.log(this.task.activityInstanceName)
}
async openAddNoteModal(actionName:string) {
async openAddNoteModal(actionName: string) {
// this.popoverController.dismiss();
let classs;
if( window.innerWidth <= 800) {
if (window.innerWidth <= 800) {
classs = 'modal modal-desktop'
} else {
} else {
classs = 'modal modal-desktop'
}
const modal = await this.modalController.create({
component: AddNotePage,
componentProps:{
actionName:actionName
componentProps: {
actionName: actionName
},
cssClass: classs,
backdropDismiss: true
});
modal.onDidDismiss().then(async (res) => {
if(res.data) {
if (res.data) {
const DocumentToSave = res.data.documents.map((e) => {
@@ -91,22 +93,22 @@ export class DiplomaOptionsPage implements OnInit {
Attachments: DocumentToSave,
}
if(actionName == 'Solicitar assinatura') {
if (actionName == 'Solicitar assinatura') {
await this.askSignature(res.data.note, docs);
this.goBack();
} else if(actionName == 'Solicitar alteração') {
} else if (actionName == 'Solicitar alteração') {
await this.askToChange(res.data.note, docs);
this.goBack();
} else if (actionName == 'Assinar Diploma') {
await this.sign(res.data.note, docs);
this.goBack();
} else if(actionName == 'Concluir diploma'){
} else if (actionName == 'Concluir diploma') {
await this.finish(res.data.note, docs);
this.goBack();
} else if (actionName == 'Arquivo') {
await this.arquivar(res.data.note, docs);
this.goBack();
} else if (actionName =='AssinarNew') {
} else if (actionName == 'AssinarNew') {
await this.AssinarNew(res.data.note, docs)
}
}
@@ -117,7 +119,7 @@ export class DiplomaOptionsPage implements OnInit {
await modal.present();
}
async askToChange(note:string, documents:any){
async askToChange(note: string, documents: any) {
let body = {
"serialNumber": this.serialNumber,
"action": "Retificar",
@@ -125,7 +127,7 @@ export class DiplomaOptionsPage implements OnInit {
"dataFields": {
"ReviewUserComment": note,
},
"AttachmentList" :documents,
"AttachmentList": documents,
}
const loader = this.toastService.loading()
@@ -135,13 +137,13 @@ export class DiplomaOptionsPage implements OnInit {
this.close();
this.toastService._successMessage()
} catch (error) {
if(error.status == 0) {
if (error.status == 0) {
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
} else {
this.toastService._badRequest()
}
} finally {
} finally {
loader.remove()
}
@@ -151,23 +153,23 @@ export class DiplomaOptionsPage implements OnInit {
async openBookMeetingModal(task: any) {
this.popoverController.dismiss();
let classs;
if( window.innerWidth <= 800){
if (window.innerWidth <= 800) {
classs = 'book-meeting-modal modal modal-desktop'
} else {
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: BookMeetingModalPage,
componentProps: {
task: this.task,
fulltask:this.fulltask
fulltask: this.fulltask
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(
()=> {},
() => { },
(error) => {
console.log(error)
}
@@ -175,7 +177,7 @@ export class DiplomaOptionsPage implements OnInit {
}
async askSignature(note:string, documents:any) {
async askSignature(note: string, documents: any) {
let body = {
"serialNumber": this.serialNumber,
"action": "Aprovar",
@@ -183,7 +185,7 @@ export class DiplomaOptionsPage implements OnInit {
"dataFields": {
"ReviewUserComment": note,
},
"AttachmentList" :documents,
"AttachmentList": documents,
}
const loader = this.toastService.loading()
@@ -193,20 +195,20 @@ export class DiplomaOptionsPage implements OnInit {
this.close();
this.toastService._successMessage()
} catch (error) {
if(error.status == 0) {
if (error.status == 0) {
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
} else {
this.toastService._badRequest()
}
} finally {
} finally {
loader.remove()
}
}
async sign(note?:string, documents?:any) {
async sign(note?: string, documents?: any) {
let body = {
"serialNumber": this.serialNumber,
"action": "Assinado",
@@ -217,7 +219,7 @@ export class DiplomaOptionsPage implements OnInit {
"InstanceIDNew": this.task.InstanceID,
"DraftIds": "",
},
"AttachmentList" : {
"AttachmentList": {
"ProcessInstanceID": this.task.InstanceID,
"DraftIds": null,
"Attachments": []
@@ -229,61 +231,65 @@ export class DiplomaOptionsPage implements OnInit {
await this.processes.CompleteTask(body).toPromise()
this.httpErroHandle.httpsSucessMessagge('Assinado')
} catch (error) {
if(error.status == 0) {
if (error.status == 0) {
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
} else {
this.toastService._badRequest()
}
} finally {}
} finally { }
}
async AssinarNew(note?, doc?) {
const modal = await this.modalController.create({
component: PopupQuestionPage,
componentProps: {
title: 'Deseja assinar este Diploma?',
/* message: 'Nota: Ao Efetuar esta operação, o tratamento deste diploma não poderá ser realizado a partir da caixa de correspondência' */
if (this.asDrat) {
const modal = await this.modalController.create({
component: PopupQuestionPage,
componentProps: {
title: 'Deseja assinar este Diploma?',
/* message: 'Nota: Ao Efetuar esta operação, o tratamento deste diploma não poderá ser realizado a partir da caixa de correspondência' */
},
cssClass: "popup-question discart-expedient-modal",
backdropDismiss: true
});
},
cssClass: "popup-question discart-expedient-modal",
backdropDismiss: true
});
modal.onDidDismiss().then(async (res) => {
const data = res.data
if(data == "Yes") {
let body = {
"InstanceId": this.task.InstanceID,
"FolderId": this.task.FolderID,
"DraftIds": this.DraftIds,
"OriginalFileName": this.DraftNames
modal.onDidDismiss().then(async (res) => {
const data = res.data
if (data == "Yes") {
let body = {
"InstanceId": this.task.InstanceID,
"FolderId": this.task.FolderID,
"DraftIds": this.DraftIds,
"OriginalFileName": this.DraftNames
}
const loader = this.toastService.loading()
try {
await this.processes.presidentialActionsSignature(body).toPromise()
await this.sign()
this.TaskService.loadDiplomas()
this.goBack();
} catch (error) {
this.httpErroHandle.httpStatusHandle(error)
}
finally {
loader.remove()
}
}
const loader = this.toastService.loading()
try {
await this.processes.presidentialActionsSignature(body).toPromise()
await this.sign()
this.TaskService.loadDiplomas()
this.goBack();
} catch (error) {
this.httpErroHandle.httpStatusHandle(error)
}
finally {
loader.remove()
}
}
}, (error) => {
console.log(error)
});
}, (error) => {
console.log(error)
});
await modal.present();
await modal.present();
} else {
this.httpErroHandle.validationMessagge("diplomaAsDraft");
}
}
async finish(note:string, documents:any){
async finish(note: string, documents: any) {
let body = {
"serialNumber": this.serialNumber,
@@ -292,7 +298,7 @@ export class DiplomaOptionsPage implements OnInit {
"dataFields": {
"ReviewUserComment": note,
},
"AttachmentList" :documents,
"AttachmentList": documents,
}
const loader = this.toastService.loading()
@@ -301,11 +307,11 @@ export class DiplomaOptionsPage implements OnInit {
await this.processes.CompleteTask(body).toPromise();
this.toastService._successMessage('Processo concluído')
} catch (error) {
if(error.status == 0) {
if (error.status == 0) {
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
} else {
this.toastService._badRequest()
this.toastService._badRequest()
}
}
finally {
@@ -9,7 +9,7 @@
</div>
<div *ngIf="content != ''" class="buttons header-fix">
<!-- <button (click)="save(Document, content)" class="btn-cancel" shape="round" >Salvar</button> -->
<button (click)="saveDraft(Document, content)" class="btn-cancel" shape="round" >Salvar Rascunho</button>
<button (click)="AssinarDraft()" class="btn-cancel" shape="round" >Assinar</button>
<button class="btn-cancel" shape="round" (click)="close()">Cancelar</button>
</div>
</ion-content>
@@ -3,6 +3,10 @@ import { ModalController, NavParams } from '@ionic/angular';
import { PermissionService } from 'src/app/services/permission.service';
import { ProcessesService} from 'src/app/services/processes.service';
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
import { ToastService } from 'src/app/services/toast.service';
import { TaskService } from 'src/app/services/task.service';
import { RouteService } from 'src/app/services/route.service';
import { PopupQuestionPage } from 'src/app/modals/popup-question/popup-question.page';
@Component({
selector: 'app-event-details-documents-options',
@@ -13,20 +17,35 @@ export class EventDetailsDocumentsOptionsPage implements OnInit {
Document: any
content: any = "";
InstanceID:any
FolderID:any
DraftIds:any
DraftNames:any
serialnumber: any
constructor(
public p: PermissionService,
private modalController: ModalController,
private navParams: NavParams,
private processService: ProcessesService,
private erroHandler: HttpErrorHandle
private erroHandler: HttpErrorHandle,
private processes: ProcessesService,
private toastService: ToastService,
public TaskService: TaskService,
private RouteService: RouteService,
) {
this.Document = this.navParams.get('Document')
this.content = this.navParams.get('content')
this.InstanceID = this.navParams.get('InstanceId')
this.FolderID = this.navParams.get('FolderId')
this.DraftIds = this.navParams.get('DraftIds')
this.DraftNames = this.navParams.get('OriginalFileName')
this.serialnumber = this.navParams.get('Serialnumber');
}
ngOnInit() {
console.log(this.content)
console.log(this.serialnumber)
}
close() {
@@ -86,4 +105,83 @@ export class EventDetailsDocumentsOptionsPage implements OnInit {
}
async Assinar() {
let body = {
"serialNumber": this.serialnumber,
"action": "Assinado",
"ActionTypeId": 99999842,
"FolderId": this.FolderID,
"dataFields": {
"ReviewUserComment": '',
"InstanceIDNew": this.InstanceID,
"DraftIds": "",
},
"AttachmentList": {
"ProcessInstanceID": this.InstanceID,
"DraftIds": null,
"Attachments": []
},
}
try {
await this.processes.CompleteTask(body).toPromise()
this.erroHandler.httpsSucessMessagge('Assinado')
} catch (error) {
this.erroHandler.httpStatusHandle(error)
}
finally { }
}
async AssinarDraft() {
const modal = await this.modalController.create({
component: PopupQuestionPage,
componentProps: {
title: 'Deseja assinar este Diploma?',
/* message: 'Nota: Ao Efetuar esta operação, o tratamento deste diploma não poderá ser realizado a partir da caixa de correspondência' */
},
cssClass: "popup-question discart-expedient-modal",
backdropDismiss: true
});
modal.onDidDismiss().then(async (res) => {
const data = res.data
if(data == "Yes") {
let body = {
"InstanceId": this.InstanceID,
"FolderId": this.FolderID,
"DraftIds": this.DraftIds,
"OriginalFileName": this.DraftNames
}
const loader = this.toastService.loading()
try {
await this.processes.presidentialActionsSignature(body).toPromise()
await this.Assinar();
this.TaskService.loadDiplomas();
this.goBackRoute();
} catch (error) {
this.erroHandler.httpStatusHandle(error)
}
finally {
loader.remove()
}
}
}, (error) => {
console.log(error)
});
await modal.present();
}
goBackRoute() {
this.RouteService.goBack();
}
}
@@ -113,14 +113,15 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar width-100 justify-space-between d-flex px-20">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -118,14 +118,15 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar width-100 justify-space-between d-flex">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Criar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -107,14 +107,15 @@
<ion-footer class="ion-no-border">
<ion-toolbar class="footer-toolbar width-100 px-20">
<ion-buttons slot="start">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-ok" fill="clear" color="#fff" (click)="save()">
<ion-label>Gravar</ion-label>
</button>
</ion-buttons>
<ion-buttons slot="end">
<button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label>
</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
@@ -259,7 +259,7 @@ export class ViewPublicationsPage implements OnInit {
backdropDismiss: true,
componentProps: {
title: 'Deseja arquivar este acção?',
description: 'Nota: Ao Efetuar esta operação, o tratamento deste acção não poderá ser realizado a partir da lista de acções'
/* description: 'Nota: Ao Efetuar esta operação, o tratamento deste acção não poderá ser realizado a partir da lista de acções' */
},
});
+2 -2
View File
@@ -9,9 +9,9 @@
{{Document.Assunto}}
</div>
<!-- <div class="right cursor-pointer" (click)="openOptions()">
<div class="right cursor-pointer" (click)="openOptions()">
<fa-icon icon="ellipsis-v" class="menu-icon font-awesome-1"></fa-icon>
</div> -->
</div>
</div>
</ion-toolbar>
+60 -20
View File
@@ -4,6 +4,11 @@ import { EventDetailsDocumentsOptionsPage } from '../shared/popover/event-detail
import { AlertController, ModalController } from '@ionic/angular';
import { ProcessesService } from '../services/processes.service';
import { HttpErrorHandle } from '../services/http-error-handle.service';
import { timeout } from 'rxjs-compat/operator/timeout';
import { PopupQuestionPage } from '../modals/popup-question/popup-question.page';
import { ToastService } from '../services/toast.service';
import { TaskService } from 'src/app/services/task.service';
import { RouteService } from 'src/app/services/route.service';
@Component({
selector: 'app-tiny-mce',
templateUrl: './tiny-mce.page.html',
@@ -22,18 +27,33 @@ export class TinyMCEPage implements OnDestroy {
private intervalTime: number = 3000;
loadingTiny = true
InstanceID: any
FolderID: any
DraftIds: any
DraftNames: any
serialnumber: any
private saveTimeout: any;
constructor(
private navParams: NavParams,
private modalController: ModalController,
private processService: ProcessesService,
private erroHandler: HttpErrorHandle
private erroHandler: HttpErrorHandle,
private processes: ProcessesService,
private toastService: ToastService,
public TaskService: TaskService,
private RouteService: RouteService,
) {
this.Document = this.navParams.get('Document')
this.content = this.navParams.get('content')
this.InstanceID = this.navParams.get('InstanceId')
this.FolderID = this.navParams.get('FolderId')
this.DraftIds = this.navParams.get('DraftIds')
this.DraftNames = this.navParams.get('OriginalFileName')
this.serialnumber = this.navParams.get('Serialnumber');
this.waitForTiny();
@@ -57,6 +77,10 @@ export class TinyMCEPage implements OnDestroy {
this.loadingTiny = true
}
ngOnInit() {
console.log('this.InstanceID',this.serialnumber)
}
ngOnDestroy() {
// Certifique-se de limpar o intervalo quando o componente é destruído
window['tinyupdate']()
@@ -68,26 +92,35 @@ export class TinyMCEPage implements OnDestroy {
onEditorContentChange() {
console.log('Autosave successful! Content saved to local storage1.');
this.saveDraft()
if (this.saveTimeout) {
clearTimeout(this.saveTimeout);
}
this.saveTimeout = setTimeout(() => {
this.saveDraft();
clearTimeout(this.saveTimeout);
}, 5000);
}
saveDraft() {
// Lógica que deseja executar em intervalos regulares
console.log('Intervalo de 3 segundos...');
console.log(document)
let objectDraft = {
"status": false,
"description": this.Document.Assunto,
"content": this.content,
"path": this.Document.path,
"ownerId": this.Document.ownerId
}
this.processService.SaveDraftByID(this.Document.DocId, objectDraft).subscribe((res) => {
console.log('Saved tinymce')
}, (error) => {
this.erroHandler.httpStatusHandle(error)
})
// Lógica que deseja executar em intervalos regulares
console.log('Intervalo de 3 segundos...');
console.log(document)
let objectDraft = {
"status": false,
"description": this.Document.Assunto,
"content": this.content,
"path": this.Document.path,
"ownerId": this.Document.ownerId
}
this.processService.SaveDraftByID(this.Document.DocId, objectDraft).subscribe((res) => {
console.log('Saved tinymce')
}, (error) => {
this.erroHandler.httpStatusHandle(error)
})
}
somefunction() {
@@ -100,7 +133,12 @@ export class TinyMCEPage implements OnDestroy {
cssClass: 'model aside-modal search-submodal',
componentProps: {
Document: this.Document,
content: this.content
content: this.content,
InstanceId: this.InstanceID,
FolderId: this.FolderID,
DraftIds: this.DraftIds,
OriginalFileName: this.DraftNames,
Serialnumber: this.serialnumber
}
});
@@ -110,4 +148,6 @@ export class TinyMCEPage implements OnDestroy {
await modal.present();
}
}