import moment, { Moment } from "moment"; import Currency from "./currency/currency"; import Gbp from "./currency/gbp"; function newAccountFromDto(dto: unknown): Account { const dtoDangerous = dto as AccountDto; return { id: dtoDangerous.id, name: dtoDangerous.name, openingBalance: new Gbp( Math.floor(Math.abs(dtoDangerous.opening_balance) / 100), Math.abs(dtoDangerous.opening_balance) % 100, dtoDangerous.opening_balance < 0 ? -1 : 1, ), openingDate: moment(dtoDangerous.opening_date), }; } interface AccountDto { readonly id: number; readonly name: string; readonly opening_balance: number; readonly opening_date: string; } interface Account { readonly id: number; readonly name: string; readonly openingBalance: Currency; readonly openingDate: Moment; } export { type Account, newAccountFromDto };