mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 21:06:06 +00:00
Improve local storage and fix expediente task strature
This commit is contained in:
@@ -4,7 +4,6 @@ import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.servic
|
||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
import { PendentesStore } from 'src/app/store/pendestes-store.service';
|
||||
import { PedidosStore } from 'src/app/store/pedidos-store.service';
|
||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
||||
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
||||
import { DeplomasStore } from '../store/deplomas.service';
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CustomTaskPipe } from '../pipes/custom-task.pipe';
|
||||
import { ProcessesService } from '../services/processes.service';
|
||||
|
||||
@Injectable({
|
||||
@@ -20,6 +21,8 @@ export class DeplomaService {
|
||||
]
|
||||
}
|
||||
|
||||
customTaskPipe = new CustomTaskPipe()
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
) { }
|
||||
@@ -83,4 +86,9 @@ export class DeplomaService {
|
||||
return this.processes.CompleteTask(body)
|
||||
}
|
||||
|
||||
|
||||
async getList() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { customTask, fullTask } from '../models/dailyworktask.model';
|
||||
import { AttachmentList } from '../models/Excludetask';
|
||||
import { PermissionService } from '../OtherService/permission.service';
|
||||
import { CustomTaskPipe } from '../pipes/custom-task.pipe';
|
||||
import { ProcessesService } from '../services/processes.service';
|
||||
|
||||
import { DespachoStore } from '../store/despacho-store.service';
|
||||
import { LoaderService } from 'src/app/store/loader.service'
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
@@ -20,10 +23,14 @@ export class DespachoService {
|
||||
'Tarefa do Despacho': 'Tarefa de Despacho' | 'Concluir' | 'rexecucao'
|
||||
}
|
||||
|
||||
constructor(
|
||||
customTaskPipe = new CustomTaskPipe()
|
||||
despachoStore = DespachoStore;
|
||||
|
||||
constructor(
|
||||
private processes: ProcessesService,
|
||||
public p: PermissionService
|
||||
) { }
|
||||
public p: PermissionService,
|
||||
public LoaderService: LoaderService
|
||||
) { }
|
||||
|
||||
arquivar(note:string, documents:AttachmentList, serialnumber) {
|
||||
|
||||
@@ -181,4 +188,46 @@ export class DespachoService {
|
||||
return this.processes.CompleteTask(body)
|
||||
}
|
||||
|
||||
|
||||
async getList({updateStore = false}): Promise<customTask[]> {
|
||||
|
||||
this.LoaderService.push({})
|
||||
|
||||
let result: fullTask[] = []
|
||||
|
||||
try {
|
||||
result = await this.processes.GetTasksList("Despacho", false).toPromise();
|
||||
} catch (error) {
|
||||
|
||||
} finally {
|
||||
this.LoaderService.pop({})
|
||||
}
|
||||
|
||||
|
||||
result = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
|
||||
let despachoList: customTask[] = new Array();
|
||||
|
||||
result.forEach((element, index) => {
|
||||
|
||||
let task: customTask = this.customTaskPipe.transform(element);
|
||||
despachoList.push(task);
|
||||
|
||||
});
|
||||
|
||||
despachoList = this.sortArrayISODate(despachoList).reverse();
|
||||
|
||||
if(updateStore) {
|
||||
this.despachoStore.reset(despachoList);
|
||||
}
|
||||
|
||||
return despachoList
|
||||
}
|
||||
|
||||
sortArrayISODate(myArray: any) {
|
||||
return myArray.sort(function(a, b) {
|
||||
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
<ion-tab-button tab="events">
|
||||
<!-- <ion-icon name="home"></ion-icon> -->
|
||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-home.svg"></ion-icon>
|
||||
<ion-badge color="danger">{{toDayEventStorage.eventsList.length}}</ion-badge>
|
||||
<ion-badge color="danger">{{toDayEventStorage.eventsList.length + expedienteGdStore.count}}</ion-badge>
|
||||
<ion-label>Início</ion-label>
|
||||
</ion-tab-button>
|
||||
|
||||
<ion-tab-button tab="agenda">
|
||||
<!-- <ion-icon name="calendar"></ion-icon> -->
|
||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-calendar.svg"></ion-icon>
|
||||
<ion-label class="overflow-visible">Agenda</ion-label>
|
||||
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Agenda</ion-label>
|
||||
</ion-tab-button>
|
||||
<ion-tab-button tab="gabinete-digital">
|
||||
<!-- <ion-icon name="file-tray-stacked"></ion-icon> -->
|
||||
@@ -21,7 +21,7 @@
|
||||
</ion-tab-button>
|
||||
<ion-tab-button tab="publications">
|
||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-actions.svg"></ion-icon>
|
||||
<ion-label class="overflow-visible">Ações</ion-label>
|
||||
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Ações</ion-label>
|
||||
</ion-tab-button>
|
||||
<ion-tab-button tab="chat">
|
||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-chat-inactive.svg"></ion-icon>
|
||||
|
||||
+17
-10
@@ -12,6 +12,8 @@ import { DocumentCounterService } from 'src/app/OtherService/document-counter.se
|
||||
import { PermissionService } from '../OtherService/permission.service';
|
||||
import { TotalDocumentStore } from '../store/total-document.service';
|
||||
import { connection } from '../services/socket/synchro.service';
|
||||
import { DespachoService } from '../Rules/despacho.service';
|
||||
import { ExpedienteGdStore } from '../store/expedientegd-store.service';
|
||||
// import { NetworkService } from '../services/network.service';
|
||||
|
||||
|
||||
@@ -44,6 +46,7 @@ export class HomePage implements OnInit {
|
||||
|
||||
toDayEventStorage = ToDayEventStorage
|
||||
totalDocumentStore = TotalDocumentStore
|
||||
expedienteGdStore = ExpedienteGdStore
|
||||
|
||||
adding: "intervenient" | "CC" = "intervenient";
|
||||
mobileComponent = {
|
||||
@@ -68,7 +71,8 @@ export class HomePage implements OnInit {
|
||||
|
||||
connection = connection
|
||||
|
||||
constructor(private zone: NgZone,
|
||||
constructor(
|
||||
private zone: NgZone,
|
||||
private router: Router,
|
||||
public modalCtrl: AlertController,
|
||||
private notificationsService: NotificationsService,
|
||||
@@ -76,12 +80,15 @@ export class HomePage implements OnInit {
|
||||
private activeroute: ActivatedRoute,
|
||||
// private network: NetworkService,
|
||||
public p: PermissionService,
|
||||
public documentCounterService: DocumentCounterService) {
|
||||
public documentCounterService: DocumentCounterService,
|
||||
private despachoRule: DespachoService) {
|
||||
|
||||
this.router.events.subscribe((val) => {
|
||||
document.querySelectorAll('ion-modal').forEach((e: any) => e.remove())
|
||||
});
|
||||
|
||||
this.updateList()
|
||||
|
||||
|
||||
// if (typeof Worker !== 'undefined') {
|
||||
// // Create a new
|
||||
@@ -99,14 +106,6 @@ export class HomePage implements OnInit {
|
||||
//this.folderId = this.navParams.get('folderId');
|
||||
}
|
||||
|
||||
|
||||
this.notificationsService.registerCallback(
|
||||
'Create Depacho',
|
||||
() =>{
|
||||
this.refreshing()
|
||||
}
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
refreshing() {
|
||||
@@ -162,8 +161,16 @@ export class HomePage implements OnInit {
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updateList() {
|
||||
|
||||
this.notificationsService.registerCallback(
|
||||
'despachos',
|
||||
() => {
|
||||
this.despachoRule.getList({updateStore: true})
|
||||
}
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -287,6 +287,8 @@ export class CreateProcessPage implements OnInit {
|
||||
this.modalController.dismiss();
|
||||
} catch (error) {
|
||||
this.toastService.badRequest('Processo não efectuado');
|
||||
|
||||
} finally {
|
||||
loader.remove()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<ion-content class=" bg-blue">
|
||||
|
||||
<ion-header class=" bg-blue ion-no-border">
|
||||
<div class="profile-header width-100">
|
||||
<div class="div-logo d-md-none">
|
||||
<div class="logo height-fit-content">
|
||||
@@ -10,9 +9,10 @@
|
||||
<ion-icon class="icon" src="assets/images/icons-search-close.svg"></ion-icon>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ion-header>
|
||||
<ion-header class=" bg-blue ion-no-border">
|
||||
<div class="profile-content">
|
||||
|
||||
|
||||
<div class="profile-title d-flex justify-content-center width-100">
|
||||
<ion-label >{{loggeduser.RoleDescription}}</ion-label>
|
||||
</div>
|
||||
@@ -28,39 +28,46 @@
|
||||
</ion-buttons>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
</div>
|
||||
<div class="notifications-content">
|
||||
<ion-label>{{notificationdata.length}} novas notificações</ion-label>
|
||||
<ion-list>
|
||||
<div class="item cursor-pointer ion-no-padding ion-no-margin" lines="none"
|
||||
*ngFor = "let item of notificationdata; let i = index"
|
||||
(click)="notificatinsRoutes(item.index,item.Service,item.Object,item.IdObject,item.FolderId)"
|
||||
>
|
||||
<div class="item-conten-{{item.Service}}-{{item.TypeAgenda}}-{{item.Role}}">
|
||||
<div class="notification-item">
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'agenda'" src="assets/images/icons-default-agenda.svg" >
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'gabinete-digital'" src="assets/images/icons-correspondencias.svg" >
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'accoes'" src="assets/images/icons-nav-accoes-active.svg" >
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'chat'" src="assets/images/icons-nav-agenda-active.svg" >
|
||||
</div>
|
||||
</ion-header>
|
||||
|
||||
<ion-content class=" bg-blue">
|
||||
<div class="d-flex flex-column height-100 overflow-auto-y">
|
||||
|
||||
<div class="notifications-content">
|
||||
|
||||
<ion-list>
|
||||
<div class="item cursor-pointer ion-no-padding ion-no-margin" lines="none"
|
||||
*ngFor = "let item of notificationdata; let i = index"
|
||||
(click)="notificatinsRoutes(item.index,item.Service,item.Object,item.IdObject,item.FolderId)"
|
||||
>
|
||||
<div class="item-conten-{{item.Service}}-{{item.TypeAgenda}}-{{item.Role}}">
|
||||
<div class="notification-item">
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'agenda'" src="assets/images/icons-default-agenda.svg" >
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'gabinete-digital'" src="assets/images/icons-correspondencias.svg" >
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'accoes'" src="assets/images/icons-nav-accoes-active.svg" >
|
||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'chat'" src="assets/images/icons-nav-agenda-active.svg" >
|
||||
</div>
|
||||
<div class="approve-event-time">
|
||||
<p *ngIf = "item.Service == 'agenda'">{{item.dateInit}}</p>
|
||||
<p *ngIf = "item.Service == 'agenda'">{{item.dateEnd}}</p>
|
||||
</div>
|
||||
<div class="approve-event-detail">
|
||||
<p *ngIf = "item.Service == 'agenda'">{{item.Location}}</p>
|
||||
<h3 id="profile-title">{{item.alert}}</h3>
|
||||
<p *ngIf = "item.Service != 'agenda'">{{item.desc}}</p>
|
||||
</div>
|
||||
<!-- <div class="notification-label-MD-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000011'" ></div>
|
||||
<div class="notification-label-MD-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000011'" ></div>
|
||||
<div class="notification-label-PR-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000014'" ></div>
|
||||
<div class="notification-label-PR-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000014'" ></div> -->
|
||||
</div>
|
||||
<div class="approve-event-time">
|
||||
<p *ngIf = "item.Service == 'agenda'">{{item.dateInit}}</p>
|
||||
<p *ngIf = "item.Service == 'agenda'">{{item.dateEnd}}</p>
|
||||
</div>
|
||||
<div class="approve-event-detail">
|
||||
<p *ngIf = "item.Service == 'agenda'">{{item.Location}}</p>
|
||||
<h3 id="profile-title">{{item.alert}}</h3>
|
||||
<p *ngIf = "item.Service != 'agenda'">{{item.desc}}</p>
|
||||
</div>
|
||||
<!-- <div class="notification-label-MD-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000011'" ></div>
|
||||
<div class="notification-label-MD-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000011'" ></div>
|
||||
<div class="notification-label-PR-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000014'" ></div>
|
||||
<div class="notification-label-PR-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000014'" ></div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ion-list>
|
||||
|
||||
</ion-list>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</ion-content>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
// background-color: #0782c9;
|
||||
padding: 20px 20px;
|
||||
border: 0!important;
|
||||
overflow: auto;
|
||||
|
||||
.div-logo{
|
||||
background: transparent;
|
||||
@@ -67,7 +66,6 @@ ion-list{
|
||||
.notifications-content{
|
||||
padding: 0px 20px;
|
||||
.item{
|
||||
display: flex;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07);
|
||||
border: solid 1px #e9e9e9;
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
export interface ExpedienteFullTaskWorkflowInstanceDataFields {
|
||||
FolderID: number;
|
||||
Sender: string;
|
||||
Subject: string;
|
||||
Status: string;
|
||||
}
|
||||
|
||||
export interface ExpedienteFullTask {
|
||||
serialNumber: string;
|
||||
taskStartDate: string;
|
||||
workflowDisplayName: string;
|
||||
activityInstanceName: string;
|
||||
totalDocuments: number;
|
||||
workflowInstanceDataFields: ExpedienteFullTaskWorkflowInstanceDataFields;
|
||||
}
|
||||
@@ -113,4 +113,18 @@ export interface expedienteTask {
|
||||
DispatchNumber: any
|
||||
AttachmentsProcessLastInstanceID: any
|
||||
InstanceID: any
|
||||
}
|
||||
|
||||
|
||||
|
||||
export interface ExpedienteTask {
|
||||
SerialNumber: string
|
||||
Senders : string
|
||||
CreateDate : string
|
||||
DocumentsQty : number
|
||||
WorkflowName : string
|
||||
activityInstanceName : string
|
||||
Status : string
|
||||
taskStartDate: string
|
||||
Subject: string
|
||||
}
|
||||
@@ -11,8 +11,8 @@
|
||||
<p *ngIf="totalEvent!=1"class="event-number p-small ion-text-center"> <strong>{{totalEvent}}</strong> eventos agendados para hoje</p>
|
||||
</ion-label>
|
||||
<div class="next-meeting">
|
||||
<div class="meeting-time">{{currentHoursMinutes | date: 'HH:mm'}}</div>
|
||||
<div *ngIf="currentEvent" class="meeting-description"> "{{currentEvent}}"</div>
|
||||
<div class="meeting-time" *ngIf="currentHoursMinutes">{{currentHoursMinutes | date: 'HH:mm'}}</div>
|
||||
<div class="meeting-description" *ngIf="currentEvent"> "{{currentEvent}}"</div>
|
||||
</div>
|
||||
|
||||
</ion-header>
|
||||
@@ -94,7 +94,7 @@
|
||||
</div>
|
||||
<div class="content">
|
||||
<ion-list>
|
||||
<ion-item class="cursor-pointer" lines="none" *ngFor = "let task of expedienteStorage.list"
|
||||
<ion-item class="cursor-pointer" lines="none" *ngFor = "let task of expedienteGdStore.list"
|
||||
(click)="goToExpediente(task.serialNumber)">
|
||||
<div class="item-exp d-flex">
|
||||
<div class="schedule-date">
|
||||
@@ -102,8 +102,8 @@
|
||||
<div class="time-start">{{task.taskStartDate | date: 'HH:mm'}}</div>
|
||||
</div>
|
||||
<div class="schedule-details pointer">
|
||||
<div class="description">{{ task.workflowInstanceDataFields.Subject }}</div>
|
||||
<div class="location">{{ task.workflowInstanceDataFields.Sender }}</div>
|
||||
<div class="description">{{ task.Subject }}</div>
|
||||
<div class="location">{{ task.Senders }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</ion-item>
|
||||
|
||||
@@ -13,8 +13,9 @@ import { ProcessesService } from '../../services/processes.service';
|
||||
import { DailyWorkTask } from '../../models/dailyworktask.model';
|
||||
import { User } from 'src/app/models/user.model';
|
||||
import { ToDayEventStorage } from 'src/app/store/to-day-event-storage.service';
|
||||
import { ExpedienteStorage } from 'src/app/store/expediente-storage-service.service';
|
||||
import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
|
||||
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-events',
|
||||
@@ -62,15 +63,16 @@ export class EventsPage implements OnInit {
|
||||
|
||||
// shared data
|
||||
toDayEventStorage = ToDayEventStorage
|
||||
expedienteStorage = ExpedienteStorage
|
||||
expedienteGdStore = ExpedienteGdStore
|
||||
|
||||
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||
|
||||
@Output() openExpedientListPage:EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
loggeduser: User;
|
||||
|
||||
existingScreenOrientation: string;
|
||||
pdfSrc = "https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf";
|
||||
|
||||
|
||||
constructor(
|
||||
private eventService: EventsService,
|
||||
private router: Router,
|
||||
@@ -330,21 +332,13 @@ export class EventsPage implements OnInit {
|
||||
}
|
||||
|
||||
LoadList() {
|
||||
switch (this.loggeduser.Profile) {
|
||||
case 'MDGPR':
|
||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
||||
console.log(result);
|
||||
this.expedienteStorage.reset(result)
|
||||
});
|
||||
break;
|
||||
case 'PR':
|
||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
||||
this.expedienteStorage.reset(result)
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||
console.log("Expediente", result);
|
||||
|
||||
const ExpedienteTask = result.map( e=> this.expedienteTaskPipe.transform(e))
|
||||
|
||||
this.expedienteGdStore.reset(ExpedienteTask)
|
||||
});
|
||||
}
|
||||
|
||||
sortArrayISODate(myArray: any){
|
||||
|
||||
@@ -26,14 +26,14 @@
|
||||
refreshingText="A actualizar...">
|
||||
</ion-refresher-content>
|
||||
</ion-refresher>
|
||||
|
||||
|
||||
<div >
|
||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||
<div class="height-100">
|
||||
<ion-list>
|
||||
<div
|
||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||
*ngFor = "let task of despachospagestore.list; let i = index"
|
||||
*ngFor = "let task of despachoStore.list; let i = index"
|
||||
(click)="GoToDespacho(task.SerialNumber)"
|
||||
>
|
||||
<!-- [routerLink]="['/home/gabinete-digital/expediente',task.SerialNumber]" -->
|
||||
@@ -68,13 +68,13 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
*ngIf="!skeletonLoader && despachospagestore.list.length == 0 && despachospagestore.list.length == 0"
|
||||
*ngIf="!skeletonLoader && despachoStore.list.length == 0"
|
||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||
>
|
||||
<span>Lista vazia</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="skeletonLoader && despachospagestore.list.length == 0">
|
||||
<div *ngIf="skeletonLoader && despachoStore.list.length == 0">
|
||||
|
||||
<ion-list>
|
||||
<ion-item>
|
||||
|
||||
@@ -6,7 +6,8 @@ import { ModalController } from '@ionic/angular';
|
||||
import { AlertService } from 'src/app/services/alert.service';
|
||||
import { AuthService } from 'src/app/services/auth.service';
|
||||
import { NavigationStart, Router } from '@angular/router';
|
||||
import { DespachoPageStore } from 'src/app/store/despachos-page-store.service';
|
||||
import { DespachoService } from 'src/app/Rules/despacho.service';
|
||||
import { DespachoStore } from 'src/app/store/despacho-store.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-despachos',
|
||||
@@ -36,8 +37,7 @@ export class DespachosPage implements OnInit {
|
||||
loadedAttachments:any;
|
||||
dicIndex = 0;
|
||||
inicial = false
|
||||
skeletonLoader = true
|
||||
despachospagestore = DespachoPageStore;
|
||||
despachoStore = DespachoStore;
|
||||
|
||||
constructor (
|
||||
private processes:ProcessesService,
|
||||
@@ -45,6 +45,7 @@ export class DespachosPage implements OnInit {
|
||||
private alertService: AlertService,
|
||||
private authService: AuthService,
|
||||
private router: Router,
|
||||
private despachoRule: DespachoService
|
||||
) {
|
||||
this.profile = 'mdgpr';
|
||||
}
|
||||
@@ -80,52 +81,17 @@ export class DespachosPage implements OnInit {
|
||||
this.LoadList();
|
||||
}
|
||||
|
||||
|
||||
openExpedientDetailPage(data) {
|
||||
this.openExpedientDetail.emit(data);
|
||||
}
|
||||
|
||||
async LoadList() {
|
||||
|
||||
this.skeletonLoader = true
|
||||
|
||||
let result = await this.processes.GetTasksList("Despacho", false).toPromise();
|
||||
//let despachos = result.reverse().filter(data => data.activityInstanceName == "Despacho (Paralelo)");
|
||||
this.despachoList = []
|
||||
|
||||
this.skeletonLoader = false
|
||||
|
||||
await result.filter(data => data.workflowInstanceDataFields.Status == "Active").forEach( (element, index) => {
|
||||
|
||||
let date = new Date(element.taskStartDate);
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
||||
|
||||
let task = {
|
||||
"SerialNumber": element.serialNumber,
|
||||
"Folio": element.workflowInstanceDataFields.Subject,
|
||||
"Senders": element.workflowInstanceDataFields.Sender,
|
||||
"CreateDate": taskDate,
|
||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
||||
"DocumentsQty": element.totalDocuments,
|
||||
"DocId": element.workflowInstanceDataFields.DispatchDocId,
|
||||
"WorkflowName": element.workflowDisplayName,
|
||||
"activityInstanceName": element.activityInstanceName,
|
||||
}
|
||||
this.despachoList.push(task)
|
||||
});
|
||||
this.despachoList = this.sortArrayISODate(this.despachoList).reverse()
|
||||
this.despachospagestore.reset(this.despachoList);
|
||||
|
||||
this.despachoList = await this.despachoRule.getList({updateStore: true})
|
||||
}
|
||||
|
||||
sortArrayISODate(myArray: any) {
|
||||
return myArray.sort(function(a, b) {
|
||||
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
|
||||
});
|
||||
get skeletonLoader(): boolean {
|
||||
return this.despachoRule.LoaderService.loading
|
||||
}
|
||||
|
||||
|
||||
|
||||
doRefresh(event) {
|
||||
this.LoadList();
|
||||
|
||||
|
||||
@@ -34,13 +34,13 @@
|
||||
<ion-list>
|
||||
<div
|
||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||
*ngFor = "let task of expedienteStorage.list"
|
||||
*ngFor = "let task of expedienteGdStore.list"
|
||||
(click)="goToExpediente(task.SerialNumber)"
|
||||
>
|
||||
<div class="item width-100">
|
||||
<div class="exp-top-detail">
|
||||
<div class="subject">
|
||||
<ion-label>{{ task.Folio }}</ion-label>
|
||||
<ion-label>{{ task.Subject }}</ion-label>
|
||||
</div>
|
||||
<div class="exp-icon">
|
||||
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
|
||||
@@ -65,13 +65,13 @@
|
||||
</ion-list>
|
||||
|
||||
<div
|
||||
*ngIf="!skeletonLoader && expedienteStorage.list.length == 0 && expedienteStorage.list.length == 0"
|
||||
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
|
||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||
>
|
||||
<span>Lista vazia</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="skeletonLoader && expedienteStorage.list.length == 0">
|
||||
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
|
||||
|
||||
<ion-list>
|
||||
<ion-item>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { NavigationStart, Router } from '@angular/router';
|
||||
import { DailyWorkTask } from '../../../models/dailyworktask.model';
|
||||
import { ProcessesService } from 'src/app/services/processes.service';
|
||||
import { ToastService } from 'src/app/services/toast.service';
|
||||
import { ExpedienteStorage } from 'src/app/store/expediente-storage-service.service';
|
||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||
|
||||
@Component({
|
||||
selector: 'app-expediente',
|
||||
@@ -17,17 +17,17 @@ export class ExpedientePage implements OnInit {
|
||||
//profile:string;
|
||||
showLoader:boolean;
|
||||
|
||||
taskslist:DailyWorkTask[] = [];
|
||||
taskslist = [];
|
||||
serialNumber:string;
|
||||
|
||||
expedienteStorage = ExpedienteStorage
|
||||
expedienteGdStore = ExpedienteGdStore
|
||||
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||
|
||||
constructor(
|
||||
private processes:ProcessesService,
|
||||
private router: Router,
|
||||
private toastService: ToastService
|
||||
) {
|
||||
}
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
|
||||
@@ -52,39 +52,25 @@ export class ExpedientePage implements OnInit {
|
||||
this.skeletonLoader = true
|
||||
|
||||
try {
|
||||
const expediente: object[] = await this.processes.GetTasksList("Expediente", false).toPromise()
|
||||
|
||||
const expediente: object[] = await this.processes.GetTaskListExpediente(false).toPromise()
|
||||
const result = expediente
|
||||
|
||||
this.taskslist = new Array();
|
||||
let res = result.reverse().filter((data: any) => data.workflowInstanceDataFields.Status == "Active");
|
||||
|
||||
res.forEach((element: any) => {
|
||||
let date = new Date(element.taskStartDate);
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
||||
let task: DailyWorkTask = {
|
||||
"SerialNumber": element.serialNumber,
|
||||
"Folio": element.workflowInstanceDataFields.Subject,
|
||||
"Senders": element.workflowInstanceDataFields.Sender,
|
||||
"CreateDate": taskDate,
|
||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
||||
"DocumentsQty": element.totalDocuments,
|
||||
"WorkflowName": element.workflowDisplayName,
|
||||
"activityInstanceName": element.activityInstanceName,
|
||||
"Status": element.workflowInstanceDataFields.Status,
|
||||
}
|
||||
|
||||
let task = this.expedienteTaskPipe.transform(element)
|
||||
this.taskslist.push(task);
|
||||
});
|
||||
|
||||
console.log(this.taskslist);
|
||||
this.expedienteStorage.reset(this.taskslist);
|
||||
this.skeletonLoader = false;
|
||||
this.expedienteGdStore.reset(this.taskslist);
|
||||
|
||||
} catch (error) {
|
||||
this.toastService.badRequest('Processo não encontrado')
|
||||
this.goBack()
|
||||
} finally {
|
||||
this.skeletonLoader = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<ion-list>
|
||||
<div
|
||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||
*ngFor = "let task of expedienteprstore.list"
|
||||
*ngFor = "let task of expedienteGdStore.list"
|
||||
(click)="goToExpediente(task.SerialNumber)"
|
||||
>
|
||||
<div class="item width-100">
|
||||
@@ -62,14 +62,14 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
*ngIf="!skeletonLoader && expedienteprstore.list.length == 0 && expedienteprstore.list.length == 0"
|
||||
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
|
||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||
>
|
||||
<span>Lista vazia</span>
|
||||
</div>
|
||||
|
||||
<!-- Skeleton loader -->
|
||||
<div *ngIf="skeletonLoader && expedienteprstore.list.length == 0">
|
||||
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
|
||||
|
||||
<ion-list>
|
||||
<ion-item>
|
||||
|
||||
@@ -8,8 +8,9 @@ import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/
|
||||
import { AlertService } from 'src/app/services/alert.service';
|
||||
import { User } from 'src/app/models/user.model';
|
||||
import { AuthService } from 'src/app/services/auth.service';
|
||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
||||
import { Location } from '@angular/common'
|
||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||
|
||||
@Component({
|
||||
selector: 'app-expedientes-pr',
|
||||
@@ -20,7 +21,7 @@ export class ExpedientesPrPage implements OnInit {
|
||||
|
||||
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
||||
|
||||
taskslist:DailyWorkTask[] = [];
|
||||
taskslist= [];
|
||||
serialNumber:string;
|
||||
showLoader:boolean;
|
||||
|
||||
@@ -28,7 +29,8 @@ export class ExpedientesPrPage implements OnInit {
|
||||
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
skeletonLoader = true
|
||||
expedienteprstore = ExpedienteprStore;
|
||||
expedienteGdStore = ExpedienteGdStore;
|
||||
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||
|
||||
constructor(
|
||||
private processes:ProcessesService,
|
||||
@@ -64,32 +66,18 @@ export class ExpedientesPrPage implements OnInit {
|
||||
LoadList() {
|
||||
this.skeletonLoader = true
|
||||
|
||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
||||
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||
console.log(result);
|
||||
this.skeletonLoader = false
|
||||
this.showLoader =false
|
||||
this.taskslist = new Array();
|
||||
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
||||
res.forEach(element => {
|
||||
let date = new Date(element.taskStartDate);
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
||||
let task: DailyWorkTask = {
|
||||
"SerialNumber": element.serialNumber,
|
||||
"Folio": element.workflowInstanceDataFields.Subject,
|
||||
"Senders": element.workflowInstanceDataFields.Sender,
|
||||
"CreateDate": taskDate,
|
||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
||||
"DocumentsQty": element.totalDocuments,
|
||||
"WorkflowName": element.workflowDisplayName,
|
||||
"activityInstanceName": element.activityInstanceName,
|
||||
"Status": element.workflowInstanceDataFields.Status,
|
||||
}
|
||||
this.taskslist.push(task);
|
||||
});
|
||||
let task = this.expedienteTaskPipe.transform(element)
|
||||
this.taskslist.push(task);
|
||||
});
|
||||
console.log(this.taskslist);
|
||||
this.expedienteprstore.reset(this.taskslist);
|
||||
this.expedienteGdStore.reset(this.taskslist);
|
||||
this.skeletonLoader = false
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { Component, DoCheck, OnInit, ViewChild } from '@angular/core';
|
||||
import { ProcessesService } from 'src/app/services/processes.service';
|
||||
import { AlertService } from 'src/app/services/alert.service';
|
||||
import { ModalController } from '@ionic/angular';
|
||||
import { ActivatedRoute, NavigationEnd, NavigationExtras, Router } from '@angular/router';
|
||||
import { AuthService } from 'src/app/services/auth.service';
|
||||
@@ -13,7 +12,6 @@ import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.servic
|
||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
import { PendentesStore } from 'src/app/store/pendestes-store.service';
|
||||
import { PedidosStore } from 'src/app/store/pedidos-store.service';
|
||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
||||
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
||||
import { PermissionService } from 'src/app/OtherService/permission.service';
|
||||
import { removeDuplicate } from 'src/plugin/removeDuplicate.js'
|
||||
@@ -21,6 +19,8 @@ import { WaitForDomService } from 'src/app/services/dom/wait-for-dom.service';
|
||||
import { TotalDocumentStore } from 'src/app/store/total-document.service';
|
||||
import { DeplomasStore } from 'src/app/store/deplomas.service';
|
||||
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
||||
import { NotificationsService } from 'src/app/services/notifications.service';
|
||||
import { DespachoService } from 'src/app/Rules/despacho.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-gabinete-digital',
|
||||
@@ -116,7 +116,9 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
|
||||
private router: Router,
|
||||
authService: AuthService,
|
||||
public p: PermissionService,
|
||||
public waitForDomService: WaitForDomService
|
||||
public waitForDomService: WaitForDomService,
|
||||
private notificationsService: NotificationsService,
|
||||
private despachoRule: DespachoService
|
||||
) {
|
||||
|
||||
this.loggeduser = authService.ValidatedUser;
|
||||
@@ -450,19 +452,15 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
|
||||
this.showLoader = true;
|
||||
|
||||
let allPreocesses_ = await this.processesbackend.GetTasksList("", false).toPromise();
|
||||
this.count_all_processes = Object.keys(allPreocesses_).length;
|
||||
let count_all_processes = Object.keys(allPreocesses_).length;
|
||||
this.totalDocumentStore.resetCount(count_all_processes)
|
||||
|
||||
let expedientes = await this.processesbackend.GetTasksList("Expediente", false).toPromise();
|
||||
let expedientes = await this.processesbackend.GetTaskListExpediente(false).toPromise();
|
||||
expedientes = expedientes.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
this.count_exp_dailywork = Object.keys(expedientes).length;
|
||||
this.expedientegbstore.count = this.count_exp_dailywork;
|
||||
this.expedientegbstore.reset(expedientes)
|
||||
|
||||
|
||||
let despachos = await this.processesbackend.GetTasksList("Despacho", false).toPromise();
|
||||
despachos = despachos.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
this.count_desp_dailywork = Object.keys(despachos).length;
|
||||
this.despachoStore.count = this.count_desp_dailywork
|
||||
let despachos = await this.despachoRule.getList({updateStore: true})
|
||||
this.despachoStore.reset(despachos)
|
||||
|
||||
let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise();
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { ExpedienteTaskPipe } from './expediente-task.pipe';
|
||||
|
||||
describe('ExpedienteTaskPipe', () => {
|
||||
it('create an instance', () => {
|
||||
const pipe = new ExpedienteTaskPipe();
|
||||
expect(pipe).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
import { ExpedienteTask } from '../models/dailyworktask.model';
|
||||
import { ExpedienteFullTask } from '../models/Expediente';
|
||||
|
||||
@Pipe({
|
||||
name: 'expedienteTask'
|
||||
})
|
||||
export class ExpedienteTaskPipe implements PipeTransform {
|
||||
|
||||
transform(fullTask: ExpedienteFullTask): ExpedienteTask {
|
||||
let date = new Date(fullTask.taskStartDate);
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
||||
|
||||
return {
|
||||
"SerialNumber": fullTask.serialNumber,
|
||||
"taskStartDate": fullTask.taskStartDate,
|
||||
"Subject": fullTask.workflowInstanceDataFields.Subject,
|
||||
"Senders": fullTask.workflowInstanceDataFields.Sender,
|
||||
"CreateDate": taskDate,
|
||||
"DocumentsQty": fullTask.totalDocuments,
|
||||
"WorkflowName": fullTask.workflowDisplayName,
|
||||
"activityInstanceName": fullTask.activityInstanceName,
|
||||
"Status": fullTask.workflowInstanceDataFields.Status,
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,10 +4,11 @@ import { SearchDocumentPipe } from './search-document.pipe';
|
||||
import { CustomTaskPipe } from './custom-task.pipe';
|
||||
import { EventPipe } from './event.pipe';
|
||||
import { PublicationPipe } from './publication.pipe';
|
||||
import { ExpedienteTaskPipe } from './expediente-task.pipe';
|
||||
|
||||
|
||||
@NgModule({
|
||||
declarations: [FilterPipe, SearchDocumentPipe, CustomTaskPipe, EventPipe, PublicationPipe],
|
||||
declarations: [FilterPipe, SearchDocumentPipe, CustomTaskPipe, EventPipe, PublicationPipe, ExpedienteTaskPipe],
|
||||
exports: [FilterPipe],
|
||||
imports: []
|
||||
})
|
||||
|
||||
@@ -150,7 +150,6 @@ export class EventsService {
|
||||
|
||||
getAllMdOficialEvents(startdate:string, enddate:string): any{
|
||||
let geturl = environment.apiURL + 'calendar/md';
|
||||
geturl = geturl.replace('/V4/','/V5/')
|
||||
|
||||
let params = new HttpParams();
|
||||
|
||||
@@ -166,7 +165,6 @@ export class EventsService {
|
||||
|
||||
getAllMdPessoalEvents(startdate:string, enddate:string): any{
|
||||
let geturl = environment.apiURL + 'calendar/md';
|
||||
geturl = geturl.replace('/V4/','/V5/')
|
||||
|
||||
let params = new HttpParams();
|
||||
|
||||
|
||||
@@ -41,12 +41,6 @@ export class NotificationsService {
|
||||
private activeroute: ActivatedRoute,
|
||||
private jsonstore: JsonStore) {
|
||||
|
||||
this.callbacks.forEach(e=> {
|
||||
if(e.type = 'Create Depacho') {
|
||||
e.funx()
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -222,9 +216,9 @@ export class NotificationsService {
|
||||
|
||||
console.log(message);
|
||||
var data = JSON.parse(message.payload);
|
||||
console.log(data.Service);
|
||||
console.log(data.IdObject);
|
||||
console.log(data.Object);
|
||||
console.log('data.Service', data.Service); // module
|
||||
console.log('data.IdObject', data.IdObject); // Object id
|
||||
console.log('data.Object', data.Object); // details
|
||||
|
||||
if(message.actionName){
|
||||
this.notificatinsRoutes(data);
|
||||
@@ -233,7 +227,13 @@ export class NotificationsService {
|
||||
//this.notificatinsRoutes(data);
|
||||
console.log(data)
|
||||
}
|
||||
|
||||
|
||||
this.callbacks.forEach( e=> {
|
||||
if(e.type == data.Object) {
|
||||
e.funx()
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}, (error) => {
|
||||
console.log('Push notification recived: failure ' + error.responseText);
|
||||
|
||||
@@ -6,6 +6,7 @@ import { environment } from 'src/environments/environment';
|
||||
import { Observable } from 'rxjs';
|
||||
import { DocumentSetUpMeeting } from '../models/CallMeeting';
|
||||
import { Excludetask } from '../models/Excludetask';
|
||||
import { ExpedienteFullTask } from '../models/Expediente';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -38,6 +39,24 @@ export class ProcessesService {
|
||||
return this.http.get<any>(`${geturl}`, options);
|
||||
}
|
||||
|
||||
GetTaskListExpediente(onlycount1): Observable<ExpedienteFullTask[]> {
|
||||
const processname = "Expediente"
|
||||
const onlycount = false
|
||||
|
||||
const geturl = environment.apiURL + 'tasks/List';
|
||||
let params = new HttpParams();
|
||||
|
||||
params = params.set("ProcessName", processname);
|
||||
params = params.set("OnlyCount", onlycount.toString());
|
||||
|
||||
let options = {
|
||||
headers: this.headers,
|
||||
params: params
|
||||
};
|
||||
|
||||
return this.http.get<ExpedienteFullTask[]>(`${geturl}`, options);
|
||||
}
|
||||
|
||||
GetTask(serialnumber:string): Observable<any>{
|
||||
const geturl = environment.apiURL + 'Tasks/FindTask';
|
||||
let params = new HttpParams();
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { customTask, DailyWorkTask, fullTask } from '../../../models/dailyworktask.model';
|
||||
import { Component, EventEmitter, OnInit, Output } from '@angular/core';
|
||||
import { customTask } from '../../../models/dailyworktask.model';
|
||||
import { ProcessesService } from 'src/app/services/processes.service';
|
||||
import { NavigationStart, Router } from '@angular/router';
|
||||
import { DespachoStore } from 'src/app/store/despacho-store.service';
|
||||
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
||||
|
||||
import { NotificationsService } from 'src/app/services/notifications.service';
|
||||
import { DespachoService } from 'src/app/Rules/despacho.service'
|
||||
@Component({
|
||||
selector: 'app-despachos',
|
||||
templateUrl: './despachos.page.html',
|
||||
@@ -15,13 +16,14 @@ export class DespachosPage implements OnInit {
|
||||
segment:string;
|
||||
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
skeletonLoader = true
|
||||
despachoStore = DespachoStore;
|
||||
customTaskPipe = new CustomTaskPipe()
|
||||
|
||||
constructor (
|
||||
private processes:ProcessesService,
|
||||
private router: Router,
|
||||
private notificationsService: NotificationsService,
|
||||
private despachoRule: DespachoService
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -45,32 +47,16 @@ export class DespachosPage implements OnInit {
|
||||
|
||||
async LoadList() {
|
||||
|
||||
this.skeletonLoader = true
|
||||
|
||||
let result: fullTask[] = await this.processes.GetTasksList("Despacho", false).toPromise();
|
||||
result = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
|
||||
let despachoList = new Array();
|
||||
|
||||
result.forEach((element, index) => {
|
||||
|
||||
let task = this.customTaskPipe.transform(element);
|
||||
despachoList.push(task);
|
||||
|
||||
});
|
||||
|
||||
despachoList = this.sortArrayISODate(despachoList).reverse();
|
||||
this.despachoStore.reset(despachoList);
|
||||
this.skeletonLoader = false
|
||||
|
||||
await this.despachoRule.getList({updateStore: true})
|
||||
|
||||
}
|
||||
|
||||
sortArrayISODate(myArray: any) {
|
||||
return myArray.sort(function(a, b) {
|
||||
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
|
||||
});
|
||||
|
||||
get skeletonLoader(): boolean {
|
||||
return this.despachoRule.LoaderService.loading
|
||||
}
|
||||
|
||||
|
||||
doRefresh() {
|
||||
setTimeout(() => {
|
||||
this.LoadList();
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
<div class="width-100 overflow-y-auto height-100" >
|
||||
|
||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||
<ion-list *ngIf="expedienteprstore.list.length >= 1">
|
||||
<ion-list *ngIf="expedienteGdStore.list.length >= 1">
|
||||
<div
|
||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||
*ngFor = "let task of expedienteprstore.list"
|
||||
*ngFor = "let task of expedienteGdStore.list"
|
||||
(click)="goToExpediente(task.SerialNumber)"
|
||||
>
|
||||
<div class="item width-100">
|
||||
@@ -48,13 +48,13 @@
|
||||
|
||||
|
||||
<div
|
||||
*ngIf="!skeletonLoader && expedienteprstore.list.length == 0 && expedienteprstore.list.length == 0"
|
||||
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
|
||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||
>
|
||||
<span>Lista vazia</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="skeletonLoader && expedienteprstore.list.length == 0">
|
||||
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
|
||||
|
||||
<ion-list>
|
||||
<ion-item>
|
||||
|
||||
@@ -6,8 +6,9 @@ import { ModalController } from '@ionic/angular';
|
||||
import { AlertService } from 'src/app/services/alert.service';
|
||||
import { User } from 'src/app/models/user.model';
|
||||
import { AuthService } from 'src/app/services/auth.service';
|
||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
||||
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||
|
||||
@Component({
|
||||
selector: 'app-expedientes-pr',
|
||||
@@ -16,11 +17,12 @@ import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
||||
})
|
||||
export class ExpedientesPrPage implements OnInit {
|
||||
|
||||
taskslist:DailyWorkTask[] = [];
|
||||
taskslist = [];
|
||||
serialNumber:string;
|
||||
skeletonLoader = true;
|
||||
expedienteprstore = ExpedienteprStore;
|
||||
expedienteGdStore = ExpedienteGdStore;
|
||||
customTaskPipe = new CustomTaskPipe()
|
||||
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||
|
||||
loggeduser: User;
|
||||
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
||||
@@ -62,15 +64,15 @@ export class ExpedientesPrPage implements OnInit {
|
||||
|
||||
LoadList() {
|
||||
this.skeletonLoader = true;
|
||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
||||
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||
|
||||
this.taskslist = [];
|
||||
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
||||
res.forEach(element => {
|
||||
let task: customTask = this.customTaskPipe.transform(element);
|
||||
let task = this.expedienteTaskPipe.transform(element);
|
||||
this.taskslist.push(task);
|
||||
});
|
||||
this.expedienteprstore.reset(this.taskslist);
|
||||
this.expedienteGdStore.reset(this.taskslist);
|
||||
this.skeletonLoader = false;
|
||||
|
||||
});
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<div class="item width-100">
|
||||
<div class="exp-top-detail">
|
||||
<div class="subject">
|
||||
<ion-label>{{ task.Folio }}</ion-label>
|
||||
<ion-label>{{ task.Subject }}</ion-label>
|
||||
</div>
|
||||
<div class="exp-icon">
|
||||
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
||||
import { ActivatedRoute, NavigationEnd, NavigationExtras, NavigationStart, Router } from '@angular/router';
|
||||
import { CalendarComponent } from 'ionic2-calendar';
|
||||
|
||||
import { DailyWorkTask } from '../../../models/dailyworktask.model';
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { NavigationStart, Router } from '@angular/router';
|
||||
import { ProcessesService } from 'src/app/services/processes.service';
|
||||
import { formatDate } from '@angular/common';
|
||||
import { LoadingService } from 'src/app/services/loading.service';
|
||||
import { ModalController, NavParams } from '@ionic/angular';
|
||||
import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
|
||||
import { AlertService } from 'src/app/services/alert.service';
|
||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||
|
||||
@Component({
|
||||
selector: 'app-expedients',
|
||||
@@ -18,23 +12,20 @@ import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||
})
|
||||
export class ExpedientsPage implements OnInit {
|
||||
segment:string;
|
||||
//profile:string;
|
||||
|
||||
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
||||
|
||||
taskslist:DailyWorkTask[] = [];
|
||||
taskslist = [];
|
||||
serialNumber:string;
|
||||
|
||||
@Input() profile:string;
|
||||
skeletonLoader = true
|
||||
expedientegbstore = ExpedienteGdStore
|
||||
|
||||
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||
|
||||
constructor(
|
||||
private processes:ProcessesService,
|
||||
private modalController: ModalController,
|
||||
private alertService: AlertService,
|
||||
private router: Router,
|
||||
private activatedRoute: ActivatedRoute,
|
||||
) {
|
||||
this.profile = 'mdgpr';
|
||||
|
||||
@@ -58,11 +49,11 @@ export class ExpedientsPage implements OnInit {
|
||||
|
||||
}
|
||||
|
||||
segmentChanged(){
|
||||
segmentChanged() {
|
||||
this.LoadList();
|
||||
}
|
||||
|
||||
notImplemented(){
|
||||
notImplemented() {
|
||||
this.alertService.presentAlert('Funcionalidade em desenvolvimento');
|
||||
}
|
||||
|
||||
@@ -70,31 +61,17 @@ export class ExpedientsPage implements OnInit {
|
||||
|
||||
this.skeletonLoader = true
|
||||
|
||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
||||
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||
this.taskslist = [];
|
||||
this.skeletonLoader = false
|
||||
|
||||
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
||||
res.forEach(element => {
|
||||
let date = new Date(element.taskStartDate);
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
||||
let task: DailyWorkTask = {
|
||||
"SerialNumber": element.serialNumber,
|
||||
"Folio": element.workflowInstanceDataFields.Subject,
|
||||
"Senders": element.workflowInstanceDataFields.Sender,
|
||||
"CreateDate": taskDate,
|
||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
||||
"DocumentsQty": element.totalDocuments,
|
||||
"WorkflowName": element.workflowDisplayName,
|
||||
"activityInstanceName": element.activityInstanceName,
|
||||
"Status": element.workflowInstanceDataFields.Status,
|
||||
}
|
||||
let task = this.expedienteTaskPipe.transform(element)
|
||||
this.taskslist.push(task);
|
||||
|
||||
});
|
||||
console.log("Buffer store", this.taskslist)
|
||||
|
||||
this.expedientegbstore.reset(this.taskslist);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ export class PedidosPage implements OnInit {
|
||||
|
||||
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
||||
|
||||
taskslist:DailyWorkTask[] = [];
|
||||
parecerList:any[] = [];
|
||||
fulltask:any;
|
||||
|
||||
@@ -100,7 +99,6 @@ export class PedidosPage implements OnInit {
|
||||
this.taskType = "Pedido de Deferimento";
|
||||
this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(result => {
|
||||
|
||||
this.taskslist = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||
this.skeletonLoader = false
|
||||
|
||||
this.deferimentoList = new Array();
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { DespachosPageStoreService } from './despachos-page-store.service';
|
||||
|
||||
describe('DespachosPageStoreService', () => {
|
||||
let service: DespachosPageStoreService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(DespachosPageStoreService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -1,60 +0,0 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { localstoreService } from './localstore.service'
|
||||
import { AES, enc, SHA1 } from 'crypto-js'
|
||||
import { customTask } from '../models/dailyworktask.model';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class DespachosPageStoreService {
|
||||
|
||||
// main data
|
||||
private _list: [] = []
|
||||
// local storage keyName
|
||||
private keyName: string;
|
||||
private _count = 0
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
this._list = restore.list || []
|
||||
this._count = parseInt(restore.count) || 0
|
||||
}, 10)
|
||||
|
||||
}
|
||||
|
||||
get list(): customTask[] {
|
||||
return this._list || []
|
||||
}
|
||||
|
||||
get count() {
|
||||
return this._count
|
||||
}
|
||||
set count(value) {
|
||||
this._count = value
|
||||
this.save()
|
||||
}
|
||||
|
||||
reset(eventsList: any) {
|
||||
this._list = eventsList
|
||||
|
||||
this.count = this._list.length
|
||||
this.save()
|
||||
}
|
||||
|
||||
private save() {
|
||||
setTimeout(()=> {
|
||||
localstoreService.set(this.keyName,{
|
||||
list: this._list,
|
||||
count: this._count
|
||||
})
|
||||
}, 10)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const DespachoPageStore = new DespachosPageStoreService()
|
||||
@@ -1,16 +0,0 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ExpedienteStorageServiceService } from './expediente-storage-service.service';
|
||||
|
||||
describe('ExpedienteStorageServiceService', () => {
|
||||
let service: ExpedienteStorageServiceService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(ExpedienteStorageServiceService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -1,62 +0,0 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Event } from '../models/event.model';
|
||||
import { localstoreService } from './localstore.service'
|
||||
import { AES, enc, SHA1 } from 'crypto-js'
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
|
||||
// shared data used in home and gabinete
|
||||
class ExpedienteStorageServiceService {
|
||||
|
||||
// main data
|
||||
private _list: Event[] = []
|
||||
private _count = 0
|
||||
// local storage keyName
|
||||
private keyName: string;
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name+ 'ExpedienteStorage/forAll')).toString()
|
||||
|
||||
setTimeout(()=>{
|
||||
let restore = localstoreService.get(this.keyName, [])
|
||||
this._list = restore.list || []
|
||||
this._count = restore.count || 0
|
||||
}, 10)
|
||||
|
||||
}
|
||||
|
||||
get list() {
|
||||
return this._list
|
||||
}
|
||||
|
||||
get count() {
|
||||
return this._count
|
||||
}
|
||||
set count(value: number) {
|
||||
this._count = value
|
||||
this.save()
|
||||
}
|
||||
|
||||
reset(list: any) {
|
||||
this._list = list
|
||||
|
||||
this.count = this._list.length
|
||||
this.save()
|
||||
}
|
||||
|
||||
private save() {
|
||||
setTimeout(()=>{
|
||||
localstoreService.set(this.keyName, {
|
||||
list: this._list,
|
||||
count: this._count
|
||||
})
|
||||
}, 10)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
export const ExpedienteStorage = new ExpedienteStorageServiceService()
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { localstoreService } from './localstore.service'
|
||||
import { AES, enc, SHA1 } from 'crypto-js'
|
||||
import { ExpedienteTask } from '../models/dailyworktask.model';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -8,7 +9,7 @@ import { AES, enc, SHA1 } from 'crypto-js'
|
||||
export class ExpedientegdStoreService {
|
||||
|
||||
// main data
|
||||
private _list = []
|
||||
private _list: ExpedienteTask[] = []
|
||||
// local storage keyName
|
||||
private keyName: string;
|
||||
private _count = 0
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ExpedienteprStoreService } from './expedientepr-store.service';
|
||||
|
||||
describe('ExpedienteprStoreService', () => {
|
||||
let service: ExpedienteprStoreService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(ExpedienteprStoreService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -1,54 +0,0 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { localstoreService } from './localstore.service'
|
||||
import { AES, enc, SHA1 } from 'crypto-js'
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class ExpedienteprStoreService {
|
||||
// main data
|
||||
private _list: [] = []
|
||||
// local storage keyName
|
||||
private keyName: string;
|
||||
private _count = 0
|
||||
|
||||
constructor() {
|
||||
|
||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
||||
|
||||
setTimeout(()=>{
|
||||
let restore = localstoreService.get(this.keyName, {})
|
||||
this._list = restore.list || []
|
||||
this._count = parseInt(restore.count) || 0
|
||||
}, 10)
|
||||
|
||||
}
|
||||
|
||||
get list() { return this._list || [] }
|
||||
|
||||
get count() { return this._count || 0 }
|
||||
set count(value: number) {
|
||||
this._count = value
|
||||
this.save()
|
||||
}
|
||||
|
||||
reset(eventsList: any) {
|
||||
this._list = eventsList
|
||||
|
||||
this.count = this._list.length
|
||||
this.save()
|
||||
}
|
||||
|
||||
private save() {
|
||||
setTimeout(()=>{
|
||||
localstoreService.set(this.keyName,{
|
||||
list: this._list,
|
||||
count: this._count
|
||||
})
|
||||
}, 10)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const ExpedienteprStore = new ExpedienteprStoreService()
|
||||
@@ -0,0 +1,16 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { LoaderService } from './loader.service';
|
||||
|
||||
describe('LoaderService', () => {
|
||||
let service: LoaderService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(LoaderService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class LoaderService {
|
||||
|
||||
private loadingList: {
|
||||
name: string
|
||||
}[] = []
|
||||
|
||||
constructor() { }
|
||||
|
||||
get loading(){
|
||||
return this.loadingList.length != 0
|
||||
}
|
||||
|
||||
push({name = ''}) {
|
||||
this.loadingList.push({
|
||||
name: name
|
||||
})
|
||||
}
|
||||
|
||||
pop({}) {
|
||||
this.loadingList.pop()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user