39 lines
1.2 KiB
Dart
39 lines
1.2 KiB
Dart
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'
|
|
: '';
|
|
}
|
|
}
|