feat: category analytic source

This commit is contained in:
efrilm
2025-08-17 22:46:25 +07:00
parent 50b06da627
commit 8eef620c16
13 changed files with 1929 additions and 638 deletions
+2 -1
View File
@@ -5,5 +5,6 @@ import '../../common/api/api_failure.dart';
part 'analytic.freezed.dart';
part 'entities/sales_analytic_entity.dart';
part 'failures/analytic_failure.dart';
part 'entities/profit_loss_analytic_entity.dart';
part 'entities/category_analytic_entity.dart';
part 'failures/analytic_failure.dart';
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,41 @@
part of '../analytic.dart';
@freezed
class CategoryAnalytic with _$CategoryAnalytic {
const factory CategoryAnalytic({
required String organizationId,
required String outletId,
required String dateFrom,
required String dateTo,
required List<CategoryAnalyticItem> data,
}) = _CategoryAnalytic;
factory CategoryAnalytic.empty() => const CategoryAnalytic(
organizationId: "",
outletId: "",
dateFrom: "",
dateTo: "",
data: [],
);
}
@freezed
class CategoryAnalyticItem with _$CategoryAnalyticItem {
const factory CategoryAnalyticItem({
required String categoryId,
required String categoryName,
required int totalRevenue,
required int totalQuantity,
required int productCount,
required int orderCount,
}) = _CategoryAnalyticItem;
factory CategoryAnalyticItem.empty() => const CategoryAnalyticItem(
categoryId: "",
categoryName: "",
totalRevenue: 0,
totalQuantity: 0,
productCount: 0,
orderCount: 0,
);
}
@@ -7,8 +7,14 @@ abstract class IAnalyticRepository {
required DateTime dateFrom,
required DateTime dateTo,
});
Future<Either<AnalyticFailure, ProfitLossAnalytic>> getProfitLoss({
required DateTime dateFrom,
required DateTime dateTo,
});
Future<Either<AnalyticFailure, CategoryAnalytic>> getCategory({
required DateTime dateFrom,
required DateTime dateTo,
});
}