import { createMap, forMember, mapFrom, Mapper } from '@automapper/core'; import { AutomapperProfile, InjectMapper } from '@automapper/nestjs'; import { Injectable } from '@nestjs/common'; import { Ad } from '../domain/entities/ad'; import { AdPresenter } from '../adapters/primaries/ad.presenter'; import { CreateAdRequest } from '../domain/dtos/create-ad.request'; @Injectable() export class AdProfile extends AutomapperProfile { constructor(@InjectMapper() mapper: Mapper) { super(mapper); } override get profile() { return (mapper: any) => { createMap(mapper, Ad, AdPresenter); createMap(mapper, CreateAdRequest, CreateAdRequest); createMap( mapper, CreateAdRequest, Ad, forMember( (dest) => dest.fromDate, mapFrom((source) => new Date(source.fromDate)), ), forMember( (dest) => dest.toDate, mapFrom((source) => new Date(source.toDate)), ), forMember( (dest) => dest.createdAt, mapFrom((source) => new Date(source.createdAt)), ), forMember( (dest) => dest.updatedAt, mapFrom((source) => new Date(source.updatedAt)), ), ); }; } }