2025-11-04 22:13:15 +07:00

69 lines
1.7 KiB
Dart

part of '../printer_dtos.dart';
@freezed
class PrinterDto with _$PrinterDto {
const PrinterDto._();
const factory PrinterDto({
@JsonKey(name: 'id') required int id,
@JsonKey(name: 'code') required String code,
@JsonKey(name: 'name') required String name,
@JsonKey(name: 'address') required String address,
@JsonKey(name: 'paper') required String paper,
@JsonKey(name: 'type') required String type,
@JsonKey(name: 'created_at') required DateTime createdAt,
@JsonKey(name: 'updated_at') required DateTime updatedAt,
}) = _PrinterDto;
factory PrinterDto.fromJson(Map<String, dynamic> json) =>
_$PrinterDtoFromJson(json);
// Optional mapper to domain
Printer toDomain() => Printer(
id: id,
code: code,
name: name,
address: address,
paper: paper,
type: type,
createdAt: createdAt,
updatedAt: updatedAt,
);
factory PrinterDto.fromDomain(Printer printer) => PrinterDto(
id: printer.id,
code: printer.code,
name: printer.name,
address: printer.address,
paper: printer.paper,
type: printer.type,
createdAt: printer.createdAt,
updatedAt: printer.updatedAt,
);
Map<String, dynamic> toMapCreating() {
final now = DateTime.now().toIso8601String();
return {
'id': generateRandomNumber(),
'code': code,
'name': name,
'address': address,
'paper': paper,
'type': type,
'created_at': now,
'updated_at': now,
};
}
Map<String, dynamic> toMapForUpdate() {
return {
'code': code,
'name': name,
'address': address,
'paper': paper,
'type': type,
'updated_at': DateTime.now().toIso8601String(),
};
}
}