mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-20 05:16:07 +00:00
add either pattern
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Component, OnInit, ViewChild, Inject, LOCALE_ID } from '@angular/core';
|
||||
import { Component, OnInit, ViewChild, Inject, LOCALE_ID, OnDestroy } from '@angular/core';
|
||||
import { CalendarComponent } from 'ionic2-calendar';
|
||||
import { ModalController } from '@ionic/angular';
|
||||
import { EventsService } from 'src/app/services/events.service';
|
||||
@@ -35,15 +35,17 @@ import { environment } from 'src/environments/environment';
|
||||
import { RoleIdService } from 'src/app/services/role-id.service'
|
||||
import { EventListStore } from 'src/app/models/agenda/AgendaEventList';
|
||||
import { Cy } from 'cypress/enum'
|
||||
import { Observable } from 'rxjs';
|
||||
import { Observable, Subject, Subscription } from 'rxjs';
|
||||
import { TableSharedCalendar } from 'src/app/services/Repositorys/Agenda/agenda-local-data-source.service';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { map, throttleTime } from 'rxjs/operators';
|
||||
import { EEventFilterStatus } from 'src/app/services/Repositorys/Agenda/model/enums';
|
||||
import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer';
|
||||
import { isHttpError } from 'src/app/services/http.service';
|
||||
import { ToastService } from 'src/app/services/toast.service';
|
||||
import { CalendarState, selectEventSource } from 'src/app/services/Repositorys/Agenda/agenda-memory-source.service';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { NotificationRepositoryService } from 'src/app/module/notification/data/notification-repository.service';
|
||||
import { Unsubscribable } from '../../../../android/app/build/intermediates/assets/debug/public/assets/dexie/dist/dexie';
|
||||
@Component({
|
||||
selector: 'app-agenda',
|
||||
templateUrl: './agenda.page.html',
|
||||
@@ -188,6 +190,9 @@ export class AgendaPage implements OnInit {
|
||||
hasChangeCalendar = false
|
||||
|
||||
eventSource$ = this.store.select(selectEventSource);
|
||||
private NotificationUpdate = new Subject<void>();
|
||||
|
||||
listenToEventNotificationSubscription!: Subscription;
|
||||
|
||||
constructor(
|
||||
@Inject(LOCALE_ID) private locale: string,
|
||||
@@ -203,9 +208,20 @@ export class AgendaPage implements OnInit {
|
||||
public RoleIdService: RoleIdService,
|
||||
public AgendaDataRepositoryService: AgendaDataRepositoryService,
|
||||
private toastService: ToastService,
|
||||
private store: Store<CalendarState>
|
||||
private store: Store<CalendarState>,
|
||||
private notificationRepository: NotificationRepositoryService
|
||||
) {
|
||||
|
||||
this.NotificationUpdate.pipe(
|
||||
throttleTime(1000) // Prevents the function from being called more than once per second
|
||||
).subscribe(() => {
|
||||
this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate);
|
||||
});
|
||||
|
||||
this.listenToEventNotificationSubscription = this.notificationRepository.listenToEventNotification().subscribe(() => {
|
||||
this.NotificationUpdate.next()
|
||||
})
|
||||
|
||||
this.selectedUserCalendar = SessionStore.user.UserId
|
||||
this.AgendaDataRepositoryService.getSharedCalendar().then(async ()=> {
|
||||
this.setCalendarByDefault(true)
|
||||
@@ -291,6 +307,9 @@ export class AgendaPage implements OnInit {
|
||||
this.weekToShow()
|
||||
}
|
||||
|
||||
OnDestroy() {
|
||||
this.listenToEventNotificationSubscription?.unsubscribe()
|
||||
}
|
||||
|
||||
hasPrCalendar(data: TableSharedCalendar[]) {
|
||||
for(const e of data) {
|
||||
|
||||
@@ -456,15 +456,18 @@ export class EditEventPage implements OnInit {
|
||||
const calendar = await this.agendaDataRepository.getCalendarByUserId(this.selectedUserCalendar)
|
||||
|
||||
if(calendar.isOk()) {
|
||||
this.agendaDataRepository.updateEvent(this.postEvent.EventId, this.postEvent, this.editAllEvent, calendar.value, tracing).subscribe((value) => {
|
||||
console.log(value)
|
||||
this.close();
|
||||
this.httpErrorHandle.httpsSucessMessagge('Editar evento')
|
||||
tracing.setAttribute('outcome', 'success')
|
||||
}, ((error) => {
|
||||
tracing.setAttribute('outcome', 'failed')
|
||||
console.log('edit event error: ', error)
|
||||
}));
|
||||
const value = await this.agendaDataRepository.updateEvent(this.postEvent.EventId, this.postEvent, this.editAllEvent, calendar.value, tracing)//.subscribe((value) => {
|
||||
|
||||
if(value.isOk()) {
|
||||
console.log(value.value)
|
||||
this.close();
|
||||
this.httpErrorHandle.httpsSucessMessagge('Editar evento')
|
||||
tracing.setAttribute('outcome', 'success')
|
||||
} else {
|
||||
|
||||
tracing.setAttribute('outcome', 'failed')
|
||||
console.log('edit event error: ', value.error)
|
||||
}
|
||||
|
||||
console.log({serverCurrentList: this.serverCurrentList, Attendees: this.postEvent.Attendees})
|
||||
|
||||
@@ -472,7 +475,7 @@ export class EditEventPage implements OnInit {
|
||||
|
||||
console.log({insert, remove })
|
||||
if(insert.length >= 1) {
|
||||
this.agendaDataRepository.addEventAttendee(this.postEvent.EventId, insert).subscribe((value) => {
|
||||
this.agendaDataRepository.addEventAttendee(this.postEvent.EventId, insert, tracing).subscribe((value) => {
|
||||
console.log(value)
|
||||
}, ((error) => {
|
||||
tracing.setAttribute('failed.attendees', 'true')
|
||||
|
||||
@@ -62,24 +62,19 @@ export class EventActionsPopoverPage implements OnInit {
|
||||
|
||||
const loader = this.toastService.loading()
|
||||
|
||||
try {
|
||||
/* await this.processes.PostTaskAction(body).toPromise() */
|
||||
this.agendaDataRepository.approveEvent(this.serialNumber).subscribe((value) => {
|
||||
console.log(value)
|
||||
const value = await this.agendaDataRepository.approveEvent(this.serialNumber)// .subscribe((value) => {
|
||||
if(value.isOk()) {
|
||||
|
||||
console.log(value.value)
|
||||
this.TaskService.loadEventosParaAprovacao()
|
||||
this.httpErrorHandle.httpsSucessMessagge('Evento aprovação')
|
||||
this.goBack();
|
||||
}, ((error) => {
|
||||
console.log('aprove event error: ', error)
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}))
|
||||
} else {
|
||||
|
||||
} catch (error) {
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}
|
||||
finally {
|
||||
console.log('aprove event error: ', value.error)
|
||||
this.httpErrorHandle.httpStatusHandle(value.error)
|
||||
}
|
||||
loader.remove()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -130,22 +125,17 @@ export class EventActionsPopoverPage implements OnInit {
|
||||
|
||||
const loader = this.toastService.loading()
|
||||
|
||||
try {
|
||||
/* await this.processes.PostTaskAction(body).toPromise(); */
|
||||
this.agendaDataRepository.eventToaprovalStatus(this.serialNumber, 'Revision', res.data.note).subscribe((value) => {
|
||||
this.httpErrorHandle.httpsSucessMessagge('Rever')
|
||||
this.TaskService.loadEventosParaAprovacao()
|
||||
this.goBack();
|
||||
}, ((error) => {
|
||||
console.log('send event to revision error: ', error)
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}));
|
||||
} catch (error) {
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}
|
||||
finally {
|
||||
loader.remove()
|
||||
|
||||
const result = await this.agendaDataRepository.eventToaprovalStatus(this.serialNumber, 'Revision', res.data.note)// .subscribe((value) => {
|
||||
if(result.isOk()) {
|
||||
this.httpErrorHandle.httpsSucessMessagge('Rever')
|
||||
this.TaskService.loadEventosParaAprovacao()
|
||||
this.goBack();
|
||||
} else {
|
||||
console.log('send event to revision error: ', result.error)
|
||||
this.httpErrorHandle.httpStatusHandle(result.error)
|
||||
}
|
||||
loader.remove()
|
||||
} else {
|
||||
|
||||
}
|
||||
@@ -160,22 +150,16 @@ export class EventActionsPopoverPage implements OnInit {
|
||||
let body = { "serialNumber": this.serialNumber, "action": "Descartar" }
|
||||
|
||||
const loader = this.toastService.loading();
|
||||
try {
|
||||
/* await this.processes.PostTaskAction(body).toPromise(); */
|
||||
this.agendaDataRepository.eventToaprovalStatus(this.serialNumber, 'Declined', '').subscribe((value) => {
|
||||
this.TaskService.loadEventosParaAprovacao()
|
||||
this.httpErrorHandle.httpsSucessMessagge('Rejeitar')
|
||||
this.goBack();
|
||||
}, ((error) => {
|
||||
console.log('reject event error: ', error)
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}))
|
||||
} catch (error) {
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}
|
||||
finally {
|
||||
loader.remove();
|
||||
const result = await this.agendaDataRepository.eventToaprovalStatus(this.serialNumber, 'Declined', '')//.subscribe((value) => {
|
||||
if(result.isOk()) {
|
||||
this.TaskService.loadEventosParaAprovacao()
|
||||
this.httpErrorHandle.httpsSucessMessagge('Rejeitar')
|
||||
this.goBack();
|
||||
} else {
|
||||
console.log('reject event error: ', result.error)
|
||||
this.httpErrorHandle.httpStatusHandle(result.error)
|
||||
}
|
||||
loader.remove();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -498,20 +498,21 @@ export class NewEventPage implements OnInit {
|
||||
this.postEvent.Attendees = this.taskParticipants.concat(this.taskParticipantsCc);
|
||||
this.postEvent.IsAllDayEvent = this.allDayCheck;
|
||||
|
||||
try {
|
||||
const value = await this.agendaDataRepository.createEvent(this.postEvent, this.documents, calendar.value, tracing).toPromise()
|
||||
console.log(value)
|
||||
const value = await this.agendaDataRepository.createEvent(this.postEvent, this.documents, calendar.value, tracing)
|
||||
if(value.isOk()) {
|
||||
console.log(value.value)
|
||||
loader.remove()
|
||||
this.hhtpErrorHandle.httpsSucessMessagge('new event')
|
||||
let data = Object.assign(this.postEvent)
|
||||
this.modalController.dismiss(data);
|
||||
tracing.setAttribute('outcome', 'success');
|
||||
} catch(error) {
|
||||
} else {
|
||||
tracing.setAttribute('outcome', 'failed');
|
||||
console.log('create event error: ', error)
|
||||
console.log('create event error: ', value.error)
|
||||
loader.remove()
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
@@ -519,22 +520,6 @@ export class NewEventPage implements OnInit {
|
||||
}
|
||||
|
||||
|
||||
|
||||
//This method return calendar id
|
||||
selectedCalendarId() {
|
||||
|
||||
if (this.eventService.calendarNamesType[this.CalendarName]?.['Oficial'] && this.postEvent.CalendarName == 'Oficial') {
|
||||
return this.eventService.calendarNamesType[this.CalendarName]['OficialId']
|
||||
|
||||
} else if (this.eventService.calendarNamesType[this.CalendarName]?.['Pessoal'] && this.postEvent.CalendarName == 'Pessoal') {
|
||||
|
||||
return this.eventService.calendarNamesType[this.CalendarName]['PessoalId']
|
||||
|
||||
} else {
|
||||
return '11:11'
|
||||
}
|
||||
}
|
||||
|
||||
//This method return calendar onwner user id
|
||||
selectedCalendarUserId() {
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda
|
||||
import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer';
|
||||
import { isHttpError } from 'src/app/services/http.service';
|
||||
import { PermissionService } from 'src/app/services/permission.service';
|
||||
import { DeleteEventRecurrencePage, EventDeleteRecurrenceComponentReturn } from 'src/app/modals/delete-event-recurrence/delete-event-recurrence.page';
|
||||
|
||||
@Component({
|
||||
selector: 'app-view-event',
|
||||
@@ -186,42 +187,33 @@ export class ViewEventPage implements OnInit {
|
||||
|
||||
}
|
||||
|
||||
deleteYesOrNo() {
|
||||
async deleteYesOrNo() {
|
||||
if (this.loadedEvent.IsRecurring) {
|
||||
this.alertController.create({
|
||||
header: 'Eliminar evento?',
|
||||
message: 'Este evento tem recorrência, deseja eliminar a Sequência de eventos?',
|
||||
inputs: [
|
||||
{
|
||||
name: 'confirm',
|
||||
type: 'checkbox',
|
||||
label: '',
|
||||
value: 'confirm',
|
||||
checked: false,
|
||||
}
|
||||
],
|
||||
buttons: [
|
||||
{
|
||||
text: 'Sim',
|
||||
handler: (data) => {
|
||||
if (data.includes('confirm')) {
|
||||
this.deleteEvent(true);
|
||||
} else {
|
||||
this.deleteEvent(false);
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
text: 'Não',
|
||||
handler: () => {
|
||||
// sconsole.log('Let me think');
|
||||
}
|
||||
}
|
||||
]
|
||||
}).then(res => {
|
||||
res.present();
|
||||
const modal = await this.modalController.create({
|
||||
component: DeleteEventRecurrencePage,
|
||||
componentProps: {},
|
||||
cssClass: 'event-recurrence-modal',
|
||||
|
||||
});
|
||||
|
||||
modal.onDidDismiss().then((res) => {
|
||||
|
||||
const data: EventDeleteRecurrenceComponentReturn = res.data
|
||||
if(data =='DeleteAll') {
|
||||
this.deleteEvent(true);
|
||||
|
||||
} else if (data == 'DeleteOne') {
|
||||
this.deleteEvent(false);
|
||||
} else if(data == 'Cancel') {
|
||||
this.close()
|
||||
} else {
|
||||
this.close()
|
||||
}
|
||||
});
|
||||
|
||||
await modal.present();
|
||||
|
||||
} else {
|
||||
this.alertController.create({
|
||||
header: 'Eliminar evento?',
|
||||
@@ -247,13 +239,14 @@ export class ViewEventPage implements OnInit {
|
||||
|
||||
}
|
||||
|
||||
deleteEvent(deleteAll) {
|
||||
async deleteEvent(deleteAll) {
|
||||
|
||||
const loader = this.toastService.loading()
|
||||
|
||||
|
||||
console.log(this.loadedEvent.EventId)
|
||||
this.agendaDataRepository.deleteEvent(this.loadedEvent.EventId,deleteAll).subscribe(async () => {
|
||||
const result = await this.agendaDataRepository.deleteEvent(this.loadedEvent.EventId,deleteAll)//.subscribe(async () => {
|
||||
if(result.isOk()) {
|
||||
const alert = await this.alertController.create({
|
||||
cssClass: 'my-custom-class',
|
||||
header: 'Evento removido',
|
||||
@@ -265,14 +258,14 @@ export class ViewEventPage implements OnInit {
|
||||
}, 1500);
|
||||
this.goBack();
|
||||
this.httpErrorHandle.httpsSucessMessagge('delete event')
|
||||
}, (error) => {
|
||||
console.log('delete event error: ', error)
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}, () => {
|
||||
loader.remove();
|
||||
});
|
||||
} else {
|
||||
|
||||
console.log('delete event error: ', result.error)
|
||||
this.httpErrorHandle.httpStatusHandle(result.error)
|
||||
}
|
||||
|
||||
|
||||
loader.remove();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -143,27 +143,22 @@ export class ApproveEventPage implements OnInit {
|
||||
|
||||
const loader = this.toastService.loading()
|
||||
|
||||
try {
|
||||
const result = await this.AgendaDataRepositoryService.approveEvent(serialNumber)//.subscribe(async (value) => {
|
||||
|
||||
this.AgendaDataRepositoryService.approveEvent(serialNumber).subscribe(async (value) => {
|
||||
if(result.isOk()) {
|
||||
await this.processes.PostTaskAction(body).toPromise()
|
||||
this.goBack();
|
||||
this.httpErrorHandle.httpsSucessMessagge('Evento aprovação')
|
||||
this.TaskService.loadEventosParaAprovacao();
|
||||
|
||||
await this.processes.PostTaskAction(body).toPromise()
|
||||
this.goBack();
|
||||
this.httpErrorHandle.httpsSucessMessagge('Evento aprovação')
|
||||
this.TaskService.loadEventosParaAprovacao();
|
||||
} else {
|
||||
|
||||
}, ((error) => {
|
||||
console.log('aprove event error: ', error)
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}))
|
||||
|
||||
} catch (error) {
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}
|
||||
finally {
|
||||
loader.remove()
|
||||
console.log('aprove event error: ', result.error)
|
||||
this.httpErrorHandle.httpStatusHandle(result.error)
|
||||
}
|
||||
|
||||
loader.remove()
|
||||
|
||||
}
|
||||
|
||||
async emendTask(serialNumber: string) {
|
||||
@@ -193,28 +188,25 @@ export class ApproveEventPage implements OnInit {
|
||||
}
|
||||
|
||||
|
||||
const loader = this.toastService.loading()
|
||||
const loader = this.toastService.loading()
|
||||
|
||||
try {
|
||||
|
||||
this.AgendaDataRepositoryService.eventToaprovalStatus(serialNumber, 'Revision', res.data.note).subscribe((value) => {
|
||||
const result = await this.AgendaDataRepositoryService.eventToaprovalStatus(serialNumber, 'Revision', res.data.note)//.subscribe((value) => {
|
||||
if(result.isOk()) {
|
||||
this.httpErrorHandle.httpsSucessMessagge('Rever')
|
||||
this.TaskService.loadEventosParaAprovacao();
|
||||
this.goBack();
|
||||
}, ((error) => {
|
||||
console.log('send event to revision error: ', error)
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
this.offlineManager.storeRequestData('event-listRever', body);
|
||||
}));
|
||||
|
||||
} catch (error) {
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
} finally {
|
||||
} else {
|
||||
console.log('send event to revision error: ', result.error)
|
||||
this.httpErrorHandle.httpStatusHandle(result.error)
|
||||
this.offlineManager.storeRequestData('event-listRever', body);
|
||||
}
|
||||
|
||||
|
||||
|
||||
loader.remove()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}, (error) => {
|
||||
console.log(error)
|
||||
});
|
||||
@@ -227,22 +219,19 @@ export class ApproveEventPage implements OnInit {
|
||||
let body = { "serialNumber": serialNumber, "action": "Descartar" }
|
||||
|
||||
const loader = this.toastService.loading()
|
||||
try {
|
||||
/* await this.processes.PostTaskAction(body).toPromise(); */
|
||||
this.AgendaDataRepositoryService.eventToaprovalStatus(serialNumber, 'Declined', '').subscribe((value) => {
|
||||
this.httpErrorHandle.httpsSucessMessagge('Rejeitar')
|
||||
this.TaskService.loadEventosParaAprovacao();
|
||||
this.goBack();
|
||||
}, ((error) => {
|
||||
console.log('reject event error: ', error)
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}))
|
||||
} catch (error) {
|
||||
this.httpErrorHandle.httpStatusHandle(error)
|
||||
}
|
||||
finally {
|
||||
loader.remove()
|
||||
|
||||
/* await this.processes.PostTaskAction(body).toPromise(); */
|
||||
const result = await this.AgendaDataRepositoryService.eventToaprovalStatus(serialNumber, 'Declined', '')//.subscribe((value) => {
|
||||
if(result.isOk()) {
|
||||
this.httpErrorHandle.httpsSucessMessagge('Rejeitar')
|
||||
this.TaskService.loadEventosParaAprovacao();
|
||||
this.goBack();
|
||||
} else {
|
||||
|
||||
console.log('reject event error: ', result.error)
|
||||
this.httpErrorHandle.httpStatusHandle(result.error)
|
||||
}
|
||||
loader.remove()
|
||||
}
|
||||
|
||||
async viewDocument(DocId: string, Document) {
|
||||
|
||||
+10
-8
@@ -369,27 +369,29 @@ export class BookMeetingModalPage implements OnInit {
|
||||
const calendar = await this.agendaDataRepository.getCalendarByUserId(this.selectedUserCalendar)
|
||||
if(calendar.isOk()) {
|
||||
|
||||
try {
|
||||
const value = await this.agendaDataRepository.createEvent(postData, this.documents, calendar.value, tracing).toPromise()
|
||||
console.log(value)
|
||||
const value = await this.agendaDataRepository.createEvent(postData, this.documents, calendar.value, tracing)
|
||||
if(value.isOk()) {
|
||||
|
||||
console.log(value.value)
|
||||
|
||||
this.httpErroHandle.httpsSucessMessagge('new event')
|
||||
loader.remove();
|
||||
tracing.setAttribute('outcome', 'success')
|
||||
this.close();
|
||||
} catch (error) {
|
||||
} else {
|
||||
|
||||
if(!isHttpError(error)) {
|
||||
if(!isHttpError(value.error)) {
|
||||
this.toastService._badRequest('Pedimos desculpa mas não foi possível executar a acção. Por favor, contacte o apoio técnico. #1')
|
||||
console.log(error)
|
||||
console.log(value.error)
|
||||
tracing.bugFlag()
|
||||
} else {
|
||||
this.httpErroHandle.httpStatusHandle(error.status)
|
||||
this.httpErroHandle.httpStatusHandle(value.error.status)
|
||||
}
|
||||
console.log('create event error: ', error)
|
||||
console.log('create event error: ', value.error)
|
||||
tracing.setAttribute('outcome', 'failed')
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user