mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 21:06:06 +00:00
Merge branch 'developer' of https://bitbucket.org/equilibriumito/gabinete-digital into developer
This commit is contained in:
@@ -15,8 +15,8 @@
|
||||
<ion-tab-button tab="gabinete-digital">
|
||||
<!-- <ion-icon name="file-tray-stacked"></ion-icon> -->
|
||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-gabinete-inactive.svg"></ion-icon>
|
||||
<ion-badge color="danger" *ngIf="p.userRole(['MDGPR'])" >{{ documentCounterService.mdTotalDocument }}</ion-badge>
|
||||
<ion-badge color="danger" *ngIf="p.userRole(['PR'])" >{{ documentCounterService.prTotalDocument }}</ion-badge>
|
||||
<ion-badge color="danger" *ngIf="p.userRole(['MDGPR'])" >{{ totalDocumentStore.count }}</ion-badge>
|
||||
<ion-badge color="danger" *ngIf="p.userRole(['PR'])" >{{ totalDocumentStore.count }}</ion-badge>
|
||||
<ion-label>Gabinete</ion-label>
|
||||
</ion-tab-button>
|
||||
<ion-tab-button tab="publications">
|
||||
|
||||
@@ -13,6 +13,7 @@ import { ToastService } from '../services/toast.service';
|
||||
import { ToDayEventStorage } from '../store/to-day-event-storage.service';
|
||||
import { DocumentCounterService } from 'src/app/OtherService/document-counter.service'
|
||||
import { PermissionService } from '../OtherService/permission.service';
|
||||
import { TotalDocumentService, TotalDocumentStore } from '../store/total-document.service';
|
||||
|
||||
|
||||
// import * as Sentry from "@sentry/browser";
|
||||
@@ -42,8 +43,8 @@ export class HomePage implements OnInit {
|
||||
totalExpediente = 0;
|
||||
profile: string;
|
||||
|
||||
|
||||
toDayEventStorage = ToDayEventStorage
|
||||
totalDocumentStore = TotalDocumentStore
|
||||
|
||||
adding: "intervenient" | "CC" = "intervenient";
|
||||
mobileComponent = {
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<ion-list>
|
||||
<div class="item cursor-pointer ion-no-padding ion-no-margin" lines="none"
|
||||
*ngFor = "let item of notificationdata; let i = index"
|
||||
(click)="notificatinsRoutes(item.Service,item.Object,item.IdObject,item.FolderId)"
|
||||
(click)="notificatinsRoutes(item.index,item.Service,item.Object,item.IdObject,item.FolderId)"
|
||||
>
|
||||
<div class="item-content width-100">
|
||||
<div class="notification-item">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
///<reference path="../../../../plugins/cordova-plugin-mfp/typings/worklight.d.ts" />
|
||||
///<reference path="../../../../plugins/cordova-plugin-mfp-jsonstore/typings/jsonstore.d.ts" />
|
||||
import { Component, OnInit,NgZone } from '@angular/core';
|
||||
import { Router,NavigationExtras } from '@angular/router';
|
||||
import { Component, OnInit, NgZone } from '@angular/core';
|
||||
import { Router, NavigationExtras } from '@angular/router';
|
||||
import { AnimationController, ModalController } from '@ionic/angular';
|
||||
import { User } from 'src/app/models/user.model';
|
||||
import { AuthService } from 'src/app/services/auth.service';
|
||||
@@ -9,6 +9,7 @@ import { LocalstoreService } from 'src/app/store/localstore.service';
|
||||
import { EditProfilePage } from './edit-profile/edit-profile.page';
|
||||
import { JsonStore } from '../../services/jsonStore.service';
|
||||
import { StorageService } from '../../services/storage.service';
|
||||
import { NotificationsService } from '../../services/notifications.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-profile',
|
||||
@@ -30,6 +31,7 @@ export class ProfilePage implements OnInit {
|
||||
private jsonstore: JsonStore,
|
||||
private storageservice: StorageService,
|
||||
private zone: NgZone,
|
||||
private notificationservice: NotificationsService
|
||||
) {
|
||||
|
||||
this.loggeduser = authService.ValidatedUser;
|
||||
@@ -43,10 +45,11 @@ export class ProfilePage implements OnInit {
|
||||
this.storageservice.get("Notifications").then((value) => {
|
||||
|
||||
var data = JSON.parse(value);
|
||||
data.forEach(element => {
|
||||
data.forEach((element, i) => {
|
||||
console.log("ARaaAA", element)
|
||||
var payload = JSON.parse(element.payload)
|
||||
let notificationObject = {
|
||||
index: i,
|
||||
alert: element.alert,
|
||||
Service: payload.Service,
|
||||
Object: payload.Object,
|
||||
@@ -75,65 +78,72 @@ export class ProfilePage implements OnInit {
|
||||
|
||||
notImplemented() { }
|
||||
|
||||
notificatinsRoutes = (Service,Object,IdObject,FolderId) => {
|
||||
notificatinsRoutes = (index, Service, Object, IdObject, FolderId) => {
|
||||
if (Service === "agenda") {
|
||||
this.zone.run(() => this.router.navigate(['/home/agenda', IdObject, 'agenda']));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "expediente") {
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expediente',IdObject,'gabinete-digital']));
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expediente', IdObject, 'gabinete-digital']));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "event-list") {
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/event-list/approve-event',IdObject, 'gabinete-digital']));
|
||||
}else if (Service === "gabinete-digital" && Object === "despachos") {
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/event-list/approve-event', IdObject, 'gabinete-digital']));
|
||||
} else if (Service === "gabinete-digital" && Object === "despachos") {
|
||||
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/despachos',IdObject,'gabinete-digital'],{replaceUrl: true}));
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/despachos', IdObject, 'gabinete-digital'], { replaceUrl: true }));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "parecer") {
|
||||
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos',IdObject,'gabinete-digital']));
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos', IdObject, 'gabinete-digital']));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "deferimento") {
|
||||
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos',IdObject,'gabinete-digital']));
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos', IdObject, 'gabinete-digital']));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "despachos-pr") {
|
||||
|
||||
this.zone.run(() =>this.router.navigate(['/home/gabinete-digital/despachos-pr',IdObject,'gabinete-digital']));
|
||||
}
|
||||
else if (Service === "accoes" && Object === "accao") {
|
||||
this.zone.run(() => this.router.navigate(['/home/publications', IdObject]));
|
||||
}
|
||||
else if (Service === "accoes" && Object === "publicacao") {
|
||||
this.zone.run(() => this.router.navigate(['/home/publications/view-publications', FolderId, IdObject]));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "diplomas") {
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/diplomas', IdObject, 'gabinete-digital']));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "diplomas-assinar") {
|
||||
let navigationExtras: NavigationExtras = {
|
||||
queryParams: {
|
||||
"serialNumber": IdObject,
|
||||
}
|
||||
};
|
||||
this.zone.run(() =>this.router.navigate(['/home/gabinete-digital/despachos-pr/despacho-pr'], navigationExtras));
|
||||
}
|
||||
else if (Service === "accoes" && Object === "accao") {
|
||||
this.zone.run(() => this.router.navigate(['/home/publications',IdObject]));
|
||||
}
|
||||
else if (Service === "accoes" && Object === "publicacao") {
|
||||
this.zone.run(() => this.router.navigate(['/home/publications/view-publications',FolderId,IdObject]));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "diplomas") {
|
||||
this.zone.run(() =>this.router.navigate(['/home/gabinete-digital/diplomas', IdObject, 'gabinete-digital']));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "diplomas-assinar") {
|
||||
let navigationExtras: NavigationExtras = {
|
||||
queryParams: {
|
||||
"serialNumber": IdObject,
|
||||
}
|
||||
};
|
||||
this.zone.run(() =>this.router.navigate(['/home/gabinete-digital/diplomas-assinar/diploma-assinar'], navigationExtras));
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/diplomas-assinar/diploma-assinar'], navigationExtras));
|
||||
}
|
||||
else if (Service === "gabinete-digital" && Object === "expedientes-pr") {
|
||||
this.zone.run(() =>this.router.navigate(['/home/gabinete-digital/expedientes-pr',IdObject,'gabinete-digital']));
|
||||
this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expedientes-pr', IdObject, 'gabinete-digital']));
|
||||
}
|
||||
|
||||
const indexx = this.notificationdata.indexOf(index, 0);
|
||||
if (indexx > -1) {
|
||||
this.notificationdata.splice(index, 1);
|
||||
console.log('This notificatio', this.notificationdata);
|
||||
}
|
||||
|
||||
this.notificationservice.removeDepartment(index);
|
||||
console.log('This notificatio 2', this.notificationdata);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
logout() {
|
||||
window.localStorage.clear();
|
||||
|
||||
setTimeout(()=> {
|
||||
setTimeout(() => {
|
||||
this.router.navigateByUrl('/', { replaceUrl: true });
|
||||
},100)
|
||||
|
||||
}, 100)
|
||||
|
||||
}
|
||||
|
||||
checkState() {
|
||||
|
||||
@@ -11,8 +11,6 @@ export class DailyWorkTask{
|
||||
Status: string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export class fullTask {
|
||||
actions: null;
|
||||
activityInstanceName: string;
|
||||
@@ -67,7 +65,9 @@ export class fullTask {
|
||||
workflowInstanceID: number
|
||||
workflowName: string
|
||||
}
|
||||
|
||||
export class tasksList extends fullTask{}
|
||||
|
||||
export class customTaskList {
|
||||
SerialNumber: string
|
||||
Folio : string
|
||||
@@ -82,4 +82,5 @@ export class customTaskList {
|
||||
activityInstanceName : string
|
||||
Status : string
|
||||
}
|
||||
export class customTask extends customTaskList{}
|
||||
|
||||
export class customTask extends customTaskList{}
|
||||
|
||||
@@ -91,7 +91,7 @@ export class MessagesPage implements OnInit, AfterViewChecked {
|
||||
} catch(err) { }
|
||||
}
|
||||
|
||||
sendMessage(){
|
||||
sendMessage() {
|
||||
let body = {
|
||||
"message":
|
||||
{
|
||||
@@ -104,7 +104,7 @@ export class MessagesPage implements OnInit, AfterViewChecked {
|
||||
this.message = "";
|
||||
}
|
||||
|
||||
loadMessages(){
|
||||
loadMessages() {
|
||||
this.showLoader = true;
|
||||
this.chatService.getRoomMessages(this.roomId).subscribe(res => {
|
||||
/* console.log(res); */
|
||||
@@ -113,7 +113,7 @@ export class MessagesPage implements OnInit, AfterViewChecked {
|
||||
this.showLoader = false;
|
||||
})
|
||||
}
|
||||
getChatMembers(){
|
||||
getChatMembers() {
|
||||
this.showLoader = true;
|
||||
this.chatService.getMembers(this.roomId).subscribe(res=> {
|
||||
this.members = res['members'];
|
||||
@@ -167,7 +167,7 @@ export class MessagesPage implements OnInit, AfterViewChecked {
|
||||
return await popover.present();
|
||||
}
|
||||
|
||||
async serverLongPull(){
|
||||
async serverLongPull() {
|
||||
this.chatService.getRoomMessages(this.roomId).subscribe(async res => {
|
||||
|
||||
if (res == 502) {
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
<fa-icon class="icon-selected" icon="align-justify"></fa-icon>
|
||||
</div>
|
||||
<p class="text-center exp-card-title ">Todas as tarefas</p>
|
||||
<p class="text-center exp-card-content">{{count_all_processes}} <span class="title1">Documentos</span></p>
|
||||
<p class="text-center exp-card-content">{{ totalDocumentStore.count }} <span class="title1">Documentos</span></p>
|
||||
</div>
|
||||
|
||||
<div (click)="openEventsToApprovePage();selectedElement='approval'" [class.active]="selectedElement == 'approval'" class="exp-card d-flex flex-column" *ngIf="loggeduser.Profile == 'MDGPR'" >
|
||||
|
||||
@@ -18,6 +18,7 @@ import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
||||
import { PermissionService } from 'src/app/OtherService/permission.service';
|
||||
import { removeDuplicate } from 'src/plugin/removeDuplicate.js'
|
||||
import { WaitForDomService } from 'src/app/services/dom/wait-for-dom.service';
|
||||
import { TotalDocumentStore } from 'src/app/store/total-document.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-gabinete-digital',
|
||||
@@ -94,6 +95,7 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
|
||||
pedidosstore = PedidosStore;
|
||||
expedienteprstore = ExpedienteprStore;
|
||||
despachoprstore = DespachosprStore;
|
||||
totalDocumentStore = TotalDocumentStore
|
||||
|
||||
@ViewChild(ExpedientsPage) expedientesPage: ExpedientsPage;
|
||||
@ViewChild(PendentesPage) pendentesListPage: PendentesPage;
|
||||
@@ -211,6 +213,8 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
|
||||
this.allProcessesList.push(task);
|
||||
this.allProcessesList = removeDuplicate( this.allProcessesList)
|
||||
this.allProcessesList = this.sortArrayISODate(this.allProcessesList).reverse();
|
||||
|
||||
this.totalDocumentStore.resetCount( this.allProcessesList.length)
|
||||
});
|
||||
|
||||
this.skeletonLoader = false;
|
||||
|
||||
@@ -206,8 +206,6 @@ export class LoginPage implements OnInit {
|
||||
|
||||
|
||||
this.localstoreService.set('UserData', userData)
|
||||
|
||||
|
||||
this.localstoreService.set('PIN', encrypted)
|
||||
|
||||
this.router.navigate(['/home/events']);
|
||||
|
||||
@@ -165,6 +165,16 @@ export class NotificationsService {
|
||||
|
||||
}
|
||||
|
||||
removeDepartment(index): void {
|
||||
/* this.DataArray[this.DataArray.findIndex(item => item.index == index)];
|
||||
this.DataArray.splice( this.DataArray.findIndex(item => item.indexOf(index.to) === 'William'),1); */
|
||||
const indexx = this.DataArray.indexOf(index, 0);
|
||||
if (indexx > -1) {
|
||||
this.DataArray.splice(index, 1);
|
||||
console.log('This notificatio', this.DataArray);
|
||||
}
|
||||
}
|
||||
|
||||
async onReceviNotification() {
|
||||
|
||||
if(window['WLAuthorizationManager']) {
|
||||
@@ -185,6 +195,7 @@ export class NotificationsService {
|
||||
var notificationReceived = (message) => {
|
||||
//this.jsonstore.createCollection('Notifications',message);
|
||||
this.DataArray.push(message)
|
||||
console.log("On ReceiveNotification", message)
|
||||
this.storageService.store("Notifications",JSON.stringify(this.DataArray))
|
||||
|
||||
console.log(message);
|
||||
@@ -196,7 +207,9 @@ export class NotificationsService {
|
||||
if(message.actionName){
|
||||
this.notificatinsRoutes(data);
|
||||
} else {
|
||||
this.toastService.notificationMessage(message.alert,this.notificatinsRoutes, data);
|
||||
/* this.toastService.notificationMessage(message.alert,this.notificatinsRoutes, data); */
|
||||
//this.notificatinsRoutes(data);
|
||||
console.log(data)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -234,12 +247,7 @@ export class NotificationsService {
|
||||
}
|
||||
else if (data.Service === "gabinete-digital" && data.Object === "despachos-pr") {
|
||||
|
||||
let navigationExtras: NavigationExtras = {
|
||||
queryParams: {
|
||||
"serialNumber": data.IdObject,
|
||||
}
|
||||
};
|
||||
this.zone.run(() =>this.router.navigate(['/home/gabinete-digital/despachos-pr/despacho-pr'], navigationExtras));
|
||||
this.zone.run(() =>this.router.navigate(['/home/gabinete-digital/despachos-pr',data.IdObject,'gabinete-digital']));
|
||||
}
|
||||
else if (data.Service === "accoes" && data.Object === "accao") {
|
||||
this.zone.run(() => this.router.navigate(['/home/publications',data.IdObject]));
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { SynchroService } from './synchro.service';
|
||||
|
||||
describe('SynchroService', () => {
|
||||
let service: SynchroService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(SynchroService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,74 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
|
||||
export interface wss{
|
||||
|
||||
url: string,
|
||||
type: 'reflect' | 'emit'
|
||||
header: {
|
||||
id: string
|
||||
bluePrint: string,
|
||||
jwt: string
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class SynchroService {
|
||||
[x: string]: any;
|
||||
|
||||
private connection!: WebSocket;
|
||||
private id: string = uuidv4();
|
||||
public conected = false
|
||||
private url: string = ''
|
||||
|
||||
constructor(){}
|
||||
|
||||
setUrl(wss:wss) {
|
||||
this.url = `${wss.url}${wss.header.id}/${wss.header.jwt}/${wss.header.bluePrint}/${this.id}/`
|
||||
}
|
||||
|
||||
connect() {
|
||||
|
||||
this.connection = new WebSocket(this.url);
|
||||
// bind function
|
||||
this.connection.onopen = this.onopen;
|
||||
this.connection.onmessage = this.onmessage;
|
||||
this.connection.onclose = this.onclose;
|
||||
this.connection.onerror = this.onerror;
|
||||
}
|
||||
|
||||
private onopen = () =>{
|
||||
console.log('open ======================= welcome to socket server')
|
||||
// this.connection.send(JSON.stringify({user:'user1'}));
|
||||
}
|
||||
|
||||
public $send = (object: any) => {
|
||||
let sendData = JSON.stringify(Object.assign({}, object));
|
||||
this.connection.send(sendData);
|
||||
}
|
||||
|
||||
private onmessage = async (event: any)=> {
|
||||
|
||||
}
|
||||
|
||||
private onclose=(event:any)=>{
|
||||
setTimeout(() => {
|
||||
if (event.wasClean) {
|
||||
console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
|
||||
} else {
|
||||
// e.g. server process killed or network down
|
||||
// event.code is usually 1006 in this case
|
||||
console.log('[close] Connection died');
|
||||
console.log('Reconnect')
|
||||
this.connect()
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
private onerror=(event: any)=>{
|
||||
console.log(`[error] ${event.message}`);
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,12 @@ const { Storage } = Plugins; */
|
||||
const ret = await this.storage.get(key).then((val) => { return val; });
|
||||
return JSON.parse(unescape(atob(ret)));
|
||||
}
|
||||
|
||||
async remove(key: string){
|
||||
await this.storage.remove(key);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
// Get the value
|
||||
async get(storageKey: string) {
|
||||
|
||||
@@ -270,6 +270,7 @@ export class OptsExpedientePrPage implements OnInit {
|
||||
taskAction: taskAction,
|
||||
task: task,
|
||||
profile: this.profile,
|
||||
fulltask: this.fulltask,
|
||||
},
|
||||
cssClass: classs,
|
||||
});
|
||||
|
||||
@@ -75,6 +75,7 @@ export class DeplomasService {
|
||||
}
|
||||
|
||||
saveDiplomasAssinadoList() {
|
||||
|
||||
setTimeout(()=>{
|
||||
localstoreService.set(this.keyNameDiplomasAssinado,{
|
||||
list: this._diplomasAssinadoList,
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { TotalDocumentService } from './total-document.service';
|
||||
|
||||
describe('TotalDocumentService', () => {
|
||||
let service: TotalDocumentService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(TotalDocumentService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,43 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { localstoreService } from './localstore.service'
|
||||
import { AES, enc, SHA1 } from 'crypto-js'
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class TotalDocumentService {
|
||||
|
||||
private _count = 0
|
||||
// local storage keyName
|
||||
private keyName: string;
|
||||
|
||||
constructor() {
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
|
||||
setTimeout(()=> {
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
this._count = restore.count || 0
|
||||
}, 10)
|
||||
|
||||
}
|
||||
|
||||
get count() {
|
||||
return this._count
|
||||
}
|
||||
|
||||
resetCount(value) {
|
||||
this._count = value
|
||||
}
|
||||
|
||||
saveCount() {
|
||||
setTimeout(()=> {
|
||||
localstoreService.set(this.keyName, {
|
||||
count: this._count
|
||||
})
|
||||
}, 10)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
export let TotalDocumentStore = new TotalDocumentService()
|
||||
Reference in New Issue
Block a user