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
+42627 -575
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -57,7 +57,6 @@
"@capacitor/haptics": "^4.1.0",
"@capacitor/ios": "^5.4.2",
"@capacitor/keyboard": "^4.1.0",
"@capacitor/local-notifications": "^4.1.4",
"@capacitor/network": "^4.1.0",
"@capacitor/push-notifications": "^5.1.0",
"@capacitor/share": "^4.1.0",
+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();
}
}
@@ -0,0 +1,12 @@
<svg width="188" height="188" viewBox="0 0 188 188" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_2)">
<path d="M0.5 112.5C0.5 99.4791 -1.30249 102.15 -0.999998 89C-0.23463 88.0603 1.82412 72.8684 2 72C5.03043 57.0375 12.9616 45.1665 22.8489 33.8259C36.4266 18.2525 51.8149 6.16003 72.5 2C73.0575 1.88789 92.5525 -0.341161 93 -1C106.021 -1 93.3496 -0.302488 106.5 5.24521e-06C107.44 0.765371 116.632 1.82412 117.5 2C132.462 5.03051 144.834 12.9616 156.174 22.8489C171.747 36.4267 182.932 52.9585 187.092 73.6436C187.205 74.2011 188.341 74.5525 189 75C189 88.0209 189 101.042 188.698 114.192C187.932 115.132 187.219 115.892 187.044 116.76C184.013 131.722 177.038 144.834 167.151 156.174C153.573 171.747 137.042 182.932 116.356 187.092C115.799 187.205 115.448 188.341 115 189C101.979 189 88.9582 189 75.8079 188.698C74.8681 187.932 74.1085 187.219 73.2401 187.044C58.2777 184.013 45.1665 177.038 33.8259 167.151C18.2525 153.573 6.16003 137.685 2 117C1.09247 117.644 1.15884 112.948 0.5 112.5ZM108.079 88.4509C118.399 78.0627 128.785 67.7391 138.959 57.2102C140.342 55.779 141.86 52.5699 141.197 51.5113C140.166 49.8654 137.323 48.5124 135.237 48.4972C108.442 48.3029 81.6443 48.304 54.8491 48.4935C52.7472 48.5083 49.5346 49.8312 48.8873 51.3945C48.274 52.8756 49.8505 55.9619 51.3362 57.4996C60.5863 67.0736 70.1693 76.3261 79.4075 85.911C80.9173 87.4774 81.953 90.1405 82.0282 92.3371C82.3244 100.982 81.9482 109.65 82.2809 118.292C82.3724 120.669 83.5335 123.449 85.1157 125.238C89.4083 130.091 94.0398 134.678 98.862 139.009C100.473 140.455 103.604 141.995 105.065 141.335C106.614 140.634 107.745 137.38 107.779 135.222C108.016 119.913 107.924 104.599 108.079 88.4509Z" fill="#FFB81C"/>
<path d="M108.008 88.8691C107.924 104.599 108.016 119.913 107.779 135.222C107.745 137.38 106.614 140.634 105.065 141.335C103.604 141.995 100.473 140.455 98.862 139.009C94.0398 134.678 89.4083 130.091 85.1157 125.238C83.5335 123.449 82.3724 120.669 82.2809 118.292C81.9482 109.65 82.3244 100.982 82.0282 92.3371C81.953 90.1405 80.9173 87.4774 79.4075 85.911C70.1693 76.3261 60.5863 67.0736 51.3362 57.4996C49.8505 55.9619 48.274 52.8756 48.8873 51.3945C49.5346 49.8311 52.7472 48.5083 54.8491 48.4935C81.6443 48.304 108.442 48.3029 135.237 48.4972C137.323 48.5123 140.166 49.8654 141.197 51.5113C141.86 52.5699 140.342 55.779 138.959 57.2102C128.785 67.7391 118.399 78.0627 108.008 88.8691Z" fill="#050401"/>
<path d="M103.794 84.6474C103.736 97.4828 103.958 112.392 103.794 124.883C103.771 126.645 102.988 129.3 101.918 129.871C100.909 130.41 98.7446 129.154 97.6313 127.973C94.2987 124.44 91.0979 120.697 88.1313 116.737C87.0378 115.278 86.2354 113.009 86.1722 111.069C85.9423 104.018 86.4597 122.811 86.4597 113.054C86.4597 113.054 86.6896 86.6025 85.6462 85.3243C79.2616 77.5033 71.1791 69.2767 64.7864 61.4646C63.7596 60.2099 62.6701 57.6916 63.0939 56.483C63.5413 55.2074 65.7615 54.128 67.2141 54.1159C85.7322 53.9613 104.252 53.9604 122.77 54.119C124.211 54.1313 126.176 55.2353 126.889 56.5784C127.347 57.4421 126.298 60.0607 125.342 61.2285C118.311 69.8197 110.975 75.8297 103.794 84.6474Z" fill="#FFB81C"/>
</g>
<defs>
<clipPath id="clip0_1_2">
<rect width="188" height="188" rx="94" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,12 @@
<svg width="188" height="188" viewBox="0 0 188 188" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_2)">
<path d="M0.5 112.5C0.5 99.4791 -1.30249 102.15 -0.999998 89C-0.23463 88.0603 1.82412 72.8684 2 72C5.03043 57.0375 12.9616 45.1665 22.8489 33.8259C36.4266 18.2525 51.8149 6.16003 72.5 2C73.0575 1.88789 92.5525 -0.341161 93 -1C106.021 -1 93.3496 -0.302488 106.5 5.24521e-06C107.44 0.765371 116.632 1.82412 117.5 2C132.462 5.03051 144.834 12.9616 156.174 22.8489C171.747 36.4267 182.932 52.9585 187.092 73.6436C187.205 74.2011 188.341 74.5525 189 75C189 88.0209 189 101.042 188.698 114.192C187.932 115.132 187.219 115.892 187.044 116.76C184.013 131.722 177.038 144.834 167.151 156.174C153.573 171.747 137.042 182.932 116.356 187.092C115.799 187.205 115.448 188.341 115 189C101.979 189 88.9582 189 75.8079 188.698C74.8681 187.932 74.1085 187.219 73.2401 187.044C58.2777 184.013 45.1665 177.038 33.8259 167.151C18.2525 153.573 6.16003 137.685 2 117C1.09247 117.644 1.15884 112.948 0.5 112.5ZM108.079 88.4509C118.399 78.0627 128.785 67.7391 138.959 57.2102C140.342 55.779 141.86 52.5699 141.197 51.5113C140.166 49.8654 137.323 48.5124 135.237 48.4972C108.442 48.3029 81.6443 48.304 54.8491 48.4935C52.7472 48.5083 49.5346 49.8312 48.8873 51.3945C48.274 52.8756 49.8505 55.9619 51.3362 57.4996C60.5863 67.0736 70.1693 76.3261 79.4075 85.911C80.9173 87.4774 81.953 90.1405 82.0282 92.3371C82.3244 100.982 81.9482 109.65 82.2809 118.292C82.3724 120.669 83.5335 123.449 85.1157 125.238C89.4083 130.091 94.0398 134.678 98.862 139.009C100.473 140.455 103.604 141.995 105.065 141.335C106.614 140.634 107.745 137.38 107.779 135.222C108.016 119.913 107.924 104.599 108.079 88.4509Z" fill="#E0E9EE"/>
<path d="M108.008 88.8691C107.924 104.599 108.016 119.913 107.779 135.222C107.745 137.38 106.614 140.634 105.065 141.335C103.604 141.995 100.473 140.455 98.862 139.009C94.0398 134.678 89.4083 130.091 85.1157 125.238C83.5335 123.449 82.3724 120.669 82.2809 118.292C81.9482 109.65 82.3244 100.982 82.0282 92.3371C81.953 90.1405 80.9173 87.4774 79.4075 85.911C70.1693 76.3261 60.5863 67.0736 51.3362 57.4996C49.8505 55.9619 48.274 52.8756 48.8873 51.3945C49.5346 49.8311 52.7472 48.5083 54.8491 48.4935C81.6443 48.304 108.442 48.3029 135.237 48.4972C137.323 48.5123 140.166 49.8654 141.197 51.5113C141.86 52.5699 140.342 55.779 138.959 57.2102C128.785 67.7391 118.399 78.0627 108.008 88.8691Z" fill="#050401"/>
<path d="M103.794 84.6474C103.736 97.4828 103.958 112.392 103.794 124.883C103.771 126.645 102.988 129.3 101.918 129.871C100.909 130.41 98.7446 129.154 97.6313 127.973C94.2987 124.44 91.0979 120.697 88.1313 116.737C87.0378 115.278 86.2354 113.009 86.1722 111.069C85.9423 104.018 86.4597 122.811 86.4597 113.054C86.4597 113.054 86.6896 86.6025 85.6462 85.3243C79.2616 77.5033 71.1791 69.2767 64.7864 61.4646C63.7596 60.2099 62.6701 57.6916 63.0939 56.483C63.5413 55.2074 65.7615 54.128 67.2141 54.1159C85.7322 53.9613 104.252 53.9604 122.77 54.119C124.211 54.1313 126.176 55.2353 126.889 56.5784C127.347 57.4421 126.298 60.0607 125.342 61.2285C118.311 69.8197 110.975 75.8297 103.794 84.6474Z" fill="#E0E9EE"/>
</g>
<defs>
<clipPath id="clip0_1_2">
<rect width="188" height="188" rx="94" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

