save all
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.gpr.gabinetedigital">
|
||||
package="com.capacitorjs.app.testapp">
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
@@ -12,10 +12,11 @@
|
||||
|
||||
<activity
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
|
||||
android:name="com.gpr.gabinetedigital.MainActivity"
|
||||
android:label="@string/title_activity_main"
|
||||
android:name="com.capacitorjs.app.testapp.MainActivity"
|
||||
android:label="@stringtitle_activity_main/title_activity_main"
|
||||
android:theme="@style/AppTheme.NoActionBarLaunch"
|
||||
android:launchMode="singleTask">
|
||||
android:launchMode="singleTask"
|
||||
android:exported="true">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 16 KiB |
@@ -39,23 +39,21 @@
|
||||
"@awesome-cordova-plugins/file": "^5.41.0",
|
||||
"@awesome-cordova-plugins/file-opener": "^5.41.0",
|
||||
"@awesome-cordova-plugins/multiple-document-picker": "^5.40.0",
|
||||
"@byteowls/capacitor-filesharer": "^3.0.0",
|
||||
"@capacitor-community/camera-preview": "^1.2.1",
|
||||
"@capacitor/android": "^3.3.2",
|
||||
"@capacitor/app": "^1.0.5",
|
||||
"@capacitor/browser": "1.0.6",
|
||||
"@capacitor/camera": "^1.2.0",
|
||||
"@capacitor/android": "^4.6.1",
|
||||
"@capacitor/app": "^4.1.1",
|
||||
"@capacitor/browser": "^4.1.0",
|
||||
"@capacitor/camera": "^4.1.4",
|
||||
"@capacitor/core": "^3.3.2",
|
||||
"@capacitor/device": "^1.1.0",
|
||||
"@capacitor/filesystem": "^1.1.0",
|
||||
"@capacitor/haptics": "^1.1.4",
|
||||
"@capacitor/device": "^4.1.0",
|
||||
"@capacitor/filesystem": "^4.1.4",
|
||||
"@capacitor/haptics": "^4.1.0",
|
||||
"@capacitor/ios": "3.4.1",
|
||||
"@capacitor/keyboard": "^1.1.2",
|
||||
"@capacitor/local-notifications": "^1.1.0",
|
||||
"@capacitor/network": "^1.0.6",
|
||||
"@capacitor/push-notifications": "^1.0.9",
|
||||
"@capacitor/share": "^1.0.7",
|
||||
"@capacitor/storage": "^1.2.3",
|
||||
"@capacitor/keyboard": "^4.1.0",
|
||||
"@capacitor/local-notifications": "^4.1.4",
|
||||
"@capacitor/network": "^4.1.0",
|
||||
"@capacitor/push-notifications": "^4.1.2",
|
||||
"@capacitor/share": "^4.1.0",
|
||||
"@capacitor/storage": "^1.2.5",
|
||||
"@fortawesome/angular-fontawesome": "^0.9.0",
|
||||
"@fortawesome/fontawesome-free": "^5.15.3",
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.35",
|
||||
@@ -111,8 +109,7 @@
|
||||
"beast-orm": "^1.1.2",
|
||||
"bootstrap": "^4.5.0",
|
||||
"build": "0.1.4",
|
||||
"capacitor-voice-recorder": "^2.0.0",
|
||||
"capacitor2-file-picker": "^1.0.0",
|
||||
"capacitor-voice-recorder": "^4.0.1",
|
||||
"ci": "^2.1.1",
|
||||
"cordova": "^11.0.0",
|
||||
"cordova-plugin-crop": "^0.4.0",
|
||||
@@ -120,6 +117,7 @@
|
||||
"cordova-plugin-document-viewer": "^1.0.0",
|
||||
"cordova-plugin-file": "^6.0.2",
|
||||
"cordova-plugin-file-opener2": "^3.0.5",
|
||||
"cordova-plugin-file-transfer": "github:apache/cordova-plugin-file-transfer",
|
||||
"cordova-plugin-filepath": "^1.5.8",
|
||||
"cordova-plugin-multiple-documents-picker": "^1.0.0",
|
||||
"cordova-plugin-okhttp": "^2.0.0",
|
||||
@@ -182,7 +180,7 @@
|
||||
"@angular/compiler": "^12.1.2",
|
||||
"@angular/compiler-cli": "^12.1.2",
|
||||
"@angular/language-service": "^12.1.2",
|
||||
"@capacitor/cli": "^3.3.2",
|
||||
"@capacitor/cli": "^4.6.1",
|
||||
"@ionic/angular-toolkit": "^6.1.0",
|
||||
"@ionic/lab": "3.1.7",
|
||||
"@types/jasmine": "~3.6.0",
|
||||
@@ -190,7 +188,6 @@
|
||||
"@types/jest": "^26.0.24",
|
||||
"@types/node": "^12.11.1",
|
||||
"codelyzer": "^0.0.28",
|
||||
"com-sarriaroman-photoviewer": "^1.2.5",
|
||||
"cordova-android": "^10.1.2",
|
||||
"cordova-android-support-gradle-release": "^3.0.1",
|
||||
"cordova-browser": "^6.0.0",
|
||||
@@ -205,7 +202,6 @@
|
||||
"cordova-plugin-media-capture": "^3.0.3",
|
||||
"cordova-plugin-network-information": "^3.0.0",
|
||||
"cordova-plugin-statusbar": "^2.4.2",
|
||||
"cordova-plugin-whitelist": "^1.3.4",
|
||||
"es6-promise-plugin": "^4.2.2",
|
||||
"jasmine-core": "~3.6.0",
|
||||
"jasmine-spec-reporter": "~5.0.0",
|
||||
|
||||
@@ -9,7 +9,7 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
})
|
||||
export class AproveEventService {
|
||||
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("AproveEventService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { customTask } from '../models/dailyworktask.model';
|
||||
import { ProcessesService } from '../services/processes.service';
|
||||
import { ProcessDocumentService } from './process-document.service';
|
||||
import { LoaderService } from 'src/app/store/loader.service'
|
||||
|
||||
@Injectable({
|
||||
@@ -9,11 +7,10 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
})
|
||||
export class DeferimentosServiceService {
|
||||
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("DeferimentosServiceService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
private processDocumentService: ProcessDocumentService,
|
||||
public LoaderService: LoaderService,
|
||||
) { }
|
||||
|
||||
@@ -32,8 +29,6 @@ export class DeferimentosServiceService {
|
||||
|
||||
this.loader.pop()
|
||||
deferimentos = deferimentos.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
// this.count_def_dailywork = Object.keys(deferimentos).length;
|
||||
// this.pedidosstore.countdeferimento = this.count_def_dailywork;
|
||||
|
||||
return deferimentos.map((element) => {
|
||||
return {
|
||||
|
||||
@@ -9,7 +9,7 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
})
|
||||
export class DeplomasServiceService {
|
||||
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("DeplomasServiceService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -11,7 +11,7 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
export class DespachoPRService {
|
||||
|
||||
customTaskPipe = new CustomTaskPipe()
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("DespachoPRService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -29,7 +29,7 @@ export class DespachoService {
|
||||
|
||||
customTaskPipe = new CustomTaskPipe()
|
||||
despachoStore = DespachoStore;
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("DespachoService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -11,7 +11,7 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
export class ExpedienteService {
|
||||
|
||||
expedienteTaskPipe = new ExpedienteTaskPipe();
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("ExpedienteTaskPipe")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -9,7 +9,7 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
})
|
||||
export class ParecerService {
|
||||
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("ParecerService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -8,7 +8,7 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
})
|
||||
export class PedidoService {
|
||||
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("PedidoService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -11,7 +11,7 @@ import { LoaderService } from 'src/app/store/loader.service'
|
||||
export class PendentesService {
|
||||
|
||||
customTaskPipe = new CustomTaskPipe()
|
||||
loader = this.LoaderService.initialize(this.constructor.name)
|
||||
loader = this.LoaderService.initialize("PendentesService")
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
|
||||
@@ -69,35 +69,35 @@ import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';
|
||||
|
||||
|
||||
// The example is using Angular, Import '@sentry/vue' or '@sentry/react' when using a Sibling different than Angular.
|
||||
///123// import * as SentrySibling from '@sentry/angular';
|
||||
///123//import * as Sentry from '@sentry/capacitor';
|
||||
import * as SentrySibling from '@sentry/angular';
|
||||
import * as Sentry from '@sentry/capacitor';
|
||||
// The e xample is using Angular, Import '@sentry/vue' or '@sentry/react' when using a Sibling different than Angular.
|
||||
// For automatic instrumentation (highly recommended)
|
||||
///123//import { Integration } from '@sentry/types';
|
||||
///123//import { BrowserTracing } from '@sentry/tracing';
|
||||
import { Integration } from '@sentry/types';
|
||||
import { BrowserTracing } from '@sentry/tracing';
|
||||
|
||||
/* import { FCM } from '@ionic-native/fcm/ngx';
|
||||
import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */
|
||||
//import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
|
||||
|
||||
///123// Sentry.init(
|
||||
///123// {
|
||||
///123// dsn: 'https://5b345a3ae70b4e4da463da65881b4aaa@o4504340905525248.ingest.sentry.io/4504345615794176',
|
||||
Sentry.init(
|
||||
{
|
||||
dsn: 'https://5b345a3ae70b4e4da463da65881b4aaa@o4504340905525248.ingest.sentry.io/4504345615794176',
|
||||
// To set your release and dist versions
|
||||
///123// release: 'gabinetedigital@1.0.0',
|
||||
///123// dist: '1',
|
||||
release: 'gabinetedigital@1.0.0',
|
||||
dist: '1',
|
||||
// Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.
|
||||
// We recommend adjusting this value in production.
|
||||
///123// tracesSampleRate: 1.0,
|
||||
///123// integrations: [
|
||||
///123// new BrowserTracing({
|
||||
///123// tracingOrigins: ['localhost', 'https://gd-api.oapr.gov.ao/api/'],
|
||||
///123// }) as Integration,
|
||||
///123// ]
|
||||
///123// },
|
||||
tracesSampleRate: 1.0,
|
||||
integrations: [
|
||||
new BrowserTracing({
|
||||
tracingOrigins: ['localhost', 'https://gd-api.oapr.gov.ao/api/'],
|
||||
}) as Integration,
|
||||
]
|
||||
},
|
||||
// Forward the init method to the sibling Framework.
|
||||
///123// SentrySibling.init
|
||||
///123//);
|
||||
SentrySibling.init
|
||||
);
|
||||
@NgModule({
|
||||
declarations: [AppComponent],
|
||||
entryComponents: [],
|
||||
@@ -145,7 +145,7 @@ import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */
|
||||
{
|
||||
provide: ErrorHandler,
|
||||
// Attach the Sentry ErrorHandler
|
||||
///123// useValue: SentrySibling.createErrorHandler(),
|
||||
useValue: SentrySibling.createErrorHandler(),
|
||||
},
|
||||
StatusBar,
|
||||
//SplashScreen,
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';
|
||||
import { Observable } from 'rxjs';
|
||||
import { AuthService } from '../services/auth.service';
|
||||
import { PermissionService } from '../services/permission.service';
|
||||
import { LocalstoreService } from '../store/localstore.service';
|
||||
import { SessionStore } from '../store/session.service';
|
||||
import { RouteService } from 'src/app/services/route.service'
|
||||
import { FirstEnterService } from 'src/app/services/first-enter.service'
|
||||
// import { ModalController } from '@ionic/angular';
|
||||
import { AlertController, Platform } from '@ionic/angular';
|
||||
|
||||
@Injectable({
|
||||
@@ -31,6 +28,8 @@ export class AuthGuard implements CanActivate {
|
||||
// if user not active or no session
|
||||
if(!SessionStore.user.Inactivity || !SessionStore.exist) {
|
||||
|
||||
console.log('no session', !SessionStore.user.Inactivity, !SessionStore.exist)
|
||||
console.log(SessionStore.user)
|
||||
if(SessionStore.user.LoginPreference == 'Pin') {
|
||||
this.router.navigate(['/pin']);
|
||||
} else {
|
||||
@@ -46,40 +45,10 @@ export class AuthGuard implements CanActivate {
|
||||
if(pathname.startsWith('/home/agenda')) {
|
||||
if(this.p.userPermission(this.p.permissionList.Agenda.access)) {
|
||||
|
||||
if((SessionStore.user.OwnerCalendars.length != 0 || SessionStore.user.SharedCalendars.length != 0)) {
|
||||
return true
|
||||
}
|
||||
|
||||
if(['/pin','/login', '/inactivity' , '', '/'].includes(window.location.pathname)) {
|
||||
this.FirstEnterService.enter()
|
||||
setTimeout(() => {
|
||||
|
||||
// this.modalController.create({
|
||||
// component: InformationPage,
|
||||
// componentProps: {
|
||||
// },
|
||||
// cssClass: 'discart-expedient-modal',
|
||||
// backdropDismiss: false
|
||||
// });
|
||||
|
||||
// this.alertController.create({
|
||||
// cssClass: 'my-custom-class',
|
||||
// header: 'utilizador não tem calendário',
|
||||
// buttons: [{
|
||||
// text: 'Ok',
|
||||
// handler: () => {
|
||||
|
||||
// }
|
||||
// }]
|
||||
// }).then( async (alertPopup) => {
|
||||
// await alertPopup.present();
|
||||
// })
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
} else {
|
||||
this.router.navigate(['/login']);
|
||||
console.log('£1')
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -90,45 +59,16 @@ export class AuthGuard implements CanActivate {
|
||||
return true;
|
||||
} else {
|
||||
this.router.navigate(['/login']);
|
||||
console.log('£2')
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if(pathname.startsWith('/home/chat')) {
|
||||
if(this.p.userPermission(this.p.permissionList.Chat.access)) {
|
||||
if(!SessionStore.user.ChatData?.data) {
|
||||
|
||||
if(['/pin','/login', '/inactivity' , '', '/'].includes(window.location.pathname)) {
|
||||
this.FirstEnterService.enter()
|
||||
setTimeout(() => {
|
||||
|
||||
// this.modalController.create({
|
||||
// component: InformationPage,
|
||||
// componentProps: {
|
||||
// },
|
||||
// cssClass: 'discart-expedient-modal',
|
||||
// backdropDismiss: false
|
||||
// });
|
||||
|
||||
// this.alertController.create({
|
||||
// cssClass: 'my-custom-class',
|
||||
// header: 'Serviço temporariamente indisponível',
|
||||
// buttons: [{
|
||||
// text: 'Ok',
|
||||
// handler: () => {
|
||||
|
||||
// }
|
||||
// }]
|
||||
// }).then( async (alertPopup) => {
|
||||
// await alertPopup.present();
|
||||
// })
|
||||
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
console.log("no access to chat")
|
||||
console.log('£3')
|
||||
this.router.navigate(['/login']);
|
||||
return false;
|
||||
}
|
||||
@@ -136,6 +76,7 @@ export class AuthGuard implements CanActivate {
|
||||
if(this.p.userPermission(this.p.permissionList.Actions.access)) {
|
||||
return true
|
||||
} else {
|
||||
console.log('£4')
|
||||
this.router.navigate(['/login']);
|
||||
return false
|
||||
}
|
||||
@@ -143,13 +84,18 @@ export class AuthGuard implements CanActivate {
|
||||
if(SessionStore.user.OwnerCalendars.length >= 1 || this.p.userPermission([this.p.permissionList.Gabinete.access])) {
|
||||
return true
|
||||
} else {
|
||||
console.log('£5')
|
||||
this.router.navigate(['/login']);
|
||||
return false
|
||||
}
|
||||
} else if (pathname == '/') {
|
||||
console.log('£6')
|
||||
this.router.navigate(['/login']);
|
||||
console.log('no path')
|
||||
return false
|
||||
} else {
|
||||
console.log('£7')
|
||||
console.log('pathname not match')
|
||||
this.router.navigate(['/login']);
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ export class InactivityGuard implements CanActivate {
|
||||
if((SessionStore?.user?.Inactivity)) {
|
||||
if(this.p.userPermission(this.p.permissionList.Agenda.access) || this.p.userPermission(this.p.permissionList.Gabinete.access)){
|
||||
//When user has got access to Agenda but does not have their own calendar, goes to Agenda
|
||||
if(this.p.userPermission(this.p.permissionList.Agenda.access) && SessionStore.user.OwnerCalendars.length == 0){
|
||||
if(this.p.userPermission(this.p.permissionList.Agenda.access) && SessionStore.user.OwnerCalendars.length == 0) {
|
||||
this.router.navigate(['/home/agenda']);
|
||||
}
|
||||
else{
|
||||
|
||||
@@ -19,7 +19,8 @@ export class LoginGuard implements CanActivate {
|
||||
route: ActivatedRouteSnapshot,
|
||||
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
|
||||
console.log('hire login!', state.url)
|
||||
console.log('hire login!', state.url, SessionStore.user)
|
||||
|
||||
|
||||
if(SessionStore.exist && SessionStore.user.Inactivity && SessionStore.user.LoginPreference != 'Pin' ) {
|
||||
// enter app
|
||||
|
||||
@@ -189,7 +189,7 @@ export class HomePage implements OnInit {
|
||||
this.tabButton.chat = false;
|
||||
}
|
||||
|
||||
selectedTab(url?:string){
|
||||
selectedTab(url?:string) {
|
||||
this.clearTabButtonSelection();
|
||||
if(url =='/home/events'){
|
||||
this.tabButton.home = true;
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<div class="profile-header width-100">
|
||||
<div class="div-logo width-40">
|
||||
<div class="logo-icon">
|
||||
<img *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-no-bg.png' alt='logo'>
|
||||
<!-- <img *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-no-bg.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'gov' " src='assets/images/theme/gov/governoangola_A.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'doneIt' " src='assets/images/theme/{{ThemeService.currentTheme}}/governoangola_A1.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'doneIt' " src='assets/images/theme/{{ThemeService.currentTheme}}/governoangola_A1.png' alt='logo'> -->
|
||||
</div>
|
||||
<div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center">
|
||||
<div class="logo-description-content">
|
||||
@@ -103,7 +103,6 @@
|
||||
<img *ngIf="ThemeService.currentTheme != 'gov'" style="width: 40px;" src="assets/images/theme/doneIt/governoangola_A1.png"/>
|
||||
</div> -->
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<div class="profile-header width-100">
|
||||
<div class="div-logo d-md-none width-40">
|
||||
<div class="logo-icon" *ngIf="hideImage">
|
||||
<img *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-no-bg.png' alt='logo'>
|
||||
<!-- <img *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-no-bg.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'gov' " src='assets/images/theme/gov/governoangola_A.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'doneIt' " src='assets/images/theme/{{ThemeService.currentTheme}}/governoangola_A.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'doneIt' " src='assets/images/theme/{{ThemeService.currentTheme}}/governoangola_A.png' alt='logo'> -->
|
||||
</div>
|
||||
<div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center">
|
||||
<div class="logo-description-content">
|
||||
|
||||
@@ -202,7 +202,6 @@ export class ProfilePage implements OnInit {
|
||||
console.log(this.notificationdata)
|
||||
console.log(this.notificationdata)
|
||||
|
||||
//this.storageservice.remove("Notifications")
|
||||
this.storageservice.store("Notifications", this.notificationdata).then((store) => {
|
||||
console.log(store)
|
||||
this.storageservice.get("Notifications").then((value) => {
|
||||
@@ -220,12 +219,15 @@ export class ProfilePage implements OnInit {
|
||||
this.logoutOut == false
|
||||
|
||||
setTimeout(() => {
|
||||
// alert('logout')
|
||||
|
||||
const pathBeforeGoOut = window.location.pathname
|
||||
this.router.navigateByUrl('/auth', { replaceUrl: true });
|
||||
|
||||
setTimeout(() => {
|
||||
if(this.logoutOut == false) {
|
||||
if(this.logoutOut == false || pathBeforeGoOut == window.location.pathname) {
|
||||
window.location.pathname = '/auth'
|
||||
} else {
|
||||
console.log('refresh')
|
||||
}
|
||||
}, 500)
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
<ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="right-icons" src="assets/images/theme/{{ThemeService.currentTheme}}/icons-received-event.svg"></ion-icon>
|
||||
</button>
|
||||
|
||||
<button title="Novo Evento" class="btn-no-color cy-add-event cursor-pointer resize" (click)="clearContact();openAddEvent();">
|
||||
<button *ngIf="eventService.hasAnyCalendar" title="Novo Evento" class="btn-no-color cy-add-event cursor-pointer resize" (click)="clearContact();openAddEvent();">
|
||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="right-icons" src="assets/images/icons-add.svg" ></ion-icon>
|
||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && !mobileComponent.showAddNewEvent" class="right-icons" src="assets/images/theme/gov/icons-add.svg" ></ion-icon>
|
||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && mobileComponent.showAddNewEvent" class="right-icons" src="assets/images/theme/gov/icons-add-selected.svg" ></ion-icon>
|
||||
|
||||
@@ -496,6 +496,10 @@ export class AgendaPage implements OnInit {
|
||||
loadRequestHistory: any = {}
|
||||
|
||||
loadRangeEvents(startTime: Date, endTime: Date) {
|
||||
if(!this.eventService.hasAnyCalendar) {
|
||||
return false
|
||||
}
|
||||
|
||||
this.array = [];
|
||||
this.rangeStartDate = startTime
|
||||
this.rangeEndDate = endTime
|
||||
@@ -518,6 +522,11 @@ export class AgendaPage implements OnInit {
|
||||
}
|
||||
|
||||
loadRangeEventRun(startTime: Date, endTime: Date) {
|
||||
|
||||
if(SessionStore.user.OwnerCalendars.length == 0 && SessionStore.user.SharedCalendars.length == 0) {
|
||||
return false
|
||||
}
|
||||
|
||||
this.array = [];
|
||||
this.rangeStartDate = startTime
|
||||
this.rangeEndDate = endTime
|
||||
|
||||
@@ -226,8 +226,7 @@
|
||||
|
||||
</ion-content>
|
||||
|
||||
<ion-footer >
|
||||
|
||||
<ion-footer (click)="ChatSystemService.getDmRoom(roomId).sendReadMessage()">
|
||||
|
||||
<div class="typing" *ngIf="ChatSystemService.getDmRoom(roomId).otherUserType == true">
|
||||
<ngx-letters-avatar [avatarName]="ChatSystemService.getGroupRoom(roomId).name" [width]="30" [circular]="true"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<div [ngSwitch]="segmentVista" class="overflow-y-auto">
|
||||
<!-- This is the list view -->
|
||||
<div *ngSwitchCase="'listview'">
|
||||
<ion-item-sliding *ngIf="loadCount">
|
||||
<ion-item-sliding *ngIf="loadCount || (getAllProcessCount >= 1 && loadNum >= 1)">
|
||||
<div class="listview" >
|
||||
<ion-list *ngIf="AllProcess">
|
||||
<div
|
||||
@@ -234,7 +234,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openDiplomasPage('validar'); selectedElement='DiplomasPorValidar'" [class.active]="selectedElement == 'DiplomasPorValidar'" class="box-hover exp-card d-flex flex-column justify-center">
|
||||
<!-- <div *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openDiplomasPage('validar'); selectedElement='DiplomasPorValidar'" [class.active]="selectedElement == 'DiplomasPorValidar'" class="box-hover exp-card d-flex flex-column justify-center">
|
||||
<div class="d-flex justify-center">
|
||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-expediente-diploma.svg"></ion-icon>
|
||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' && selectedElement != 'DiplomasPorValidar' " src="assets/images/theme/gov/icons-expediente-diploma.svg"></ion-icon>
|
||||
@@ -280,7 +280,7 @@
|
||||
</div>
|
||||
<p class="text-center exp-card-title">Diplomas para Assinar</p>
|
||||
<p class="text-center exp-card-content">{{ deplomasStore.diplomasParaAssinartCount }} <span class="title1">Documentos</span></p>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<div *ngIf="!loadCount" class="width-100">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { Component, DoCheck, OnInit, ViewChild } from '@angular/core';
|
||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||
import { ProcessesService } from 'src/app/services/processes.service';
|
||||
import { ModalController } from '@ionic/angular';
|
||||
import { ActivatedRoute, NavigationEnd, NavigationExtras, Router } from '@angular/router';
|
||||
import { AuthService } from 'src/app/services/auth.service';
|
||||
import {NavigationEnd, NavigationExtras, Router } from '@angular/router';
|
||||
|
||||
import { LoginUserRespose } from 'src/app/models/user.model';
|
||||
import { ExpedientsPage } from 'src/app/shared/gabinete-digital/expedients/expedients.page';
|
||||
import { PendentesPage } from 'src/app/shared/gabinete-digital/pendentes/pendentes.page';
|
||||
@@ -21,23 +21,13 @@ import { DeplomasStore } from 'src/app/store/deplomas.service';
|
||||
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
||||
|
||||
import { DespachoService } from 'src/app/Rules/despacho.service';
|
||||
import { ExpedienteService } from 'src/app/Rules/expediente.service';
|
||||
import { PendentesService } from 'src/app/Rules/pendentes.service';
|
||||
import { AproveEventService } from 'src/app/Rules/aprove-event.service';
|
||||
import { ParecerService } from 'src/app/Rules/parecer.service';
|
||||
import { DeferimentosServiceService } from 'src/app/Rules/deferimentos-service.service';
|
||||
import { DeplomasServiceService } from 'src/app/Rules/deplomas-service.service'
|
||||
import { DespachoPRService } from 'src/app/Rules/despacho-pr.service'
|
||||
import { ChangeProfileService } from 'src/app/services/change-profile.service';
|
||||
import { PermissionService } from 'src/app/services/permission.service';
|
||||
import { ThemeService } from 'src/app/services/theme.service'
|
||||
|
||||
import { ThemeService } from 'src/app/services/theme.service';
|
||||
|
||||
import { SqliteService } from '../../services/sqlite.service';
|
||||
import { Platform } from '@ionic/angular';
|
||||
import { BackgroundService } from 'src/app/services/background.service';
|
||||
import { SortService } from 'src/app/services/functions/sort.service';
|
||||
import { DataService } from 'src/app/services/data.service';
|
||||
import { Storage } from '@ionic/storage';
|
||||
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||
import { SessionStore } from 'src/app/store/session.service';
|
||||
@@ -113,6 +103,9 @@ export class GabineteDigitalPage implements OnInit {
|
||||
permissions = {
|
||||
Agenda: 530
|
||||
}
|
||||
|
||||
AllProcess = []
|
||||
|
||||
@ViewChild(ExpedientsPage) expedientesPage: ExpedientsPage;
|
||||
@ViewChild(PendentesPage) pendentesListPage: PendentesPage;
|
||||
@ViewChild(EventsToApprovePage) eventsToApprove: EventsToApprovePage;
|
||||
@@ -120,33 +113,19 @@ export class GabineteDigitalPage implements OnInit {
|
||||
constructor(
|
||||
private processesbackend: ProcessesService,
|
||||
private modalController: ModalController,
|
||||
private activatedRoute: ActivatedRoute,
|
||||
private router: Router,
|
||||
authService: AuthService,
|
||||
public waitForDomService: WaitForDomService,
|
||||
private despachoRule: DespachoService,
|
||||
private sqliteservice: SqliteService,
|
||||
private platform: Platform,
|
||||
private changeProfileService: ChangeProfileService,
|
||||
private backgroundservice: BackgroundService,
|
||||
public ThemeService: ThemeService,
|
||||
private sortService: SortService,
|
||||
private dataService: DataService,
|
||||
private storage: Storage,
|
||||
public p: PermissionService,
|
||||
private ExpedienteService: ExpedienteService,
|
||||
private PendentesService: PendentesService,
|
||||
private DeferimentosServiceService: DeferimentosServiceService,
|
||||
private DeplomasServiceService: DeplomasServiceService,
|
||||
private AproveEventService: AproveEventService,
|
||||
private ParecerService: ParecerService,
|
||||
private DespachoPRService: DespachoPRService,
|
||||
public NotificationsService: NotificationsService
|
||||
) {
|
||||
|
||||
|
||||
|
||||
this.loggeduser = SessionStore.user;
|
||||
window.onresize = (event) => {
|
||||
// if not mobile remove all component
|
||||
if (window.innerWidth < 701) {
|
||||
@@ -462,7 +441,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
else if (workflowName == 'Expediente') {
|
||||
this.router.navigate(['/home/gabinete-digital/expediente', serialNumber, 'gabinete-digital']);
|
||||
}
|
||||
else if (workflowName == 'Expediente' && this.loggeduser.Profile == 'PR') {
|
||||
else if (workflowName == 'Expediente' && SessionStore.user.Profile == 'PR') {
|
||||
this.router.navigate(['/home/gabinete-digital/expedientes-pr', serialNumber, 'gabinete-digital']);
|
||||
}
|
||||
else if (workflowName == "Pedido de Parecer do Presidente") {
|
||||
@@ -525,7 +504,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
}
|
||||
else if (this.router.url == '/home/gabinete-digital?expedientes=true') {
|
||||
this.openExpedientListPage();
|
||||
if (this.loggeduser.Profile == 'MDGPR') {
|
||||
if (SessionStore.user.Profile == 'MDGPR') {
|
||||
this.selectedElement = 'Correspondence';
|
||||
}
|
||||
else {
|
||||
@@ -588,11 +567,10 @@ export class GabineteDigitalPage implements OnInit {
|
||||
this.showDiplomasGerar = false
|
||||
}
|
||||
|
||||
|
||||
get AllProcess() {
|
||||
return this.expedientegbstore.list.concat(this.pedidosstore.listparecer).concat(this.pedidosstore.listdeferimento)
|
||||
updateAllProcess() {
|
||||
this.AllProcess = this.expedientegbstore.list.concat(this.pedidosstore.listparecer).concat(this.pedidosstore.listdeferimento)
|
||||
.concat(this.despachoprstore.list).concat(this.eventoaprovacaostore.listmd).concat(this.eventoaprovacaostore.listpr)
|
||||
.concat(this.deplomasStore.diplomasParaAssinarList).concat(this.deplomasStore.diplomasAssinadoList).concat(this.despachoStore.list).concat(this.deplomasStore.DiplomaGerarList)
|
||||
// .concat(this.deplomasStore.diplomasParaAssinarList).concat(this.deplomasStore.diplomasAssinadoList).concat(this.despachoStore.list).concat(this.deplomasStore.DiplomaGerarList)
|
||||
}
|
||||
|
||||
get getAllProcessCount() {
|
||||
@@ -605,6 +583,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
return Object.keys(this.loadProcess)
|
||||
}
|
||||
|
||||
loadNum = 0
|
||||
async LoadCounts() {
|
||||
|
||||
let expedientes;
|
||||
@@ -619,6 +598,8 @@ export class GabineteDigitalPage implements OnInit {
|
||||
this.loadCount = true;
|
||||
}
|
||||
|
||||
this.loadNum++;
|
||||
|
||||
expedientes = (expedientes || [] ).filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
|
||||
expedientes = expedientes.filter((item) => {
|
||||
@@ -629,14 +610,15 @@ export class GabineteDigitalPage implements OnInit {
|
||||
|
||||
this.expedientegbstore.count = expedientes.length;
|
||||
this.expedientegbstore.reset(expedientes);
|
||||
this.updateAllProcess()
|
||||
|
||||
|
||||
let despachos = await this.despachoRule.getList({ updateStore: true })
|
||||
this.updateAllProcess()
|
||||
if (despachos) {
|
||||
this.despachoStore.reset(despachos)
|
||||
}
|
||||
|
||||
|
||||
let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise();
|
||||
let pareceresPr = await this.processesbackend.GetTasksList("Pedido de Parecer do Presidente", false).toPromise();
|
||||
|
||||
@@ -684,11 +666,12 @@ export class GabineteDigitalPage implements OnInit {
|
||||
pendentes = pendentes.map((element)=> this.customTaskPipe.transform(element))
|
||||
|
||||
this.pendentesstore.reset(pendentes);
|
||||
this.updateAllProcess()
|
||||
|
||||
let depachoAPI: any = await this.processesbackend.GetTasksList("Despacho do Presidente da República", false).toPromise();
|
||||
|
||||
|
||||
if(this.loggeduser.Profile != 'PR') {
|
||||
if(SessionStore.user.Profile != 'PR') {
|
||||
|
||||
let depacho = depachoAPI.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho");
|
||||
depacho = depacho.filter(data => data.workflowInstanceDataFields.Status == "Active");
|
||||
@@ -696,11 +679,13 @@ export class GabineteDigitalPage implements OnInit {
|
||||
depacho = depacho.map((e)=> this.customTaskPipe.transform(e))
|
||||
|
||||
this.despachoprstore.reset(depacho)
|
||||
} else if(this.loggeduser.Profile == 'PR') {
|
||||
this.updateAllProcess()
|
||||
} else if(SessionStore.user.Profile == 'PR') {
|
||||
|
||||
let depacho = depachoAPI.filter(data => data.activityInstanceName == "Concluir Despacho").filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
depacho = depacho.map((e)=> this.customTaskPipe.transform(e))
|
||||
this.despachoprstore.reset(depacho)
|
||||
this.updateAllProcess()
|
||||
}
|
||||
|
||||
let mdEventsOficial = await this.processesbackend.GetTasksList('Agenda Oficial MDGPR', false).toPromise();
|
||||
@@ -711,6 +696,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
|
||||
this.eventoaprovacaostore.countMd = eventsMDGPRList.length
|
||||
this.eventoaprovacaostore.resetmd(eventsMDGPRList);
|
||||
this.updateAllProcess()
|
||||
|
||||
let prEventsOficial = await this.processesbackend.GetTasksList('Agenda Oficial PR', false).toPromise();
|
||||
let prEventsPessoal = await this.processesbackend.GetTasksList('Agenda Pessoal PR', false).toPromise();
|
||||
@@ -719,6 +705,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
|
||||
this.eventoaprovacaostore.countPr = eventsPRList.length
|
||||
this.eventoaprovacaostore.resetpr(eventsPRList);
|
||||
this.updateAllProcess()
|
||||
|
||||
let diplomasValidar = depachoAPI.filter(data => data.activityInstanceName == "Revisar Diploma");
|
||||
|
||||
@@ -754,7 +741,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
let diplomasAssinados = depachoAPI.filter(data => data.activityInstanceName == "Diploma Assinado");
|
||||
this.deplomasStore.resetDiplomasAssinadoList(diplomasAssinados)
|
||||
|
||||
|
||||
this.updateAllProcess()
|
||||
this.loadCount = true
|
||||
}
|
||||
|
||||
@@ -810,7 +797,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
this.closeAllDesktopComponents();
|
||||
|
||||
|
||||
if(this.loggeduser.Profile != 'PR') {
|
||||
if(SessionStore.user.Profile != 'PR') {
|
||||
if (window.innerWidth < 701) {
|
||||
//this.openExpedientList();
|
||||
this.router.navigate(['/home/gabinete-digital/expediente']);
|
||||
@@ -821,7 +808,7 @@ export class GabineteDigitalPage implements OnInit {
|
||||
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
|
||||
this.showExpedients = true;
|
||||
}
|
||||
} else if(this.loggeduser.Profile == 'PR') {
|
||||
} else if(SessionStore.user.Profile == 'PR') {
|
||||
if (window.innerWidth < 701) {
|
||||
this.router.navigate(['/home/gabinete-digital/expedientes-pr']);
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
<div class="div-top-header">
|
||||
|
||||
<div class="div-logo">
|
||||
<img style="max-width: 90px;" *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-bg-removebg-preview.png' alt='logo'>
|
||||
<img style="max-width: 80px;" *ngIf="ThemeService.currentTheme == 'gov' " src='assets/images/theme/gov/governoangola_A.png' alt='logo'>
|
||||
<!-- <img style="max-width: 90px;" *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-bg-removebg-preview.png' alt='logo'>
|
||||
<img style="max-width: 80px;" *ngIf="ThemeService.currentTheme == 'gov' " src='assets/images/theme/gov/governoangola_A.png' alt='logo'> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -54,13 +54,9 @@ export class LoginPage implements OnInit {
|
||||
private platform: Platform,
|
||||
private FirstEnterService: FirstEnterService,
|
||||
private storage:Storage,
|
||||
) {
|
||||
console.log('constructor')
|
||||
}
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
console.log('ngOngInit')
|
||||
}
|
||||
ngOnInit() {}
|
||||
|
||||
togglePassword() {
|
||||
this.showPassword = !this.showPassword;
|
||||
@@ -99,9 +95,9 @@ export class LoginPage implements OnInit {
|
||||
}
|
||||
|
||||
getToken() {
|
||||
this.notificatinsservice.requestPermissions();
|
||||
this.notificatinsservice.registrationError();
|
||||
this.notificatinsservice.getAndpostToken(this.username);
|
||||
// this.notificatinsservice.requestPermissions();
|
||||
// this.notificatinsservice.registrationError();
|
||||
// this.notificatinsservice.getAndpostToken(this.username);
|
||||
}
|
||||
|
||||
async Login() {
|
||||
|
||||
@@ -100,6 +100,8 @@ export class AuthService {
|
||||
session.BasicAuthKey = user.BasicAuthKey
|
||||
SessionStore.reset(session)
|
||||
|
||||
console.log(session)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -109,23 +111,26 @@ export class AuthService {
|
||||
loginToChatWs() {
|
||||
setTimeout(() => {
|
||||
|
||||
this.RochetChatConnectorService.connect();
|
||||
this.RochetChatConnectorService.login().then((message: any) => {
|
||||
if(SessionStore.user.ChatData?.data) {
|
||||
this.RochetChatConnectorService.connect();
|
||||
this.RochetChatConnectorService.login().then((message: any) => {
|
||||
|
||||
SessionStore.user.RochetChatUserId = message.result.id
|
||||
SessionStore.save()
|
||||
SessionStore.user.RochetChatUserId = message.result.id
|
||||
SessionStore.save()
|
||||
|
||||
this.RochetChatConnectorService.setStatus('online')
|
||||
window['RochetChatConnectorService'] = this.RochetChatConnectorService
|
||||
setTimeout(() => {
|
||||
this.ChatSystemService.getAllRooms();
|
||||
this.RochetChatConnectorService.setStatus('online')
|
||||
}, 200);
|
||||
window['RochetChatConnectorService'] = this.RochetChatConnectorService
|
||||
setTimeout(() => {
|
||||
this.ChatSystemService.getAllRooms();
|
||||
this.RochetChatConnectorService.setStatus('online')
|
||||
}, 200);
|
||||
|
||||
|
||||
}).catch((error) => {
|
||||
console.error(error)
|
||||
})
|
||||
}).catch((error) => {
|
||||
console.error(SessionStore.user.ChatData, 'web socket login',error)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
// before sending a message with a attachment
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ChangeMessageQueueService } from './change-message-queue.service';
|
||||
|
||||
describe('ChangeMessageQueueService', () => {
|
||||
let service: ChangeMessageQueueService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(ChangeMessageQueueService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class ChangeMessageQueueService {
|
||||
constructor() {}
|
||||
}
|
||||
@@ -504,20 +504,25 @@ export class MessageService {
|
||||
const message = this.getChatObj()
|
||||
let a
|
||||
|
||||
if(!message.id) {
|
||||
delete message.id
|
||||
}
|
||||
|
||||
if (this.localReference) {
|
||||
a = await MessageModel.get({localReference: this.localReference})
|
||||
} else if (this._id) {
|
||||
a = await MessageModel.get({id: this.id})
|
||||
} else if(this.id) {
|
||||
a = await MessageModel.get({_id: this._id})
|
||||
} else if(this.id) {
|
||||
a = await MessageModel.get({id: this.id})
|
||||
}
|
||||
|
||||
for( const [name, value] of Object.entries(message)) {
|
||||
a[name] = value
|
||||
if(a) {
|
||||
for( const [name, value] of Object.entries(message)) {
|
||||
a[name] = value
|
||||
}
|
||||
await a.save()
|
||||
}
|
||||
|
||||
await a.save()
|
||||
|
||||
} else {
|
||||
this.earlySave = true
|
||||
console.log('save change to early')
|
||||
|
||||
@@ -763,8 +763,6 @@ export class RoomService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
async readAllMessage() {
|
||||
|
||||
this.ViewedMessageService.requestReadAll(this)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import * as FIFOProcessQueue from 'fifo-process-queue';
|
||||
import { async } from 'rxjs';
|
||||
import { RoomService } from './room.service';
|
||||
|
||||
@Injectable({
|
||||
|
||||
@@ -63,6 +63,7 @@ export class EventsService {
|
||||
calendarNamesType = {}
|
||||
|
||||
myCalendarNames = {}
|
||||
hasAnyCalendar = false
|
||||
|
||||
constructor(
|
||||
private http: HttpClient,
|
||||
@@ -135,6 +136,7 @@ export class EventsService {
|
||||
if (this.loggeduser.Profile == 'MDGPR') {
|
||||
|
||||
for (let calendar of this.loggeduser.OwnerCalendars) {
|
||||
this.hasAnyCalendar = false
|
||||
|
||||
if (calendar.CalendarName == 'Oficial') {
|
||||
|
||||
@@ -157,6 +159,7 @@ export class EventsService {
|
||||
}
|
||||
|
||||
for (let sharedCalendar of this.loggeduser.SharedCalendars) {
|
||||
this.hasAnyCalendar = false
|
||||
|
||||
if (sharedCalendar.CalendarName == 'Oficial') {
|
||||
|
||||
@@ -181,6 +184,7 @@ export class EventsService {
|
||||
else if (this.loggeduser.Profile == 'PR') {
|
||||
|
||||
for (let calendar of this.loggeduser.OwnerCalendars) {
|
||||
this.hasAnyCalendar = false
|
||||
if (calendar.CalendarName == 'Oficial') {
|
||||
|
||||
this.hasOwnOficial = true
|
||||
@@ -203,6 +207,7 @@ export class EventsService {
|
||||
}
|
||||
|
||||
for (let calendar of this.loggeduser.OwnerCalendars) {
|
||||
this.hasAnyCalendar = false
|
||||
if(!this.usersCalendarIds.includes(calendar.OwnerUserId)) {
|
||||
this.usersCalendarIds.push(calendar.OwnerUserId)
|
||||
}
|
||||
@@ -234,7 +239,7 @@ export class EventsService {
|
||||
}
|
||||
|
||||
for (let sharedCalendar of this.loggeduser.SharedCalendars) {
|
||||
|
||||
this.hasAnyCalendar = false
|
||||
|
||||
if(!this.usersCalendarIds.includes(sharedCalendar.OwnerUserId)) {
|
||||
this.usersCalendarIds.push(sharedCalendar.OwnerUserId)
|
||||
@@ -267,6 +272,7 @@ export class EventsService {
|
||||
|
||||
|
||||
for (let sharedCalendar of this.loggeduser.SharedCalendars) {
|
||||
this.hasAnyCalendar = false
|
||||
if(sharedCalendar?.OwnerUserId) {
|
||||
this.GetCalendarName(sharedCalendar.OwnerUserId).subscribe((e)=> {
|
||||
this.calendarNames[sharedCalendar.CalendarId] = e.FullName
|
||||
@@ -286,6 +292,7 @@ export class EventsService {
|
||||
}
|
||||
|
||||
for (let sharedCalendar of this.loggeduser.OwnerCalendars) {
|
||||
this.hasAnyCalendar = false
|
||||
|
||||
this.calendarNames[sharedCalendar.CalendarId] = 'Meu calendario'
|
||||
|
||||
@@ -297,6 +304,13 @@ export class EventsService {
|
||||
this.calendarNamesType['Meu calendario'][sharedCalendar.CalendarName] = true
|
||||
this.calendarNamesType['Meu calendario'][sharedCalendar.CalendarName+'Id'] = sharedCalendar.CalendarId
|
||||
}
|
||||
|
||||
|
||||
if(SessionStore.user.OwnerCalendars.length == 0 && SessionStore.user.SharedCalendars.length == 0) {
|
||||
this.hasAnyCalendar = false
|
||||
} else {
|
||||
this.hasAnyCalendar = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ export class InativityService {
|
||||
|
||||
function resetTimer() {
|
||||
clearTimeout(time);
|
||||
time = setTimeout(userIsNotActive, 60000 * 5); // time is in milliseconds
|
||||
time = setTimeout(userIsNotActive, 60000 * 15); // time is in milliseconds
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,8 +28,10 @@ export class PermissionService {
|
||||
|
||||
|
||||
for(let permission of (this.SessionStore.user.UserPermissions || [])) {
|
||||
if (args.includes(permission)) {
|
||||
return true;
|
||||
for( const arg of args ) {
|
||||
if (arg == permission) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -16,7 +16,7 @@ const { Storage } = Plugins; */
|
||||
) {}
|
||||
|
||||
key(key:string): string {
|
||||
return (SHA1('service'+this.constructor.name+key)).toString()
|
||||
return (SHA1('service'+"StorageService"+key)).toString()
|
||||
}
|
||||
|
||||
async keyExist(key:string) {
|
||||
|
||||
@@ -21,7 +21,7 @@ export class ThemeService {
|
||||
private storageservice: StorageService
|
||||
) {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
this.keyName = (SHA1("ThemeService")).toString()
|
||||
let restore = localstoreService.get(this.keyName, {
|
||||
theme: this.defaultTheme
|
||||
})
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
|
||||
<div class="div-logo align-center justify-center">
|
||||
<div class="logo-icon">
|
||||
<img *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-no-bg.png' alt='logo'>
|
||||
<!-- <img *ngIf="ThemeService.currentTheme == 'default' " src='assets/images/logo-no-bg.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'gov' " src='assets/images/theme/gov/governoangola_A.png' alt='logo'>
|
||||
<img *ngIf="ThemeService.currentTheme == 'doneIt'" src="assets/images/theme/doneIt/governoangola_A1.png" alt='logo'/>
|
||||
<img *ngIf="ThemeService.currentTheme == 'doneIt'" src="assets/images/theme/doneIt/governoangola_A1.png" alt='logo'/> -->
|
||||
</div>
|
||||
<div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center">
|
||||
<div class="logo-description-content">
|
||||
|
||||
@@ -17,7 +17,7 @@ export class CalendarService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name+ 'eventSource')).toString()
|
||||
this.keyName = (SHA1("CalendarService"+ 'eventSource')).toString()
|
||||
|
||||
let restore = this.localstoreService.get(this.keyName, [])
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ export class ChatMessageService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1('chat'+this.constructor.name)).toString()
|
||||
this.keyName = (SHA1('chat'+"ChatMessageService")).toString()
|
||||
|
||||
setTimeout(()=> {
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
|
||||
@@ -14,7 +14,7 @@ export class ChatUserService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1('chat'+this.constructor.name)).toString()
|
||||
this.keyName = (SHA1('chat'+"ToDayEventStorageService")).toString()
|
||||
|
||||
setTimeout(()=> {
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
|
||||
@@ -23,10 +23,10 @@ export class DeplomasService {
|
||||
private _diplomasListCount = 0;
|
||||
|
||||
constructor() {
|
||||
this.keyNameDiplomasAssinado = (SHA1(this.constructor.name+"diplomasAssinado")).toString()
|
||||
this.keyNameDiplomasReview = (SHA1(this.constructor.name+"diplomasReview")).toString()
|
||||
this.keyNameDiplomasGerar = (SHA1(this.constructor.name+"diplomasGerar")).toString()
|
||||
this.keyNameDiplomasParaAssinar = (SHA1(this.constructor.name+"diplomasParaAsinar")).toString()
|
||||
this.keyNameDiplomasAssinado = (SHA1("DeplomasService"+"diplomasAssinado")).toString()
|
||||
this.keyNameDiplomasReview = (SHA1("DeplomasService"+"diplomasReview")).toString()
|
||||
this.keyNameDiplomasGerar = (SHA1("DeplomasService"+"diplomasGerar")).toString()
|
||||
this.keyNameDiplomasParaAssinar = (SHA1("DeplomasService"+"diplomasParaAsinar")).toString()
|
||||
|
||||
setTimeout(() => {
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ export class DespachoStoreService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name+ 'home/eventSource')).toString()
|
||||
this.keyName = (SHA1("DespachoStoreService"+ 'home/eventSource')).toString()
|
||||
window['ObjectQueryService'] = this.Query()
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
@@ -15,7 +15,7 @@ private _count = 0
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
this.keyName = (SHA1("DespachosprStoreService")).toString()
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
@@ -19,8 +19,8 @@ export class EventoaprovacaoStoreService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyNamemd = (SHA1(this.constructor.name+"md")).toString()
|
||||
this.keyNamepr = (SHA1(this.constructor.name+"pr")).toString()
|
||||
this.keyNamemd = (SHA1("EventoaprovacaoStoreService"+"md")).toString()
|
||||
this.keyNamepr = (SHA1("EventoaprovacaoStoreService"+"pr")).toString()
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
@@ -16,7 +16,7 @@ export class ExpedientegdStoreService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
this.keyName = (SHA1("EventoaprovacaoStoreService")).toString()
|
||||
|
||||
setTimeout(()=> {
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
|
||||
@@ -17,8 +17,8 @@ export class PedidosStoreService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyNameparecer = (SHA1(this.constructor.name+"parecer")).toString()
|
||||
this.keyNamedeferiemnto = (SHA1(this.constructor.name+"deferimneto")).toString()
|
||||
this.keyNameparecer = (SHA1("PedidosStoreService"+"parecer")).toString()
|
||||
this.keyNamedeferiemnto = (SHA1("PedidosStoreService"+"deferimneto")).toString()
|
||||
|
||||
setTimeout(()=>{
|
||||
let restoreParecer = localstoreService.get(this.keyNameparecer, {})
|
||||
|
||||
@@ -15,7 +15,7 @@ export class PendestesStoreService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
this.keyName = (SHA1("PendestesStoreService")).toString()
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
@@ -15,7 +15,7 @@ export class PresidentialActionsStoreService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name+ 'presidentialActions/local')).toString()
|
||||
this.keyName = (SHA1("PresidentialActionsStoreService"+ 'presidentialActions/local')).toString()
|
||||
|
||||
setTimeout(()=>{
|
||||
let restore = localstoreService.get(this.keyName, [])
|
||||
|
||||
@@ -18,7 +18,7 @@ class SessionService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
this.keyName = (SHA1("SessionService")).toString()
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
this._user = restore.user || new UserSession()
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ export class ToDayEventStorageService {
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name+ 'home/eventSource')).toString()
|
||||
this.keyName = (SHA1("ToDayEventStorageService"+ 'home/eventSource')).toString()
|
||||
|
||||
|
||||
setTimeout(() => {
|
||||
|
||||
@@ -12,7 +12,7 @@ export class TotalDocumentService {
|
||||
private keyName: string;
|
||||
|
||||
constructor() {
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
this.keyName = (SHA1("TotalDocumentService")).toString()
|
||||
|
||||
setTimeout(()=> {
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
|
||||
@@ -13,9 +13,9 @@ export const environment = {
|
||||
// apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/',
|
||||
// apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket',
|
||||
production: true,
|
||||
domain: 'gabinetedigital.local',
|
||||
defaultuser: '',//paulo.pinto@gabinetedigital.local
|
||||
defaultuserpwd: '', //tabteste@006,
|
||||
domain: 'evandre.dasilva@equilibrium.co.ao',
|
||||
defaultuser: 'evandre.dasilva@equilibrium.co.ao',//paulo.pinto@gabinetedigital.local
|
||||
defaultuserpwd: 'Luand@1219', //tabteste@006,06,
|
||||
chatOffline: true,
|
||||
presidencia: false,
|
||||
version: versionData,
|
||||
|
||||
@@ -12,9 +12,9 @@ export const environment = {
|
||||
apiChatUrl: 'https://CHAT.DONEIT.CO.AO/api/v1/',
|
||||
apiWsChatUrl: 'wss://CHAT.DONEIT.CO.AO/websocket',
|
||||
production: true,
|
||||
domain: 'paulo.pinto@gabinetedigital.local',
|
||||
defaultuser: 'paulo.pinto@gabinetedigital.local',//paulo.pinto@gabinetedigital.local
|
||||
defaultuserpwd: 'tabteste@006', //tabteste@006,
|
||||
domain: 'evandre.dasilva@equilibrium.co.ao',
|
||||
defaultuser: 'evandre.dasilva@equilibrium.co.ao',//paulo.pinto@gabinetedigital.local
|
||||
defaultuserpwd: 'Luand@1219', //tabteste@006,
|
||||
chatOffline: true,
|
||||
presidencia: false,
|
||||
version: versionData,
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet">
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="assets/icon/governoangola_A.png" />
|
||||
<!-- <link rel="icon" type="image/x-icon" href="assets/icon/governoangola_A.png" /> -->
|
||||
<!-- <link rel="manifest" href="assets/json/manifest.json"> -->
|
||||
|
||||
<!-- add to homescreen for ios -->
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
export let versionData = {
|
||||
"shortSHA": "efa7774c1",
|
||||
"SHA": "efa7774c1c45d63325a62d9596c9e8353cb5cb18",
|
||||
"branch": "consoleCle2",
|
||||
"shortSHA": "58f9e7eac",
|
||||
"SHA": "58f9e7eacd838ed7651df9fbc32863e774cccd6f",
|
||||
"branch": "no_bug_movemente",
|
||||
"lastCommitAuthor": "'Peter Maquiran'",
|
||||
"lastCommitTime": "'Mon Jan 9 14:51:00 2023 +0100'",
|
||||
"lastCommitMessage": "improve chat",
|
||||
"lastCommitNumber": "4623",
|
||||
"lastCommitTime": "'Mon Jan 9 17:07:02 2023 +0100'",
|
||||
"lastCommitMessage": "save",
|
||||
"lastCommitNumber": "4624",
|
||||
"change": "",
|
||||
"changeStatus": "On branch consoleCle2\nChanges to be committed:\n (use \"git restore --staged <file>...\" to unstage)\n\tmodified: .gitignore\n\tmodified: src/app/home/home.page.ts\n\tmodified: src/app/pages/gabinete-digital/gabinete-digital.page.html\n\tmodified: src/app/pages/login/login.page.html\n\tmodified: src/app/services/background.service.ts\n\tmodified: src/app/services/network-service.service.ts\n\tmodified: src/app/shared/header/header.page.html\n\tmodified: src/environments/environment.prod.ts\n\tmodified: src/environments/environment.ts",
|
||||
"changeStatus": "On branch no_bug_movemente\nChanges to be committed:\n (use \"git restore --staged <file>...\" to unstage)\n\tmodified: android/app/src/main/AndroidManifest.xml\n\tmodified: android/app/src/main/res/drawable-land-hdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-land-mdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-land-xhdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-land-xxhdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-land-xxxhdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-port-hdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-port-mdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-port-xhdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-port-xxhdpi/splash.png\n\tmodified: android/app/src/main/res/drawable-port-xxxhdpi/splash.png\n\tmodified: android/app/src/main/res/mipmap-hdpi/ic_launcher.png\n\tmodified: android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png\n\tmodified: android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png\n\tmodified: android/app/src/main/res/mipmap-mdpi/ic_launcher.png\n\tmodified: android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png\n\tmodified: android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png\n\tmodified: android/app/src/main/res/mipmap-xhdpi/ic_launcher.png\n\tmodified: android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png\n\tmodified: android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png\n\tmodified: android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png\n\tmodified: android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png\n\tmodified: android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png\n\tmodified: android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png\n\tmodified: android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png\n\tmodified: android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png\n\tmodified: package-lock.json\n\tmodified: package.json\n\tmodified: src/app/Rules/aprove-event.service.ts\n\tmodified: src/app/Rules/deferimentos-service.service.ts\n\tmodified: src/app/Rules/deplomas-service.service.ts\n\tmodified: src/app/Rules/despacho-pr.service.ts\n\tmodified: src/app/Rules/despacho.service.ts\n\tmodified: src/app/Rules/expediente.service.ts\n\tmodified: src/app/Rules/parecer.service.ts\n\tmodified: src/app/Rules/pedido.service.ts\n\tmodified: src/app/Rules/pendentes.service.ts\n\tmodified: src/app/app.module.ts\n\tmodified: src/app/guards/auth.guard.ts\n\tmodified: src/app/guards/inactivity.guard.ts\n\tmodified: src/app/guards/login.guard.ts\n\tmodified: src/app/home/home.page.ts\n\tmodified: src/app/modals/profile/edit-profile/edit-profile.page.html\n\tmodified: src/app/modals/profile/profile.page.html\n\tmodified: src/app/modals/profile/profile.page.ts\n\tmodified: src/app/pages/agenda/agenda.page.html\n\tmodified: src/app/pages/agenda/agenda.page.ts\n\tmodified: src/app/pages/chat/messages/messages.page.html\n\tmodified: src/app/pages/gabinete-digital/gabinete-digital.page.html\n\tmodified: src/app/pages/gabinete-digital/gabinete-digital.page.ts\n\tmodified: src/app/pages/inactivity/inactivity.page.html\n\tmodified: src/app/pages/login/login.page.ts\n\tmodified: src/app/services/auth.service.ts\n\tnew file: src/app/services/chat/change-message-queue.service.spec.ts\n\tnew file: src/app/services/chat/change-message-queue.service.ts\n\tmodified: src/app/services/chat/message.service.ts\n\tmodified: src/app/services/chat/room.service.ts\n\tmodified: src/app/services/chat/viewed-message.service.ts\n\tmodified: src/app/services/events.service.ts\n\tmodified: src/app/services/inativity.service.ts\n\tmodified: src/app/services/permission.service.ts\n\tmodified: src/app/services/storage.service.ts\n\tmodified: src/app/services/theme.service.ts\n\tmodified: src/app/shared/header/header.page.html\n\tmodified: src/app/store/calendar.service.ts\n\tmodified: src/app/store/chat/chat-message.service.ts\n\tmodified: src/app/store/chat/chat-user.service.ts\n\tmodified: src/app/store/deplomas.service.ts\n\tmodified: src/app/store/despacho-store.service.ts\n\tmodified: src/app/store/despachospr-store.service.ts\n\tmodified: src/app/store/eventoaprovacao-store.service.ts\n\tmodified: src/app/store/expedientegd-store.service.ts\n\tmodified: src/app/store/pedidos-store.service.ts\n\tmodified: src/app/store/pendestes-store.service.ts\n\tmodified: src/app/store/presidential-actions-store.service.ts\n\tmodified: src/app/store/session.service.ts\n\tmodified: src/app/store/to-day-event-storage.service.ts\n\tmodified: src/app/store/total-document.service.ts\n\tmodified: src/environments/environment.prod.ts\n\tmodified: src/environments/environment.ts\n\tmodified: src/index.html",
|
||||
"changeAuthor": "peter.maquiran"
|
||||
}
|
||||