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
+8 -5
View File
@@ -110,7 +110,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.load();
this.setStatus('online');
this.loadFiles();
//this.loadFiles();
VoiceRecorder.requestAudioRecordingPermission();
Filesystem.mkdir({
path: IMAGE_DIR,
@@ -562,7 +562,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
let msgChat = {
_id: element.Id,
attachments: this.isJson(element.Attachments),
attachments: this.isJson(element.Attachments),
channels: this.isJson(element.Channels),
file: this.isJson(element.File),
mentions: this.isJson(element.Mentions),
@@ -613,7 +613,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.sqlservice.addChatMSG(chatmsg)
});
}
}
async serverLongPull() {
@@ -643,8 +643,11 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
// Show Error
//showMessage(response.statusText);
//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);
// Reconnect in one second
@@ -66,7 +66,7 @@ export class NewActionPage implements OnInit {
private publication: PublicationsService,
private toastService: ToastService
) {
) {
this.folder = new PublicationFolder();
@@ -76,7 +76,7 @@ export class NewActionPage implements OnInit {
this.folder.DateBegin = new Date().toISOString()
this.folder.DateEnd = (new Date(new Date().getTime() + 15 * 60000)).toISOString()
}
ngOnInit() {
@@ -102,7 +102,13 @@ export class NewActionPage implements OnInit {
}
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() {
@@ -134,8 +140,8 @@ export class NewActionPage implements OnInit {
DateEnd: this.folder.DateEnd,
ActionType: this.segment,
}
const loader = this.toastService.loading()
try {
@@ -144,7 +150,7 @@ export class NewActionPage implements OnInit {
this.toastService.successMessage("Ação presidencial criado");
this.close();
} catch (error) {
this.toastService.badRequest("Ação presidencial não criado");
} finally {
loader.remove()
@@ -156,5 +162,5 @@ export class NewActionPage implements OnInit {
close(){
this.modalController.dismiss();
}
}
@@ -40,7 +40,7 @@
<div class="aside overflow-y-auto d-flex flex-wrap 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">
<ion-item lines="none"
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>
</div>
<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>
</div>
</ion-item>
@@ -165,10 +165,13 @@ ion-toolbar{
width: 25px;
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;
}
}
.item-options-active{
display: none !important;
}
}
.item-active{
@@ -240,5 +243,7 @@ ion-toolbar{
}
.item-options{
display: block !important;
padding: 10px;
}
}
@@ -70,7 +70,7 @@ export class PublicationsPage implements OnInit {
private backgroundservice: BackgroundService,
private platform: Platform,
public ThemeService: ThemeService,
) {
this.months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
this.days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
@@ -187,7 +187,7 @@ export class PublicationsPage implements OnInit {
}
getFromDB() {
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
} else {
this.sqliteservice.getAllActions().then((actions: any[]) => {
@@ -277,13 +277,12 @@ export class PublicationsPage implements OnInit {
}
goToPublicationsList(folderId: string) {
this.folderId = folderId
this.idSelected = folderId;
if (window.innerWidth <= 800) {
this.router.navigate(['/home/publications', folderId]);
this.idSelected = "";
} else {
this.closeDesktopComponent();
this.idSelected = folderId;
this.folderId = folderId
this.desktopComponent.showViewPublication = true;
}
@@ -461,5 +460,5 @@ export class PublicationsPage implements OnInit {
// newImage => console.log('new image path is: ' + newImage),
// error => console.error('Error cropping image', error)
// );
}
+6 -1
View File
@@ -51,7 +51,9 @@ export class FileService {
private platform: Platform,
private loadingCtrl: LoadingController,
private http: HttpClient,
) { }
) {
this.headers = new HttpHeaders();
}
uploadFile(formData:any){
@@ -71,6 +73,9 @@ export class FileService {
params = params.set("path", guid);
this.headers = this.headers.set('responseType', 'blob');
this.headers = this.headers.set('Content-Type', 'application/octet-stream');
let options = {
headers: this.headers,
params: params
@@ -201,13 +201,11 @@ export class NewEventPage implements OnInit {
}
})
}
this.taskParticipants = removeDuplicate(this.taskParticipants);
this.taskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
this.setIntervenient.emit(this.taskParticipants);
this.setIntervenientCC.emit(this.taskParticipantsCc);
}
@@ -307,7 +305,6 @@ export class NewEventPage implements OnInit {
close(){
this.deleteTemporaryData();
this.cloneAllmobileComponent.emit();
this.clearContact.emit();
this.setIntervenient.emit([]);
@@ -425,10 +422,8 @@ export class NewEventPage implements OnInit {
(id) => {
console.log(id);
const eventId: any = id;
const DocumentToSave: EventAttachment[] = this.documents.map((e) => {
return {
SourceTitle: e.Assunto,
@@ -149,9 +149,9 @@
<!-- <ion-fab-button (click)="addFile()" color="light">
<ion-icon name="document"></ion-icon>
</ion-fab-button> -->
<ion-fab-button (click)="addImage()" color="light">
<!-- <ion-fab-button (click)="addImage()" color="light">
<ion-icon name="image"></ion-icon>
</ion-fab-button>
</ion-fab-button> -->
<!-- <ion-fab-button class="hide-desktop" (click)="takePicture()" color="light">
<ion-icon name="camera"></ion-icon>
</ion-fab-button> -->
@@ -161,7 +161,8 @@
</ion-fab-list>
</ion-fab>
</div>
<div class="width-80">
<div class="width-100">
<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>
<button hidden class="btn-no-color">
@@ -169,7 +170,7 @@
</button>
</ion-item>
</div>
<div>
<div class="btn-send">
<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 == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
@@ -1,7 +1,4 @@
@import '~src/function.scss';
div{
overflow: auto;
}
.header-toolbar{
--background:transparent;
--opacity: 1;
@@ -200,44 +197,49 @@
}
}
ion-footer{
padding-top: 7.5px;
padding-bottom: 7.5px;
.container{
justify-content: center;
justify-content: space-evenly;
align-items: center;
ion-footer{
padding-top: 7.5px;
padding-bottom: 7.5px;
}
.container{
justify-content: center;
justify-content: space-evenly;
align-items: center;
margin: 0 !important;
padding: 0 !important;
}
.chat-icon-options{
display:block !important;
font-size: 35px;
float: right !important;
margin-top: 5px;
}
.chat-icon-options{
display:block !important;
font-size: 35px;
float: right !important;
margin-top: 5px;
}
.chat-icon-send{
font-size: 45px;
margin: 0 auto;
margin-top: 4px;
}
.chat-icon-send{
font-size: 45px;
margin: 0 auto;
margin-top: 4px;
}
.type-message{
display: flex;
border: 1px solid #ebebeb;
border-radius: 25px;
padding-left: 15px;
align-items: center;
overflow: auto;
.type-message{
display: flex;
border: 1px solid #ebebeb;
border-radius: 25px;
padding-left: 15px;
margin: 0 15px 0 75px;
align-items: center;
overflow: auto;
ion-textarea{
margin: 0 !important;
align-self: center;
}
}
ion-textarea{
min-height: 50px;
margin: 0 !important;
align-self: center;
overflow: auto;
}
}
.btn-send{
padding-right: 20px !important;
overflow: hidden;
}
}
}
@@ -49,7 +49,7 @@ export class ContactsPage implements OnInit {
}
openMessagesPage(username:string){
if( window.innerWidth <= 1024){
if( window.innerWidth < 701){
this.createRoom(username);
}
else{
@@ -117,29 +117,19 @@ export class ContactsPage implements OnInit {
this.chatService.createRoom(body).subscribe(res => {
console.log(res);
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=>{
let result = res['ims'].filter(data => data._id == roomId);
this.dm = result[0];
console.log(this.dm);
this.openModal(this.dm);
});
}
async openModal(dm:any){
this.close();
console.log(dm);
async openMessagesModal(roomId: any) {
console.log(roomId);
const modal = await this.modalController.create({
component: MessagesPage,
cssClass: 'group-messages',
backdropDismiss: false,
cssClass: 'modal modal-desktop isMessagesChatOpened',
componentProps: {
dm: dm,
roomId: roomId,
},
});
await modal.present();
@@ -123,9 +123,9 @@
<!-- <ion-fab-button hidden (click)="addFile()" color="light">
<ion-icon name="document"></ion-icon>
</ion-fab-button> -->
<ion-fab-button (click)="addImage()" color="light">
<!-- <ion-fab-button (click)="addImage()" color="light">
<ion-icon name="image"></ion-icon>
</ion-fab-button>
</ion-fab-button> -->
<!-- <ion-fab-button (click)="takePicture()" color="light">
<ion-icon name="camera"></ion-icon>
</ion-fab-button> -->
@@ -134,9 +134,9 @@
</ion-fab-button>
</ion-fab-list>
</ion-fab>
</div>
<div class="width-80">
<div class="width-100">
<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>
<button hidden class="btn-no-color" (click)="notImplemented()">
@@ -179,10 +179,11 @@
ion-footer{
padding-top: 7.5px;
padding-bottom: 7.5px;
.container{
justify-content: center;
justify-content: space-evenly;
align-items: center;
}
.chat-icon-options{
@@ -203,14 +204,15 @@
border: 1px solid #ebebeb;
border-radius: 25px;
padding-left: 15px;
margin: 0 15px 0 60px;
align-items: center;
overflow: auto;
ion-textarea{
margin: 0 !important;
align-self: center;
ion-textarea{
margin: 0 !important;
align-self: center;
}
}
}
}
@@ -250,6 +250,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
if(msg.file.type == "application/img"){
let response:any = await this.fileService.getFile(msg.file.guid).toPromise();
console.log(response);
alert(response);
//this.openPreview(msg);
@@ -28,13 +28,12 @@
</div>
<div *ngIf="task && p.userRole(['PR'])" class="d-flex width-100">
<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)="distartExpedientModal('descartar')" class="btn-cancel" shape="round" >Descartar</button>
<div class="solid"></div>
<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)="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>
<button hidden class="btn-cancel" shape="round" >Delegar</button>
<button (click)="openNewGroupPage()" class="btn-cancel" shape="round" >Iniciar Conversa</button>
@@ -28,27 +28,27 @@ export class NewActionPage implements OnInit {
public stepMinute = 5;
public stepSecond = 5;
public endMinDate = new Date(new Date().getTime() + 15 * 60000);
Form: FormGroup;
validateFrom = false
public dateControlStart = new FormControl(moment("DD MM YYYY hh"));
public dateControlEnd = new FormControl(moment("DD MM YYYY hh"));
@Output() closeDesktopComponent= new EventEmitter<any>();
@Output() getActions= new EventEmitter<any>();
constructor(
private publication: PublicationsService,
private toastService: ToastService
) {
) {
this.folder = new PublicationFolder();
this.folder = Object.assign(this.folder, {
DateBegin: moment(new Date()),
DateEnd: moment(new Date(new Date().getTime() + 15 * 60000)),
DateBegin: new Date().toISOString(),
DateEnd: (new Date(new Date().getTime() + 15 * 60000)).toISOString(),
})
}
@@ -76,9 +76,15 @@ export class NewActionPage implements OnInit {
return ['ok']
}
}
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() {
@@ -119,21 +125,21 @@ export class NewActionPage implements OnInit {
ActionType: this.segment,
}
console.log(this.folder);
const loader = this.toastService.loading()
try {
await this.publication.CreatePublicationFolder(this.folder).toPromise()
this.close();
this.toastService.successMessage('Acção presidencial criada')
this.toastService._successMessage('Acção presidencial criada')
this.getActions.emit()
} 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 {
loader.remove()
}
}
close(){
@@ -89,12 +89,10 @@ export class ViewPublicationsPage implements OnInit {
}
getPublicationDetail() {
setTimeout(() => {
let allActions = this.publicationEventFolderStorage.list.concat(this.publicationTravelFolderService.list)
this.item = allActions.find((e)=> e.ProcessId == this.folderId);
},100);
this.publications.GetPresidentialAction(this.folderId).subscribe(res=>{
console.log(res);
this.item = res;
});
}
getPublications() {