+1 -1
View File
@@ -4,4 +4,4 @@ import { doneITProd } from './suport/doneIt'
import { DevDev } from './suport/dev'
export const environment: Environment = DevDev;
export const environment: Environment = oaprProd;
+1 -1
View File
@@ -3,7 +3,7 @@ import { Environment } from './../../app/models/envarioment'
export const DevProd: Environment = {
id:'3',
apiURL: 'https://gdapi-dev.dyndns.info/api/',
apiURL: 'https://bpmdev.gdapi-dev.dyndns.info/api/',
apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/',
apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket',
apiPCURL: 'https://gdcmapi-dev.dyndns.info/api/',
+8 -8
View File
@@ -4,10 +4,10 @@ import { Environment } from './../../app/models/envarioment'
export const oaprProd: Environment = {
id: '0',
apiURL: 'https://gd-api.oapr.gov.ao/api/',
apiChatUrl: 'https://gd-chat.oapr.gov.ao/api/v1/',
apiWsChatUrl: 'wss://gd-chat.oapr.gov.ao/websocket',
apiPCURL: 'http://192.168.0.21:9099/api/',
apiURL: 'https://gdqas-api.oapr.gov.ao/api/',
apiChatUrl: 'https://gdqas-chat.oapr.gov.ao/api/v1/',
apiWsChatUrl: 'wss://gdqas-chat.oapr.gov.ao/websocket',
apiPCURL: 'http://gdqas-cmapi.oapr.gov.ao/api/',
logoLabel: 'Presidente da República',
despachoLabel: 'Presidenciais',
despachoLabel2: 'Despachos Presidênciais',
@@ -29,10 +29,10 @@ export const oaprProd: Environment = {
export const oaprDev: Environment = {
id: '0',
apiURL: 'https://gd-api.oapr.gov.ao/api/',
apiChatUrl: 'https://gd-chat.oapr.gov.ao/api/v1/',
apiWsChatUrl: 'wss://gd-chat.oapr.gov.ao/websocket',
apiPCURL: 'http://192.168.0.21:9099/api/',
apiURL: 'https://gdqas-api.oapr.gov.ao/api/',
apiChatUrl: 'https://gdqas-chat.oapr.gov.ao/api/v1/',
apiWsChatUrl: 'wss://gdqas-chat.oapr.gov.ao/websocket',
apiPCURL: 'http://gdqas-cmapi.oapr.gov.ao/api/',
logoLabel: 'Presidente da República',
despachoLabel: 'Presidencial',
despachoLabel2: 'Despachos Presidênciais',