import {Injectable} from '@angular/core'; import ApiService, {AvailableVersion} from "@api/api.service"; import {CronUpdateScheduleResponse} from "@api/v1/configuration/cronUpdateScheduleResponse"; import {DateOnly} from "@model/dateOnly"; import {map} from "rxjs"; import CronUpdateSkip from "@model/cronUpdateSkip"; @Injectable() export class ScheduleService extends ApiService { public readonly basePath = 'Configuration/Schedule'; public readonly version = AvailableVersion.v1; public getCronUpdateSchedule() { const request = this.createRequestBuilder() .setEndpoint('CronUpdateSchedule') .build; return this.addAuth(request).get(request); } public postCronUpdateSchedule(cron: string) { const request = this.createRequestBuilder() .setEndpoint('CronUpdateSchedule') .setQueryParams({cron: cron}) .build; return this.addAuth(request).post(request); } public getStartTerm() { const request = this.createRequestBuilder() .setEndpoint('StartTerm') .build; return this.addAuth(request).get(request).pipe(map(date => new DateOnly(date))); } public postStartTerm(startTerm: DateOnly, force: boolean) { const request = this.createRequestBuilder() .setEndpoint('StartTerm') .setQueryParams({force: force, startTerm: startTerm.toString()}) .build; return this.addAuth(request).post(request); } public getCronUpdateSkip() { const request = this.createRequestBuilder() .setEndpoint('CronUpdateSkip') .build; return this.addAuth(request).get<{ date?: string, start?: string, end?: string }[]>(request) .pipe( map(data => { return data.map(x => { date: x.date ? new DateOnly(x.date) : null, start: x.start ? new DateOnly(x.start) : null, end: x.end ? new DateOnly(x.end) : null }); } )); } public postCronUpdateSkip(data: CronUpdateSkip[]) { const request = this.createRequestBuilder() .setEndpoint('CronUpdateSkip') .setData(data.map(x => { start: x.start?.toString(), end: x.end?.toString(), date: x.date?.toString() })) .build; return this.addAuth(request).post(request); } public uploadScheduleFile(files: File[], campus: string[], force: boolean) { const formData = new FormData(); files.forEach(file => formData.append('files', file, file.name)); const request = this.createRequestBuilder() .setEndpoint('Upload') .setData(formData) .setQueryParams({force: force, defaultCampus: campus}) .build; return this.addAuth(request).post(request); } }