Merge branch 'developer' of bitbucket.org:equilibriumito/gabinete-digital into developer

This commit is contained in:
Peter Maquiran
2021-04-16 11:39:00 +01:00
32 changed files with 387 additions and 187 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MessagesPage } from './pages/chat/messages/messages.page';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx'
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
@NgModule({
+65 -80
View File
@@ -3,16 +3,17 @@ import { Component, OnInit, NgZone } from '@angular/core';
import { EventsService } from '../services/events.service';
import { Event } from '../models/event.model';
import { ProcessesService } from '../services/processes.service';
import { ModalController, AlertController, AnimationController } from '@ionic/angular';
import { NotificationsService } from '../services/notifications.service';
import { ModalController, AlertController, AnimationController, Platform } from '@ionic/angular';
//import { AlertController } from 'ionic-angular';
/* import { Plugins, PushNotification, PushNotificationToken, PushNotificationActionPerformed, Modals } from '@capacitor/core'; */
import { Router } from '@angular/router';
//import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
import { ViewEventPage } from '../pages/agenda/view-event/view-event.page';
import { ApproveEventModalPage } from '../pages/agenda/approve-event-modal/approve-event-modal.page';
import { ExpedienteDetailPage } from '../pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page';
import { ApproveEventModalPage } from '../pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page';
import { PublicationDetailPage } from '../pages/publications/view-publications/publication-detail/publication-detail.page';
/* const { PushNotifications, LocalNotifications, LocalNotificationAction } = Plugins; */
@@ -58,8 +59,10 @@ export class HomePage implements OnInit {
private router: Router,
private modalController: ModalController,
public modalCtrl: AlertController,
//private fcm: FCM,
private animationController: AnimationController,) {
private fcm: FCM,
private animationController: AnimationController,
private notificatinsservice: NotificationsService,
private platform: Platform) {
router.events.subscribe((val) => {
document.querySelectorAll('ion-modal').forEach((e) => e.remove())
@@ -96,82 +99,56 @@ export class HomePage implements OnInit {
});
}
this.processesbackend.GetTasksList("Expediente", true).subscribe(result => {
this.totalExpediente = result;
});
}
pushCordova() {
/*
this.fcm.onNotification().subscribe(data => {
this.viewEventDetail(data.idObject)
if (data.click_action) {
console.log("Received in background: ", data);
if (data.service === "agenda") {
//this.router.navigate(['/home/', service, idObject, 'home']);
this.viewEventDetail(data.idObject)
}
else if (data.service === "gabinete-digital" && data.object === "expediente") {
this.viewExpedientDetail(data.idObject)
}
else if (data.service === "gabinete-digital" && data.object === "event-list") {
// this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', idObject])})
this.openApproveModal(data.idObject);
}
else if (data.service === "accoes" && data.object === "accao") {
//this.viewPublications(data.idObject)
alert(data.idObject)
}
else if (data.service === "accoes" && data.object === "publicacao") {
this.viewPublicationDetail(data.idObject)
}
if(this.platform.is('desktop')) {
console.log('Notifications not supported')
} else {
} else {
console.log("Received in foreground: ", data);
if (data.service === "agenda") {
//this.router.navigate(['/home/', service, idObject, 'home']);
this.viewEventDetail(data.idObject)
}
else if (data.service === "gabinete-digital" && data.object === "expediente") {
this.viewExpedientDetail(data.idObject)
}
else if (data.service === "gabinete-digital" && data.object === "event-list") {
// this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', idObject])})
this.openApproveModal(data.idObject);
}
else if (data.service === "accoes" && data.object === "accao") {
this.viewPublications(data.idObject)
}
else if (data.service === "accoes" && data.object === "publicacao") {
this.viewPublicationDetail(data.idObject)
}
};
});
this.fcm.onNotification().subscribe(data => {
this.viewEventDetail(data.IdObject)
if (data.wasTapped === true) {
console.log("Received in background: ", data);
if (data.Service === "agenda") {
//this.router.navigate(['/home/', service, IdObject, 'home']);
this.viewEventDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
console.log('expediante 1')
this.viewExpedientDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
// this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', IdObject])})
this.openApproveModal(data.IdObject);
}
else if (data.Service === "accoes" && data.Object === "accao") {
this.viewPublications(data.IdObject)
alert(data.IdObject)
}
else if (data.Service === "accoes" && data.Object === "publicacao") {
this.viewPublicationDetail(data.IdObject)
}
} else {
console.log("Received in foreground: ", data);
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
};
});
}
this.fcm.onTokenRefresh().subscribe(token => {
// Register your new token in your back-end if you want
// backend.registerToken(token);
});
this.ubscribeToTopic()
this.getToken() */
}
/* ubscribeToTopic() {
this.fcm.subscribeToTopic('enappd');
}
getToken() {
this.fcm.getToken().then(token => {
console.log('token: ', token)
// Register your new token in your back-end if you want
// backend.registerToken(token);
});
} */
async viewEventDetail(eventId: any) {
console.log(this.profile);
@@ -192,17 +169,25 @@ export class HomePage implements OnInit {
});
}
async openApproveModal(eventSerialNumber) {
async openApproveModal(eventSerialNumber){
let classs;
if( window.innerWidth <= 1024){
classs = 'cal-modal modal modal-desktop'
} else {
classs = 'gabinete-digital-mobile-modal-to-Desktop'
}
const modal = await this.modalController.create({
component: ApproveEventModalPage,
componentProps: {
componentProps:{
serialNumber: eventSerialNumber,
},
cssClass: 'cal-modal',
cssClass: 'event-list',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
@@ -213,14 +198,14 @@ export class HomePage implements OnInit {
} else {
classs = 'modal modal-desktop showAsideOptions'
}
/* console.log(this.profile);
console.log(serialNumber); */
console.log(this.profile);
console.log(serialNumber);
console.log('expediante 2')
const modal = await this.modalController.create({
component: ExpedienteDetailPage,
componentProps: {
serialNumber: serialNumber,
profile: this.profile,
profile: "MDGPR",
},
cssClass: classs,
});
@@ -244,7 +229,7 @@ export class HomePage implements OnInit {
});
await modal.present();
modal.onDidDismiss().then(() => {
//this.getPublications();
});
}
+5 -1
View File
@@ -99,7 +99,11 @@
<app-contacts (openMessage)="openMessagesPage($event)" *ngIf="showContacts" class="d-flex height-100 flex-column"></app-contacts>
<app-new-group (addGroupMessage)="openGroupContactsPage($event)" *ngIf="showNewGroup" class="d-flex height-100 flex-column"></app-new-group>
<app-group-contacts (openGroupMessage)="openGroupMessagesPage($event)" [roomId]="groupRoomId" class="d-flex height-100 flex-column" *ngIf="showGroupContacts"></app-group-contacts>
<app-group-messages (openGroupContacts)="openGroupContactsPage($event)" *ngIf="showGroupMessages" class="d-flex height-100 flex-column" [roomId]="roomId" #messagecontainer></app-group-messages>
<app-group-messages
(closeAllDesktopComponents)="closeAllDesktopComponents()"
(showEmptyContainer)="showEmptyContainer()"
(openGroupContacts)="openGroupContactsPage($event)"
*ngIf="showGroupMessages" class="d-flex height-100 flex-column" [roomId]="roomId" #messagecontainer></app-group-messages>
</div>
</div>
</ion-content>
+3
View File
@@ -110,6 +110,9 @@ export class ChatPage implements OnInit {
this.showGroupContacts=false;
console.log('All components closed!');
}
showEmptyContainer(){
this.showEmptyComponent=true;
}
openGroupContactsPage(data){
console.log(data);
this.groupRoomId = data;
@@ -134,26 +134,27 @@ export class GroupMessagesPage implements OnInit {
this.message = "";
}
async openOptions(ev: any) {
const popover = await this.popoverController.create({
async openOptions() {
console.log('OK');
const modal = await this.modalController.create({
component: ChatPopoverPage,
cssClass: 'chat-popover',
event: ev,
componentProps: {
room: this.room,
roomId: this.roomId,
},
translucent: true
});
await popover.present();
popover.onDidDismiss().then(res=>{
await modal.present();
modal.onDidDismiss().then(res=>{
console.log('OK2');
console.log(res);
if(res.data){
/* if(res.data ==){
this.roomName = res.data.name.split('-').join(' ');
console.log(this.roomName);
this.getRoomInfo();
/* this.modalController.dismiss(); */
};
//this.modalController.dismiss();
}; */
});
}
+7 -36
View File
@@ -11,6 +11,7 @@ import { PhotoService } from 'src/app/services/photo.service';
import { NotificationsService } from 'src/app/services/notifications.service';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { Token } from '../../models/token.model';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
/* import { Plugins, PushNotification, PushNotificationToken, PushNotificationActionPerformed } from '@capacitor/core';
@@ -38,7 +39,8 @@ export class LoginPage implements OnInit {
private storageService: StorageService,
private toastService: ToastService,
private photoService: PhotoService,
public alertController: AlertController) { }
public alertController: AlertController,
private fcm: FCM) { }
ngOnInit() {
@@ -78,40 +80,9 @@ export class LoginPage implements OnInit {
});
}
/* storeUserIdANdToken() {
(PushNotifications as any).requestPermission().then(result => {
PushNotifications.register();
});
PushNotifications.addListener(
'registration',
(token: PushNotificationToken) => {
console.log('FIREBASE TOKEN', token.value)
this.storageService.store(this.username, token.value);
this.storageService.get(this.username).then(value => {
console.log('STORAGE TOKEN', value)
this.storageService.get(AuthConnstants.USER).then(res => {
console.log('USERID', res);
const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
const body = {
UserId: res,
TokenId: token.value,
Status: 1,
Service: 1
};
this.http.post<Token>('https://equilibrium.dyndns.info/GabineteDigital.Services/V4/api/notifications/token', body, { headers }).subscribe(data => {
console.log('TOKEN USER MIDLE', data);
})
});
});
},
);
}; */
getToken() {
this.notificatinsservice.getAndpostToken(this.username);
}
async Login() {
@@ -127,7 +98,7 @@ export class LoginPage implements OnInit {
}
if (await this.authService.login(this.userattempt)) {
this.loginRocketChat();
//this.storeUserIdANdToken();
this.getToken();
this.router.navigate(['/home/events']);
}
+222 -9
View File
@@ -1,14 +1,43 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { environment } from 'src/environments/environment';
import { StorageService } from 'src/app/services/storage.service';
import { AuthConnstants } from 'src/app/config/auth-constants';
import { Token } from '../models/token.model';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
/* import { AgendaPage } from '../pages/agenda/agenda.page'
import { ExpedientePage } from '../pages/gabinete-digital/expediente/expediente.page'
import { EventListPage } from '../pages/gabinete-digital/event-list/event-list.page';
import { PublicationsPage } from '../pages/publications/publications.page'
import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page' */
import { ModalController, AlertController, AnimationController, Platform } from '@ionic/angular';
import { ViewEventPage } from '../pages/agenda/view-event/view-event.page';
import { ExpedienteDetailPage } from '../pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { PublicationDetailPage } from '../pages/publications/publication-detail/publication-detail.page';
import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page';
import { ApproveEventModalPage } from '../pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page';
@Injectable({
providedIn: 'root'
})
export class NotificationsService {
constructor(private http: HttpClient,) { }
adding: "intervenient" | "CC" = "intervenient";
folderId: string;
constructor(
private http: HttpClient,
private fcm: FCM,
private storageService: StorageService,
private modalController: ModalController,
public modalCtrl: AlertController,
private animationController: AnimationController,
private platform: Platform/* ,
public agenda: AgendaPage,
public expediante: ExpedientePage,
public eventList: EventListPage,
public publication: PublicationsPage,
public viewPublication: ViewPublicationsPage */) { }
getTokenByUserIdAndId(user, userID) {
const geturl = environment.apiURL + 'notifications/user/' + userID;
@@ -16,15 +45,199 @@ export class NotificationsService {
return this.http.get<Token[]>(`${geturl}`);
}
postToken(userId, token) {
const geturl = environment.apiURL + 'notifications/token';
getAndpostToken(username) {
if(this.platform.is('desktop')) {
console.log('Notifications not supported')
} else {
const geturl = environment.apiURL + 'notifications/token';
let data = {
UserId: userId,
TokenId: token,
Status: 1,
Service: 2
return this.fcm.getToken().then(token => {
console.log('token: ', token)
this.storageService.store(username, token);
this.storageService.get(username).then(value => {
console.log('STORAGE TOKEN', value)
this.storageService.get(AuthConnstants.USER).then(res => {
console.log('USERID', res);
const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
const body = {
UserId: res.UserId,
TokenId: token,
Status: 1,
Service: 1
};
this.http.post<Token>(`${geturl}`, body, { headers }).subscribe(data => {
console.log('TOKEN USER MIDLE', data);
})
});
});
});
}
return this.http.post<Token[]>(`${geturl}`,data);
}
async onReceviNotification(viewEventDetail, viewExpedientDetail, openApproveModal, viewPublications, viewPublicationDetail) {
this.fcm.onNotification().subscribe(data => {
if (data.click_action) {
console.log("Received in background: ", data);
if (data.Service === "agenda") {
viewEventDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
console.log('expediante 1')
viewExpedientDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
openApproveModal(data.IdObject);
}
else if (data.Service === "accoes" && data.Object === "accao") {
viewPublications(data.IdObject)
}
else if (data.Service === "accoes" && data.Object === "publicacao") {
viewPublicationDetail(data.IdObject)
}
} /* else {
console.log("Received in foreground: ", data);
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
this.openApproveModal(data.IdObject);
}; */
});
}
platformVerify() {
if (this.platform.is('cordova')) {
} else {
}
}
async viewEventDetail(eventId: any) {
const modal = await this.modalController.create({
component: ViewEventPage,
componentProps: {
eventId: eventId,
adding: this.adding
},
cssClass: 'modal modal-desktop',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((res) => {
if (res) {
//this.viewEventDetailDismiss(res);
}
});
}
async openApproveModal(eventSerialNumber) {
let classs;
if (window.innerWidth <= 1024) {
classs = 'cal-modal modal modal-desktop'
} else {
classs = 'gabinete-digital-mobile-modal-to-Desktop'
}
const modal = await this.modalController.create({
component: ApproveEventModalPage,
componentProps: {
serialNumber: eventSerialNumber,
},
cssClass: 'event-list',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async viewExpedientDetail(serialNumber: any) {
let classs;
if (window.innerWidth <= 800) {
classs = 'modal'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
console.log(serialNumber);
console.log('expediante 2')
const modal = await this.modalController.create({
component: ExpedienteDetailPage,
componentProps: {
serialNumber: serialNumber,
profile: "MDGPR",
},
cssClass: classs,
});
await modal.present();
modal.onDidDismiss().then((res) => {
if (res) {
console.log(res);
}
});
}
async viewPublicationDetail(publicationId: string) {
const modal = await this.modalController.create({
component: PublicationDetailPage,
componentProps: {
publicationId: publicationId,
folderId: this.folderId,
},
cssClass: 'publication-detail',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(() => {
});
}
async viewPublications(folderId) {
const enterAnimation = (baseEl: any) => {
const backdropAnimation = this.animationController.create()
.addElement(baseEl.querySelector('ion-backdrop')!)
.fromTo('opacity', '0.01', 'var(--backdrop-opacity)');
const wrapperAnimation = this.animationController.create()
.addElement(baseEl.querySelector('.modal-wrapper')!)
.keyframes([
{ offset: 0, opacity: '0', transform: 'scale(0)' },
{ offset: 1, opacity: '0.99', transform: 'scale(1)' }
]);
return this.animationController.create()
.addElement(baseEl)
.easing('ease-out')
.duration(500)
.addAnimation([backdropAnimation, wrapperAnimation]);
}
const leaveAnimation = (baseEl: any) => {
return enterAnimation(baseEl).direction('reverse');
}
const modal = await this.modalController.create({
component: ViewPublicationsPage,
enterAnimation,
leaveAnimation,
componentProps: {
folderId: folderId,
},
cssClass: 'new-action',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
}
@@ -3,7 +3,7 @@
<div class="main-header">
<div class="header-top">
<div class="middle">
<ion-label class="title">{{room.name.split('-').join(' ')}}</ion-label>
<ion-label class="title">{{roomName}}</ion-label>
</div>
<div class="right">
<button class="btn-no-color" (click)="openGroupMessagesOptions()">
@@ -23,10 +23,14 @@ export class GroupMessagesPage implements OnInit, OnChanges {
room:any;
roomName:any;
members:any;
@Input() roomId:string;
@Output() closeAllDesktopComponents:EventEmitter<any> = new EventEmitter<any>();
@Output() showEmptyContainer:EventEmitter<any> = new EventEmitter<any>();
@Output() openGroupContacts:EventEmitter<any> = new EventEmitter<any>();
@Output() openEditGroup:EventEmitter<any> = new EventEmitter<any>();
constructor(
private menu: MenuController,
@@ -79,6 +83,7 @@ export class GroupMessagesPage implements OnInit, OnChanges {
this.showLoader = true;
this.chatService.getRoomInfo(this.roomId).subscribe(room=>{
this.room = room['room'];
this.roomName = this.room.name.split('-').join(' ');
this.getGroupContacts(this.room);
this.loadGroupMessages(this.room);
this.showLoader = false;
@@ -190,7 +195,32 @@ export class GroupMessagesPage implements OnInit, OnChanges {
roomId: this.roomId,
}
});
return await modal.present();
await modal.present();
modal.onDidDismiss().then(res=>{
console.log(res);
if(res.data == 'leave'){
console.log('LEAVE');
}
else if(res.data == 'delete'){
this.closeAllDesktopComponents.emit();
this.showEmptyContainer.emit();
}
else if(res.data == 'cancel'){
console.log('CANCEL');
}
else if(res.data == 'edit'){
console.log('CANCEL');
}
else{
this.roomName = res.data.name.split('-').join(' ');
console.log(this.roomName);
this.getRoomInfo();
//this.modalController.dismiss();
};
});
}
openSendGroupMessageOptions(ev: any){
@@ -27,16 +27,19 @@ export class ChatPopoverPage implements OnInit {
}
close(){
if( window.innerWidth <= 1024){
this.popoverController.dismiss();
//this.popoverController.dismiss();
this.modalController.dismiss('cancel');
}
else{
this.modalController.dismiss();
this.modalController.dismiss('cancel');
}
}
//Top menu options
//Close
leaveGroup(){
console.log('leave');
let body = { "roomId":this.roomId, }
this.chatService.getRoomInfo(this.roomId).subscribe(room=>{
@@ -52,10 +55,8 @@ export class ChatPopoverPage implements OnInit {
console.log(res);
});
}
});
this.popoverController.dismiss(true);
this.modalController.dismiss('leave');
}
//Delete
deleteGroup(){
@@ -74,10 +75,12 @@ export class ChatPopoverPage implements OnInit {
});
}
});
this.popoverController.dismiss(true);
this.modalController.dismiss('delete');
}
async openChangeGroupName(){
const modal = await this.modalController.create({
this.modalController.dismiss('edit');
/* const modal = await this.modalController.create({
component: EditGroupPage,
componentProps: {
//room: this.room,
@@ -89,8 +92,8 @@ export class ChatPopoverPage implements OnInit {
await modal.present();
modal.onDidDismiss().then((res)=>{
console.log(res.data);
this.popoverController.dismiss(res.data);
});
this.modalController.dismiss(res.data);
}); */
}
}
@@ -70,10 +70,10 @@ export class NewPublicationPage implements OnInit {
getPublicationDetail(){
this.showLoader = true;
console.log(this.publicationId);
//console.log(this.publicationId);
/* console.log(this.folderId); */
this.publications.GetPublicationById(this.publicationId).subscribe(res=>{
console.log(res);
//console.log(res);
/* this.publication = res; */
this.publication = {
DateIndex: res.DateIndex,