import 'package:testlab/data/dtos/films_dto.dart'; import 'package:testlab/domain/models/card.dart'; import 'package:testlab/domain/models/home.dart'; import 'package:intl/intl.dart'; const _imagePlaceholder = 'https://ralfvanveen.com/wp-content/uploads/2021/06/Placeholder-_-Glossary.svg'; extension FilmsDtoToModel on FilmsDto { HomeData toDomain() => HomeData( data: data?.map((e) => e.toDomain()).toList(), nextPage: meta?.pagination?.next, ); } extension FilmDataDtoToModel on FilmDataDto { CardData toDomain() => CardData( attributes?.title ?? 'UNKNOWN', imageUrl: attributes?.poster ?? _imagePlaceholder, descriptionText: _makeDescriptionText(formatDateToString(attributes?.release_date), attributes?.budget), id: id, ); String formatDateToString(DateTime? date) { return date != null ? DateFormat('yyyy-MM-dd').format(date) : 'UNKNOWN DATE'; } String _makeDescriptionText(String? release_date, String? budget) { return release_date != null && budget != null ? '$release_date \n $budget' : release_date != null ? 'release: $release_date' : budget != null ? 'budget: $budget' : ''; } }