import { IMapFrom, IMapper } from 'clever-ts-utilities';
import { WrapperResponseModel } from '../../../libs/utilities/wrapper-response-model';
import { WrapperResponseDto } from './wrapper-response.dto';

export class WrapperResponseMapper<T, U>
  implements IMapFrom<WrapperResponseModel<T[]>, WrapperResponseDto<U[]>>
{
  constructor(private dataMapper: IMapper<T, U>) {}
  mapFrom(param: WrapperResponseModel<T[]>): WrapperResponseDto<U[]> {
    return {
      data: param.data.map((item: T) => this.dataMapper.mapFrom(item)),
      hasNext: param.hasNext,
      currentPage: param.currentPage,
      hasPrevious: param.hasPrevious,
      pageSize: param.pageSize,
      totalPages: param.totalPages,
      totalCount: param.totalCount,
    };
  }
}
