This commit is contained in:
Peter Maquiran
2023-01-12 15:27:09 +01:00
parent 58f9e7eacd
commit 9493179efd
82 changed files with 702 additions and 557 deletions
+5 -4
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gpr.gabinetedigital"> package="com.capacitorjs.app.testapp">
<application <application
android:allowBackup="true" android:allowBackup="true"
@@ -12,10 +12,11 @@
<activity <activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
android:name="com.gpr.gabinetedigital.MainActivity" android:name="com.capacitorjs.app.testapp.MainActivity"
android:label="@string/title_activity_main" android:label="@stringtitle_activity_main/title_activity_main"
android:theme="@style/AppTheme.NoActionBarLaunch" android:theme="@style/AppTheme.NoActionBarLaunch"
android:launchMode="singleTask"> android:launchMode="singleTask"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 16 KiB

+468 -301
View File
File diff suppressed because it is too large Load Diff
+16 -20
View File
@@ -39,23 +39,21 @@
"@awesome-cordova-plugins/file": "^5.41.0", "@awesome-cordova-plugins/file": "^5.41.0",
"@awesome-cordova-plugins/file-opener": "^5.41.0", "@awesome-cordova-plugins/file-opener": "^5.41.0",
"@awesome-cordova-plugins/multiple-document-picker": "^5.40.0", "@awesome-cordova-plugins/multiple-document-picker": "^5.40.0",
"@byteowls/capacitor-filesharer": "^3.0.0", "@capacitor/android": "^4.6.1",
"@capacitor-community/camera-preview": "^1.2.1", "@capacitor/app": "^4.1.1",
"@capacitor/android": "^3.3.2", "@capacitor/browser": "^4.1.0",
"@capacitor/app": "^1.0.5", "@capacitor/camera": "^4.1.4",
"@capacitor/browser": "1.0.6",
"@capacitor/camera": "^1.2.0",
"@capacitor/core": "^3.3.2", "@capacitor/core": "^3.3.2",
"@capacitor/device": "^1.1.0", "@capacitor/device": "^4.1.0",
"@capacitor/filesystem": "^1.1.0", "@capacitor/filesystem": "^4.1.4",
"@capacitor/haptics": "^1.1.4", "@capacitor/haptics": "^4.1.0",
"@capacitor/ios": "3.4.1", "@capacitor/ios": "3.4.1",
"@capacitor/keyboard": "^1.1.2", "@capacitor/keyboard": "^4.1.0",
"@capacitor/local-notifications": "^1.1.0", "@capacitor/local-notifications": "^4.1.4",
"@capacitor/network": "^1.0.6", "@capacitor/network": "^4.1.0",
"@capacitor/push-notifications": "^1.0.9", "@capacitor/push-notifications": "^4.1.2",
"@capacitor/share": "^1.0.7", "@capacitor/share": "^4.1.0",
"@capacitor/storage": "^1.2.3", "@capacitor/storage": "^1.2.5",
"@fortawesome/angular-fontawesome": "^0.9.0", "@fortawesome/angular-fontawesome": "^0.9.0",
"@fortawesome/fontawesome-free": "^5.15.3", "@fortawesome/fontawesome-free": "^5.15.3",
"@fortawesome/fontawesome-svg-core": "^1.2.35", "@fortawesome/fontawesome-svg-core": "^1.2.35",
@@ -111,8 +109,7 @@
"beast-orm": "^1.1.2", "beast-orm": "^1.1.2",
"bootstrap": "^4.5.0", "bootstrap": "^4.5.0",
"build": "0.1.4", "build": "0.1.4",
"capacitor-voice-recorder": "^2.0.0", "capacitor-voice-recorder": "^4.0.1",
"capacitor2-file-picker": "^1.0.0",
"ci": "^2.1.1", "ci": "^2.1.1",
"cordova": "^11.0.0", "cordova": "^11.0.0",
"cordova-plugin-crop": "^0.4.0", "cordova-plugin-crop": "^0.4.0",
@@ -120,6 +117,7 @@
"cordova-plugin-document-viewer": "^1.0.0", "cordova-plugin-document-viewer": "^1.0.0",
"cordova-plugin-file": "^6.0.2", "cordova-plugin-file": "^6.0.2",
"cordova-plugin-file-opener2": "^3.0.5", "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-filepath": "^1.5.8",
"cordova-plugin-multiple-documents-picker": "^1.0.0", "cordova-plugin-multiple-documents-picker": "^1.0.0",
"cordova-plugin-okhttp": "^2.0.0", "cordova-plugin-okhttp": "^2.0.0",
@@ -182,7 +180,7 @@
"@angular/compiler": "^12.1.2", "@angular/compiler": "^12.1.2",
"@angular/compiler-cli": "^12.1.2", "@angular/compiler-cli": "^12.1.2",
"@angular/language-service": "^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/angular-toolkit": "^6.1.0",
"@ionic/lab": "3.1.7", "@ionic/lab": "3.1.7",
"@types/jasmine": "~3.6.0", "@types/jasmine": "~3.6.0",
@@ -190,7 +188,6 @@
"@types/jest": "^26.0.24", "@types/jest": "^26.0.24",
"@types/node": "^12.11.1", "@types/node": "^12.11.1",
"codelyzer": "^0.0.28", "codelyzer": "^0.0.28",
"com-sarriaroman-photoviewer": "^1.2.5",
"cordova-android": "^10.1.2", "cordova-android": "^10.1.2",
"cordova-android-support-gradle-release": "^3.0.1", "cordova-android-support-gradle-release": "^3.0.1",
"cordova-browser": "^6.0.0", "cordova-browser": "^6.0.0",
@@ -205,7 +202,6 @@
"cordova-plugin-media-capture": "^3.0.3", "cordova-plugin-media-capture": "^3.0.3",
"cordova-plugin-network-information": "^3.0.0", "cordova-plugin-network-information": "^3.0.0",
"cordova-plugin-statusbar": "^2.4.2", "cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.4",
"es6-promise-plugin": "^4.2.2", "es6-promise-plugin": "^4.2.2",
"jasmine-core": "~3.6.0", "jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~5.0.0", "jasmine-spec-reporter": "~5.0.0",
+1 -1
View File
@@ -9,7 +9,7 @@ import { LoaderService } from 'src/app/store/loader.service'
}) })
export class AproveEventService { export class AproveEventService {
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("AproveEventService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
@@ -1,7 +1,5 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { customTask } from '../models/dailyworktask.model';
import { ProcessesService } from '../services/processes.service'; import { ProcessesService } from '../services/processes.service';
import { ProcessDocumentService } from './process-document.service';
import { LoaderService } from 'src/app/store/loader.service' import { LoaderService } from 'src/app/store/loader.service'
@Injectable({ @Injectable({
@@ -9,11 +7,10 @@ import { LoaderService } from 'src/app/store/loader.service'
}) })
export class DeferimentosServiceService { export class DeferimentosServiceService {
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("DeferimentosServiceService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
private processDocumentService: ProcessDocumentService,
public LoaderService: LoaderService, public LoaderService: LoaderService,
) { } ) { }
@@ -32,8 +29,6 @@ export class DeferimentosServiceService {
this.loader.pop() this.loader.pop()
deferimentos = deferimentos.filter(data => data.workflowInstanceDataFields.Status == "Active") 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 deferimentos.map((element) => {
return { return {
+1 -1
View File
@@ -9,7 +9,7 @@ import { LoaderService } from 'src/app/store/loader.service'
}) })
export class DeplomasServiceService { export class DeplomasServiceService {
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("DeplomasServiceService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
+1 -1
View File
@@ -11,7 +11,7 @@ import { LoaderService } from 'src/app/store/loader.service'
export class DespachoPRService { export class DespachoPRService {
customTaskPipe = new CustomTaskPipe() customTaskPipe = new CustomTaskPipe()
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("DespachoPRService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
+1 -1
View File
@@ -29,7 +29,7 @@ export class DespachoService {
customTaskPipe = new CustomTaskPipe() customTaskPipe = new CustomTaskPipe()
despachoStore = DespachoStore; despachoStore = DespachoStore;
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("DespachoService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
+1 -1
View File
@@ -11,7 +11,7 @@ import { LoaderService } from 'src/app/store/loader.service'
export class ExpedienteService { export class ExpedienteService {
expedienteTaskPipe = new ExpedienteTaskPipe(); expedienteTaskPipe = new ExpedienteTaskPipe();
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("ExpedienteTaskPipe")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
+1 -1
View File
@@ -9,7 +9,7 @@ import { LoaderService } from 'src/app/store/loader.service'
}) })
export class ParecerService { export class ParecerService {
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("ParecerService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
+1 -1
View File
@@ -8,7 +8,7 @@ import { LoaderService } from 'src/app/store/loader.service'
}) })
export class PedidoService { export class PedidoService {
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("PedidoService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
+1 -1
View File
@@ -11,7 +11,7 @@ import { LoaderService } from 'src/app/store/loader.service'
export class PendentesService { export class PendentesService {
customTaskPipe = new CustomTaskPipe() customTaskPipe = new CustomTaskPipe()
loader = this.LoaderService.initialize(this.constructor.name) loader = this.LoaderService.initialize("PendentesService")
constructor( constructor(
private processes: ProcessesService, private processes: ProcessesService,
+19 -19
View File
@@ -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. // 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'; import * as SentrySibling from '@sentry/angular';
///123//import * as Sentry from '@sentry/capacitor'; 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. // The e xample is using Angular, Import '@sentry/vue' or '@sentry/react' when using a Sibling different than Angular.
// For automatic instrumentation (highly recommended) // For automatic instrumentation (highly recommended)
///123//import { Integration } from '@sentry/types'; import { Integration } from '@sentry/types';
///123//import { BrowserTracing } from '@sentry/tracing'; import { BrowserTracing } from '@sentry/tracing';
/* import { FCM } from '@ionic-native/fcm/ngx'; /* import { FCM } from '@ionic-native/fcm/ngx';
import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */ import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */
//import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx'; //import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
///123// Sentry.init( Sentry.init(
///123// { {
///123// dsn: 'https://5b345a3ae70b4e4da463da65881b4aaa@o4504340905525248.ingest.sentry.io/4504345615794176', dsn: 'https://5b345a3ae70b4e4da463da65881b4aaa@o4504340905525248.ingest.sentry.io/4504345615794176',
// To set your release and dist versions // To set your release and dist versions
///123// release: 'gabinetedigital@1.0.0', release: 'gabinetedigital@1.0.0',
///123// dist: '1', dist: '1',
// Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring. // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.
// We recommend adjusting this value in production. // We recommend adjusting this value in production.
///123// tracesSampleRate: 1.0, tracesSampleRate: 1.0,
///123// integrations: [ integrations: [
///123// new BrowserTracing({ new BrowserTracing({
///123// tracingOrigins: ['localhost', 'https://gd-api.oapr.gov.ao/api/'], tracingOrigins: ['localhost', 'https://gd-api.oapr.gov.ao/api/'],
///123// }) as Integration, }) as Integration,
///123// ] ]
///123// }, },
// Forward the init method to the sibling Framework. // Forward the init method to the sibling Framework.
///123// SentrySibling.init SentrySibling.init
///123//); );
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
entryComponents: [], entryComponents: [],
@@ -145,7 +145,7 @@ import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */
{ {
provide: ErrorHandler, provide: ErrorHandler,
// Attach the Sentry ErrorHandler // Attach the Sentry ErrorHandler
///123// useValue: SentrySibling.createErrorHandler(), useValue: SentrySibling.createErrorHandler(),
}, },
StatusBar, StatusBar,
//SplashScreen, //SplashScreen,
+13 -67
View File
@@ -1,13 +1,10 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router'; import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { AuthService } from '../services/auth.service';
import { PermissionService } from '../services/permission.service'; import { PermissionService } from '../services/permission.service';
import { LocalstoreService } from '../store/localstore.service';
import { SessionStore } from '../store/session.service'; import { SessionStore } from '../store/session.service';
import { RouteService } from 'src/app/services/route.service' import { RouteService } from 'src/app/services/route.service'
import { FirstEnterService } from 'src/app/services/first-enter.service' import { FirstEnterService } from 'src/app/services/first-enter.service'
// import { ModalController } from '@ionic/angular';
import { AlertController, Platform } from '@ionic/angular'; import { AlertController, Platform } from '@ionic/angular';
@Injectable({ @Injectable({
@@ -31,6 +28,8 @@ export class AuthGuard implements CanActivate {
// if user not active or no session // if user not active or no session
if(!SessionStore.user.Inactivity || !SessionStore.exist) { if(!SessionStore.user.Inactivity || !SessionStore.exist) {
console.log('no session', !SessionStore.user.Inactivity, !SessionStore.exist)
console.log(SessionStore.user)
if(SessionStore.user.LoginPreference == 'Pin') { if(SessionStore.user.LoginPreference == 'Pin') {
this.router.navigate(['/pin']); this.router.navigate(['/pin']);
} else { } else {
@@ -46,40 +45,10 @@ export class AuthGuard implements CanActivate {
if(pathname.startsWith('/home/agenda')) { if(pathname.startsWith('/home/agenda')) {
if(this.p.userPermission(this.p.permissionList.Agenda.access)) { if(this.p.userPermission(this.p.permissionList.Agenda.access)) {
if((SessionStore.user.OwnerCalendars.length != 0 || SessionStore.user.SharedCalendars.length != 0)) { return true;
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;
} else { } else {
this.router.navigate(['/login']); this.router.navigate(['/login']);
console.log('£1')
return false; return false;
} }
@@ -90,45 +59,16 @@ export class AuthGuard implements CanActivate {
return true; return true;
} else { } else {
this.router.navigate(['/login']); this.router.navigate(['/login']);
console.log('£2')
return false; return false;
} }
} }
else if(pathname.startsWith('/home/chat')) { else if(pathname.startsWith('/home/chat')) {
if(this.p.userPermission(this.p.permissionList.Chat.access)) { 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; return true;
} else { } else {
console.log("no access to chat")
console.log('£3')
this.router.navigate(['/login']); this.router.navigate(['/login']);
return false; return false;
} }
@@ -136,6 +76,7 @@ export class AuthGuard implements CanActivate {
if(this.p.userPermission(this.p.permissionList.Actions.access)) { if(this.p.userPermission(this.p.permissionList.Actions.access)) {
return true return true
} else { } else {
console.log('£4')
this.router.navigate(['/login']); this.router.navigate(['/login']);
return false 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])) { if(SessionStore.user.OwnerCalendars.length >= 1 || this.p.userPermission([this.p.permissionList.Gabinete.access])) {
return true return true
} else { } else {
console.log('£5')
this.router.navigate(['/login']); this.router.navigate(['/login']);
return false return false
} }
} else if (pathname == '/') { } else if (pathname == '/') {
console.log('£6')
this.router.navigate(['/login']); this.router.navigate(['/login']);
console.log('no path')
return false return false
} else { } else {
console.log('£7')
console.log('pathname not match')
this.router.navigate(['/login']); this.router.navigate(['/login']);
return false return false
} }
+1 -1
View File
@@ -79,7 +79,7 @@ export class InactivityGuard implements CanActivate {
if((SessionStore?.user?.Inactivity)) { if((SessionStore?.user?.Inactivity)) {
if(this.p.userPermission(this.p.permissionList.Agenda.access) || this.p.userPermission(this.p.permissionList.Gabinete.access)){ 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 //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']); this.router.navigate(['/home/agenda']);
} }
else{ else{
+2 -1
View File
@@ -19,7 +19,8 @@ export class LoginGuard implements CanActivate {
route: ActivatedRouteSnapshot, route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { 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' ) { if(SessionStore.exist && SessionStore.user.Inactivity && SessionStore.user.LoginPreference != 'Pin' ) {
// enter app // enter app
+1 -1
View File
@@ -189,7 +189,7 @@ export class HomePage implements OnInit {
this.tabButton.chat = false; this.tabButton.chat = false;
} }
selectedTab(url?:string){ selectedTab(url?:string) {
this.clearTabButtonSelection(); this.clearTabButtonSelection();
if(url =='/home/events'){ if(url =='/home/events'){
this.tabButton.home = true; this.tabButton.home = true;
@@ -3,9 +3,9 @@
<div class="profile-header width-100"> <div class="profile-header width-100">
<div class="div-logo width-40"> <div class="div-logo width-40">
<div class="logo-icon"> <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 == '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>
<div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center"> <div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center">
<div class="logo-description-content"> <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"/> <img *ngIf="ThemeService.currentTheme != 'gov'" style="width: 40px;" src="assets/images/theme/doneIt/governoangola_A1.png"/>
</div> --> </div> -->
</div> </div>
</div> </div>
+2 -2
View File
@@ -2,9 +2,9 @@
<div class="profile-header width-100"> <div class="profile-header width-100">
<div class="div-logo d-md-none width-40"> <div class="div-logo d-md-none width-40">
<div class="logo-icon" *ngIf="hideImage"> <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 == '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>
<div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center"> <div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center">
<div class="logo-description-content"> <div class="logo-description-content">
+5 -3
View File
@@ -202,7 +202,6 @@ export class ProfilePage implements OnInit {
console.log(this.notificationdata) console.log(this.notificationdata)
console.log(this.notificationdata) console.log(this.notificationdata)
//this.storageservice.remove("Notifications")
this.storageservice.store("Notifications", this.notificationdata).then((store) => { this.storageservice.store("Notifications", this.notificationdata).then((store) => {
console.log(store) console.log(store)
this.storageservice.get("Notifications").then((value) => { this.storageservice.get("Notifications").then((value) => {
@@ -220,12 +219,15 @@ export class ProfilePage implements OnInit {
this.logoutOut == false this.logoutOut == false
setTimeout(() => { setTimeout(() => {
// alert('logout')
const pathBeforeGoOut = window.location.pathname
this.router.navigateByUrl('/auth', { replaceUrl: true }); this.router.navigateByUrl('/auth', { replaceUrl: true });
setTimeout(() => { setTimeout(() => {
if(this.logoutOut == false) { if(this.logoutOut == false || pathBeforeGoOut == window.location.pathname) {
window.location.pathname = '/auth' window.location.pathname = '/auth'
} else {
console.log('refresh')
} }
}, 500) }, 500)
+1 -1
View File
@@ -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> <ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="right-icons" src="assets/images/theme/{{ThemeService.currentTheme}}/icons-received-event.svg"></ion-icon>
</button> </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 == '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.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> <ion-icon *ngIf="ThemeService.currentTheme == 'gov' && mobileComponent.showAddNewEvent" class="right-icons" src="assets/images/theme/gov/icons-add-selected.svg" ></ion-icon>
+9
View File
@@ -496,6 +496,10 @@ export class AgendaPage implements OnInit {
loadRequestHistory: any = {} loadRequestHistory: any = {}
loadRangeEvents(startTime: Date, endTime: Date) { loadRangeEvents(startTime: Date, endTime: Date) {
if(!this.eventService.hasAnyCalendar) {
return false
}
this.array = []; this.array = [];
this.rangeStartDate = startTime this.rangeStartDate = startTime
this.rangeEndDate = endTime this.rangeEndDate = endTime
@@ -518,6 +522,11 @@ export class AgendaPage implements OnInit {
} }
loadRangeEventRun(startTime: Date, endTime: Date) { loadRangeEventRun(startTime: Date, endTime: Date) {
if(SessionStore.user.OwnerCalendars.length == 0 && SessionStore.user.SharedCalendars.length == 0) {
return false
}
this.array = []; this.array = [];
this.rangeStartDate = startTime this.rangeStartDate = startTime
this.rangeEndDate = endTime this.rangeEndDate = endTime
@@ -226,8 +226,7 @@
</ion-content> </ion-content>
<ion-footer > <ion-footer (click)="ChatSystemService.getDmRoom(roomId).sendReadMessage()">
<div class="typing" *ngIf="ChatSystemService.getDmRoom(roomId).otherUserType == true"> <div class="typing" *ngIf="ChatSystemService.getDmRoom(roomId).otherUserType == true">
<ngx-letters-avatar [avatarName]="ChatSystemService.getGroupRoom(roomId).name" [width]="30" [circular]="true" <ngx-letters-avatar [avatarName]="ChatSystemService.getGroupRoom(roomId).name" [width]="30" [circular]="true"
@@ -35,7 +35,7 @@
<div [ngSwitch]="segmentVista" class="overflow-y-auto"> <div [ngSwitch]="segmentVista" class="overflow-y-auto">
<!-- This is the list view --> <!-- This is the list view -->
<div *ngSwitchCase="'listview'"> <div *ngSwitchCase="'listview'">
<ion-item-sliding *ngIf="loadCount"> <ion-item-sliding *ngIf="loadCount || (getAllProcessCount >= 1 && loadNum >= 1)">
<div class="listview" > <div class="listview" >
<ion-list *ngIf="AllProcess"> <ion-list *ngIf="AllProcess">
<div <div
@@ -234,7 +234,7 @@
</div> </div>
</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"> <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 == '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> <ion-icon *ngIf="ThemeService.currentTheme == 'gov' && selectedElement != 'DiplomasPorValidar' " src="assets/images/theme/gov/icons-expediente-diploma.svg"></ion-icon>
@@ -280,7 +280,7 @@
</div> </div>
<p class="text-center exp-card-title">Diplomas para Assinar</p> <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> <p class="text-center exp-card-content">{{ deplomasStore.diplomasParaAssinartCount }} <span class="title1">Documentos</span></p>
</div> </div> -->
</div> </div>
<div *ngIf="!loadCount" class="width-100"> <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 { ProcessesService } from 'src/app/services/processes.service';
import { ModalController } from '@ionic/angular'; import { ModalController } from '@ionic/angular';
import { ActivatedRoute, NavigationEnd, NavigationExtras, Router } from '@angular/router'; import {NavigationEnd, NavigationExtras, Router } from '@angular/router';
import { AuthService } from 'src/app/services/auth.service';
import { LoginUserRespose } from 'src/app/models/user.model'; import { LoginUserRespose } from 'src/app/models/user.model';
import { ExpedientsPage } from 'src/app/shared/gabinete-digital/expedients/expedients.page'; import { ExpedientsPage } from 'src/app/shared/gabinete-digital/expedients/expedients.page';
import { PendentesPage } from 'src/app/shared/gabinete-digital/pendentes/pendentes.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 { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
import { DespachoService } from 'src/app/Rules/despacho.service'; 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 { 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 { SqliteService } from '../../services/sqlite.service';
import { Platform } from '@ionic/angular'; import { Platform } from '@ionic/angular';
import { BackgroundService } from 'src/app/services/background.service'; import { BackgroundService } from 'src/app/services/background.service';
import { SortService } from 'src/app/services/functions/sort.service'; import { SortService } from 'src/app/services/functions/sort.service';
import { DataService } from 'src/app/services/data.service';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe'; import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
import { SessionStore } from 'src/app/store/session.service'; import { SessionStore } from 'src/app/store/session.service';
@@ -113,6 +103,9 @@ export class GabineteDigitalPage implements OnInit {
permissions = { permissions = {
Agenda: 530 Agenda: 530
} }
AllProcess = []
@ViewChild(ExpedientsPage) expedientesPage: ExpedientsPage; @ViewChild(ExpedientsPage) expedientesPage: ExpedientsPage;
@ViewChild(PendentesPage) pendentesListPage: PendentesPage; @ViewChild(PendentesPage) pendentesListPage: PendentesPage;
@ViewChild(EventsToApprovePage) eventsToApprove: EventsToApprovePage; @ViewChild(EventsToApprovePage) eventsToApprove: EventsToApprovePage;
@@ -120,33 +113,19 @@ export class GabineteDigitalPage implements OnInit {
constructor( constructor(
private processesbackend: ProcessesService, private processesbackend: ProcessesService,
private modalController: ModalController, private modalController: ModalController,
private activatedRoute: ActivatedRoute,
private router: Router, private router: Router,
authService: AuthService,
public waitForDomService: WaitForDomService, public waitForDomService: WaitForDomService,
private despachoRule: DespachoService, private despachoRule: DespachoService,
private sqliteservice: SqliteService, private sqliteservice: SqliteService,
private platform: Platform, private platform: Platform,
private changeProfileService: ChangeProfileService,
private backgroundservice: BackgroundService, private backgroundservice: BackgroundService,
public ThemeService: ThemeService, public ThemeService: ThemeService,
private sortService: SortService, private sortService: SortService,
private dataService: DataService,
private storage: Storage, private storage: Storage,
public p: PermissionService, 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 public NotificationsService: NotificationsService
) { ) {
this.loggeduser = SessionStore.user;
window.onresize = (event) => { window.onresize = (event) => {
// if not mobile remove all component // if not mobile remove all component
if (window.innerWidth < 701) { if (window.innerWidth < 701) {
@@ -462,7 +441,7 @@ export class GabineteDigitalPage implements OnInit {
else if (workflowName == 'Expediente') { else if (workflowName == 'Expediente') {
this.router.navigate(['/home/gabinete-digital/expediente', serialNumber, 'gabinete-digital']); 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']); this.router.navigate(['/home/gabinete-digital/expedientes-pr', serialNumber, 'gabinete-digital']);
} }
else if (workflowName == "Pedido de Parecer do Presidente") { 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') { else if (this.router.url == '/home/gabinete-digital?expedientes=true') {
this.openExpedientListPage(); this.openExpedientListPage();
if (this.loggeduser.Profile == 'MDGPR') { if (SessionStore.user.Profile == 'MDGPR') {
this.selectedElement = 'Correspondence'; this.selectedElement = 'Correspondence';
} }
else { else {
@@ -588,11 +567,10 @@ export class GabineteDigitalPage implements OnInit {
this.showDiplomasGerar = false this.showDiplomasGerar = false
} }
updateAllProcess() {
get AllProcess() { this.AllProcess = this.expedientegbstore.list.concat(this.pedidosstore.listparecer).concat(this.pedidosstore.listdeferimento)
return 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.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() { get getAllProcessCount() {
@@ -605,6 +583,7 @@ export class GabineteDigitalPage implements OnInit {
return Object.keys(this.loadProcess) return Object.keys(this.loadProcess)
} }
loadNum = 0
async LoadCounts() { async LoadCounts() {
let expedientes; let expedientes;
@@ -618,6 +597,8 @@ export class GabineteDigitalPage implements OnInit {
this.showLoader = false this.showLoader = false
this.loadCount = true; this.loadCount = true;
} }
this.loadNum++;
expedientes = (expedientes || [] ).filter(data => data.workflowInstanceDataFields.Status == "Active") expedientes = (expedientes || [] ).filter(data => data.workflowInstanceDataFields.Status == "Active")
@@ -629,14 +610,15 @@ export class GabineteDigitalPage implements OnInit {
this.expedientegbstore.count = expedientes.length; this.expedientegbstore.count = expedientes.length;
this.expedientegbstore.reset(expedientes); this.expedientegbstore.reset(expedientes);
this.updateAllProcess()
let despachos = await this.despachoRule.getList({ updateStore: true }) let despachos = await this.despachoRule.getList({ updateStore: true })
this.updateAllProcess()
if (despachos) { if (despachos) {
this.despachoStore.reset(despachos) this.despachoStore.reset(despachos)
} }
let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise(); let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise();
let pareceresPr = await this.processesbackend.GetTasksList("Pedido de Parecer do Presidente", 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)) pendentes = pendentes.map((element)=> this.customTaskPipe.transform(element))
this.pendentesstore.reset(pendentes); this.pendentesstore.reset(pendentes);
this.updateAllProcess()
let depachoAPI: any = await this.processesbackend.GetTasksList("Despacho do Presidente da República", false).toPromise(); 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"); let depacho = depachoAPI.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho");
depacho = depacho.filter(data => data.workflowInstanceDataFields.Status == "Active"); 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)) depacho = depacho.map((e)=> this.customTaskPipe.transform(e))
this.despachoprstore.reset(depacho) 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") let depacho = depachoAPI.filter(data => data.activityInstanceName == "Concluir Despacho").filter(data => data.workflowInstanceDataFields.Status == "Active")
depacho = depacho.map((e)=> this.customTaskPipe.transform(e)) depacho = depacho.map((e)=> this.customTaskPipe.transform(e))
this.despachoprstore.reset(depacho) this.despachoprstore.reset(depacho)
this.updateAllProcess()
} }
let mdEventsOficial = await this.processesbackend.GetTasksList('Agenda Oficial MDGPR', false).toPromise(); 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.countMd = eventsMDGPRList.length
this.eventoaprovacaostore.resetmd(eventsMDGPRList); this.eventoaprovacaostore.resetmd(eventsMDGPRList);
this.updateAllProcess()
let prEventsOficial = await this.processesbackend.GetTasksList('Agenda Oficial PR', false).toPromise(); let prEventsOficial = await this.processesbackend.GetTasksList('Agenda Oficial PR', false).toPromise();
let prEventsPessoal = await this.processesbackend.GetTasksList('Agenda Pessoal 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.countPr = eventsPRList.length
this.eventoaprovacaostore.resetpr(eventsPRList); this.eventoaprovacaostore.resetpr(eventsPRList);
this.updateAllProcess()
let diplomasValidar = depachoAPI.filter(data => data.activityInstanceName == "Revisar Diploma"); 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"); let diplomasAssinados = depachoAPI.filter(data => data.activityInstanceName == "Diploma Assinado");
this.deplomasStore.resetDiplomasAssinadoList(diplomasAssinados) this.deplomasStore.resetDiplomasAssinadoList(diplomasAssinados)
this.updateAllProcess()
this.loadCount = true this.loadCount = true
} }
@@ -810,7 +797,7 @@ export class GabineteDigitalPage implements OnInit {
this.closeAllDesktopComponents(); this.closeAllDesktopComponents();
if(this.loggeduser.Profile != 'PR') { if(SessionStore.user.Profile != 'PR') {
if (window.innerWidth < 701) { if (window.innerWidth < 701) {
//this.openExpedientList(); //this.openExpedientList();
this.router.navigate(['/home/gabinete-digital/expediente']); this.router.navigate(['/home/gabinete-digital/expediente']);
@@ -821,7 +808,7 @@ export class GabineteDigitalPage implements OnInit {
this.router.navigate(['/home/gabinete-digital'], navigationExtras); this.router.navigate(['/home/gabinete-digital'], navigationExtras);
this.showExpedients = true; this.showExpedients = true;
} }
} else if(this.loggeduser.Profile == 'PR') { } else if(SessionStore.user.Profile == 'PR') {
if (window.innerWidth < 701) { if (window.innerWidth < 701) {
this.router.navigate(['/home/gabinete-digital/expedientes-pr']); this.router.navigate(['/home/gabinete-digital/expedientes-pr']);
} }
@@ -7,8 +7,8 @@
<div class="div-top-header"> <div class="div-top-header">
<div class="div-logo"> <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: 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: 80px;" *ngIf="ThemeService.currentTheme == 'gov' " src='assets/images/theme/gov/governoangola_A.png' alt='logo'> -->
</div> </div>
</div> </div>
+5 -9
View File
@@ -54,13 +54,9 @@ export class LoginPage implements OnInit {
private platform: Platform, private platform: Platform,
private FirstEnterService: FirstEnterService, private FirstEnterService: FirstEnterService,
private storage:Storage, private storage:Storage,
) { ) {}
console.log('constructor')
}
ngOnInit() { ngOnInit() {}
console.log('ngOngInit')
}
togglePassword() { togglePassword() {
this.showPassword = !this.showPassword; this.showPassword = !this.showPassword;
@@ -99,9 +95,9 @@ export class LoginPage implements OnInit {
} }
getToken() { getToken() {
this.notificatinsservice.requestPermissions(); // this.notificatinsservice.requestPermissions();
this.notificatinsservice.registrationError(); // this.notificatinsservice.registrationError();
this.notificatinsservice.getAndpostToken(this.username); // this.notificatinsservice.getAndpostToken(this.username);
} }
async Login() { async Login() {
+19 -14
View File
@@ -100,6 +100,8 @@ export class AuthService {
session.BasicAuthKey = user.BasicAuthKey session.BasicAuthKey = user.BasicAuthKey
SessionStore.reset(session) SessionStore.reset(session)
console.log(session)
return true; return true;
} }
@@ -109,23 +111,26 @@ export class AuthService {
loginToChatWs() { loginToChatWs() {
setTimeout(() => { setTimeout(() => {
this.RochetChatConnectorService.connect(); if(SessionStore.user.ChatData?.data) {
this.RochetChatConnectorService.login().then((message: any) => { 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') this.RochetChatConnectorService.setStatus('online')
}, 200); window['RochetChatConnectorService'] = this.RochetChatConnectorService
setTimeout(() => {
this.ChatSystemService.getAllRooms();
this.RochetChatConnectorService.setStatus('online')
}, 200);
}).catch((error) => { }).catch((error) => {
console.error(error) console.error(SessionStore.user.ChatData, 'web socket login',error)
}) })
}
// before sending a message with a attachment // 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() {}
}
+11 -6
View File
@@ -504,20 +504,25 @@ export class MessageService {
const message = this.getChatObj() const message = this.getChatObj()
let a let a
if(!message.id) {
delete message.id
}
if (this.localReference) { if (this.localReference) {
a = await MessageModel.get({localReference: this.localReference}) a = await MessageModel.get({localReference: this.localReference})
} else if (this._id) { } else if (this._id) {
a = await MessageModel.get({id: this.id})
} else if(this.id) {
a = await MessageModel.get({_id: 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)) { if(a) {
a[name] = value for( const [name, value] of Object.entries(message)) {
a[name] = value
}
await a.save()
} }
await a.save()
} else { } else {
this.earlySave = true this.earlySave = true
console.log('save change to early') console.log('save change to early')
-2
View File
@@ -763,8 +763,6 @@ export class RoomService {
} }
async readAllMessage() { async readAllMessage() {
this.ViewedMessageService.requestReadAll(this) this.ViewedMessageService.requestReadAll(this)
@@ -1,6 +1,5 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import * as FIFOProcessQueue from 'fifo-process-queue'; import * as FIFOProcessQueue from 'fifo-process-queue';
import { async } from 'rxjs';
import { RoomService } from './room.service'; import { RoomService } from './room.service';
@Injectable({ @Injectable({
+15 -1
View File
@@ -63,6 +63,7 @@ export class EventsService {
calendarNamesType = {} calendarNamesType = {}
myCalendarNames = {} myCalendarNames = {}
hasAnyCalendar = false
constructor( constructor(
private http: HttpClient, private http: HttpClient,
@@ -135,6 +136,7 @@ export class EventsService {
if (this.loggeduser.Profile == 'MDGPR') { if (this.loggeduser.Profile == 'MDGPR') {
for (let calendar of this.loggeduser.OwnerCalendars) { for (let calendar of this.loggeduser.OwnerCalendars) {
this.hasAnyCalendar = false
if (calendar.CalendarName == 'Oficial') { if (calendar.CalendarName == 'Oficial') {
@@ -157,6 +159,7 @@ export class EventsService {
} }
for (let sharedCalendar of this.loggeduser.SharedCalendars) { for (let sharedCalendar of this.loggeduser.SharedCalendars) {
this.hasAnyCalendar = false
if (sharedCalendar.CalendarName == 'Oficial') { if (sharedCalendar.CalendarName == 'Oficial') {
@@ -181,6 +184,7 @@ export class EventsService {
else if (this.loggeduser.Profile == 'PR') { else if (this.loggeduser.Profile == 'PR') {
for (let calendar of this.loggeduser.OwnerCalendars) { for (let calendar of this.loggeduser.OwnerCalendars) {
this.hasAnyCalendar = false
if (calendar.CalendarName == 'Oficial') { if (calendar.CalendarName == 'Oficial') {
this.hasOwnOficial = true this.hasOwnOficial = true
@@ -203,6 +207,7 @@ export class EventsService {
} }
for (let calendar of this.loggeduser.OwnerCalendars) { for (let calendar of this.loggeduser.OwnerCalendars) {
this.hasAnyCalendar = false
if(!this.usersCalendarIds.includes(calendar.OwnerUserId)) { if(!this.usersCalendarIds.includes(calendar.OwnerUserId)) {
this.usersCalendarIds.push(calendar.OwnerUserId) this.usersCalendarIds.push(calendar.OwnerUserId)
} }
@@ -234,7 +239,7 @@ export class EventsService {
} }
for (let sharedCalendar of this.loggeduser.SharedCalendars) { for (let sharedCalendar of this.loggeduser.SharedCalendars) {
this.hasAnyCalendar = false
if(!this.usersCalendarIds.includes(sharedCalendar.OwnerUserId)) { if(!this.usersCalendarIds.includes(sharedCalendar.OwnerUserId)) {
this.usersCalendarIds.push(sharedCalendar.OwnerUserId) this.usersCalendarIds.push(sharedCalendar.OwnerUserId)
@@ -267,6 +272,7 @@ export class EventsService {
for (let sharedCalendar of this.loggeduser.SharedCalendars) { for (let sharedCalendar of this.loggeduser.SharedCalendars) {
this.hasAnyCalendar = false
if(sharedCalendar?.OwnerUserId) { if(sharedCalendar?.OwnerUserId) {
this.GetCalendarName(sharedCalendar.OwnerUserId).subscribe((e)=> { this.GetCalendarName(sharedCalendar.OwnerUserId).subscribe((e)=> {
this.calendarNames[sharedCalendar.CalendarId] = e.FullName this.calendarNames[sharedCalendar.CalendarId] = e.FullName
@@ -286,6 +292,7 @@ export class EventsService {
} }
for (let sharedCalendar of this.loggeduser.OwnerCalendars) { for (let sharedCalendar of this.loggeduser.OwnerCalendars) {
this.hasAnyCalendar = false
this.calendarNames[sharedCalendar.CalendarId] = 'Meu calendario' 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] = true
this.calendarNamesType['Meu calendario'][sharedCalendar.CalendarName+'Id'] = sharedCalendar.CalendarId 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
}
} }
} }
+1 -1
View File
@@ -32,7 +32,7 @@ export class InativityService {
function resetTimer() { function resetTimer() {
clearTimeout(time); clearTimeout(time);
time = setTimeout(userIsNotActive, 60000 * 5); // time is in milliseconds time = setTimeout(userIsNotActive, 60000 * 15); // time is in milliseconds
} }
} }
} }
+4 -2
View File
@@ -28,8 +28,10 @@ export class PermissionService {
for(let permission of (this.SessionStore.user.UserPermissions || [])) { for(let permission of (this.SessionStore.user.UserPermissions || [])) {
if (args.includes(permission)) { for( const arg of args ) {
return true; if (arg == permission) {
return true;
}
} }
} }
return false; return false;
+1 -1
View File
@@ -16,7 +16,7 @@ const { Storage } = Plugins; */
) {} ) {}
key(key:string): string { key(key:string): string {
return (SHA1('service'+this.constructor.name+key)).toString() return (SHA1('service'+"StorageService"+key)).toString()
} }
async keyExist(key:string) { async keyExist(key:string) {
+1 -1
View File
@@ -21,7 +21,7 @@ export class ThemeService {
private storageservice: StorageService private storageservice: StorageService
) { ) {
this.keyName = (SHA1(this.constructor.name)).toString() this.keyName = (SHA1("ThemeService")).toString()
let restore = localstoreService.get(this.keyName, { let restore = localstoreService.get(this.keyName, {
theme: this.defaultTheme theme: this.defaultTheme
}) })
+2 -2
View File
@@ -13,9 +13,9 @@
<div class="div-logo align-center justify-center"> <div class="div-logo align-center justify-center">
<div class="logo-icon"> <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 == '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>
<div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center"> <div *ngIf="ThemeService.currentTheme == 'gov'" class="logo-description d-flex align-center justify-content-center">
<div class="logo-description-content"> <div class="logo-description-content">
+1 -1
View File
@@ -17,7 +17,7 @@ export class CalendarService {
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name+ 'eventSource')).toString() this.keyName = (SHA1("CalendarService"+ 'eventSource')).toString()
let restore = this.localstoreService.get(this.keyName, []) let restore = this.localstoreService.get(this.keyName, [])
+1 -1
View File
@@ -13,7 +13,7 @@ export class ChatMessageService {
constructor() { constructor() {
this.keyName = (SHA1('chat'+this.constructor.name)).toString() this.keyName = (SHA1('chat'+"ChatMessageService")).toString()
setTimeout(()=> { setTimeout(()=> {
let restore = localstoreService.get(this.keyName, {}) let restore = localstoreService.get(this.keyName, {})
+1 -1
View File
@@ -14,7 +14,7 @@ export class ChatUserService {
constructor() { constructor() {
this.keyName = (SHA1('chat'+this.constructor.name)).toString() this.keyName = (SHA1('chat'+"ToDayEventStorageService")).toString()
setTimeout(()=> { setTimeout(()=> {
let restore = localstoreService.get(this.keyName, {}) let restore = localstoreService.get(this.keyName, {})
+4 -4
View File
@@ -23,10 +23,10 @@ export class DeplomasService {
private _diplomasListCount = 0; private _diplomasListCount = 0;
constructor() { constructor() {
this.keyNameDiplomasAssinado = (SHA1(this.constructor.name+"diplomasAssinado")).toString() this.keyNameDiplomasAssinado = (SHA1("DeplomasService"+"diplomasAssinado")).toString()
this.keyNameDiplomasReview = (SHA1(this.constructor.name+"diplomasReview")).toString() this.keyNameDiplomasReview = (SHA1("DeplomasService"+"diplomasReview")).toString()
this.keyNameDiplomasGerar = (SHA1(this.constructor.name+"diplomasGerar")).toString() this.keyNameDiplomasGerar = (SHA1("DeplomasService"+"diplomasGerar")).toString()
this.keyNameDiplomasParaAssinar = (SHA1(this.constructor.name+"diplomasParaAsinar")).toString() this.keyNameDiplomasParaAssinar = (SHA1("DeplomasService"+"diplomasParaAsinar")).toString()
setTimeout(() => { setTimeout(() => {
+1 -1
View File
@@ -19,7 +19,7 @@ export class DespachoStoreService {
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name+ 'home/eventSource')).toString() this.keyName = (SHA1("DespachoStoreService"+ 'home/eventSource')).toString()
window['ObjectQueryService'] = this.Query() window['ObjectQueryService'] = this.Query()
setTimeout(()=>{ setTimeout(()=>{
+1 -1
View File
@@ -15,7 +15,7 @@ private _count = 0
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name)).toString() this.keyName = (SHA1("DespachosprStoreService")).toString()
setTimeout(()=>{ setTimeout(()=>{
@@ -19,8 +19,8 @@ export class EventoaprovacaoStoreService {
constructor() { constructor() {
this.keyNamemd = (SHA1(this.constructor.name+"md")).toString() this.keyNamemd = (SHA1("EventoaprovacaoStoreService"+"md")).toString()
this.keyNamepr = (SHA1(this.constructor.name+"pr")).toString() this.keyNamepr = (SHA1("EventoaprovacaoStoreService"+"pr")).toString()
setTimeout(()=>{ setTimeout(()=>{
+1 -1
View File
@@ -16,7 +16,7 @@ export class ExpedientegdStoreService {
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name)).toString() this.keyName = (SHA1("EventoaprovacaoStoreService")).toString()
setTimeout(()=> { setTimeout(()=> {
let restore = localstoreService.get(this.keyName, {}) let restore = localstoreService.get(this.keyName, {})
+2 -2
View File
@@ -17,8 +17,8 @@ export class PedidosStoreService {
constructor() { constructor() {
this.keyNameparecer = (SHA1(this.constructor.name+"parecer")).toString() this.keyNameparecer = (SHA1("PedidosStoreService"+"parecer")).toString()
this.keyNamedeferiemnto = (SHA1(this.constructor.name+"deferimneto")).toString() this.keyNamedeferiemnto = (SHA1("PedidosStoreService"+"deferimneto")).toString()
setTimeout(()=>{ setTimeout(()=>{
let restoreParecer = localstoreService.get(this.keyNameparecer, {}) let restoreParecer = localstoreService.get(this.keyNameparecer, {})
+1 -1
View File
@@ -15,7 +15,7 @@ export class PendestesStoreService {
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name)).toString() this.keyName = (SHA1("PendestesStoreService")).toString()
setTimeout(()=>{ setTimeout(()=>{
@@ -15,7 +15,7 @@ export class PresidentialActionsStoreService {
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name+ 'presidentialActions/local')).toString() this.keyName = (SHA1("PresidentialActionsStoreService"+ 'presidentialActions/local')).toString()
setTimeout(()=>{ setTimeout(()=>{
let restore = localstoreService.get(this.keyName, []) let restore = localstoreService.get(this.keyName, [])
+1 -1
View File
@@ -18,7 +18,7 @@ class SessionService {
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name)).toString() this.keyName = (SHA1("SessionService")).toString()
let restore = localstoreService.get(this.keyName, {}) let restore = localstoreService.get(this.keyName, {})
this._user = restore.user || new UserSession() this._user = restore.user || new UserSession()
@@ -18,7 +18,7 @@ export class ToDayEventStorageService {
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name+ 'home/eventSource')).toString() this.keyName = (SHA1("ToDayEventStorageService"+ 'home/eventSource')).toString()
setTimeout(() => { setTimeout(() => {
+1 -1
View File
@@ -12,7 +12,7 @@ export class TotalDocumentService {
private keyName: string; private keyName: string;
constructor() { constructor() {
this.keyName = (SHA1(this.constructor.name)).toString() this.keyName = (SHA1("TotalDocumentService")).toString()
setTimeout(()=> { setTimeout(()=> {
let restore = localstoreService.get(this.keyName, {}) let restore = localstoreService.get(this.keyName, {})
+3 -3
View File
@@ -13,9 +13,9 @@ export const environment = {
// apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/', // apiChatUrl: 'https://gdchat-dev.dyndns.info/api/v1/',
// apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket', // apiWsChatUrl: 'wss://gdchat-dev.dyndns.info/websocket',
production: true, production: true,
domain: 'gabinetedigital.local', domain: 'evandre.dasilva@equilibrium.co.ao',
defaultuser: '',//paulo.pinto@gabinetedigital.local defaultuser: 'evandre.dasilva@equilibrium.co.ao',//paulo.pinto@gabinetedigital.local
defaultuserpwd: '', //tabteste@006, defaultuserpwd: 'Luand@1219', //tabteste@006,06,
chatOffline: true, chatOffline: true,
presidencia: false, presidencia: false,
version: versionData, version: versionData,
+3 -3
View File
@@ -12,9 +12,9 @@ export const environment = {
apiChatUrl: 'https://CHAT.DONEIT.CO.AO/api/v1/', apiChatUrl: 'https://CHAT.DONEIT.CO.AO/api/v1/',
apiWsChatUrl: 'wss://CHAT.DONEIT.CO.AO/websocket', apiWsChatUrl: 'wss://CHAT.DONEIT.CO.AO/websocket',
production: true, production: true,
domain: 'paulo.pinto@gabinetedigital.local', domain: 'evandre.dasilva@equilibrium.co.ao',
defaultuser: 'paulo.pinto@gabinetedigital.local',//paulo.pinto@gabinetedigital.local defaultuser: 'evandre.dasilva@equilibrium.co.ao',//paulo.pinto@gabinetedigital.local
defaultuserpwd: 'tabteste@006', //tabteste@006, defaultuserpwd: 'Luand@1219', //tabteste@006,
chatOffline: true, chatOffline: true,
presidencia: false, presidencia: false,
version: versionData, version: versionData,
+1 -1
View File
@@ -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 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"> --> <!-- <link rel="manifest" href="assets/json/manifest.json"> -->
<!-- add to homescreen for ios --> <!-- add to homescreen for ios -->
+7 -7
View File
@@ -1,12 +1,12 @@
export let versionData = { export let versionData = {
"shortSHA": "efa7774c1", "shortSHA": "58f9e7eac",
"SHA": "efa7774c1c45d63325a62d9596c9e8353cb5cb18", "SHA": "58f9e7eacd838ed7651df9fbc32863e774cccd6f",
"branch": "consoleCle2", "branch": "no_bug_movemente",
"lastCommitAuthor": "'Peter Maquiran'", "lastCommitAuthor": "'Peter Maquiran'",
"lastCommitTime": "'Mon Jan 9 14:51:00 2023 +0100'", "lastCommitTime": "'Mon Jan 9 17:07:02 2023 +0100'",
"lastCommitMessage": "improve chat", "lastCommitMessage": "save",
"lastCommitNumber": "4623", "lastCommitNumber": "4624",
"change": "", "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" "changeAuthor": "peter.maquiran"
} }