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 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 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 toMapForUpdate() { return { 'code': code, 'name': name, 'address': address, 'paper': paper, 'type': type, 'updated_at': DateTime.now().toIso8601String(), }; } }