allow to alter agenda

This commit is contained in:
Peter Maquiran
2024-06-21 13:45:06 +01:00
parent 9ea120bfcd
commit 3b6da3d2c7
21 changed files with 1058 additions and 237 deletions
@@ -10,7 +10,7 @@ import { EventListToApproveMapper } from './mapper/eventToApproveListMapper';
import { err, ok } from 'neverthrow';
import { HttpErrorResponse } from '@angular/common/http';
import { EventToApproveDetailsMapper } from './mapper/EventToApproveDetailsMapper';
import { AgendaLocalDataSourceService } from './agenda-local-data-source.service';
import { AgendaLocalDataSourceService, TableSharedCalendar } from './agenda-local-data-source.service';
import { EEventFilterStatus } from './model/enums';
import { isHttpError } from '../../http.service';
import { TracingType } from '../../monitoring/opentelemetry/tracer';
@@ -156,12 +156,12 @@ export class AgendaDataRepositoryService {
}
}
createEvent(eventData: Event, CalendarName, documents) {
createEvent(eventData: Event, documents, calendar: TableSharedCalendar) {
console.log('create repository 1',eventData)
let eventInput = {
userId: CalendarName,
ownerType: this.utils.selectedCalendarOwner(CalendarName),
userId: calendar.wxUserId,
ownerType: this.utils.selectedCalendarOwner(calendar.role),
subject: eventData.Subject,
body: eventData.Body.Text,
location: eventData.Location,
@@ -184,11 +184,13 @@ export class AgendaDataRepositoryService {
return this.agendaDataService.createEvent(eventInput)
}
updateEvent(eventId, eventData, editAllEvent) {
console.log('Update event', eventData)
updateEvent(eventId, eventData, editAllEvent, calendar: TableSharedCalendar) {
let eventInput = {
userId: calendar.wxUserId,
ownerType: this.utils.selectedCalendarOwner(calendar.role),
subject: eventData.Subject,
body: eventData.Body.Text || eventData.Body,
body: eventData?.Body?.Text,
location: eventData.Location,
startDate: this.utils.addOneHourToIsoString(eventData.StartDate),
endDate: this.utils.addOneHourToIsoString(eventData.EndDate),
@@ -201,7 +203,7 @@ export class AgendaDataRepositoryService {
until: ((eventData.EventRecurrence.until === "") ? this.utils.addOneHourToIsoString(eventData.EndDate.toISOString()) : eventData.EventRecurrence.until),
}
}
console.log('Update event post', eventInput)
return this.agendaDataService.updateEvent(eventId, eventInput)
}
@@ -294,10 +296,30 @@ export class AgendaDataRepositoryService {
return await this.agendaLocalDataSourceService.clearSharedCalendar()
}
getShareCalendarItemsLive() {
return this.agendaLocalDataSourceService.getShareCalendarItemsLive()
}
getShareCalendarItemsLiveWithOrder() {
// Define the role priorities
const rolePriorities: { [key: number]: number } = {
100000014: 1, // Presidente da República
100000011: 2, // Vice Presidente (example role ID)
// Add other roles with their priorities here
};
return this.getShareCalendarItemsLive().pipe(
map(data => data.sort((a, b) => {
console.log('Raw data:', data); // Debug line
const priorityA = rolePriorities[a.roleId] || Infinity;
const priorityB = rolePriorities[b.roleId] || Infinity;
return priorityA - priorityB;
}))
)
}
async geCalendars() {
return await this.agendaLocalDataSourceService.geCalendars()
}
@@ -305,4 +327,9 @@ export class AgendaDataRepositoryService {
approveEvent(eventId) {
return this.agendaDataService.approveEvent(eventId);
}
async getCalendarByUserId(wxUserId: number) {
return await this.agendaLocalDataSourceService.getCalendarByUserId(wxUserId)
}
}
@@ -84,4 +84,24 @@ export class AgendaLocalDataSourceService {
return AgendaDataSource.shareCalendar.toArray()
}))
}
// New method to get calendars by wxUserId
async getCalendarByUserId(wxUserId: number) {
try {
const result = await AgendaDataSource.shareCalendar.get(wxUserId)
if(!result) {
const list = await AgendaDataSource.shareCalendar.toArray()
const found = list.find(e => e.wxUserId == wxUserId)
if(found) {
return ok(found)
} else {
return err('404')
}
} else {
return ok(result)
}
} catch (e) {
return err(false);
}
}
}
@@ -0,0 +1,67 @@
const { DiagConsoleLogger, DiagLogLevel, diag, metrics } = require('@opentelemetry/api');
const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-http');
const { MeterProvider, PeriodicExportingMetricReader } = require('@opentelemetry/sdk-metrics');
// Optional and only needed to see the internal diagnostic logging (during development)
// diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
let interval;
let meter;
// function stopMetrics() {
// console.log('STOPPING METRICS');
// clearInterval(interval);
// metrics.getMeterProvider().shutdown()
// .then(() => metrics.disable());
// }
// function startMetrics() {
// console.log('STARTING METRICS');
// const meterProvider = new MeterProvider();
// metrics.setGlobalMeterProvider(meterProvider);
// meterProvider.addMetricReader(new PeriodicExportingMetricReader({
// exporter: new OTLPMetricExporter({
// //url: 'http://localhost:8019/collector/v1/metrics',
// // url: 'http://localhost:4318/v1/metrics',
// url: 'http://5-180-182-151.cloud-xip.com:4318/v1/metrics', // Custom port 85
// //url: 'https://5-180-182-151.cloud-xip.com:85/collector/v1/metrics', // Custom port 85
// // headers: {
// // 'Authorization': 'Basic ' + btoa('tabteste@006:tabteste@006'),
// // }
// }),
// exportIntervalMillis: 2000
// }));
// meter = meterProvider.getMeter('example-exporter-collector')
// const requestCounter = meter.createCounter('requests', {
// description: 'Example of a Counter',
// });
// const upDownCounter = meter.createUpDownCounter('test_up_down_counter', {
// description: 'Example of a UpDownCounter',
// });
// const attributes = { environment: 'staging' };
// interval = setInterval(() => {
// requestCounter.add(1, attributes);
// requestCounter.add(1, {environment: 'testing'});
// requestCounter.add(1, {environment: 'ok'});
// upDownCounter.add(Math.random() > 0.5 ? 1 : -1, attributes);
// }, 1000);
// }
// const addClickEvents = () => {
// // const startBtn = document.getElementById('startBtn');
// // const stopBtn = document.getElementById('stopBtn');
// // startBtn.addEventListener('click', startMetrics);
// // stopBtn.addEventListener('click', stopMetrics);
// // startMetrics()
// };
// // addClickEvents();
@@ -11,7 +11,7 @@ function createProvider(serviceName) {
}),
});
provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
// provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
provider.addSpanProcessor(new SimpleSpanProcessor(new ZipkinExporter({
url: 'https://5-180-182-151.cloud-xip.com:85/zipkin-endpoint/api/v2/spans',
serviceName: serviceName,