2023-04-12 09:01:03 +01:00
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
|
import { momentG } from 'src/plugin/momentG';
|
|
|
|
|
|
2023-04-17 14:11:30 +01:00
|
|
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
|
|
|
|
import { DeplomasStore } from 'src/app/store/deplomas.service';
|
|
|
|
|
import { PendentesStore } from 'src/app/store/pendestes-store.service';
|
|
|
|
|
import { DespachoStore } from 'src/app/store/despacho-store.service';
|
|
|
|
|
import { TotalDocumentStore } from 'src/app/store/total-document.service';
|
|
|
|
|
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
|
|
|
|
import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.service';
|
|
|
|
|
import { PedidosStore } from 'src/app/store/pedidos-store.service';
|
2023-04-12 09:01:03 +01:00
|
|
|
|
|
|
|
|
@Injectable({
|
|
|
|
|
providedIn: 'root'
|
|
|
|
|
})
|
|
|
|
|
export class TaskService {
|
|
|
|
|
|
2023-04-17 14:11:30 +01:00
|
|
|
|
|
|
|
|
read = 0
|
|
|
|
|
unread = 0
|
|
|
|
|
deadline = 0
|
|
|
|
|
new = 0
|
|
|
|
|
overdueTasks = 0
|
|
|
|
|
|
|
|
|
|
expedientegbstore = ExpedienteGdStore;
|
|
|
|
|
pendentesstore = PendentesStore;
|
|
|
|
|
despachoStore = DespachoStore;
|
|
|
|
|
eventoaprovacaostore = EventoAprovacaoStore;
|
|
|
|
|
pedidosstore = PedidosStore;
|
|
|
|
|
despachoprstore = DespachosprStore;
|
|
|
|
|
totalDocumentStore = TotalDocumentStore
|
|
|
|
|
deplomasStore = DeplomasStore
|
|
|
|
|
|
|
|
|
|
AllProcess = []
|
|
|
|
|
|
2023-04-12 09:01:03 +01:00
|
|
|
constructor() { }
|
|
|
|
|
|
|
|
|
|
deadlineIsToday(isoDateString:string) {
|
2023-04-13 12:51:38 +01:00
|
|
|
|
|
|
|
|
if(!isoDateString) {
|
|
|
|
|
return false
|
|
|
|
|
}
|
2023-04-12 09:01:03 +01:00
|
|
|
return momentG(new Date(), 'dd MMMM yyyy') == momentG(new Date(isoDateString), 'dd MMMM yyyy')
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-17 14:11:30 +01:00
|
|
|
overdueTask(isoDateString:string) {
|
|
|
|
|
return (new Date()).getTime() < (new Date(isoDateString)).getTime()
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-12 09:01:03 +01:00
|
|
|
lessThen24Hours(isoDateString:string) {
|
2023-04-13 12:51:38 +01:00
|
|
|
|
|
|
|
|
if(!isoDateString) {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-12 09:01:03 +01:00
|
|
|
const creationDate = new Date(isoDateString)
|
|
|
|
|
const creationDatePlus24h = new Date(creationDate)
|
|
|
|
|
creationDatePlus24h.setHours((creationDate.getHours() + 24))
|
|
|
|
|
const currentDate = new Date()
|
|
|
|
|
|
|
|
|
|
return creationDatePlus24h.getTime() > currentDate.getTime()
|
|
|
|
|
}
|
2023-04-12 14:39:26 +01:00
|
|
|
|
|
|
|
|
filter(item, attribute) {
|
|
|
|
|
if(attribute == 'Para hoje') {
|
2023-04-13 16:15:46 +01:00
|
|
|
return this.deadlineIsToday(item.TaskStartDate || item.taskStartDate)
|
2023-04-12 14:39:26 +01:00
|
|
|
} else if (attribute == 'Novos') {
|
2023-04-13 16:15:46 +01:00
|
|
|
return this.lessThen24Hours(item.TaskStartDate || item.taskStartDate)
|
2023-04-12 14:39:26 +01:00
|
|
|
} else if (attribute == 'Lidos') {
|
2023-04-13 16:15:46 +01:00
|
|
|
return item.TaskStatus == 'Open' || item.taskStatus == 'Open'
|
2023-04-12 14:39:26 +01:00
|
|
|
} else if (attribute == 'Não lidos') {
|
2023-04-14 22:53:29 +01:00
|
|
|
return !(item.TaskStatus == 'Open' || item.taskStatus == 'Open')
|
2023-04-17 14:11:30 +01:00
|
|
|
} else if (attribute == 'OverdueTasks') {
|
|
|
|
|
return this.overdueTask(item.Deadline || item.deadline)
|
2023-04-12 14:39:26 +01:00
|
|
|
}
|
|
|
|
|
return true
|
|
|
|
|
}
|
2023-04-13 16:15:46 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
seen(item) {
|
|
|
|
|
return item.TaskStatus == 'Open' || item.taskStatus == 'Open'
|
|
|
|
|
}
|
2023-04-17 14:11:30 +01:00
|
|
|
|
|
|
|
|
updateAllProcess = () => {
|
|
|
|
|
this.AllProcess = this.sortArrayISODate(this.despachoprstore.list.concat(this.deplomasStore.diplomasAssinadoList as any).concat(this.deplomasStore.diplomasParaAssinarList as any).concat(this.deplomasStore.DiplomaGerarList as any)
|
|
|
|
|
.concat(this.eventoaprovacaostore.contactList as any).concat(this.expedientegbstore.list as any).concat(this.despachoStore.list as any).concat(this.pedidosstore.listparecer as any).concat(this.pedidosstore.listdeferimento as any)
|
|
|
|
|
.concat(this.pendentesstore.list as any)).reverse()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sortArrayISODate(myArray: any): any[] {
|
|
|
|
|
// return myArray.sort(function (a, b) {
|
|
|
|
|
// return (a.CreateDate || a.taskStartDate < b.CreateDate || b.taskStartDate) ? -1 : ((a.CreateDate || a.taskStartDate > b.CreateDate || b.taskStartDate) ? 1 : 0);
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
return myArray.sort((a,b) => Date.parse(b.CreateDate || b.taskStartDate || b.TaskStartDate) - Date.parse(a.CreateDate || a.taskStartDate || a.TaskStartDate))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
updateCount() {
|
|
|
|
|
this.updateAllProcess()
|
|
|
|
|
this.read = this.AllProcess.filter((item) => this.filter(item,'Lidos')).length
|
|
|
|
|
this.unread = this.AllProcess.filter((item) => this.filter(item,'Não lidos')).length
|
|
|
|
|
this.deadline = this.AllProcess.filter((task) => this.deadlineIsToday(task.Deadline || task.deadline)).length
|
|
|
|
|
this.new = this.AllProcess.filter((task) => this.lessThen24Hours(task.TaskStartDate || task.taskStartDate)).length
|
|
|
|
|
this.overdueTasks = this.AllProcess.filter((task) => this.overdueTask(task.Deadline || task.deadline)).length
|
|
|
|
|
}
|
2023-04-12 09:01:03 +01:00
|
|
|
}
|