Files
apskel-owner-flutter/lib/infrastructure/analytic/dto/product_analytic_dto.dart
T

76 lines
2.9 KiB
Dart
Raw Normal View History

2025-08-18 02:13:11 +07:00
part of '../analytic_dtos.dart';
@freezed
class ProductAnalyticDto with _$ProductAnalyticDto {
const ProductAnalyticDto._();
const factory ProductAnalyticDto({
2025-08-18 17:06:41 +07:00
@JsonKey(name: 'organization_id') String? organizationId,
@JsonKey(name: 'outlet_id') String? outletId,
2026-06-23 23:18:22 +07:00
@JsonKey(name: 'outlet_name') String? outletName,
2025-08-18 17:06:41 +07:00
@JsonKey(name: 'date_from') String? dateFrom,
@JsonKey(name: 'date_to') String? dateTo,
@JsonKey(name: 'data') List<ProductAnalyticDataDto>? data,
2025-08-18 02:13:11 +07:00
}) = _ProductAnalyticDto;
factory ProductAnalyticDto.fromJson(Map<String, dynamic> json) =>
_$ProductAnalyticDtoFromJson(json);
ProductAnalytic toDomain() => ProductAnalytic(
2025-08-18 17:06:41 +07:00
organizationId: organizationId ?? "",
outletId: outletId ?? "",
2026-06-23 23:18:22 +07:00
outletName: outletName ?? "",
2025-08-18 17:06:41 +07:00
dateFrom: dateFrom ?? "",
dateTo: dateTo ?? "",
data: data?.map((e) => e.toDomain()).toList() ?? [],
2025-08-18 02:13:11 +07:00
);
}
@freezed
class ProductAnalyticDataDto with _$ProductAnalyticDataDto {
const ProductAnalyticDataDto._();
const factory ProductAnalyticDataDto({
2025-08-18 17:06:41 +07:00
@JsonKey(name: 'product_id') String? productId,
@JsonKey(name: 'product_name') String? productName,
2026-06-23 23:18:22 +07:00
@JsonKey(name: 'product_sku') String? productSku,
@JsonKey(name: 'product_price') int? productPrice,
2025-08-18 17:06:41 +07:00
@JsonKey(name: 'category_id') String? categoryId,
@JsonKey(name: 'category_name') String? categoryName,
2026-06-23 23:18:22 +07:00
@JsonKey(name: 'category_order') int? categoryOrder,
2025-08-18 17:06:41 +07:00
@JsonKey(name: 'quantity_sold') int? quantitySold,
@JsonKey(name: 'revenue') int? revenue,
@JsonKey(name: 'average_price') double? averagePrice,
@JsonKey(name: 'order_count') int? orderCount,
2026-06-23 23:18:22 +07:00
@JsonKey(name: 'standard_hpp_per_unit') int? standardHppPerUnit,
@JsonKey(name: 'standard_hpp_total') int? standardHppTotal,
@JsonKey(name: 'fifo_hpp_per_unit') int? fifoHppPerUnit,
@JsonKey(name: 'fifo_hpp_total') int? fifoHppTotal,
@JsonKey(name: 'moving_average_hpp_per_unit') int? movingAverageHppPerUnit,
@JsonKey(name: 'moving_average_hpp_total') int? movingAverageHppTotal,
2025-08-18 02:13:11 +07:00
}) = _ProductAnalyticDataDto;
factory ProductAnalyticDataDto.fromJson(Map<String, dynamic> json) =>
_$ProductAnalyticDataDtoFromJson(json);
ProductAnalyticData toDomain() => ProductAnalyticData(
2025-08-18 17:06:41 +07:00
productId: productId ?? "",
productName: productName ?? "",
2026-06-23 23:18:22 +07:00
productSku: productSku ?? "",
productPrice: productPrice ?? 0,
2025-08-18 17:06:41 +07:00
categoryId: categoryId ?? "",
categoryName: categoryName ?? "",
2026-06-23 23:18:22 +07:00
categoryOrder: categoryOrder ?? 0,
2025-08-18 17:06:41 +07:00
quantitySold: quantitySold ?? 0,
revenue: revenue ?? 0,
averagePrice: averagePrice ?? 0,
orderCount: orderCount ?? 0,
2026-06-23 23:18:22 +07:00
standardHppPerUnit: standardHppPerUnit ?? 0,
standardHppTotal: standardHppTotal ?? 0,
fifoHppPerUnit: fifoHppPerUnit ?? 0,
fifoHppTotal: fifoHppTotal ?? 0,
movingAverageHppPerUnit: movingAverageHppPerUnit ?? 0,
movingAverageHppTotal: movingAverageHppTotal ?? 0,
2025-08-18 02:13:11 +07:00
);
}