2024-12-09 15:14:31 +04:00

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'
: '';
}
}