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

This commit is contained in:
tiago.kayaya
2021-12-14 23:16:20 +01:00
16 changed files with 124 additions and 113 deletions
+6 -3
View File
@@ -110,7 +110,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.load(); this.load();
this.setStatus('online'); this.setStatus('online');
this.loadFiles(); //this.loadFiles();
VoiceRecorder.requestAudioRecordingPermission(); VoiceRecorder.requestAudioRecordingPermission();
Filesystem.mkdir({ Filesystem.mkdir({
path: IMAGE_DIR, path: IMAGE_DIR,
@@ -643,8 +643,11 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
// Show Error // Show Error
//showMessage(response.statusText); //showMessage(response.statusText);
//this.loadMessages() //this.loadMessages()
//this.messages = res['messages'].reverse();
//this.chatMessageStore.add(roomId, this.messages) if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
this.messages = res['messages'].reverse();
this.chatMessageStore.add(roomId, this.messages)
}
//console.log(this.messages); //console.log(this.messages);
// Reconnect in one second // Reconnect in one second
@@ -102,7 +102,13 @@ export class NewActionPage implements OnInit {
} }
runValidation() { runValidation() {
this.validateFrom = true this.validateFrom = true;
if(new Date(this.folder.DateBegin).toISOString() > new Date(this.folder.DateEnd).toISOString()){
this.toastService.badRequest("A data de início não pode ser superior a data de fim");
}
else if(this.folder.DateBegin > new Date().toISOString()){
this.toastService.badRequest("A data de início não pode ser superior a data actual");
}
} }
injectValidation() { injectValidation() {
@@ -40,7 +40,7 @@
<div class="aside overflow-y-auto d-flex flex-wrap width-100"> <div class="aside overflow-y-auto d-flex flex-wrap width-100">
<!-- <ion-list class="width-100"> --> <!-- <ion-list class="width-100"> -->
<ion-item-sliding disabled="{{showSlidingOptions}}" class="width-100 cursor-pointer" <ion-item-sliding disabled="{{showSlidingOptions}}" class="width-100"
*ngFor="let viagem of publicationsTravelFolderList"> *ngFor="let viagem of publicationsTravelFolderList">
<ion-item lines="none" <ion-item lines="none"
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding" class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding"
@@ -58,7 +58,6 @@
<p class="item-content-detail my-5" [class.item-content-detail-active]="viagem.ProcessId == idSelected">{{viagem.Detail}}</p> <p class="item-content-detail my-5" [class.item-content-detail-active]="viagem.ProcessId == idSelected">{{viagem.Detail}}</p>
</div> </div>
<div (click)="openOptions(viagem.ProcessId)" class="item-options d-none cursor-pointer" [class.item-options-active]="viagem.ProcessId == idSelected" autoHide="false"> <div (click)="openOptions(viagem.ProcessId)" class="item-options d-none cursor-pointer" [class.item-options-active]="viagem.ProcessId == idSelected" autoHide="false">
<!-- <ion-icon src="assets/images/icons-menu.svg"></ion-icon> -->
<i class="fas fa-ellipsis-v"></i> <i class="fas fa-ellipsis-v"></i>
</div> </div>
</ion-item> </ion-item>
@@ -165,10 +165,13 @@ ion-toolbar{
width: 25px; width: 25px;
font-size: 20px; font-size: 20px;
} }
.item-content-date-active, .item-content-title-active, .item-content-detail-active, .item-options-active{ .item-content-date-active, .item-content-title-active, .item-content-detail-active{
color: #fff; color: #fff;
} }
} }
.item-options-active{
display: none !important;
}
} }
.item-active{ .item-active{
@@ -240,5 +243,7 @@ ion-toolbar{
} }
.item-options{ .item-options{
display: block !important; display: block !important;
padding: 10px;
} }
} }
@@ -277,13 +277,12 @@ export class PublicationsPage implements OnInit {
} }
goToPublicationsList(folderId: string) { goToPublicationsList(folderId: string) {
this.folderId = folderId
this.idSelected = folderId;
if (window.innerWidth <= 800) { if (window.innerWidth <= 800) {
this.router.navigate(['/home/publications', folderId]); this.router.navigate(['/home/publications', folderId]);
this.idSelected = "";
} else { } else {
this.closeDesktopComponent(); this.closeDesktopComponent();
this.idSelected = folderId;
this.folderId = folderId this.folderId = folderId
this.desktopComponent.showViewPublication = true; this.desktopComponent.showViewPublication = true;
} }
+6 -1
View File
@@ -51,7 +51,9 @@ export class FileService {
private platform: Platform, private platform: Platform,
private loadingCtrl: LoadingController, private loadingCtrl: LoadingController,
private http: HttpClient, private http: HttpClient,
) { } ) {
this.headers = new HttpHeaders();
}
uploadFile(formData:any){ uploadFile(formData:any){
@@ -71,6 +73,9 @@ export class FileService {
params = params.set("path", guid); params = params.set("path", guid);
this.headers = this.headers.set('responseType', 'blob');
this.headers = this.headers.set('Content-Type', 'application/octet-stream');
let options = { let options = {
headers: this.headers, headers: this.headers,
params: params params: params
@@ -201,13 +201,11 @@ export class NewEventPage implements OnInit {
} }
}) })
} }
this.taskParticipants = removeDuplicate(this.taskParticipants); this.taskParticipants = removeDuplicate(this.taskParticipants);
this.taskParticipantsCc = removeDuplicate(this.taskParticipantsCc); this.taskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
this.setIntervenient.emit(this.taskParticipants); this.setIntervenient.emit(this.taskParticipants);
this.setIntervenientCC.emit(this.taskParticipantsCc); this.setIntervenientCC.emit(this.taskParticipantsCc);
} }
@@ -307,7 +305,6 @@ export class NewEventPage implements OnInit {
close(){ close(){
this.deleteTemporaryData(); this.deleteTemporaryData();
this.cloneAllmobileComponent.emit(); this.cloneAllmobileComponent.emit();
this.clearContact.emit(); this.clearContact.emit();
this.setIntervenient.emit([]); this.setIntervenient.emit([]);
@@ -425,10 +422,8 @@ export class NewEventPage implements OnInit {
(id) => { (id) => {
console.log(id); console.log(id);
const eventId: any = id; const eventId: any = id;
const DocumentToSave: EventAttachment[] = this.documents.map((e) => { const DocumentToSave: EventAttachment[] = this.documents.map((e) => {
return { return {
SourceTitle: e.Assunto, SourceTitle: e.Assunto,
@@ -149,9 +149,9 @@
<!-- <ion-fab-button (click)="addFile()" color="light"> <!-- <ion-fab-button (click)="addFile()" color="light">
<ion-icon name="document"></ion-icon> <ion-icon name="document"></ion-icon>
</ion-fab-button> --> </ion-fab-button> -->
<ion-fab-button (click)="addImage()" color="light"> <!-- <ion-fab-button (click)="addImage()" color="light">
<ion-icon name="image"></ion-icon> <ion-icon name="image"></ion-icon>
</ion-fab-button> </ion-fab-button> -->
<!-- <ion-fab-button class="hide-desktop" (click)="takePicture()" color="light"> <!-- <ion-fab-button class="hide-desktop" (click)="takePicture()" color="light">
<ion-icon name="camera"></ion-icon> <ion-icon name="camera"></ion-icon>
</ion-fab-button> --> </ion-fab-button> -->
@@ -161,7 +161,8 @@
</ion-fab-list> </ion-fab-list>
</ion-fab> </ion-fab>
</div> </div>
<div class="width-80">
<div class="width-100">
<ion-item class="ion-no-padding type-message" lines="none"> <ion-item class="ion-no-padding type-message" lines="none">
<ion-textarea clearOnEdit="true" placeholder="Escrever uma mensagem" class="message-input" rows="1" [(ngModel)]="message"></ion-textarea> <ion-textarea clearOnEdit="true" placeholder="Escrever uma mensagem" class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
<button hidden class="btn-no-color"> <button hidden class="btn-no-color">
@@ -169,7 +170,7 @@
</button> </button>
</ion-item> </ion-item>
</div> </div>
<div> <div class="btn-send">
<button *ngIf="message" class="btn-no-color" (click)="sendMessage()"> <button *ngIf="message" class="btn-no-color" (click)="sendMessage()">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
@@ -1,7 +1,4 @@
@import '~src/function.scss'; @import '~src/function.scss';
div{
overflow: auto;
}
.header-toolbar{ .header-toolbar{
--background:transparent; --background:transparent;
--opacity: 1; --opacity: 1;
@@ -200,44 +197,49 @@
} }
} }
ion-footer{ ion-footer{
padding-top: 7.5px; padding-top: 7.5px;
padding-bottom: 7.5px; padding-bottom: 7.5px;
.container{
justify-content: center;
justify-content: space-evenly;
align-items: center;
} .container{
justify-content: center;
justify-content: space-evenly;
align-items: center;
margin: 0 !important;
padding: 0 !important;
}
.chat-icon-options{ .chat-icon-options{
display:block !important; display:block !important;
font-size: 35px; font-size: 35px;
float: right !important; float: right !important;
margin-top: 5px; margin-top: 5px;
} }
.chat-icon-send{ .chat-icon-send{
font-size: 45px; font-size: 45px;
margin: 0 auto; margin: 0 auto;
margin-top: 4px; margin-top: 4px;
} }
.type-message{ .type-message{
display: flex; display: flex;
border: 1px solid #ebebeb; border: 1px solid #ebebeb;
border-radius: 25px; border-radius: 25px;
padding-left: 15px; padding-left: 15px;
align-items: center; margin: 0 15px 0 75px;
overflow: auto; align-items: center;
overflow: auto;
ion-textarea{
margin: 0 !important;
align-self: center;
}
}
ion-textarea{ .btn-send{
min-height: 50px; padding-right: 20px !important;
margin: 0 !important; overflow: hidden;
align-self: center; }
overflow: auto;
}
}
} }
@@ -49,7 +49,7 @@ export class ContactsPage implements OnInit {
} }
openMessagesPage(username:string){ openMessagesPage(username:string){
if( window.innerWidth <= 1024){ if( window.innerWidth < 701){
this.createRoom(username); this.createRoom(username);
} }
else{ else{
@@ -117,29 +117,19 @@ export class ContactsPage implements OnInit {
this.chatService.createRoom(body).subscribe(res => { this.chatService.createRoom(body).subscribe(res => {
console.log(res); console.log(res);
this.room = res['room']; this.room = res['room'];
this.getDirectMessage(this.room._id); this.openMessagesModal(this.room._id);
}); });
} }
getDirectMessage(roomId:any){
console.log(roomId);
this.chatService.getAllDirectMessages().subscribe(res=>{ async openMessagesModal(roomId: any) {
let result = res['ims'].filter(data => data._id == roomId);
this.dm = result[0]; console.log(roomId);
console.log(this.dm);
this.openModal(this.dm);
});
}
async openModal(dm:any){
this.close();
console.log(dm);
const modal = await this.modalController.create({ const modal = await this.modalController.create({
component: MessagesPage, component: MessagesPage,
cssClass: 'group-messages', cssClass: 'modal modal-desktop isMessagesChatOpened',
backdropDismiss: false,
componentProps: { componentProps: {
dm: dm, roomId: roomId,
}, },
}); });
await modal.present(); await modal.present();
@@ -123,9 +123,9 @@
<!-- <ion-fab-button hidden (click)="addFile()" color="light"> <!-- <ion-fab-button hidden (click)="addFile()" color="light">
<ion-icon name="document"></ion-icon> <ion-icon name="document"></ion-icon>
</ion-fab-button> --> </ion-fab-button> -->
<ion-fab-button (click)="addImage()" color="light"> <!-- <ion-fab-button (click)="addImage()" color="light">
<ion-icon name="image"></ion-icon> <ion-icon name="image"></ion-icon>
</ion-fab-button> </ion-fab-button> -->
<!-- <ion-fab-button (click)="takePicture()" color="light"> <!-- <ion-fab-button (click)="takePicture()" color="light">
<ion-icon name="camera"></ion-icon> <ion-icon name="camera"></ion-icon>
</ion-fab-button> --> </ion-fab-button> -->
@@ -134,9 +134,9 @@
</ion-fab-button> </ion-fab-button>
</ion-fab-list> </ion-fab-list>
</ion-fab> </ion-fab>
</div> </div>
<div class="width-80">
<div class="width-100">
<ion-item class="ion-no-padding type-message" lines="none"> <ion-item class="ion-no-padding type-message" lines="none">
<ion-textarea clearOnEdit="true" placeholder="Escrever uma mensagem" class="message-input" rows="1" [(ngModel)]="message"></ion-textarea> <ion-textarea clearOnEdit="true" placeholder="Escrever uma mensagem" class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
<button hidden class="btn-no-color" (click)="notImplemented()"> <button hidden class="btn-no-color" (click)="notImplemented()">
@@ -179,10 +179,11 @@
ion-footer{ ion-footer{
padding-top: 7.5px; padding-top: 7.5px;
padding-bottom: 7.5px; padding-bottom: 7.5px;
.container{ .container{
justify-content: center; justify-content: center;
justify-content: space-evenly; justify-content: space-evenly;
align-items: center;
} }
.chat-icon-options{ .chat-icon-options{
@@ -203,14 +204,15 @@
border: 1px solid #ebebeb; border: 1px solid #ebebeb;
border-radius: 25px; border-radius: 25px;
padding-left: 15px; padding-left: 15px;
margin: 0 15px 0 60px;
align-items: center; align-items: center;
overflow: auto; overflow: auto;
ion-textarea{ ion-textarea{
margin: 0 !important; margin: 0 !important;
align-self: center; align-self: center;
}
} }
}
} }
@@ -250,6 +250,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
if(msg.file.type == "application/img"){ if(msg.file.type == "application/img"){
let response:any = await this.fileService.getFile(msg.file.guid).toPromise(); let response:any = await this.fileService.getFile(msg.file.guid).toPromise();
console.log(response); console.log(response);
alert(response);
//this.openPreview(msg); //this.openPreview(msg);
@@ -28,13 +28,12 @@
</div> </div>
<div *ngIf="task && p.userRole(['PR'])" class="d-flex width-100"> <div *ngIf="task && p.userRole(['PR'])" class="d-flex width-100">
<div class="flex-grow-1"> <div class="flex-grow-1">
<button (click)="openExpedientActionsModal('0', fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
<button (click)="openExpedientActionsModal('0', fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button> <button (click)="openExpedientActionsModal('0', fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
<button (click)="distartExpedientModal('descartar')" class="btn-cancel" shape="round" >Descartar</button> <button (click)="distartExpedientModal('descartar')" class="btn-cancel" shape="round" >Descartar</button>
<div class="solid"></div> <div class="solid"></div>
<button (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button> <button (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
<button (click)="openBookMeetingModal()" class="btn-cancel" shape="round" >Marcar Reunião</button> <button (click)="openBookMeetingModal()" class="btn-cancel" shape="round" >Marcar Reunião</button>
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes11</button> <button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
<div hidden class="solid"></div> <div hidden class="solid"></div>
<button hidden class="btn-cancel" shape="round" >Delegar</button> <button hidden class="btn-cancel" shape="round" >Delegar</button>
<button (click)="openNewGroupPage()" class="btn-cancel" shape="round" >Iniciar Conversa</button> <button (click)="openNewGroupPage()" class="btn-cancel" shape="round" >Iniciar Conversa</button>
@@ -47,8 +47,8 @@ export class NewActionPage implements OnInit {
this.folder = Object.assign(this.folder, { this.folder = Object.assign(this.folder, {
DateBegin: moment(new Date()), DateBegin: new Date().toISOString(),
DateEnd: moment(new Date(new Date().getTime() + 15 * 60000)), DateEnd: (new Date(new Date().getTime() + 15 * 60000)).toISOString(),
}) })
} }
@@ -78,7 +78,13 @@ export class NewActionPage implements OnInit {
} }
runValidation() { runValidation() {
this.validateFrom = true this.validateFrom = true;
if((new Date(this.folder.DateBegin).getTime()) > (new Date(this.folder.DateEnd).getTime())){
this.toastService._badRequest("A data de início não pode ser superior a data de fim");
}
else if(new Date(this.folder.DateBegin).getTime() > new Date().getTime()){
this.toastService._badRequest("A data de início não pode ser superior a data actual");
}
} }
injectValidation() { injectValidation() {
@@ -125,11 +131,11 @@ export class NewActionPage implements OnInit {
try { try {
await this.publication.CreatePublicationFolder(this.folder).toPromise() await this.publication.CreatePublicationFolder(this.folder).toPromise()
this.close(); this.close();
this.toastService.successMessage('Acção presidencial criada') this.toastService._successMessage('Acção presidencial criada')
this.getActions.emit() this.getActions.emit()
} catch (error) { } catch (error) {
this.toastService.badRequest('Não foi possivel criar a acção presidencial') this.toastService._badRequest('Não foi possivel criar a acção presidencial')
} finally { } finally {
loader.remove() loader.remove()
} }
@@ -89,12 +89,10 @@ export class ViewPublicationsPage implements OnInit {
} }
getPublicationDetail() { getPublicationDetail() {
this.publications.GetPresidentialAction(this.folderId).subscribe(res=>{
setTimeout(() => { console.log(res);
let allActions = this.publicationEventFolderStorage.list.concat(this.publicationTravelFolderService.list) this.item = res;
this.item = allActions.find((e)=> e.ProcessId == this.folderId); });
},100);
} }
getPublications() { getPublications() {