import { Identifiable } from "@/data"; import { CourseDTO, courseDtoTransformer } from "@/api/dto/course"; import { OneWayTransformer, Transformer } from "@/serialization"; import { Edition } from "@/data/edition"; import moment from "moment"; import { Subset } from "@/helpers"; export interface EditionDTO extends Identifiable { editionStart: string, editionFinish: string, reportingStart: string, course: CourseDTO, } export interface EditionTeaserDTO extends Identifiable { editionStart: string, editionFinish: string, courseName: string, } export const editionTeaserDtoTransformer: OneWayTransformer> = { transform(subject: EditionTeaserDTO, context?: undefined): Subset { return subject && { id: subject.id, startDate: moment(subject.editionStart), endDate: moment(subject.editionFinish), course: { name: subject.courseName, } } } } export const editionDtoTransformer: Transformer = { reverseTransform(subject: Edition, context: undefined): EditionDTO { return { id: subject.id, editionFinish: subject.endDate.toISOString(), editionStart: subject.startDate.toISOString(), course: courseDtoTransformer.reverseTransform(subject.course), reportingStart: subject.reportingStart.toISOString(), }; }, transform(subject: EditionDTO, context: undefined): Edition { return { id: subject.id, course: courseDtoTransformer.transform(subject.course), startDate: moment(subject.editionStart), endDate: moment(subject.editionFinish), minimumInternshipHours: 40, maximumInternshipHours: 160, proposalDeadline: moment(subject.reportingStart), reportingStart: moment(subject.reportingStart), reportingEnd: moment(subject.reportingStart).add(1, 'month'), }; } }