58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
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<EditionTeaserDTO, Subset<Edition>> = {
|
|
transform(subject: EditionTeaserDTO, context?: undefined): Subset<Edition> {
|
|
return subject && {
|
|
id: subject.id,
|
|
startDate: moment(subject.editionStart),
|
|
endDate: moment(subject.editionFinish),
|
|
course: {
|
|
name: subject.courseName,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export const editionDtoTransformer: Transformer<EditionDTO, Edition> = {
|
|
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'),
|
|
};
|
|
}
|
|
}
|