41 lines
1.2 KiB
Dart
41 lines
1.2 KiB
Dart
import 'package:identity/data/dtos/character_dto.dart';
|
|
import 'package:identity/domain/models/character.dart';
|
|
|
|
const _imagePlaceholder = 'https://example.com/placeholder.png';
|
|
|
|
extension CharacterDtoToModel on CharacterDto {
|
|
Character toDomain() {
|
|
return Character(
|
|
name: name,
|
|
type: type == 'Survivor' ? CharacterType.Survivor : CharacterType.Hunter,
|
|
backstory: backstory,
|
|
imageUrl: imageUrl.isNotEmpty ? imageUrl : _imagePlaceholder,
|
|
isLiked: isLiked,
|
|
);
|
|
}
|
|
}
|
|
class CharacterMapper {
|
|
static CharacterDto toDTO(Character character) {
|
|
return CharacterDto(
|
|
name: character.name,
|
|
type: character.type.toString().split('.').last, // Преобразуем CharacterType в строку
|
|
backstory: character.backstory,
|
|
imageUrl: character.imageUrl,
|
|
isLiked: character.isLiked,
|
|
);
|
|
}
|
|
|
|
static Character fromDTO(CharacterDto dto) {
|
|
// Преобразуем строку обратно в CharacterType
|
|
final characterType = dto.type == 'Survivor' ? CharacterType.Survivor : CharacterType.Hunter;
|
|
|
|
return Character(
|
|
name: dto.name,
|
|
type: characterType,
|
|
backstory: dto.backstory,
|
|
imageUrl: dto.imageUrl,
|
|
isLiked: dto.isLiked,
|
|
);
|
|
}
|
|
}
|