From afc8476701f1f1db9cbc32b66c12b02977c23466 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 16:12:36 +0700 Subject: [PATCH 001/108] feat: splash page --- README.md | 43 +++++-- analysis_options.yaml | 1 + lib/common/theme/app_color.dart | 63 +++++++++- lib/common/theme/app_style.dart | 24 +++- lib/common/theme/app_value.dart | 4 +- lib/presentation/pages/splash_page.dart | 157 +++++++++++++++++++++++- 6 files changed, 276 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index ad8462f..fe0072f 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,39 @@ -# apskel_owner_flutter +# Apskel Owner App -A new Flutter project. +A Flutter-based Point of Sale (POS) application designed specifically for business owners. +Helps manage sales, products, inventory, and business reports in real-time with a simple, easy-to-use interface. -## Getting Started +## ๐Ÿš€ Getting Started -This project is a starting point for a Flutter application. +### โœ… Prerequisites -A few resources to get you started if this is your first Flutter project: +- [Flutter](https://flutter.dev/docs/get-started/install) 3.32.8 or newer +- Dart 3.8.1 or newer -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) +### ๐Ÿ›  Installation -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +```bash +git clone https://github.com/efrilm/frl-movie.git +``` + +```bash +cd app-path +``` + +```bash +flutter pub get +``` + +```bash +flutter pub run build_runner build --delete-conflicting-outputs +``` + +--- + +## ๐Ÿงช Running + +```bash +flutter run +``` + +--- diff --git a/analysis_options.yaml b/analysis_options.yaml index c4d2cef..1d331a6 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -13,6 +13,7 @@ analyzer: sort_unnamed_constructors_first: ignore invalid_annotation_target: ignore use_build_context_synchronously: ignore + deprecated_member_use: ignore exclude: - test/generated/** - "**/**.g.dart" diff --git a/lib/common/theme/app_color.dart b/lib/common/theme/app_color.dart index 63dd90f..c2b1798 100644 --- a/lib/common/theme/app_color.dart +++ b/lib/common/theme/app_color.dart @@ -1,5 +1,66 @@ part of 'theme.dart'; class AppColor { - // TODO: define color + // Primary Colors + static const Color primary = Color(0xFF36175e); + static const Color primaryLight = Color(0xFF5a2d85); + static const Color primaryDark = Color(0xFF1e0d35); + + // Secondary Colors + static const Color secondary = Color(0xFF4CAF50); + static const Color secondaryLight = Color(0xFF81C784); + static const Color secondaryDark = Color(0xFF388E3C); + + // Background Colors + static const Color background = Color(0xFFF5F5F5); + static const Color backgroundLight = Color(0xFFFFFFFF); + static const Color backgroundDark = Color(0xFF1A1A1A); + static const Color surface = Color(0xFFFFFFFF); + static const Color surfaceDark = Color(0xFF2D2D2D); + + // Text Colors + static const Color textPrimary = Color(0xFF212121); + static const Color textSecondary = Color(0xFF757575); + static const Color textLight = Color(0xFFBDBDBD); + static const Color textWhite = Color(0xFFFFFFFF); + + // Status Colors + static const Color success = Color(0xFF4CAF50); + static const Color error = Color(0xFFE53E3E); + static const Color warning = Color(0xFFFF9800); + static const Color info = Color(0xFF2196F3); + + // Border Colors + static const Color border = Color(0xFFE0E0E0); + static const Color borderLight = Color(0xFFF0F0F0); + static const Color borderDark = Color(0xFFBDBDBD); + + // Basic Color + static const Color white = Color(0xFFFFFFFF); + static const Color black = Color(0xFF000000); + + // Gradient Colors + static const List primaryGradient = [ + Color(0xFF36175e), + Color(0xFF5a2d85), + ]; + + static const List successGradient = [ + Color(0xFF4CAF50), + Color(0xFF81C784), + ]; + + static const List backgroundGradient = [ + Color(0xFFF5F5F5), + Color(0xFFE8E8E8), + ]; + + // Opacity Variations + static Color primaryWithOpacity(double opacity) => + primary.withOpacity(opacity); + static Color successWithOpacity(double opacity) => + success.withOpacity(opacity); + static Color errorWithOpacity(double opacity) => error.withOpacity(opacity); + static Color warningWithOpacity(double opacity) => + warning.withOpacity(opacity); } diff --git a/lib/common/theme/app_style.dart b/lib/common/theme/app_style.dart index 5c422cc..822a346 100644 --- a/lib/common/theme/app_style.dart +++ b/lib/common/theme/app_style.dart @@ -1,5 +1,27 @@ part of 'theme.dart'; class AppStyle { - // TODO: define style + static TextStyle xs = TextStyle(color: AppColor.textPrimary, fontSize: 11); + + static TextStyle sm = TextStyle(color: AppColor.textPrimary, fontSize: 12); + + static TextStyle md = TextStyle(color: AppColor.textPrimary, fontSize: 14); + + static TextStyle lg = TextStyle(color: AppColor.textPrimary, fontSize: 18); + + static TextStyle xl = TextStyle(color: AppColor.textPrimary, fontSize: 20); + + static TextStyle xxl = TextStyle(color: AppColor.textPrimary, fontSize: 22); + + static TextStyle h6 = TextStyle(color: AppColor.textPrimary, fontSize: 24); + + static TextStyle h5 = TextStyle(color: AppColor.textPrimary, fontSize: 26); + + static TextStyle h4 = TextStyle(color: AppColor.textPrimary, fontSize: 28); + + static TextStyle h3 = TextStyle(color: AppColor.textPrimary, fontSize: 30); + + static TextStyle h2 = TextStyle(color: AppColor.textPrimary, fontSize: 32); + + static TextStyle h1 = TextStyle(color: AppColor.textPrimary, fontSize: 34); } diff --git a/lib/common/theme/app_value.dart b/lib/common/theme/app_value.dart index d76dbcc..1a2d8d8 100644 --- a/lib/common/theme/app_value.dart +++ b/lib/common/theme/app_value.dart @@ -1,5 +1,7 @@ part of 'theme.dart'; class AppValue { - // TODO: define value + static const double padding = 16.0; + static const double radius = 8.0; + static const double elevation = 4.0; } diff --git a/lib/presentation/pages/splash_page.dart b/lib/presentation/pages/splash_page.dart index 12c890a..f838bf4 100644 --- a/lib/presentation/pages/splash_page.dart +++ b/lib/presentation/pages/splash_page.dart @@ -1,6 +1,9 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../common/theme/theme.dart'; +import '../components/assets/assets.gen.dart'; + @RoutePage() class SplashPage extends StatefulWidget { const SplashPage({super.key}); @@ -9,12 +12,160 @@ class SplashPage extends StatefulWidget { State createState() => _SplashPageState(); } -class _SplashPageState extends State { +class _SplashPageState extends State with TickerProviderStateMixin { + late AnimationController _logoController; + late AnimationController _versionController; + late AnimationController _backgroundController; + + late Animation _logoAnimation; + late Animation _versionAnimation; + late Animation _backgroundAnimation; + + @override + void initState() { + super.initState(); + + // Initialize animation controllers + _logoController = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + + _versionController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _backgroundController = AnimationController( + duration: const Duration(milliseconds: 1500), + vsync: this, + ); + + // Create animations + _logoAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _logoController, curve: Curves.elasticOut), + ); + + _versionAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _versionController, curve: Curves.easeInOut), + ); + + _backgroundAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _backgroundController, curve: Curves.easeInOut), + ); + + // Start animations + _startAnimations(); + } + + void _startAnimations() async { + // Start background animation immediately + _backgroundController.forward(); + + // Wait a bit, then start logo animation + await Future.delayed(const Duration(milliseconds: 300)); + if (mounted) _logoController.forward(); + + // Start version animation after logo starts + await Future.delayed(const Duration(milliseconds: 600)); + if (mounted) _versionController.forward(); + + // Navigate to home screen after all animations complete + await Future.delayed(const Duration(milliseconds: 2000)); + if (mounted) { + _navigateToHome(); + } + } + + void _navigateToHome() { + // Uncomment dan sesuaikan dengan route yang ada + // context.router.replace(const HomeRoute()); + } + + @override + void dispose() { + _logoController.dispose(); + _versionController.dispose(); + _backgroundController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( - body: Center( - child: Text("Splash Page"), + body: AnimatedBuilder( + animation: Listenable.merge([ + _logoController, + _versionController, + _backgroundController, + ]), + builder: (context, child) { + // Clamp values to prevent opacity errors + final logoOpacity = _logoAnimation.value.clamp(0.0, 1.0); + final versionOpacity = _versionAnimation.value.clamp(0.0, 1.0); + final backgroundOpacity = _backgroundAnimation.value.clamp(0.0, 1.0); + + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + AppColor.primaryWithOpacity(backgroundOpacity), + AppColor.primaryWithOpacity(backgroundOpacity * 0.8), + ], + ), + ), + child: Stack( + children: [ + // Logo di tengah + Center( + child: Transform.scale( + scale: logoOpacity, + child: Opacity( + opacity: logoOpacity, + child: Container( + width: 150, + height: 150, + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 30, + offset: const Offset(0, 15), + ), + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(AppValue.radius), + child: Assets.images.logo.image(fit: BoxFit.cover), + ), + ), + ), + ), + ), + + // Version di bagian bawah + Positioned( + bottom: 60, + left: 0, + right: 0, + child: Transform.translate( + offset: Offset(0, 20 * (1 - versionOpacity)), + child: Opacity( + opacity: versionOpacity, + child: Text( + 'Version 1.0.0', + style: AppStyle.md.copyWith(color: AppColor.textLight), + textAlign: TextAlign.center, + ), + ), + ), + ), + ], + ), + ); + }, ), ); } From 318d22d7c981ca0c6b8e524fae03d2e988a5ab3f Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 17:13:02 +0700 Subject: [PATCH 002/108] feat: login page --- lib/common/theme/app_style.dart | 18 +- lib/common/theme/app_value.dart | 1 + lib/common/theme/theme.dart | 39 +++- lib/common/validator/validator.dart | 28 +++ .../components/button/button.dart | 7 + .../components/button/elevated_button.dart | 67 ++++++ lib/presentation/components/field/field.dart | 9 + .../field/password_text_form_field.dart | 69 ++++++ .../components/field/text_form_field.dart | 46 ++++ .../components/spacer/spacer.dart | 23 ++ .../pages/auth/login/login_page.dart | 217 ++++++++++++++++++ .../pages/auth/login/widgets/email_field.dart | 21 ++ .../auth/login/widgets/password_field.dart | 21 ++ lib/presentation/pages/splash_page.dart | 3 +- lib/presentation/router/app_router.dart | 9 +- lib/presentation/router/app_router.gr.dart | 32 ++- pubspec.lock | 16 ++ pubspec.yaml | 2 + 18 files changed, 606 insertions(+), 22 deletions(-) create mode 100644 lib/common/validator/validator.dart create mode 100644 lib/presentation/components/button/button.dart create mode 100644 lib/presentation/components/button/elevated_button.dart create mode 100644 lib/presentation/components/field/field.dart create mode 100644 lib/presentation/components/field/password_text_form_field.dart create mode 100644 lib/presentation/components/field/text_form_field.dart create mode 100644 lib/presentation/components/spacer/spacer.dart create mode 100644 lib/presentation/pages/auth/login/login_page.dart create mode 100644 lib/presentation/pages/auth/login/widgets/email_field.dart create mode 100644 lib/presentation/pages/auth/login/widgets/password_field.dart diff --git a/lib/common/theme/app_style.dart b/lib/common/theme/app_style.dart index 822a346..246e087 100644 --- a/lib/common/theme/app_style.dart +++ b/lib/common/theme/app_style.dart @@ -7,21 +7,21 @@ class AppStyle { static TextStyle md = TextStyle(color: AppColor.textPrimary, fontSize: 14); - static TextStyle lg = TextStyle(color: AppColor.textPrimary, fontSize: 18); + static TextStyle lg = TextStyle(color: AppColor.textPrimary, fontSize: 16); - static TextStyle xl = TextStyle(color: AppColor.textPrimary, fontSize: 20); + static TextStyle xl = TextStyle(color: AppColor.textPrimary, fontSize: 18); - static TextStyle xxl = TextStyle(color: AppColor.textPrimary, fontSize: 22); + static TextStyle xxl = TextStyle(color: AppColor.textPrimary, fontSize: 20); - static TextStyle h6 = TextStyle(color: AppColor.textPrimary, fontSize: 24); + static TextStyle h6 = TextStyle(color: AppColor.textPrimary, fontSize: 22); - static TextStyle h5 = TextStyle(color: AppColor.textPrimary, fontSize: 26); + static TextStyle h5 = TextStyle(color: AppColor.textPrimary, fontSize: 24); - static TextStyle h4 = TextStyle(color: AppColor.textPrimary, fontSize: 28); + static TextStyle h4 = TextStyle(color: AppColor.textPrimary, fontSize: 26); - static TextStyle h3 = TextStyle(color: AppColor.textPrimary, fontSize: 30); + static TextStyle h3 = TextStyle(color: AppColor.textPrimary, fontSize: 28); - static TextStyle h2 = TextStyle(color: AppColor.textPrimary, fontSize: 32); + static TextStyle h2 = TextStyle(color: AppColor.textPrimary, fontSize: 30); - static TextStyle h1 = TextStyle(color: AppColor.textPrimary, fontSize: 34); + static TextStyle h1 = TextStyle(color: AppColor.textPrimary, fontSize: 32); } diff --git a/lib/common/theme/app_value.dart b/lib/common/theme/app_value.dart index 1a2d8d8..53ed1a6 100644 --- a/lib/common/theme/app_value.dart +++ b/lib/common/theme/app_value.dart @@ -2,6 +2,7 @@ part of 'theme.dart'; class AppValue { static const double padding = 16.0; + static const double margin = 16.0; static const double radius = 8.0; static const double elevation = 4.0; } diff --git a/lib/common/theme/theme.dart b/lib/common/theme/theme.dart index 4d69f35..0eb846f 100644 --- a/lib/common/theme/theme.dart +++ b/lib/common/theme/theme.dart @@ -1,11 +1,46 @@ import 'package:flutter/material.dart'; +import '../../presentation/components/assets/fonts.gen.dart'; + part 'app_color.dart'; part 'app_style.dart'; part 'app_value.dart'; class ThemeApp { static ThemeData get theme => ThemeData( - useMaterial3: true, - ); + useMaterial3: true, + scaffoldBackgroundColor: AppColor.background, + fontFamily: FontFamily.quicksand, + inputDecorationTheme: InputDecorationTheme( + hintStyle: AppStyle.md.copyWith(color: AppColor.textSecondary), + contentPadding: const EdgeInsets.symmetric(horizontal: AppValue.padding), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppValue.radius), + borderSide: const BorderSide(color: AppColor.border), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppValue.radius), + borderSide: const BorderSide(color: AppColor.border), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppValue.radius), + borderSide: const BorderSide(color: AppColor.primary, width: 2), + ), + errorBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppValue.radius), + borderSide: const BorderSide(color: AppColor.error), + ), + filled: true, + fillColor: AppColor.backgroundLight, + ), + elevatedButtonTheme: ElevatedButtonThemeData( + style: ElevatedButton.styleFrom( + backgroundColor: Colors.transparent, + shadowColor: Colors.transparent, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppValue.radius), + ), + ), + ), + ); } diff --git a/lib/common/validator/validator.dart b/lib/common/validator/validator.dart new file mode 100644 index 0000000..63589f0 --- /dev/null +++ b/lib/common/validator/validator.dart @@ -0,0 +1,28 @@ +class AppValidator { + static String? validateEmail(String? value) { + if (value == null || value.isEmpty) { + return 'Email wajib diisi'; + } + final emailRegex = RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$'); + if (!emailRegex.hasMatch(value)) { + return 'Format email tidak valid'; + } + return null; + } + + static String? validatePassword(String? value) { + if (value == null || value.isEmpty) { + return 'Password wajib diisi'; + } + if (value.length < 8) { + return 'Password minimal 8 karakter'; + } + // if (!RegExp(r'[A-Z]').hasMatch(value)) { + // return 'Password harus mengandung huruf besar'; + // } + // if (!RegExp(r'[0-9]').hasMatch(value)) { + // return 'Password harus mengandung angka'; + // } + return null; + } +} diff --git a/lib/presentation/components/button/button.dart b/lib/presentation/components/button/button.dart new file mode 100644 index 0000000..881669f --- /dev/null +++ b/lib/presentation/components/button/button.dart @@ -0,0 +1,7 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; + +import '../../../common/theme/theme.dart'; +import '../spacer/spacer.dart'; + +part 'elevated_button.dart'; diff --git a/lib/presentation/components/button/elevated_button.dart b/lib/presentation/components/button/elevated_button.dart new file mode 100644 index 0000000..b86a65f --- /dev/null +++ b/lib/presentation/components/button/elevated_button.dart @@ -0,0 +1,67 @@ +part of 'button.dart'; + +class AppElevatedButton extends StatelessWidget { + const AppElevatedButton({ + super.key, + required this.text, + required this.isLoading, + required this.onPressed, + this.height = 50, + }); + + final String text; + final bool isLoading; + final Function()? onPressed; + final double height; + + @override + Widget build(BuildContext context) { + return Container( + height: height, + decoration: BoxDecoration( + gradient: const LinearGradient(colors: AppColor.primaryGradient), + borderRadius: BorderRadius.circular(AppValue.radius), + boxShadow: [ + BoxShadow( + color: AppColor.primaryWithOpacity(0.3), + blurRadius: 15, + offset: const Offset(0, 8), + ), + ], + ), + child: ElevatedButton( + onPressed: onPressed, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.transparent, + shadowColor: Colors.transparent, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + child: isLoading + ? Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + 'Loading', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.white, + ), + ), + SpaceWidth(8), + SpinKitCircle(color: AppColor.white, size: 24.0), + ], + ) + : Text( + text, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.white, + ), + ), + ), + ); + } +} diff --git a/lib/presentation/components/field/field.dart b/lib/presentation/components/field/field.dart new file mode 100644 index 0000000..ed5287d --- /dev/null +++ b/lib/presentation/components/field/field.dart @@ -0,0 +1,9 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icon.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../common/theme/theme.dart'; +import '../spacer/spacer.dart'; + +part 'password_text_form_field.dart'; +part 'text_form_field.dart'; diff --git a/lib/presentation/components/field/password_text_form_field.dart b/lib/presentation/components/field/password_text_form_field.dart new file mode 100644 index 0000000..7da90f0 --- /dev/null +++ b/lib/presentation/components/field/password_text_form_field.dart @@ -0,0 +1,69 @@ +part of 'field.dart'; + +class AppPasswordTextFormField extends StatefulWidget { + const AppPasswordTextFormField({ + super.key, + this.controller, + required this.title, + this.hintText, + required this.prefixIcon, + this.validator, + }); + + final TextEditingController? controller; + final String title; + final String? hintText; + final IconData prefixIcon; + final String? Function(String?)? validator; + + @override + State createState() => + _AppPasswordTextFormFieldState(); +} + +class _AppPasswordTextFormFieldState extends State { + bool _obscurePassword = true; + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + widget.title, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + ), + const SpaceHeight(8), + TextFormField( + controller: widget.controller, + keyboardType: TextInputType.emailAddress, + cursorColor: AppColor.primary, + obscureText: _obscurePassword, + style: AppStyle.md.copyWith(color: AppColor.textPrimary), + decoration: InputDecoration( + hintText: widget.hintText, + prefixIcon: LineIcon( + widget.prefixIcon, + color: AppColor.textSecondary, + ), + suffixIcon: IconButton( + padding: EdgeInsets.zero, + icon: Icon( + _obscurePassword ? LineIcons.eye : LineIcons.eyeSlash, + color: AppColor.textSecondary, + ), + onPressed: () { + setState(() { + _obscurePassword = !_obscurePassword; + }); + }, + ), + ), + validator: widget.validator, + ), + ], + ); + } +} diff --git a/lib/presentation/components/field/text_form_field.dart b/lib/presentation/components/field/text_form_field.dart new file mode 100644 index 0000000..2400c8e --- /dev/null +++ b/lib/presentation/components/field/text_form_field.dart @@ -0,0 +1,46 @@ +part of 'field.dart'; + +class AppTextFormField extends StatelessWidget { + const AppTextFormField({ + super.key, + this.controller, + required this.title, + this.hintText, + required this.prefixIcon, + this.validator, + }); + + final TextEditingController? controller; + final String title; + final String? hintText; + final IconData prefixIcon; + final String? Function(String?)? validator; + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + ), + const SpaceHeight(8), + TextFormField( + controller: controller, + keyboardType: TextInputType.emailAddress, + cursorColor: AppColor.primary, + style: AppStyle.md.copyWith(color: AppColor.textPrimary), + decoration: InputDecoration( + hintText: hintText, + prefixIcon: LineIcon(prefixIcon, color: AppColor.textSecondary), + ), + validator: validator, + ), + ], + ); + } +} diff --git a/lib/presentation/components/spacer/spacer.dart b/lib/presentation/components/spacer/spacer.dart new file mode 100644 index 0000000..3732df0 --- /dev/null +++ b/lib/presentation/components/spacer/spacer.dart @@ -0,0 +1,23 @@ +import 'package:flutter/material.dart'; + +class SpaceHeight extends StatelessWidget { + const SpaceHeight(this.height, {super.key}); + + final double height; + + @override + Widget build(BuildContext context) { + return SizedBox(height: height); + } +} + +class SpaceWidth extends StatelessWidget { + const SpaceWidth(this.width, {super.key}); + + final double width; + + @override + Widget build(BuildContext context) { + return SizedBox(width: width); + } +} diff --git a/lib/presentation/pages/auth/login/login_page.dart b/lib/presentation/pages/auth/login/login_page.dart new file mode 100644 index 0000000..7495a14 --- /dev/null +++ b/lib/presentation/pages/auth/login/login_page.dart @@ -0,0 +1,217 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/button/button.dart'; +import '../../../components/spacer/spacer.dart'; +import 'widgets/email_field.dart'; +import 'widgets/password_field.dart'; + +@RoutePage() +class LoginPage extends StatefulWidget { + const LoginPage({super.key}); + + @override + State createState() => _LoginPageState(); +} + +class _LoginPageState extends State with TickerProviderStateMixin { + final _formKey = GlobalKey(); + final _emailController = TextEditingController(); + final _passwordController = TextEditingController(); + + bool _isLoading = false; + + late AnimationController _fadeController; + late AnimationController _slideController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + + @override + void initState() { + super.initState(); + + _fadeController = AnimationController( + duration: const Duration(milliseconds: 1500), + vsync: this, + ); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.easeOutCubic), + ); + _emailController.text = 'test@example.com'; + _passwordController.text = 'password'; + _fadeController.forward(); + _slideController.forward(); + } + + @override + void dispose() { + _fadeController.dispose(); + _slideController.dispose(); + _emailController.dispose(); + _passwordController.dispose(); + super.dispose(); + } + + Future _handleLogin() async { + if (_formKey.currentState!.validate()) { + setState(() { + _isLoading = true; + }); + + // Simulasi proses login + await Future.delayed(const Duration(seconds: 2)); + + setState(() { + _isLoading = false; + }); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: AppColor.primaryGradient, + ), + ), + child: SafeArea( + child: Center( + child: SingleChildScrollView( + padding: EdgeInsets.symmetric(horizontal: AppValue.padding), + child: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _buildLogo(), + SpaceHeight(48), + _buildLoginCard(), + SpaceHeight(24), + _buildFooter(), + ], + ), + ), + ), + ), + ), + ), + ), + ); + } + + Widget _buildLogo() { + return Column( + children: [ + Text( + 'Welcome Back', + style: AppStyle.h1.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.white, + ), + ), + const SpaceHeight(8), + Text( + 'Sign in to your account', + style: AppStyle.lg.copyWith(color: AppColor.textLight), + ), + ], + ); + } + + Widget _buildLoginCard() { + return Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 32, horizontal: 24), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(24), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.1), + blurRadius: 30, + offset: const Offset(0, 15), + ), + ], + ), + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + LoginEmailField(controller: _emailController), + const SpaceHeight(24), + LoginPasswordField(controller: _passwordController), + const SpaceHeight(16), + _buildForgetPassword(), + const SpaceHeight(32), + _buildLoginButton(), + ], + ), + ), + ); + } + + Widget _buildForgetPassword() { + return Align( + alignment: Alignment.centerRight, + child: GestureDetector( + onTap: () {}, + child: Text( + 'Forgot Password?', + style: AppStyle.md.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.w600, + ), + ), + ), + ); + } + + Widget _buildLoginButton() { + return AppElevatedButton( + text: 'Sign In', + isLoading: _isLoading, + onPressed: _isLoading ? null : _handleLogin, + ); + } + + Widget _buildFooter() { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Don't have an account? ", + style: AppStyle.md.copyWith(color: AppColor.textLight), + ), + GestureDetector( + onTap: () {}, + child: Text( + 'Sign Up', + style: AppStyle.md.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/auth/login/widgets/email_field.dart b/lib/presentation/pages/auth/login/widgets/email_field.dart new file mode 100644 index 0000000..5d96426 --- /dev/null +++ b/lib/presentation/pages/auth/login/widgets/email_field.dart @@ -0,0 +1,21 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../../common/validator/validator.dart'; +import '../../../../components/field/field.dart'; + +class LoginEmailField extends StatelessWidget { + final TextEditingController? controller; + const LoginEmailField({super.key, this.controller}); + + @override + Widget build(BuildContext context) { + return AppTextFormField( + title: 'Email', + hintText: 'Enter your email', + prefixIcon: LineIcons.envelope, + validator: AppValidator.validateEmail, + controller: controller, + ); + } +} diff --git a/lib/presentation/pages/auth/login/widgets/password_field.dart b/lib/presentation/pages/auth/login/widgets/password_field.dart new file mode 100644 index 0000000..df11f0a --- /dev/null +++ b/lib/presentation/pages/auth/login/widgets/password_field.dart @@ -0,0 +1,21 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../../common/validator/validator.dart'; +import '../../../../components/field/field.dart'; + +class LoginPasswordField extends StatelessWidget { + final TextEditingController controller; + const LoginPasswordField({super.key, required this.controller}); + + @override + Widget build(BuildContext context) { + return AppPasswordTextFormField( + title: 'Password', + prefixIcon: LineIcons.lock, + hintText: 'Enter your password', + validator: AppValidator.validatePassword, + controller: controller, + ); + } +} diff --git a/lib/presentation/pages/splash_page.dart b/lib/presentation/pages/splash_page.dart index f838bf4..a2a8693 100644 --- a/lib/presentation/pages/splash_page.dart +++ b/lib/presentation/pages/splash_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import '../../common/theme/theme.dart'; import '../components/assets/assets.gen.dart'; +import '../router/app_router.gr.dart'; @RoutePage() class SplashPage extends StatefulWidget { @@ -79,7 +80,7 @@ class _SplashPageState extends State with TickerProviderStateMixin { void _navigateToHome() { // Uncomment dan sesuaikan dengan route yang ada - // context.router.replace(const HomeRoute()); + context.router.replace(const LoginRoute()); } @override diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 4c75faf..7affb17 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -5,7 +5,10 @@ import 'app_router.gr.dart'; class AppRouter extends RootStackRouter { @override List get routes => [ - // Splash - AutoRoute(page: SplashRoute.page, initial: true), - ]; + // Splash + AutoRoute(page: SplashRoute.page, initial: true), + + // Auth + AutoRoute(page: LoginRoute.page), + ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 54491c3..4d0bb28 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,22 +9,40 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/presentation/pages/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i1; -import 'package:auto_route/auto_route.dart' as _i2; +import 'package:apskel_owner_flutter/presentation/pages/splash_page.dart' + as _i2; +import 'package:auto_route/auto_route.dart' as _i3; /// generated route for -/// [_i1.SplashPage] -class SplashRoute extends _i2.PageRouteInfo { - const SplashRoute({List<_i2.PageRouteInfo>? children}) +/// [_i1.LoginPage] +class LoginRoute extends _i3.PageRouteInfo { + const LoginRoute({List<_i3.PageRouteInfo>? children}) + : super(LoginRoute.name, initialChildren: children); + + static const String name = 'LoginRoute'; + + static _i3.PageInfo page = _i3.PageInfo( + name, + builder: (data) { + return const _i1.LoginPage(); + }, + ); +} + +/// generated route for +/// [_i2.SplashPage] +class SplashRoute extends _i3.PageRouteInfo { + const SplashRoute({List<_i3.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i2.PageInfo page = _i2.PageInfo( + static _i3.PageInfo page = _i3.PageInfo( name, builder: (data) { - return const _i1.SplashPage(); + return const _i2.SplashPage(); }, ); } diff --git a/pubspec.lock b/pubspec.lock index 01684df..0678b10 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -366,6 +366,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_spinkit: + dependency: "direct main" + description: + name: flutter_spinkit + sha256: "77850df57c00dc218bfe96071d576a8babec24cf58b2ed121c83cca4a2fdce7f" + url: "https://pub.dev" + source: hosted + version: "5.2.2" flutter_svg: dependency: "direct main" description: @@ -560,6 +568,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + line_icons: + dependency: "direct main" + description: + name: line_icons + sha256: "249d781d922f5437ac763d9c8f5a02cf5b499a6dc3f85e4b92e074cff0a932ab" + url: "https://pub.dev" + source: hosted + version: "2.0.3" lints: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c73810e..808f716 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -28,6 +28,8 @@ dependencies: json_annotation: ^4.9.0 shared_preferences: ^2.5.3 awesome_dio_interceptor: ^1.3.0 + line_icons: ^2.0.3 + flutter_spinkit: ^5.2.2 dev_dependencies: flutter_test: From a9967a366fd85d26321b1d26700c44beea8a68b1 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 17:15:16 +0700 Subject: [PATCH 003/108] refactor: splash --- lib/presentation/pages/{ => splash}/splash_page.dart | 6 +++--- lib/presentation/router/app_router.gr.dart | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename lib/presentation/pages/{ => splash}/splash_page.dart (97%) diff --git a/lib/presentation/pages/splash_page.dart b/lib/presentation/pages/splash/splash_page.dart similarity index 97% rename from lib/presentation/pages/splash_page.dart rename to lib/presentation/pages/splash/splash_page.dart index a2a8693..9715304 100644 --- a/lib/presentation/pages/splash_page.dart +++ b/lib/presentation/pages/splash/splash_page.dart @@ -1,9 +1,9 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; -import '../../common/theme/theme.dart'; -import '../components/assets/assets.gen.dart'; -import '../router/app_router.gr.dart'; +import '../../../common/theme/theme.dart'; +import '../../components/assets/assets.gen.dart'; +import '../../router/app_router.gr.dart'; @RoutePage() class SplashPage extends StatefulWidget { diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 4d0bb28..f55f644 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -11,7 +11,7 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i1; -import 'package:apskel_owner_flutter/presentation/pages/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i2; import 'package:auto_route/auto_route.dart' as _i3; From f8477d8a8c60f4423eb29e07f87eeec193e55714 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 17:17:44 +0700 Subject: [PATCH 004/108] refactor: package name and app anem --- android/app/build.gradle.kts | 4 ++-- android/app/src/main/AndroidManifest.xml | 4 +++- .../kotlin/com/example/apskel_owner_flutter/MainActivity.kt | 2 +- ios/Runner/Info.plist | 2 +- linux/CMakeLists.txt | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index a733c42..a64dad4 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - namespace = "com.example.apskel_owner_flutter" + namespace = "com.apskel.apskel_owner" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion @@ -21,7 +21,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.example.apskel_owner_flutter" + applicationId = "com.apskel.apskel_owner" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8ccc061..3d9eb2d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Apskel Owner Flutter + Apskel Owner CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 80ef900..3779ef0 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -7,7 +7,7 @@ project(runner LANGUAGES CXX) set(BINARY_NAME "apskel_owner_flutter") # The unique GTK application identifier for this application. See: # https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.apskel_owner_flutter") +set(APPLICATION_ID "com.apskel.apskel_owner") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. From ae1293d28d0b7c3f97b389822b3065c11d3c4b8a Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 17:36:41 +0700 Subject: [PATCH 005/108] feat: main page --- lib/common/theme/theme.dart | 13 ++ .../pages/auth/login/login_page.dart | 3 + lib/presentation/pages/home/home_page.dart | 12 ++ lib/presentation/pages/main/main_page.dart | 27 ++++ .../pages/main/widgets/bottom_navbar.dart | 50 ++++++++ .../pages/profile/profile_page.dart | 12 ++ .../pages/report/report_page.dart | 12 ++ .../pages/transaction/transaction_page.dart | 12 ++ lib/presentation/router/app_router.dart | 11 ++ lib/presentation/router/app_router.gr.dart | 116 ++++++++++++++++-- 10 files changed, 255 insertions(+), 13 deletions(-) create mode 100644 lib/presentation/pages/home/home_page.dart create mode 100644 lib/presentation/pages/main/main_page.dart create mode 100644 lib/presentation/pages/main/widgets/bottom_navbar.dart create mode 100644 lib/presentation/pages/profile/profile_page.dart create mode 100644 lib/presentation/pages/report/report_page.dart create mode 100644 lib/presentation/pages/transaction/transaction_page.dart diff --git a/lib/common/theme/theme.dart b/lib/common/theme/theme.dart index 0eb846f..f8c9585 100644 --- a/lib/common/theme/theme.dart +++ b/lib/common/theme/theme.dart @@ -42,5 +42,18 @@ class ThemeApp { ), ), ), + bottomNavigationBarTheme: BottomNavigationBarThemeData( + backgroundColor: AppColor.background, + selectedItemColor: AppColor.primary, + unselectedItemColor: AppColor.textSecondary, + selectedLabelStyle: AppStyle.md.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.w600, + ), + unselectedLabelStyle: AppStyle.md.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), ); } diff --git a/lib/presentation/pages/auth/login/login_page.dart b/lib/presentation/pages/auth/login/login_page.dart index 7495a14..4d487fa 100644 --- a/lib/presentation/pages/auth/login/login_page.dart +++ b/lib/presentation/pages/auth/login/login_page.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/button/button.dart'; import '../../../components/spacer/spacer.dart'; +import '../../../router/app_router.gr.dart'; import 'widgets/email_field.dart'; import 'widgets/password_field.dart'; @@ -76,6 +77,8 @@ class _LoginPageState extends State with TickerProviderStateMixin { setState(() { _isLoading = false; }); + + context.router.replace(const MainRoute()); } } diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart new file mode 100644 index 0000000..7e4b3ad --- /dev/null +++ b/lib/presentation/pages/home/home_page.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +@RoutePage() +class HomePage extends StatelessWidget { + const HomePage({super.key}); + + @override + Widget build(BuildContext context) { + return Center(child: Text('HomePage')); + } +} diff --git a/lib/presentation/pages/main/main_page.dart b/lib/presentation/pages/main/main_page.dart new file mode 100644 index 0000000..6232fc7 --- /dev/null +++ b/lib/presentation/pages/main/main_page.dart @@ -0,0 +1,27 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +import '../../router/app_router.gr.dart'; +import 'widgets/bottom_navbar.dart'; + +@RoutePage() +class MainPage extends StatelessWidget { + const MainPage({super.key}); + + @override + Widget build(BuildContext context) { + return AutoTabsRouter.pageView( + routes: [HomeRoute(), TransactionRoute(), ReportRoute(), ProfileRoute()], + physics: const NeverScrollableScrollPhysics(), + builder: (context, child, pageController) { + final tabsRouter = AutoTabsRouter.of(context); + + return Scaffold( + resizeToAvoidBottomInset: false, + body: child, + bottomNavigationBar: MainBottomNavbar(tabsRouter: tabsRouter), + ); + }, + ); + } +} diff --git a/lib/presentation/pages/main/widgets/bottom_navbar.dart b/lib/presentation/pages/main/widgets/bottom_navbar.dart new file mode 100644 index 0000000..0749a45 --- /dev/null +++ b/lib/presentation/pages/main/widgets/bottom_navbar.dart @@ -0,0 +1,50 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icon.dart'; +import 'package:line_icons/line_icons.dart'; + +class MainBottomNavbar extends StatefulWidget { + final TabsRouter tabsRouter; + + const MainBottomNavbar({super.key, required this.tabsRouter}); + + @override + State createState() => _MainBottomNavbarState(); +} + +class _MainBottomNavbarState extends State { + @override + Widget build(BuildContext context) { + return BottomNavigationBar( + currentIndex: widget.tabsRouter.activeIndex, + onTap: (index) { + setState(() { + widget.tabsRouter.setActiveIndex(index); + }); + }, + type: BottomNavigationBarType.fixed, + items: [ + BottomNavigationBarItem( + icon: LineIcon(LineIcons.home), + label: 'Home', + tooltip: 'Home', + ), + BottomNavigationBarItem( + icon: LineIcon(LineIcons.moneyBill), + label: 'Transaction', + tooltip: 'Transaction', + ), + BottomNavigationBarItem( + icon: LineIcon(LineIcons.barChart), + label: 'Report', + tooltip: 'Report', + ), + BottomNavigationBarItem( + icon: LineIcon(LineIcons.user), + label: 'Profile', + tooltip: 'Profile', + ), + ], + ); + } +} diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart new file mode 100644 index 0000000..0b5054b --- /dev/null +++ b/lib/presentation/pages/profile/profile_page.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +@RoutePage() +class ProfilePage extends StatelessWidget { + const ProfilePage({super.key}); + + @override + Widget build(BuildContext context) { + return Center(child: Text('ProfilePage')); + } +} diff --git a/lib/presentation/pages/report/report_page.dart b/lib/presentation/pages/report/report_page.dart new file mode 100644 index 0000000..da379df --- /dev/null +++ b/lib/presentation/pages/report/report_page.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +@RoutePage() +class ReportPage extends StatelessWidget { + const ReportPage({super.key}); + + @override + Widget build(BuildContext context) { + return Center(child: Text('ReportPage')); + } +} diff --git a/lib/presentation/pages/transaction/transaction_page.dart b/lib/presentation/pages/transaction/transaction_page.dart new file mode 100644 index 0000000..dd46d95 --- /dev/null +++ b/lib/presentation/pages/transaction/transaction_page.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +@RoutePage() +class TransactionPage extends StatelessWidget { + const TransactionPage({super.key}); + + @override + Widget build(BuildContext context) { + return Center(child: Text('TransactionPage')); + } +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 7affb17..57f4892 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -10,5 +10,16 @@ class AppRouter extends RootStackRouter { // Auth AutoRoute(page: LoginRoute.page), + + // Main + AutoRoute( + page: MainRoute.page, + children: [ + AutoRoute(page: HomeRoute.page), + AutoRoute(page: TransactionRoute.page), + AutoRoute(page: ReportRoute.page), + AutoRoute(page: ProfileRoute.page), + ], + ), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index f55f644..2972cc6 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -10,39 +10,129 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i1; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i2; -import 'package:auto_route/auto_route.dart' as _i3; +import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' + as _i1; +import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' + as _i3; +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' + as _i4; +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' + as _i5; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i6; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i7; +import 'package:auto_route/auto_route.dart' as _i8; /// generated route for -/// [_i1.LoginPage] -class LoginRoute extends _i3.PageRouteInfo { - const LoginRoute({List<_i3.PageRouteInfo>? children}) +/// [_i1.HomePage] +class HomeRoute extends _i8.PageRouteInfo { + const HomeRoute({List<_i8.PageRouteInfo>? children}) + : super(HomeRoute.name, initialChildren: children); + + static const String name = 'HomeRoute'; + + static _i8.PageInfo page = _i8.PageInfo( + name, + builder: (data) { + return const _i1.HomePage(); + }, + ); +} + +/// generated route for +/// [_i2.LoginPage] +class LoginRoute extends _i8.PageRouteInfo { + const LoginRoute({List<_i8.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i3.PageInfo page = _i3.PageInfo( + static _i8.PageInfo page = _i8.PageInfo( name, builder: (data) { - return const _i1.LoginPage(); + return const _i2.LoginPage(); }, ); } /// generated route for -/// [_i2.SplashPage] -class SplashRoute extends _i3.PageRouteInfo { - const SplashRoute({List<_i3.PageRouteInfo>? children}) +/// [_i3.MainPage] +class MainRoute extends _i8.PageRouteInfo { + const MainRoute({List<_i8.PageRouteInfo>? children}) + : super(MainRoute.name, initialChildren: children); + + static const String name = 'MainRoute'; + + static _i8.PageInfo page = _i8.PageInfo( + name, + builder: (data) { + return const _i3.MainPage(); + }, + ); +} + +/// generated route for +/// [_i4.ProfilePage] +class ProfileRoute extends _i8.PageRouteInfo { + const ProfileRoute({List<_i8.PageRouteInfo>? children}) + : super(ProfileRoute.name, initialChildren: children); + + static const String name = 'ProfileRoute'; + + static _i8.PageInfo page = _i8.PageInfo( + name, + builder: (data) { + return const _i4.ProfilePage(); + }, + ); +} + +/// generated route for +/// [_i5.ReportPage] +class ReportRoute extends _i8.PageRouteInfo { + const ReportRoute({List<_i8.PageRouteInfo>? children}) + : super(ReportRoute.name, initialChildren: children); + + static const String name = 'ReportRoute'; + + static _i8.PageInfo page = _i8.PageInfo( + name, + builder: (data) { + return const _i5.ReportPage(); + }, + ); +} + +/// generated route for +/// [_i6.SplashPage] +class SplashRoute extends _i8.PageRouteInfo { + const SplashRoute({List<_i8.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i3.PageInfo page = _i3.PageInfo( + static _i8.PageInfo page = _i8.PageInfo( name, builder: (data) { - return const _i2.SplashPage(); + return const _i6.SplashPage(); + }, + ); +} + +/// generated route for +/// [_i7.TransactionPage] +class TransactionRoute extends _i8.PageRouteInfo { + const TransactionRoute({List<_i8.PageRouteInfo>? children}) + : super(TransactionRoute.name, initialChildren: children); + + static const String name = 'TransactionRoute'; + + static _i8.PageInfo page = _i8.PageInfo( + name, + builder: (data) { + return const _i7.TransactionPage(); }, ); } From f0dac56802a25d46776e1e3b5dc0d67cdfe2bee9 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 20:44:27 +0700 Subject: [PATCH 006/108] feat: home page --- android/app/build.gradle.kts | 2 +- lib/common/theme/app_color.dart | 2 +- lib/common/theme/app_value.dart | 7 +- lib/common/theme/theme.dart | 8 + lib/presentation/pages/home/home_page.dart | 216 +++++++++++++- .../pages/home/widgets/activity.dart | 95 ++++++ .../pages/home/widgets/activity_tile.dart | 103 +++++++ .../pages/home/widgets/feature.dart | 96 ++++++ .../pages/home/widgets/feature_tile.dart | 62 ++++ .../pages/home/widgets/header.dart | 186 ++++++++++++ .../pages/home/widgets/performance.dart | 281 ++++++++++++++++++ .../pages/home/widgets/stats.dart | 122 ++++++++ .../pages/home/widgets/stats_tile.dart | 111 +++++++ lib/presentation/pages/home/widgets/task.dart | 96 ++++++ .../pages/home/widgets/task_tile.dart | 68 +++++ 15 files changed, 1447 insertions(+), 8 deletions(-) create mode 100644 lib/presentation/pages/home/widgets/activity.dart create mode 100644 lib/presentation/pages/home/widgets/activity_tile.dart create mode 100644 lib/presentation/pages/home/widgets/feature.dart create mode 100644 lib/presentation/pages/home/widgets/feature_tile.dart create mode 100644 lib/presentation/pages/home/widgets/header.dart create mode 100644 lib/presentation/pages/home/widgets/performance.dart create mode 100644 lib/presentation/pages/home/widgets/stats.dart create mode 100644 lib/presentation/pages/home/widgets/stats_tile.dart create mode 100644 lib/presentation/pages/home/widgets/task.dart create mode 100644 lib/presentation/pages/home/widgets/task_tile.dart diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index a64dad4..fd02140 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.apskel.apskel_owner" compileSdk = flutter.compileSdkVersion - ndkVersion = flutter.ndkVersion + ndkVersion = "27.0.12077973" compileOptions { sourceCompatibility = JavaVersion.VERSION_11 diff --git a/lib/common/theme/app_color.dart b/lib/common/theme/app_color.dart index c2b1798..ab8f9b2 100644 --- a/lib/common/theme/app_color.dart +++ b/lib/common/theme/app_color.dart @@ -12,7 +12,7 @@ class AppColor { static const Color secondaryDark = Color(0xFF388E3C); // Background Colors - static const Color background = Color(0xFFF5F5F5); + static const Color background = Color(0xFFF8F9FA); static const Color backgroundLight = Color(0xFFFFFFFF); static const Color backgroundDark = Color(0xFF1A1A1A); static const Color surface = Color(0xFFFFFFFF); diff --git a/lib/common/theme/app_value.dart b/lib/common/theme/app_value.dart index 53ed1a6..327463c 100644 --- a/lib/common/theme/app_value.dart +++ b/lib/common/theme/app_value.dart @@ -1,8 +1,7 @@ part of 'theme.dart'; class AppValue { - static const double padding = 16.0; - static const double margin = 16.0; - static const double radius = 8.0; - static const double elevation = 4.0; + static const double padding = 20.0; + static const double margin = 20.0; + static const double radius = 16.0; } diff --git a/lib/common/theme/theme.dart b/lib/common/theme/theme.dart index f8c9585..fff9fac 100644 --- a/lib/common/theme/theme.dart +++ b/lib/common/theme/theme.dart @@ -55,5 +55,13 @@ class ThemeApp { fontWeight: FontWeight.w500, ), ), + appBarTheme: AppBarTheme( + backgroundColor: AppColor.white, + elevation: 1, + titleTextStyle: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.primary, + ), + ), ); } diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 7e4b3ad..879e1c8 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -1,12 +1,224 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../common/theme/theme.dart'; +import '../../components/spacer/spacer.dart'; +import 'widgets/activity.dart'; +import 'widgets/feature.dart'; +import 'widgets/header.dart'; +import 'widgets/performance.dart'; +import 'widgets/stats.dart'; +import 'widgets/task.dart'; + @RoutePage() -class HomePage extends StatelessWidget { +class HomePage extends StatefulWidget { const HomePage({super.key}); + @override + State createState() => _HomePageState(); +} + +class _HomePageState extends State with TickerProviderStateMixin { + late ScrollController _scrollController; + late AnimationController _headerAnimationController; + late AnimationController _contentAnimationController; + late AnimationController _appBarAnimationController; + + late Animation _appBarOpacityAnimation; + late Animation _appBarSlideAnimation; + + bool _showAppBar = false; + + @override + void initState() { + super.initState(); + _scrollController = ScrollController(); + _scrollController.addListener(_scrollListener); + + _headerAnimationController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _contentAnimationController = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + + // AppBar Animation Controller + _appBarAnimationController = AnimationController( + duration: const Duration(milliseconds: 300), + vsync: this, + ); + + // AppBar Animations + _appBarOpacityAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _appBarAnimationController, + curve: Curves.easeInOut, + ), + ); + + _appBarSlideAnimation = + Tween(begin: const Offset(0.0, -1.0), end: Offset.zero).animate( + CurvedAnimation( + parent: _appBarAnimationController, + curve: Curves.easeOutCubic, + ), + ); + + _startAnimations(); + } + + void _startAnimations() { + _headerAnimationController.forward(); + Future.delayed(const Duration(milliseconds: 200), () { + _contentAnimationController.forward(); + }); + } + + void _scrollListener() { + const double threshold = 200.0; + + if (_scrollController.offset > threshold && !_showAppBar) { + setState(() { + _showAppBar = true; + }); + _appBarAnimationController.forward(); + } else if (_scrollController.offset <= threshold && _showAppBar) { + _appBarAnimationController.reverse().then((_) { + if (mounted) { + setState(() { + _showAppBar = false; + }); + } + }); + } + } + + @override + void dispose() { + _scrollController.removeListener(_scrollListener); + _scrollController.dispose(); + _headerAnimationController.dispose(); + _contentAnimationController.dispose(); + _appBarAnimationController.dispose(); + super.dispose(); + } + + PreferredSizeWidget? _buildAnimatedAppBar() { + if (!_showAppBar) return null; + + return PreferredSize( + preferredSize: const Size.fromHeight(kToolbarHeight), + child: SlideTransition( + position: _appBarSlideAnimation, + child: FadeTransition( + opacity: _appBarOpacityAnimation, + child: AppBar( + title: const Text( + 'AppSkel POS Owner', + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 18, + letterSpacing: -0.5, + ), + ), + backgroundColor: AppColor.white, + foregroundColor: AppColor.textPrimary, + elevation: 0, + scrolledUnderElevation: 8, + shadowColor: AppColor.primary.withOpacity(0.1), + actions: [ + Container( + margin: const EdgeInsets.only(right: 16), + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.1), + AppColor.primaryLight.withOpacity(0.05), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: AppColor.primary.withOpacity(0.1), + width: 1, + ), + ), + child: const Icon( + Icons.notifications_none_rounded, + color: AppColor.primary, + size: 20, + ), + ), + ], + ), + ), + ), + ); + } + @override Widget build(BuildContext context) { - return Center(child: Text('HomePage')); + return Scaffold( + backgroundColor: AppColor.background, + appBar: _buildAnimatedAppBar(), + body: CustomScrollView( + controller: _scrollController, + physics: const BouncingScrollPhysics(), + slivers: [ + // Enhanced Header + SliverToBoxAdapter( + child: AnimatedBuilder( + animation: _headerAnimationController, + builder: (context, child) { + return Transform.translate( + offset: Offset( + 0, + 50 * (1 - _headerAnimationController.value), + ), + child: Opacity( + opacity: _headerAnimationController.value, + child: HomeHeader(), + ), + ); + }, + ), + ), + + // Main Content + SliverToBoxAdapter( + child: AnimatedBuilder( + animation: _contentAnimationController, + builder: (context, child) { + return Transform.translate( + offset: Offset( + 0, + 30 * (1 - _contentAnimationController.value), + ), + child: Opacity( + opacity: _contentAnimationController.value, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HomeFeature(), + HomeStats(), + HomeTask(), + HomeActivity(), + HomePerformance(), + const SpaceHeight(40), + ], + ), + ), + ); + }, + ), + ), + ], + ), + ); } } diff --git a/lib/presentation/pages/home/widgets/activity.dart b/lib/presentation/pages/home/widgets/activity.dart new file mode 100644 index 0000000..dfa5b7e --- /dev/null +++ b/lib/presentation/pages/home/widgets/activity.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import 'activity_tile.dart'; + +class HomeActivity extends StatelessWidget { + const HomeActivity({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 24, + horizontal: AppValue.padding, + ).copyWith(bottom: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + 'Aktivitas Terkini', + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + letterSpacing: -0.5, + ), + ), + TextButton.icon( + onPressed: () {}, + icon: const Icon(Icons.arrow_forward_rounded, size: 16), + label: const Text('Lihat Semua'), + style: TextButton.styleFrom( + foregroundColor: AppColor.primary, + textStyle: const TextStyle( + fontWeight: FontWeight.w600, + fontSize: 14, + ), + ), + ), + ], + ), + const SpaceHeight(16), + Container( + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.border.withOpacity(0.5)), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.04), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Column( + children: [ + HomeActivityTile( + title: 'Transaksi Berhasil', + subtitle: 'Kasir-01 โ€ข Rp 125.000', + time: '2 menit lalu', + icon: Icons.check_circle_rounded, + color: AppColor.success, + isHighlighted: true, + ), + const Divider(height: 1, color: AppColor.border), + HomeActivityTile( + title: 'Stok Menipis', + subtitle: 'Kopi Arabica โ€ข 5 unit tersisa', + time: '15 menit lalu', + icon: Icons.warning_amber_rounded, + color: AppColor.warning, + isHighlighted: false, + ), + const Divider(height: 1, color: AppColor.border), + HomeActivityTile( + title: 'Login Kasir', + subtitle: 'Sari masuk shift pagi', + time: '1 Jam lalu', + icon: Icons.login_rounded, + color: AppColor.info, + isHighlighted: false, + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/activity_tile.dart b/lib/presentation/pages/home/widgets/activity_tile.dart new file mode 100644 index 0000000..75ec095 --- /dev/null +++ b/lib/presentation/pages/home/widgets/activity_tile.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class HomeActivityTile extends StatelessWidget { + final String title; + final String subtitle; + final String time; + final IconData icon; + final Color color; + final bool isHighlighted; + const HomeActivityTile({ + super.key, + required this.title, + required this.subtitle, + required this.time, + required this.icon, + required this.color, + required this.isHighlighted, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: isHighlighted ? color.withOpacity(0.02) : Colors.transparent, + borderRadius: isHighlighted ? BorderRadius.circular(16) : null, + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color.withOpacity(0.1), color.withOpacity(0.05)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withOpacity(0.2), width: 1), + ), + child: Icon(icon, color: color, size: 20), + ), + const SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + title, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + letterSpacing: -0.2, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SpaceHeight(4), + Text( + subtitle, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + time, + style: AppStyle.xs.copyWith( + fontSize: 11, + color: AppColor.textLight, + fontWeight: FontWeight.w500, + ), + ), + if (isHighlighted) ...[ + const SpaceHeight(4), + Container( + width: 6, + height: 6, + decoration: BoxDecoration( + color: color, + shape: BoxShape.circle, + ), + ), + ], + ], + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart new file mode 100644 index 0000000..9c69b2b --- /dev/null +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../common/theme/theme.dart'; +import 'feature_tile.dart'; + +class HomeFeature extends StatelessWidget { + const HomeFeature({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.symmetric( + vertical: 24, + horizontal: AppValue.padding, + ).copyWith(bottom: 0), + padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 10), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(AppValue.radius), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.04), + blurRadius: 10, + offset: const Offset(0, 5), + spreadRadius: 0, + ), + ], + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HomeFeatureTile( + title: 'Penjualan', + color: const Color(0xFF4CAF50), + icon: LineIcons.receipt, + onTap: () {}, + ), + HomeFeatureTile( + title: 'Pembelian', + color: const Color(0xFF2196F3), + icon: LineIcons.shoppingCart, + onTap: () {}, + ), + HomeFeatureTile( + title: 'Biaya', + color: const Color(0xFF8BC34A), + icon: LineIcons.moneyCheck, + onTap: () {}, + ), + HomeFeatureTile( + title: 'Product', + color: const Color(0xFFFF9800), + icon: LineIcons.box, + onTap: () {}, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HomeFeatureTile( + title: 'Laporan', + color: const Color(0xFFE91E63), + icon: LineIcons.pieChart, + onTap: () {}, + ), + HomeFeatureTile( + title: 'Kas & Bank', + color: const Color(0xFF9C27B0), + icon: LineIcons.university, + onTap: () {}, + ), + HomeFeatureTile( + title: 'Aset Tetap', + color: const Color(0xFF00BCD4), + icon: LineIcons.businessTime, + onTap: () {}, + ), + HomeFeatureTile( + title: 'Kontak', + color: const Color(0xFFFF5722), + icon: LineIcons.userPlus, + onTap: () {}, + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/feature_tile.dart b/lib/presentation/pages/home/widgets/feature_tile.dart new file mode 100644 index 0000000..98a2a5c --- /dev/null +++ b/lib/presentation/pages/home/widgets/feature_tile.dart @@ -0,0 +1,62 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class HomeFeatureTile extends StatelessWidget { + final String title; + final IconData icon; + final Color color; + final Function() onTap; + const HomeFeatureTile({ + super.key, + required this.title, + required this.icon, + required this.color, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return Expanded( + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(AppValue.radius), + child: Container( + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 8), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 56, + height: 56, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color.withOpacity(0.1), color.withOpacity(0.05)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: color.withOpacity(0.2), width: 1), + ), + child: Icon(icon, color: color, size: 28), + ), + const SpaceHeight(12), + Text( + title, + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + letterSpacing: -0.2, + ), + textAlign: TextAlign.center, + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart new file mode 100644 index 0000000..2a2eeae --- /dev/null +++ b/lib/presentation/pages/home/widgets/header.dart @@ -0,0 +1,186 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class HomeHeader extends StatelessWidget { + const HomeHeader({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + height: 280, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary, + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + stops: const [0.0, 0.7, 1.0], + ), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], + ), + child: Stack( + children: [ + // Decorative circles + Positioned( + top: -50, + right: -50, + child: Container( + width: 150, + height: 150, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ), + Positioned( + top: 80, + right: -20, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ), + SafeArea(child: _buildContent()), + ], + ), + ); + } + + Padding _buildContent() { + return Padding( + padding: EdgeInsets.all(AppValue.padding), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + // Top bar + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'AppSkel POS Owner', + style: AppStyle.lg.copyWith( + color: AppColor.white.withOpacity(0.9), + fontWeight: FontWeight.w600, + letterSpacing: 0.3, + ), + ), + const SpaceHeight(2), + Text( + 'Dashboard', + style: AppStyle.sm.copyWith( + color: AppColor.textLight, + fontSize: 11, + fontWeight: FontWeight.w400, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, + ), + ), + child: const Icon( + Icons.notifications_none_rounded, + color: AppColor.white, + size: 20, + ), + ), + ], + ), + + const SpaceHeight(24), + + // Greeting Section + Text( + 'Selamat Pagi,', + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w500, + ), + ), + const SpaceHeight(2), + Text( + 'Vira Vania! ๐Ÿ‘‹', + style: AppStyle.h4.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w800, + letterSpacing: -0.5, + ), + ), + const SpaceHeight(8), + Text( + 'Mari tingkatkan performa bisnis Anda hari ini', + style: AppStyle.md.copyWith( + color: AppColor.white.withOpacity(0.85), + fontWeight: FontWeight.w400, + height: 1.3, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + + const SpaceHeight(16), + + // Today's highlight + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.trending_up_rounded, + color: AppColor.white, + size: 14, + ), + const SizedBox(width: 6), + Text( + 'Penjualan hari ini +25%', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/performance.dart b/lib/presentation/pages/home/widgets/performance.dart new file mode 100644 index 0000000..f128625 --- /dev/null +++ b/lib/presentation/pages/home/widgets/performance.dart @@ -0,0 +1,281 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class HomePerformance extends StatelessWidget { + const HomePerformance({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 24, + horizontal: AppValue.padding, + ).copyWith(bottom: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Performa Minggu Ini', + style: AppStyle.h6.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + letterSpacing: -0.5, + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.success.withOpacity(0.1), + AppColor.success.withOpacity(0.05), + ], + ), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColor.success.withOpacity(0.2), + width: 1, + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.arrow_upward_rounded, + color: AppColor.success, + size: 14, + ), + const SpaceWidth(4), + Text( + '89%', + style: AppStyle.sm.copyWith( + color: AppColor.success, + fontSize: 12, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + ), + ], + ), + const SpaceHeight(20), + Container( + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.border.withOpacity(0.5)), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.04), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildPerformanceBar( + 'Sen', + 0.8, + AppColor.primary, + 'Rp 2.1M', + ), + _buildPerformanceBar( + 'Sel', + 0.6, + AppColor.primary, + 'Rp 1.8M', + ), + _buildPerformanceBar( + 'Rab', + 0.9, + AppColor.success, + 'Rp 2.4M', + ), + _buildPerformanceBar( + 'Kam', + 0.7, + AppColor.primary, + 'Rp 1.9M', + ), + _buildPerformanceBar( + 'Jum', + 1.0, + AppColor.success, + 'Rp 2.5M', + ), + _buildPerformanceBar( + 'Sab', + 0.85, + AppColor.success, + 'Rp 2.2M', + ), + _buildPerformanceBar( + 'Min', + 0.4, + AppColor.textLight, + 'Rp 1.2M', + ), + ], + ), + const SpaceHeight(24), + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.05), + AppColor.primary.withOpacity(0.02), + ], + ), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: AppColor.primary.withOpacity(0.1), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Target Minggu Ini', + style: TextStyle( + fontSize: 12, + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SpaceHeight(4), + Text( + 'Rp 15.000.000', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + ), + ), + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Tercapai', + style: TextStyle( + fontSize: 12, + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SpaceHeight(4), + Row( + children: [ + Text( + '89%', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + color: AppColor.success, + ), + ), + const SpaceWidth(4), + Icon( + Icons.trending_up_rounded, + color: AppColor.success, + size: 16, + ), + ], + ), + ], + ), + ], + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildPerformanceBar( + String day, + double percentage, + Color color, + String amount, + ) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Amount label + Text( + amount, + style: AppStyle.xs.copyWith( + fontSize: 10, + fontWeight: FontWeight.w600, + color: AppColor.textSecondary, + ), + ), + const SpaceHeight(8), + // Performance bar + Container( + height: 80, + width: 12, + decoration: BoxDecoration( + color: AppColor.border.withOpacity(0.3), + borderRadius: BorderRadius.circular(6), + ), + child: Align( + alignment: Alignment.bottomCenter, + child: AnimatedContainer( + duration: Duration(milliseconds: 800 + (day.hashCode % 400)), + curve: Curves.easeOutCubic, + height: 80 * percentage, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color, color.withOpacity(0.7)], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + borderRadius: BorderRadius.circular(6), + boxShadow: [ + BoxShadow( + color: color.withOpacity(0.3), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + ), + ), + ), + const SpaceHeight(12), + // Day label + Text( + day, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w600, + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/home/widgets/stats.dart b/lib/presentation/pages/home/widgets/stats.dart new file mode 100644 index 0000000..721b78e --- /dev/null +++ b/lib/presentation/pages/home/widgets/stats.dart @@ -0,0 +1,122 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import 'stats_tile.dart'; + +class HomeStats extends StatelessWidget { + const HomeStats({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 24, + horizontal: AppValue.padding, + ).copyWith(bottom: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Ringkasan Hari Ini', + style: AppStyle.h6.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + letterSpacing: -0.5, + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColor.success.withOpacity(0.2), + width: 1, + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.trending_up_rounded, + color: AppColor.success, + size: 14, + ), + const SpaceWidth(4), + Text( + 'Live', + style: AppStyle.sm.copyWith( + color: AppColor.success, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ], + ), + const SpaceHeight(20), + Row( + children: [ + Expanded( + child: HomeStatsTile( + title: 'Total Penjualan', + value: 'Rp 2.450.000', + icon: Icons.trending_up_rounded, + color: AppColor.success, + change: '+12%', + subtitle: 'dari kemarin', + ), + ), + + const SpaceWidth(16), + Expanded( + child: HomeStatsTile( + title: 'Transaksi', + value: '85', + icon: Icons.receipt_long_rounded, + color: AppColor.info, + change: '+8%', + subtitle: 'lebih tinggi', + ), + ), + ], + ), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: HomeStatsTile( + title: 'Profit Bersih', + value: 'Rp 735.000', + icon: Icons.account_balance_wallet_rounded, + color: AppColor.warning, + change: '+15%', + subtitle: 'margin sehat', + ), + ), + const SpaceWidth(16), + Expanded( + child: HomeStatsTile( + title: 'Pelanggan Baru', + value: '42', + icon: Icons.person_add_rounded, + color: AppColor.primary, + change: '+3%', + subtitle: 'bertambah', + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/stats_tile.dart b/lib/presentation/pages/home/widgets/stats_tile.dart new file mode 100644 index 0000000..fa61461 --- /dev/null +++ b/lib/presentation/pages/home/widgets/stats_tile.dart @@ -0,0 +1,111 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class HomeStatsTile extends StatelessWidget { + final String title; + final String value; + final IconData icon; + final Color color; + final String change; + final String subtitle; + const HomeStatsTile({ + super.key, + required this.title, + required this.value, + required this.icon, + required this.color, + required this.change, + required this.subtitle, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(AppValue.radius), + border: Border.all(color: AppColor.border.withOpacity(0.5)), + boxShadow: [ + BoxShadow( + color: color.withOpacity(0.08), + blurRadius: 20, + offset: const Offset(0, 8), + spreadRadius: 0, + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color.withOpacity(0.1), color.withOpacity(0.05)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withOpacity(0.2), width: 1), + ), + child: Icon(icon, color: color, size: 20), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + change, + style: AppStyle.xs.copyWith( + color: AppColor.success, + fontWeight: FontWeight.w700, + ), + ), + ), + ], + ), + const SpaceHeight(16), + FittedBox( + fit: BoxFit.scaleDown, + alignment: Alignment.centerLeft, + child: Text( + value, + style: AppStyle.xxl.copyWith( + fontWeight: FontWeight.w800, + color: AppColor.textPrimary, + letterSpacing: -0.5, + ), + ), + ), + const SpaceHeight(4), + Text( + title, + style: AppStyle.md.copyWith( + fontSize: 13, + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SpaceHeight(2), + Text( + subtitle, + style: AppStyle.xs.copyWith( + color: AppColor.textLight, + fontWeight: FontWeight.w400, + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/task.dart b/lib/presentation/pages/home/widgets/task.dart new file mode 100644 index 0000000..5b47dab --- /dev/null +++ b/lib/presentation/pages/home/widgets/task.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import 'task_tile.dart'; + +class HomeTask extends StatelessWidget { + const HomeTask({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 24, + horizontal: AppValue.padding, + ).copyWith(bottom: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Tugas Harian', + style: AppStyle.h6.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + letterSpacing: -0.5, + ), + ), + Text( + '3/5 Selesai', + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.primary, + ), + ), + ], + ), + const SpaceHeight(20), + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(AppValue.radius), + border: Border.all(color: AppColor.border.withOpacity(0.5)), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.04), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Column( + children: [ + HomeTaskTile( + title: 'Cek stok produk terlaris', + subtitle: 'Pastikan ketersediaan produk favorit pelanggan', + isCompleted: true, + color: AppColor.success, + ), + const SpaceHeight(16), + HomeTaskTile( + title: 'Review laporan penjualan kemarin', + subtitle: 'Analisis performa dan identifikasi peluang', + isCompleted: true, + color: AppColor.success, + ), + const SpaceHeight(16), + HomeTaskTile( + title: 'Update harga produk musiman', + subtitle: 'Sesuaikan harga berdasarkan demand pasar', + isCompleted: true, + color: AppColor.success, + ), + const SpaceHeight(16), + HomeTaskTile( + title: 'Backup data transaksi', + subtitle: 'Pastikan data aman dan tersimpan', + color: AppColor.warning, + ), + const SpaceHeight(16), + HomeTaskTile( + title: 'Training tim kasir baru', + subtitle: 'Onboarding karyawan untuk shift sore', + color: AppColor.info, + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/task_tile.dart b/lib/presentation/pages/home/widgets/task_tile.dart new file mode 100644 index 0000000..f1295c4 --- /dev/null +++ b/lib/presentation/pages/home/widgets/task_tile.dart @@ -0,0 +1,68 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class HomeTaskTile extends StatelessWidget { + final String title; + final String subtitle; + final bool isCompleted; + final Color color; + const HomeTaskTile({ + super.key, + required this.title, + required this.subtitle, + this.isCompleted = false, + required this.color, + }); + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Container( + width: 24, + height: 24, + decoration: BoxDecoration( + color: isCompleted ? color : Colors.transparent, + borderRadius: BorderRadius.circular(6), + border: Border.all(color: color, width: 2), + ), + child: isCompleted + ? Icon(Icons.check_rounded, color: AppColor.white, size: 16) + : null, + ), + const SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w600, + color: isCompleted + ? AppColor.textSecondary + : AppColor.textPrimary, + decoration: isCompleted + ? TextDecoration.lineThrough + : TextDecoration.none, + ), + ), + const SpaceHeight(2), + Text( + subtitle, + style: AppStyle.sm.copyWith( + color: AppColor.textLight, + decoration: isCompleted + ? TextDecoration.lineThrough + : TextDecoration.none, + ), + ), + ], + ), + ), + ], + ); + } +} From 9458de5059fa45cfa4d01de1650c16cf44125379 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 21:20:20 +0700 Subject: [PATCH 007/108] feat: profile page --- .../pages/profile/profile_page.dart | 57 +++++++++- .../pages/profile/widgets/account_info.dart | 83 +++++++++++++++ .../pages/profile/widgets/app_setting.dart | 100 ++++++++++++++++++ .../profile/widgets/business_setting.dart | 96 +++++++++++++++++ .../pages/profile/widgets/danger_zone.dart | 58 ++++++++++ .../pages/profile/widgets/divider.dart | 18 ++++ .../pages/profile/widgets/header.dart | 80 ++++++++++++++ .../profile/widgets/profile_switch_tile.dart | 51 +++++++++ .../pages/profile/widgets/profile_tile.dart | 54 ++++++++++ .../pages/profile/widgets/support.dart | 74 +++++++++++++ 10 files changed, 669 insertions(+), 2 deletions(-) create mode 100644 lib/presentation/pages/profile/widgets/account_info.dart create mode 100644 lib/presentation/pages/profile/widgets/app_setting.dart create mode 100644 lib/presentation/pages/profile/widgets/business_setting.dart create mode 100644 lib/presentation/pages/profile/widgets/danger_zone.dart create mode 100644 lib/presentation/pages/profile/widgets/divider.dart create mode 100644 lib/presentation/pages/profile/widgets/header.dart create mode 100644 lib/presentation/pages/profile/widgets/profile_switch_tile.dart create mode 100644 lib/presentation/pages/profile/widgets/profile_tile.dart create mode 100644 lib/presentation/pages/profile/widgets/support.dart diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 0b5054b..51c95c5 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -1,12 +1,65 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../common/theme/theme.dart'; +import '../../components/spacer/spacer.dart'; +import 'widgets/account_info.dart'; +import 'widgets/app_setting.dart'; +import 'widgets/business_setting.dart'; +import 'widgets/danger_zone.dart'; +import 'widgets/header.dart'; +import 'widgets/support.dart'; + @RoutePage() -class ProfilePage extends StatelessWidget { +class ProfilePage extends StatefulWidget { const ProfilePage({super.key}); + @override + State createState() => _ProfilePageState(); +} + +class _ProfilePageState extends State { @override Widget build(BuildContext context) { - return Center(child: Text('ProfilePage')); + return Scaffold( + backgroundColor: AppColor.background, + appBar: AppBar( + title: Text( + 'Profile', + style: AppStyle.xxl.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w600, + ), + ), + backgroundColor: AppColor.primary, + elevation: 0, + actions: [ + IconButton( + icon: const Icon(Icons.edit, color: AppColor.textWhite), + onPressed: () { + // Navigate to edit profile + }, + ), + ], + ), + body: SingleChildScrollView( + child: Column( + children: [ + ProfileHeader(), + const SpaceHeight(20), + ProfileAccountInfo(), + const SpaceHeight(12), + ProfileBusinessSetting(), + const SpaceHeight(12), + ProfileAppSetting(), + const SpaceHeight(12), + ProfileSupport(), + const SpaceHeight(12), + ProfileDangerZone(), + const SpaceHeight(30), + ], + ), + ), + ); } } diff --git a/lib/presentation/pages/profile/widgets/account_info.dart b/lib/presentation/pages/profile/widgets/account_info.dart new file mode 100644 index 0000000..710c325 --- /dev/null +++ b/lib/presentation/pages/profile/widgets/account_info.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import 'divider.dart'; +import 'profile_tile.dart'; + +class ProfileAccountInfo extends StatelessWidget { + const ProfileAccountInfo({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(horizontal: AppValue.margin), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + 'Account Information', + style: AppStyle.xl.copyWith( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + + ProfileTile( + icon: Icons.email_outlined, + title: 'Email', + subtitle: 'john.doe@business.com', + onTap: () { + // Edit email + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.phone_outlined, + title: 'Phone Number', + subtitle: '+62 812 3456 7890', + onTap: () { + // Edit phone + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.location_on_outlined, + title: 'Address', + subtitle: 'Jl. Merdeka No. 123, Jakarta', + onTap: () { + // Edit address + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.calendar_today_outlined, + title: 'Member Since', + subtitle: 'January 15, 2024', + showArrow: false, + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/app_setting.dart b/lib/presentation/pages/profile/widgets/app_setting.dart new file mode 100644 index 0000000..16b8e44 --- /dev/null +++ b/lib/presentation/pages/profile/widgets/app_setting.dart @@ -0,0 +1,100 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import 'divider.dart'; +import 'profile_switch_tile.dart'; +import 'profile_tile.dart'; + +class ProfileAppSetting extends StatefulWidget { + const ProfileAppSetting({super.key}); + + @override + State createState() => _ProfileAppSettingState(); +} + +class _ProfileAppSettingState extends State { + bool _notificationsEnabled = true; + bool _darkModeEnabled = false; + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(horizontal: AppValue.margin), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + 'App Settings', + style: AppStyle.xl.copyWith( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + + ProfileSwitchTile( + icon: Icons.notifications_outlined, + title: 'Notifications', + subtitle: 'Receive app notifications', + value: _notificationsEnabled, + onChanged: (value) { + setState(() { + _notificationsEnabled = value; + }); + }, + ), + + ProfileDivider(), + + ProfileSwitchTile( + icon: Icons.dark_mode_outlined, + title: 'Dark Mode', + subtitle: 'Switch to dark theme', + value: _darkModeEnabled, + onChanged: (value) { + setState(() { + _darkModeEnabled = value; + }); + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.language_outlined, + title: 'Language', + subtitle: 'English (US)', + onTap: () { + // Show language selector + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.security_outlined, + title: 'Security & Privacy', + subtitle: 'Manage your security settings', + onTap: () { + // Navigate to security settings + }, + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/business_setting.dart b/lib/presentation/pages/profile/widgets/business_setting.dart new file mode 100644 index 0000000..c29d58d --- /dev/null +++ b/lib/presentation/pages/profile/widgets/business_setting.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import 'divider.dart'; +import 'profile_tile.dart'; + +class ProfileBusinessSetting extends StatelessWidget { + const ProfileBusinessSetting({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(horizontal: AppValue.margin), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + 'Business Settings', + style: AppStyle.xl.copyWith( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + + ProfileTile( + icon: Icons.business_outlined, + title: 'Business Information', + subtitle: 'Manage your business details', + onTap: () { + // Navigate to business info + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.people_outline, + title: 'Staff Management', + subtitle: 'Manage employees and permissions', + onTap: () { + // Navigate to staff management + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.payment_outlined, + title: 'Payment Methods', + subtitle: 'Configure payment options', + onTap: () { + // Navigate to payment settings + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.receipt_long_outlined, + title: 'Tax Settings', + subtitle: 'Configure tax rates and policies', + onTap: () { + // Navigate to tax settings + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.print_outlined, + title: 'Receipt & Print Settings', + subtitle: 'Configure receipt templates', + onTap: () { + // Navigate to print settings + }, + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/danger_zone.dart b/lib/presentation/pages/profile/widgets/danger_zone.dart new file mode 100644 index 0000000..376247f --- /dev/null +++ b/lib/presentation/pages/profile/widgets/danger_zone.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import 'profile_tile.dart'; + +class ProfileDangerZone extends StatelessWidget { + const ProfileDangerZone({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(horizontal: AppValue.margin), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.error.withOpacity(0.3)), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(16), + child: Row( + children: [ + Icon(Icons.warning_outlined, color: AppColor.error, size: 20), + const SpaceWidth(8), + Text( + 'Danger Zone', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.error, + ), + ), + ], + ), + ), + + ProfileTile( + icon: Icons.logout, + title: 'Logout', + subtitle: 'Sign out from your account', + iconColor: AppColor.error, + textColor: AppColor.error, + onTap: () {}, + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/divider.dart b/lib/presentation/pages/profile/widgets/divider.dart new file mode 100644 index 0000000..12add2b --- /dev/null +++ b/lib/presentation/pages/profile/widgets/divider.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class ProfileDivider extends StatelessWidget { + const ProfileDivider({super.key}); + + @override + Widget build(BuildContext context) { + return Divider( + height: 1, + thickness: 1, + color: AppColor.border, + indent: 16, + endIndent: 16, + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/header.dart b/lib/presentation/pages/profile/widgets/header.dart new file mode 100644 index 0000000..8688b9a --- /dev/null +++ b/lib/presentation/pages/profile/widgets/header.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class ProfileHeader extends StatelessWidget { + const ProfileHeader({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Column( + children: [ + const SpaceHeight(20), + + // Profile Picture + Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all(color: AppColor.textWhite, width: 3), + color: AppColor.primaryLight, + ), + child: ClipOval( + child: Container( + color: AppColor.primaryLight, + child: const Icon( + Icons.person, + size: 50, + color: AppColor.textWhite, + ), + ), + ), + ), + + const SpaceHeight(16), + + // Name + Text( + 'John Doe', + style: AppStyle.h5.copyWith( + fontSize: 24, + fontWeight: FontWeight.bold, + color: AppColor.textWhite, + ), + ), + + const SpaceHeight(4), + + // Role Badge + Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + decoration: BoxDecoration( + color: AppColor.textWhite.withOpacity(0.2), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + 'Business Owner', + style: AppStyle.md.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w500, + ), + ), + ), + + const SpaceHeight(30), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/profile_switch_tile.dart b/lib/presentation/pages/profile/widgets/profile_switch_tile.dart new file mode 100644 index 0000000..a7d8a71 --- /dev/null +++ b/lib/presentation/pages/profile/widgets/profile_switch_tile.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class ProfileSwitchTile extends StatelessWidget { + final IconData icon; + final String title; + final String? subtitle; + final bool value; + final ValueChanged onChanged; + const ProfileSwitchTile({ + super.key, + required this.icon, + required this.title, + this.subtitle, + required this.value, + required this.onChanged, + }); + + @override + Widget build(BuildContext context) { + return ListTile( + leading: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon(icon, color: AppColor.primary, size: 20), + ), + title: Text( + title, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w500, + color: AppColor.textPrimary, + ), + ), + subtitle: subtitle != null + ? Text( + subtitle!, + style: AppStyle.md.copyWith(color: AppColor.textSecondary), + ) + : null, + trailing: Switch( + value: value, + onChanged: onChanged, + activeColor: AppColor.primary, + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/profile_tile.dart b/lib/presentation/pages/profile/widgets/profile_tile.dart new file mode 100644 index 0000000..6f71ef1 --- /dev/null +++ b/lib/presentation/pages/profile/widgets/profile_tile.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class ProfileTile extends StatelessWidget { + final IconData icon; + final String title; + final String? subtitle; + final VoidCallback? onTap; + final bool showArrow; + final Color? iconColor; + final Color? textColor; + const ProfileTile({ + super.key, + required this.icon, + required this.title, + this.subtitle, + this.onTap, + this.showArrow = true, + this.iconColor, + this.textColor, + }); + + @override + Widget build(BuildContext context) { + return ListTile( + leading: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: (iconColor ?? AppColor.primary).withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon(icon, color: iconColor ?? AppColor.primary, size: 20), + ), + title: Text( + title, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w500, + color: textColor ?? AppColor.textPrimary, + ), + ), + subtitle: subtitle != null + ? Text( + subtitle!, + style: AppStyle.md.copyWith(color: AppColor.textSecondary), + ) + : null, + trailing: showArrow + ? Icon(Icons.chevron_right, color: AppColor.textLight, size: 20) + : null, + onTap: onTap, + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/support.dart b/lib/presentation/pages/profile/widgets/support.dart new file mode 100644 index 0000000..f229dee --- /dev/null +++ b/lib/presentation/pages/profile/widgets/support.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import 'divider.dart'; +import 'profile_tile.dart'; + +class ProfileSupport extends StatelessWidget { + const ProfileSupport({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(horizontal: AppValue.margin), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + 'Support', + style: AppStyle.xl.copyWith( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + + ProfileTile( + icon: Icons.help_outline, + title: 'Help Center', + subtitle: 'Get help and support', + onTap: () { + // Navigate to help center + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.feedback_outlined, + title: 'Send Feedback', + subtitle: 'Help us improve the app', + onTap: () { + // Open feedback form + }, + ), + + ProfileDivider(), + + ProfileTile( + icon: Icons.info_outline, + title: 'About', + subtitle: 'App version and information', + onTap: () { + // Show about dialog + }, + ), + ], + ), + ); + } +} From f22c36d6de463860748f2e1cc836a0a718aa157c Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 21:27:13 +0700 Subject: [PATCH 008/108] feat: transaction page --- lib/common/theme/theme.dart | 2 +- .../pages/transaction/transaction_page.dart | 703 +++++++++++++++++- 2 files changed, 702 insertions(+), 3 deletions(-) diff --git a/lib/common/theme/theme.dart b/lib/common/theme/theme.dart index fff9fac..9c4561a 100644 --- a/lib/common/theme/theme.dart +++ b/lib/common/theme/theme.dart @@ -43,7 +43,7 @@ class ThemeApp { ), ), bottomNavigationBarTheme: BottomNavigationBarThemeData( - backgroundColor: AppColor.background, + backgroundColor: AppColor.white, selectedItemColor: AppColor.primary, unselectedItemColor: AppColor.textSecondary, selectedLabelStyle: AppStyle.md.copyWith( diff --git a/lib/presentation/pages/transaction/transaction_page.dart b/lib/presentation/pages/transaction/transaction_page.dart index dd46d95..a5e10e3 100644 --- a/lib/presentation/pages/transaction/transaction_page.dart +++ b/lib/presentation/pages/transaction/transaction_page.dart @@ -1,12 +1,711 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../common/theme/theme.dart'; + +class Transaction { + final String id; + final String customerName; + final DateTime date; + final double total; + final String status; + final List items; + final String paymentMethod; + + Transaction({ + required this.id, + required this.customerName, + required this.date, + required this.total, + required this.status, + required this.items, + required this.paymentMethod, + }); +} + +class TransactionItem { + final String name; + final int quantity; + final double price; + + TransactionItem({ + required this.name, + required this.quantity, + required this.price, + }); +} + @RoutePage() -class TransactionPage extends StatelessWidget { +class TransactionPage extends StatefulWidget { const TransactionPage({super.key}); + @override + State createState() => _TransactionPageState(); +} + +class _TransactionPageState extends State { + String selectedFilter = 'All'; + DateTime selectedDate = DateTime.now(); + + final List transactions = [ + Transaction( + id: 'TRX001', + customerName: 'Ahmad Rizki', + date: DateTime.now().subtract(Duration(hours: 2)), + total: 125000, + status: 'Completed', + paymentMethod: 'Cash', + items: [ + TransactionItem(name: 'Nasi Goreng', quantity: 2, price: 25000), + TransactionItem(name: 'Es Teh', quantity: 3, price: 5000), + TransactionItem(name: 'Ayam Bakar', quantity: 1, price: 35000), + ], + ), + Transaction( + id: 'TRX002', + customerName: 'Siti Nurhaliza', + date: DateTime.now().subtract(Duration(hours: 4)), + total: 85000, + status: 'Completed', + paymentMethod: 'QRIS', + items: [ + TransactionItem(name: 'Gado-gado', quantity: 1, price: 20000), + TransactionItem(name: 'Jus Jeruk', quantity: 2, price: 12000), + TransactionItem(name: 'Kerupuk', quantity: 1, price: 5000), + ], + ), + Transaction( + id: 'TRX003', + customerName: 'Budi Santoso', + date: DateTime.now().subtract(Duration(hours: 6)), + total: 200000, + status: 'Pending', + paymentMethod: 'Debit Card', + items: [ + TransactionItem(name: 'Paket Keluarga', quantity: 1, price: 150000), + TransactionItem(name: 'Es Campur', quantity: 2, price: 15000), + ], + ), + ]; + @override Widget build(BuildContext context) { - return Center(child: Text('TransactionPage')); + return Scaffold( + backgroundColor: AppColor.background, + appBar: AppBar( + elevation: 0, + backgroundColor: AppColor.white, + title: Text( + 'Transactions', + style: TextStyle( + color: AppColor.textPrimary, + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + actions: [ + IconButton( + icon: Icon(Icons.search, color: AppColor.textPrimary), + onPressed: () {}, + ), + IconButton( + icon: Icon(Icons.filter_list, color: AppColor.textPrimary), + onPressed: () => _showFilterBottomSheet(context), + ), + ], + ), + body: Column( + children: [ + _buildSummaryCards(), + _buildFilterTabs(), + Expanded(child: _buildTransactionList()), + ], + ), + floatingActionButton: FloatingActionButton.extended( + onPressed: () {}, + backgroundColor: AppColor.primary, + icon: Icon(Icons.add, color: AppColor.white), + label: Text( + 'New Sale', + style: TextStyle(color: AppColor.white, fontWeight: FontWeight.w600), + ), + ), + ); + } + + Widget _buildSummaryCards() { + return Container( + padding: EdgeInsets.all(16), + child: Row( + children: [ + Expanded( + child: _buildSummaryCard( + 'Today\'s Sales', + 'Rp 2,450,000', + Icons.trending_up, + AppColor.success, + '+12%', + ), + ), + SizedBox(width: 12), + Expanded( + child: _buildSummaryCard( + 'Total Orders', + '48', + Icons.receipt_long, + AppColor.info, + '+8%', + ), + ), + ], + ), + ); + } + + Widget _buildSummaryCard( + String title, + String value, + IconData icon, + Color color, + String change, + ) { + return Container( + padding: EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 10, + offset: Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Icon(icon, color: color, size: 24), + Container( + padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + change, + style: TextStyle( + color: AppColor.success, + fontSize: 10, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + SizedBox(height: 12), + Text( + value, + style: TextStyle( + color: AppColor.textPrimary, + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(height: 4), + Text( + title, + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 12, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ); + } + + Widget _buildFilterTabs() { + final filters = ['All', 'Completed', 'Pending', 'Cancelled']; + + return Container( + height: 60, + padding: EdgeInsets.symmetric(horizontal: 16), + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: filters.length, + itemBuilder: (context, index) { + final filter = filters[index]; + final isSelected = selectedFilter == filter; + + return GestureDetector( + onTap: () { + setState(() { + selectedFilter = filter; + }); + }, + child: Container( + margin: EdgeInsets.only(right: 12, top: 8, bottom: 8), + padding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), + decoration: BoxDecoration( + color: isSelected ? AppColor.primary : AppColor.white, + borderRadius: BorderRadius.circular(25), + border: Border.all( + color: isSelected ? AppColor.primary : AppColor.border, + width: 1, + ), + ), + child: Text( + filter, + style: TextStyle( + color: isSelected ? AppColor.white : AppColor.textSecondary, + fontWeight: FontWeight.w600, + fontSize: 14, + ), + ), + ), + ); + }, + ), + ); + } + + Widget _buildTransactionList() { + final filteredTransactions = transactions.where((transaction) { + if (selectedFilter == 'All') return true; + return transaction.status == selectedFilter; + }).toList(); + + return ListView.builder( + padding: EdgeInsets.symmetric(horizontal: 16), + itemCount: filteredTransactions.length, + itemBuilder: (context, index) { + final transaction = filteredTransactions[index]; + return _buildTransactionCard(transaction); + }, + ); + } + + Widget _buildTransactionCard(Transaction transaction) { + return GestureDetector( + onTap: () => _showTransactionDetail(transaction), + child: Container( + margin: EdgeInsets.only(bottom: 12), + padding: EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 10, + offset: Offset(0, 2), + ), + ], + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + transaction.id, + style: TextStyle( + color: AppColor.textPrimary, + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(height: 4), + Text( + transaction.customerName, + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 14, + ), + ), + SizedBox(height: 4), + Text( + '${_formatTime(transaction.date)} โ€ข ${transaction.paymentMethod}', + style: TextStyle( + color: AppColor.textLight, + fontSize: 12, + ), + ), + ], + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Rp ${_formatCurrency(transaction.total)}', + style: TextStyle( + color: AppColor.textPrimary, + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(height: 8), + Container( + padding: EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: _getStatusColor( + transaction.status, + ).withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + transaction.status, + style: TextStyle( + color: _getStatusColor(transaction.status), + fontSize: 12, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + ], + ), + SizedBox(height: 12), + Row( + children: [ + Icon( + Icons.shopping_bag_outlined, + color: AppColor.textLight, + size: 16, + ), + SizedBox(width: 8), + Text( + '${transaction.items.length} items', + style: TextStyle(color: AppColor.textLight, fontSize: 12), + ), + Spacer(), + Icon( + Icons.arrow_forward_ios, + color: AppColor.textLight, + size: 14, + ), + ], + ), + ], + ), + ), + ); + } + + Color _getStatusColor(String status) { + switch (status) { + case 'Completed': + return AppColor.success; + case 'Pending': + return AppColor.warning; + case 'Cancelled': + return AppColor.error; + default: + return AppColor.textSecondary; + } + } + + String _formatCurrency(double amount) { + return amount + .toStringAsFixed(0) + .replaceAllMapped( + RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), + (Match m) => '${m[1]},', + ); + } + + String _formatTime(DateTime dateTime) { + final now = DateTime.now(); + final difference = now.difference(dateTime); + + if (difference.inHours < 1) { + return '${difference.inMinutes}m ago'; + } else if (difference.inHours < 24) { + return '${difference.inHours}h ago'; + } else { + return '${difference.inDays}d ago'; + } + } + + void _showFilterBottomSheet(BuildContext context) { + showModalBottomSheet( + context: context, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + ), + builder: (context) { + return Container( + padding: EdgeInsets.all(20), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Filter Transactions', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + SizedBox(height: 20), + _buildFilterOption('Date Range', Icons.date_range), + _buildFilterOption('Payment Method', Icons.payment), + _buildFilterOption('Amount Range', Icons.attach_money), + _buildFilterOption('Customer', Icons.person), + SizedBox(height: 20), + Row( + children: [ + Expanded( + child: OutlinedButton( + onPressed: () => Navigator.pop(context), + style: OutlinedButton.styleFrom( + side: BorderSide(color: AppColor.border), + padding: EdgeInsets.symmetric(vertical: 12), + ), + child: Text( + 'Reset', + style: TextStyle(color: AppColor.textSecondary), + ), + ), + ), + SizedBox(width: 12), + Expanded( + child: ElevatedButton( + onPressed: () => Navigator.pop(context), + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.primary, + padding: EdgeInsets.symmetric(vertical: 12), + ), + child: Text( + 'Apply', + style: TextStyle(color: AppColor.white), + ), + ), + ), + ], + ), + ], + ), + ); + }, + ); + } + + Widget _buildFilterOption(String title, IconData icon) { + return ListTile( + contentPadding: EdgeInsets.zero, + leading: Icon(icon, color: AppColor.textSecondary), + title: Text(title, style: TextStyle(color: AppColor.textPrimary)), + trailing: Icon( + Icons.arrow_forward_ios, + size: 16, + color: AppColor.textLight, + ), + onTap: () {}, + ); + } + + void _showTransactionDetail(Transaction transaction) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + ), + builder: (context) { + return DraggableScrollableSheet( + initialChildSize: 0.7, + maxChildSize: 0.9, + minChildSize: 0.5, + builder: (context, scrollController) { + return Container( + padding: EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: AppColor.borderLight, + borderRadius: BorderRadius.circular(2), + ), + ), + ), + SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Transaction Detail', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + Container( + padding: EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: _getStatusColor( + transaction.status, + ).withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + transaction.status, + style: TextStyle( + color: _getStatusColor(transaction.status), + fontSize: 12, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + SizedBox(height: 20), + _buildDetailRow('Transaction ID', transaction.id), + _buildDetailRow('Customer', transaction.customerName), + _buildDetailRow( + 'Date', + '${transaction.date.day}/${transaction.date.month}/${transaction.date.year}', + ), + _buildDetailRow('Payment Method', transaction.paymentMethod), + SizedBox(height: 20), + Text( + 'Items Ordered', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + SizedBox(height: 12), + Expanded( + child: ListView.builder( + controller: scrollController, + itemCount: transaction.items.length, + itemBuilder: (context, index) { + final item = transaction.items[index]; + return Container( + margin: EdgeInsets.only(bottom: 8), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.backgroundLight, + borderRadius: BorderRadius.circular(8), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + item.name, + style: TextStyle( + color: AppColor.textPrimary, + fontWeight: FontWeight.w600, + ), + ), + Text( + 'Qty: ${item.quantity}', + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 12, + ), + ), + ], + ), + ), + Text( + 'Rp ${_formatCurrency(item.price * item.quantity)}', + style: TextStyle( + color: AppColor.textPrimary, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + }, + ), + ), + Container( + padding: EdgeInsets.symmetric(vertical: 16), + decoration: BoxDecoration( + border: Border(top: BorderSide(color: AppColor.border)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Total Amount', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + Text( + 'Rp ${_formatCurrency(transaction.total)}', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + ], + ), + ), + ], + ), + ); + }, + ); + }, + ); + } + + Widget _buildDetailRow(String label, String value) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + label, + style: TextStyle(color: AppColor.textSecondary, fontSize: 14), + ), + Text( + value, + style: TextStyle( + color: AppColor.textPrimary, + fontSize: 14, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ); } } From 8fa20d03b600d40d335e99c3318e89c80e59a3e0 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 22:33:31 +0700 Subject: [PATCH 009/108] feat: report page --- .../components/button/action_icon_button.dart | 30 ++ .../components/button/button.dart | 1 + .../pages/report/report_page.dart | 124 ++++++- .../pages/report/widgets/appbar.dart | 96 ++++++ .../pages/report/widgets/quick_stats.dart | 55 +++ .../pages/report/widgets/report_action.dart | 136 ++++++++ .../pages/report/widgets/revenue_summary.dart | 161 +++++++++ .../pages/report/widgets/sales.dart | 321 ++++++++++++++++++ .../pages/report/widgets/stat_tile.dart | 92 +++++ .../pages/report/widgets/top_product.dart | 202 +++++++++++ pubspec.lock | 18 +- pubspec.yaml | 1 + 12 files changed, 1234 insertions(+), 3 deletions(-) create mode 100644 lib/presentation/components/button/action_icon_button.dart create mode 100644 lib/presentation/pages/report/widgets/appbar.dart create mode 100644 lib/presentation/pages/report/widgets/quick_stats.dart create mode 100644 lib/presentation/pages/report/widgets/report_action.dart create mode 100644 lib/presentation/pages/report/widgets/revenue_summary.dart create mode 100644 lib/presentation/pages/report/widgets/sales.dart create mode 100644 lib/presentation/pages/report/widgets/stat_tile.dart create mode 100644 lib/presentation/pages/report/widgets/top_product.dart diff --git a/lib/presentation/components/button/action_icon_button.dart b/lib/presentation/components/button/action_icon_button.dart new file mode 100644 index 0000000..deeac78 --- /dev/null +++ b/lib/presentation/components/button/action_icon_button.dart @@ -0,0 +1,30 @@ +part of 'button.dart'; + +class ActionIconButton extends StatelessWidget { + const ActionIconButton({super.key, required this.onTap, required this.icon}); + + final Function()? onTap; + final IconData icon; + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.only(right: 8), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(12), + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(12), + ), + child: Icon(icon, color: AppColor.textWhite, size: 20), + ), + ), + ), + ); + } +} diff --git a/lib/presentation/components/button/button.dart b/lib/presentation/components/button/button.dart index 881669f..ebbf30f 100644 --- a/lib/presentation/components/button/button.dart +++ b/lib/presentation/components/button/button.dart @@ -5,3 +5,4 @@ import '../../../common/theme/theme.dart'; import '../spacer/spacer.dart'; part 'elevated_button.dart'; +part 'action_icon_button.dart'; diff --git a/lib/presentation/pages/report/report_page.dart b/lib/presentation/pages/report/report_page.dart index da379df..3884eb4 100644 --- a/lib/presentation/pages/report/report_page.dart +++ b/lib/presentation/pages/report/report_page.dart @@ -1,12 +1,132 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; +import 'dart:math' as math; + +import '../../../common/theme/theme.dart'; +import '../../components/button/button.dart'; +import '../../components/spacer/spacer.dart'; +import 'widgets/appbar.dart'; +import 'widgets/quick_stats.dart'; +import 'widgets/report_action.dart'; +import 'widgets/revenue_summary.dart'; +import 'widgets/sales.dart'; +import 'widgets/top_product.dart'; @RoutePage() -class ReportPage extends StatelessWidget { +class ReportPage extends StatefulWidget { const ReportPage({super.key}); + @override + State createState() => _ReportPageState(); +} + +class _ReportPageState extends State with TickerProviderStateMixin { + late AnimationController _fadeController; + late AnimationController _slideController; + late AnimationController _rotationController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + late Animation _rotationAnimation; + + @override + void initState() { + super.initState(); + + _fadeController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 1000), + vsync: this, + ); + + _rotationController = AnimationController( + duration: const Duration(seconds: 3), + vsync: this, + )..repeat(); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.elasticOut), + ); + + _rotationAnimation = Tween( + begin: 0, + end: 2 * math.pi, + ).animate(_rotationController); + + _fadeController.forward(); + _slideController.forward(); + } + + @override + void dispose() { + _fadeController.dispose(); + _slideController.dispose(); + _rotationController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { - return Center(child: Text('ReportPage')); + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + // Custom App Bar with Hero Effect + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + centerTitle: false, + flexibleSpace: ReportAppBar(rotationAnimation: _rotationAnimation), + actions: [ + ActionIconButton(onTap: () {}, icon: LineIcons.download), + ActionIconButton(onTap: () {}, icon: LineIcons.filter), + SpaceWidth(8), + ], + ), + + // Content + SliverPadding( + padding: EdgeInsets.all(AppValue.padding), + sliver: SliverList( + delegate: SliverChildListDelegate([ + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + children: [ + ReportRevenueSummary( + rotationAnimation: _rotationAnimation, + ), + const SpaceHeight(24), + ReportQuickStats(), + const SpaceHeight(24), + ReportSales(), + const SpaceHeight(24), + ReportTopProduct(), + const SpaceHeight(24), + ReportAction(), + const SpaceHeight(20), + ], + ), + ), + ), + ]), + ), + ), + ], + ), + ); } } diff --git a/lib/presentation/pages/report/widgets/appbar.dart b/lib/presentation/pages/report/widgets/appbar.dart new file mode 100644 index 0000000..09c34fa --- /dev/null +++ b/lib/presentation/pages/report/widgets/appbar.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class ReportAppBar extends StatelessWidget { + final Animation rotationAnimation; + const ReportAppBar({super.key, required this.rotationAnimation}); + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 20, bottom: 16), + title: Text( + 'Laporan Bisnis', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/report/widgets/quick_stats.dart b/lib/presentation/pages/report/widgets/quick_stats.dart new file mode 100644 index 0000000..9e46687 --- /dev/null +++ b/lib/presentation/pages/report/widgets/quick_stats.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import 'stat_tile.dart'; + +class ReportQuickStats extends StatelessWidget { + const ReportQuickStats({super.key}); + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Expanded( + child: TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: const Duration(milliseconds: 800), + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: ReportStatTile( + title: 'Total Transaksi', + value: '245', + icon: Icons.receipt_long, + color: AppColor.info, + change: '+8.2%', + animatedValue: 245 * value, + ), + ); + }, + ), + ), + const SizedBox(width: 16), + Expanded( + child: TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: const Duration(milliseconds: 1000), + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: ReportStatTile( + title: 'Rata-rata', + value: 'Rp 63.061', + icon: Icons.trending_up, + color: AppColor.warning, + change: '+5.1%', + animatedValue: 63061 * value, + ), + ); + }, + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/report/widgets/report_action.dart b/lib/presentation/pages/report/widgets/report_action.dart new file mode 100644 index 0000000..44fb29c --- /dev/null +++ b/lib/presentation/pages/report/widgets/report_action.dart @@ -0,0 +1,136 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class ReportAction extends StatefulWidget { + const ReportAction({super.key}); + + @override + State createState() => _ReportActionState(); +} + +class _ReportActionState extends State { + final actions = [ + { + 'title': 'Laporan Detail Penjualan', + 'subtitle': 'Analisis mendalam transaksi harian', + 'icon': Icons.assignment, + 'color': AppColor.primary, + 'gradient': [AppColor.primary, AppColor.primaryLight], + }, + { + 'title': 'Monitor Stok Produk', + 'subtitle': 'Tracking inventory real-time', + 'icon': Icons.inventory_2, + 'color': AppColor.info, + 'gradient': [AppColor.info, const Color(0xFF64B5F6)], + }, + { + 'title': 'Analisis Keuangan', + 'subtitle': 'Profit, loss & cash flow analysis', + 'icon': Icons.account_balance_wallet, + 'color': AppColor.success, + 'gradient': [AppColor.success, AppColor.secondaryLight], + }, + ]; + + @override + Widget build(BuildContext context) { + return Column( + children: actions.map((action) { + return Container( + margin: const EdgeInsets.only(bottom: 16), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () {}, + borderRadius: BorderRadius.circular(20), + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + (action['color'] as Color).withOpacity(0.1), + (action['color'] as Color).withOpacity(0.05), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: (action['color'] as Color).withOpacity(0.3), + width: 1.5, + ), + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: action['gradient'] as List, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: (action['color'] as Color).withOpacity(0.3), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: Icon( + action['icon'] as IconData, + color: AppColor.white, + size: 28, + ), + ), + const SizedBox(width: 20), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + action['title'] as String, + style: AppStyle.lg.copyWith( + color: AppColor.textPrimary, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + const SpaceHeight(4), + Text( + action['subtitle'] as String, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontSize: 13, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: (action['color'] as Color).withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon( + Icons.arrow_forward_ios, + color: action['color'] as Color, + size: 16, + ), + ), + ], + ), + ), + ), + ), + ); + }).toList(), + ); + } +} diff --git a/lib/presentation/pages/report/widgets/revenue_summary.dart b/lib/presentation/pages/report/widgets/revenue_summary.dart new file mode 100644 index 0000000..86ec191 --- /dev/null +++ b/lib/presentation/pages/report/widgets/revenue_summary.dart @@ -0,0 +1,161 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class ReportRevenueSummary extends StatelessWidget { + final Animation rotationAnimation; + const ReportRevenueSummary({super.key, required this.rotationAnimation}); + + @override + Widget build(BuildContext context) { + return Container( + height: 180, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(24), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Stack( + children: [ + Container( + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(24), + ), + ), + // Floating elements + Positioned( + right: 20, + top: 20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value * 0.3, + child: Container( + width: 60, + height: 60, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + right: 60, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + // Content + Padding( + padding: const EdgeInsets.all(24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(10), + ), + child: const Icon( + Icons.account_balance_wallet, + color: AppColor.textWhite, + size: 20, + ), + ), + const SpaceWidth(12), + Text( + 'Total Pendapatan', + style: AppStyle.lg.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + const Spacer(), + Text( + 'Rp 15.450.000', + style: AppStyle.h1.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.bold, + letterSpacing: -1, + ), + ), + const SpaceHeight(8), + Row( + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.9), + borderRadius: BorderRadius.circular(20), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.trending_up, + color: AppColor.textWhite, + size: 16, + ), + SpaceWidth(4), + Text( + '+12.5%', + style: AppStyle.sm.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + ), + const SpaceWidth(12), + Text( + 'dari periode sebelumnya', + style: AppStyle.sm.copyWith(color: AppColor.textWhite), + ), + ], + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/report/widgets/sales.dart b/lib/presentation/pages/report/widgets/sales.dart new file mode 100644 index 0000000..e0b6f69 --- /dev/null +++ b/lib/presentation/pages/report/widgets/sales.dart @@ -0,0 +1,321 @@ +import 'package:fl_chart/fl_chart.dart'; +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class ReportSales extends StatelessWidget { + const ReportSales({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(24), + boxShadow: [ + BoxShadow( + color: AppColor.textSecondary.withOpacity(0.1), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Grafik Penjualan', + style: AppStyle.xxl.copyWith( + color: AppColor.textPrimary, + + fontWeight: FontWeight.bold, + ), + ), + const SpaceHeight(4), + Text( + '7 hari terakhir', + style: AppStyle.md.copyWith(color: AppColor.textSecondary), + ), + ], + ), + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: const Icon( + Icons.show_chart, + color: AppColor.primary, + size: 24, + ), + ), + ], + ), + const SpaceHeight(20), + + // Chart Container + Container( + height: 280, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.05), + AppColor.backgroundLight, + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: AppColor.primary.withOpacity(0.1), + width: 2, + ), + ), + child: LineChart( + LineChartData( + gridData: FlGridData( + show: true, + drawHorizontalLine: true, + drawVerticalLine: false, + horizontalInterval: 500000, + getDrawingHorizontalLine: (value) { + return FlLine( + color: AppColor.border.withOpacity(0.3), + strokeWidth: 1, + dashArray: [5, 5], + ); + }, + ), + titlesData: FlTitlesData( + leftTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + reservedSize: 60, + getTitlesWidget: (value, meta) { + return Text( + '${(value / 1000000).toStringAsFixed(1)}M', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ); + }, + ), + ), + bottomTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + reservedSize: 32, + getTitlesWidget: (value, meta) { + const days = [ + 'Sen', + 'Sel', + 'Rab', + 'Kam', + 'Jum', + 'Sab', + 'Min', + ]; + if (value.toInt() >= 0 && value.toInt() < days.length) { + return Padding( + padding: const EdgeInsets.only(top: 8), + child: Text( + days[value.toInt()], + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ); + } + return const Text(''); + }, + ), + ), + rightTitles: AxisTitles( + sideTitles: SideTitles(showTitles: false), + ), + topTitles: AxisTitles( + sideTitles: SideTitles(showTitles: false), + ), + ), + borderData: FlBorderData(show: false), + minX: 0, + maxX: 6, + minY: 0, + maxY: 3000000, + lineBarsData: [ + // Main sales line + LineChartBarData( + spots: [ + const FlSpot(0, 1800000), // Senin + const FlSpot(1, 2200000), // Selasa + const FlSpot(2, 1900000), // Rabu + const FlSpot(3, 2600000), // Kamis + const FlSpot(4, 2300000), // Jumat + const FlSpot(5, 2800000), // Sabtu + const FlSpot(6, 2500000), // Minggu + ], + isCurved: true, + curveSmoothness: 0.35, + gradient: LinearGradient( + colors: [AppColor.primary, AppColor.primaryLight], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + barWidth: 4, + isStrokeCapRound: true, + belowBarData: BarAreaData( + show: true, + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.3), + AppColor.primary.withOpacity(0.1), + Colors.transparent, + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 6, + color: AppColor.surface, + strokeWidth: 3, + strokeColor: AppColor.primary, + ); + }, + ), + ), + // Secondary line for comparison + LineChartBarData( + spots: [ + const FlSpot(0, 1500000), + const FlSpot(1, 1800000), + const FlSpot(2, 1600000), + const FlSpot(3, 2100000), + const FlSpot(4, 1900000), + const FlSpot(5, 2300000), + const FlSpot(6, 2100000), + ], + isCurved: true, + curveSmoothness: 0.35, + color: AppColor.success.withOpacity(0.7), + barWidth: 3, + isStrokeCapRound: true, + dashArray: [8, 4], + belowBarData: BarAreaData(show: false), + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 4, + color: AppColor.success, + strokeWidth: 2, + strokeColor: AppColor.surface, + ); + }, + ), + ), + ], + lineTouchData: LineTouchData( + enabled: true, + touchTooltipData: LineTouchTooltipData( + tooltipPadding: const EdgeInsets.all(12), + getTooltipItems: (List touchedBarSpots) { + return touchedBarSpots.map((barSpot) { + final flSpot = barSpot; + const days = [ + 'Senin', + 'Selasa', + 'Rabu', + 'Kamis', + 'Jumat', + 'Sabtu', + 'Minggu', + ]; + + return LineTooltipItem( + '${days[flSpot.x.toInt()]}\n', + const TextStyle( + color: AppColor.textWhite, + fontWeight: FontWeight.bold, + fontSize: 14, + ), + children: [ + TextSpan( + text: + 'Rp ${(flSpot.y / 1000000).toStringAsFixed(1)}M', + style: AppStyle.sm.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w500, + ), + ), + ], + ); + }).toList(); + }, + ), + touchCallback: + (FlTouchEvent event, LineTouchResponse? touchResponse) { + // Handle touch events here if needed + }, + handleBuiltInTouches: true, + ), + ), + ), + ), + + const SpaceHeight(16), + + // Legend + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _buildLegendItem('Minggu Ini', AppColor.primary), + const SpaceWidth(24), + _buildLegendItem('Minggu Lalu', AppColor.success), + ], + ), + ], + ), + ); + } + + Widget _buildLegendItem(String label, Color color) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 16, + height: 3, + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(2), + ), + ), + const SpaceWidth(8), + Text( + label, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + + fontWeight: FontWeight.w500, + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/report/widgets/stat_tile.dart b/lib/presentation/pages/report/widgets/stat_tile.dart new file mode 100644 index 0000000..863aab5 --- /dev/null +++ b/lib/presentation/pages/report/widgets/stat_tile.dart @@ -0,0 +1,92 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class ReportStatTile extends StatelessWidget { + final String title; + final String value; + final IconData icon; + final Color color; + final String change; + final double animatedValue; + const ReportStatTile({ + super.key, + required this.title, + required this.value, + required this.icon, + required this.color, + required this.change, + required this.animatedValue, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: color.withOpacity(0.1), + blurRadius: 15, + offset: const Offset(0, 5), + ), + ], + border: Border.all(color: color.withOpacity(0.2), width: 1.5), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color.withOpacity(0.2), color.withOpacity(0.1)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + ), + child: Icon(icon, color: color, size: 24), + ), + const Spacer(), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + change, + style: AppStyle.sm.copyWith( + color: AppColor.success, + fontWeight: FontWeight.w700, + ), + ), + ), + ], + ), + const SizedBox(height: 16), + Text( + title, + style: AppStyle.md.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Text( + value, + style: AppStyle.xxl.copyWith( + color: color, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/report/widgets/top_product.dart b/lib/presentation/pages/report/widgets/top_product.dart new file mode 100644 index 0000000..57404c3 --- /dev/null +++ b/lib/presentation/pages/report/widgets/top_product.dart @@ -0,0 +1,202 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class ReportTopProduct extends StatelessWidget { + const ReportTopProduct({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(24), + boxShadow: [ + BoxShadow( + color: AppColor.textSecondary.withOpacity(0.1), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Produk Terlaris', + style: AppStyle.xxl.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.bold, + ), + ), + const SpaceHeight(4), + Text( + 'Ranking penjualan tertinggi', + style: AppStyle.md.copyWith(color: AppColor.textSecondary), + ), + ], + ), + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.warning.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: const Icon( + Icons.star, + color: AppColor.warning, + size: 24, + ), + ), + ], + ), + const SpaceHeight(20), + _buildEnhancedProductItem( + 'Kopi Americano', + 'Rp 25.000', + '145 terjual', + 1, + ), + _buildEnhancedProductItem( + 'Nasi Goreng Spesial', + 'Rp 35.000', + '98 terjual', + 2, + ), + _buildEnhancedProductItem( + 'Mie Ayam Bakso', + 'Rp 28.000', + '87 terjual', + 3, + ), + ], + ), + ); + } + + Widget _buildEnhancedProductItem( + String name, + String price, + String sold, + int rank, + ) { + final isFirst = rank == 1; + return Container( + margin: const EdgeInsets.only(bottom: 16), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: isFirst + ? LinearGradient( + colors: [ + AppColor.warning.withOpacity(0.1), + AppColor.warning.withOpacity(0.05), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ) + : null, + color: isFirst ? null : AppColor.backgroundLight, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: isFirst ? AppColor.warning.withOpacity(0.3) : AppColor.border, + width: isFirst ? 2 : 1, + ), + ), + child: Row( + children: [ + Container( + width: 48, + height: 48, + decoration: BoxDecoration( + gradient: isFirst + ? const LinearGradient( + colors: [AppColor.warning, Color(0xFFFFB74D)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ) + : LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.8), + AppColor.primaryLight.withOpacity(0.6), + ], + ), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: isFirst + ? AppColor.warning.withOpacity(0.3) + : AppColor.primary.withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + ), + child: Center( + child: isFirst + ? const Icon( + Icons.emoji_events, + color: AppColor.white, + size: 24, + ) + : Text( + rank.toString(), + style: AppStyle.xl.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + const SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + name, + style: AppStyle.lg.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.w600, + ), + ), + const SpaceHeight(4), + Row( + children: [ + Icon( + Icons.shopping_cart, + size: 14, + color: AppColor.textSecondary, + ), + const SpaceWidth(4), + Text( + sold, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + ), + ), + ], + ), + ], + ), + ), + Text( + price, + style: AppStyle.lg.copyWith( + color: isFirst ? AppColor.warning : AppColor.primary, + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 0678b10..ce8fdee 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -297,6 +297,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + equatable: + dependency: transitive + description: + name: equatable + sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + url: "https://pub.dev" + source: hosted + version: "2.0.7" fake_async: dependency: transitive description: @@ -329,6 +337,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + fl_chart: + dependency: "direct main" + description: + name: fl_chart + sha256: "577aeac8ca414c25333334d7c4bb246775234c0e44b38b10a82b559dd4d764e7" + url: "https://pub.dev" + source: hosted + version: "1.0.0" flutter: dependency: "direct main" description: flutter @@ -1039,4 +1055,4 @@ packages: version: "3.1.3" sdks: dart: ">=3.8.1 <4.0.0" - flutter: ">=3.27.0" + flutter: ">=3.27.4" diff --git a/pubspec.yaml b/pubspec.yaml index 808f716..e05cdc1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,6 +30,7 @@ dependencies: awesome_dio_interceptor: ^1.3.0 line_icons: ^2.0.3 flutter_spinkit: ^5.2.2 + fl_chart: ^1.0.0 dev_dependencies: flutter_test: From 3fb4170d02572f43c7fd7f04a4cd48d8018c8d5c Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 22:36:23 +0700 Subject: [PATCH 010/108] feat: update home page --- lib/common/theme/theme.dart | 4 +-- lib/presentation/pages/home/home_page.dart | 32 +++------------------- 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/lib/common/theme/theme.dart b/lib/common/theme/theme.dart index 9c4561a..f4cda5d 100644 --- a/lib/common/theme/theme.dart +++ b/lib/common/theme/theme.dart @@ -56,11 +56,11 @@ class ThemeApp { ), ), appBarTheme: AppBarTheme( - backgroundColor: AppColor.white, + backgroundColor: AppColor.primary, elevation: 1, titleTextStyle: AppStyle.lg.copyWith( fontWeight: FontWeight.w600, - color: AppColor.primary, + color: AppColor.white, ), ), ); diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 879e1c8..82d7e74 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -1,7 +1,9 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; import '../../../common/theme/theme.dart'; +import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/activity.dart'; import 'widgets/feature.dart'; @@ -124,37 +126,11 @@ class _HomePageState extends State with TickerProviderStateMixin { letterSpacing: -0.5, ), ), - backgroundColor: AppColor.white, foregroundColor: AppColor.textPrimary, elevation: 0, - scrolledUnderElevation: 8, + scrolledUnderElevation: 0, shadowColor: AppColor.primary.withOpacity(0.1), - actions: [ - Container( - margin: const EdgeInsets.only(right: 16), - padding: const EdgeInsets.all(10), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.primary.withOpacity(0.1), - AppColor.primaryLight.withOpacity(0.05), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(12), - border: Border.all( - color: AppColor.primary.withOpacity(0.1), - width: 1, - ), - ), - child: const Icon( - Icons.notifications_none_rounded, - color: AppColor.primary, - size: 20, - ), - ), - ], + actions: [ActionIconButton(onTap: () {}, icon: LineIcons.bell)], ), ), ), From 795281f52dba02eb271cc206f96413fb06a5cfaa Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 23:27:34 +0700 Subject: [PATCH 011/108] feat: transaction page --- .../pages/transaction/transaction_page.dart | 896 +++++------------- .../pages/transaction/widgets/appbar.dart | 97 ++ .../transaction/widgets/status_tile.dart | 39 + .../transaction/widgets/transaction_tile.dart | 401 ++++++++ 4 files changed, 786 insertions(+), 647 deletions(-) create mode 100644 lib/presentation/pages/transaction/widgets/appbar.dart create mode 100644 lib/presentation/pages/transaction/widgets/status_tile.dart create mode 100644 lib/presentation/pages/transaction/widgets/transaction_tile.dart diff --git a/lib/presentation/pages/transaction/transaction_page.dart b/lib/presentation/pages/transaction/transaction_page.dart index a5e10e3..7216c3c 100644 --- a/lib/presentation/pages/transaction/transaction_page.dart +++ b/lib/presentation/pages/transaction/transaction_page.dart @@ -1,39 +1,15 @@ +import 'dart:math' as math; + import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; import '../../../common/theme/theme.dart'; - -class Transaction { - final String id; - final String customerName; - final DateTime date; - final double total; - final String status; - final List items; - final String paymentMethod; - - Transaction({ - required this.id, - required this.customerName, - required this.date, - required this.total, - required this.status, - required this.items, - required this.paymentMethod, - }); -} - -class TransactionItem { - final String name; - final int quantity; - final double price; - - TransactionItem({ - required this.name, - required this.quantity, - required this.price, - }); -} +import '../../components/button/button.dart'; +import '../../components/spacer/spacer.dart'; +import 'widgets/appbar.dart'; +import 'widgets/status_tile.dart'; +import 'widgets/transaction_tile.dart'; @RoutePage() class TransactionPage extends StatefulWidget { @@ -43,665 +19,264 @@ class TransactionPage extends StatefulWidget { State createState() => _TransactionPageState(); } -class _TransactionPageState extends State { - String selectedFilter = 'All'; - DateTime selectedDate = DateTime.now(); +class _TransactionPageState extends State + with TickerProviderStateMixin { + late AnimationController _fadeController; + late AnimationController _slideController; + late AnimationController _rotationController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + late Animation _rotationAnimation; - final List transactions = [ + // Filter state + String selectedFilter = 'All'; + final List filterOptions = [ + 'All', + 'Completed', + 'Pending', + 'Refunded', + ]; + + @override + void initState() { + super.initState(); + + _fadeController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 1000), + vsync: this, + ); + + _rotationController = AnimationController( + duration: const Duration(seconds: 3), + vsync: this, + )..repeat(); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.elasticOut), + ); + + _rotationAnimation = Tween( + begin: 0, + end: 2 * math.pi, + ).animate(_rotationController); + + _fadeController.forward(); + _slideController.forward(); + } + + @override + void dispose() { + _fadeController.dispose(); + _slideController.dispose(); + _rotationController.dispose(); + super.dispose(); + } + + final sampleTransactions = [ Transaction( - id: 'TRX001', - customerName: 'Ahmad Rizki', - date: DateTime.now().subtract(Duration(hours: 2)), - total: 125000, - status: 'Completed', + id: 'TXN001', + customerName: 'John Doe', + date: DateTime.now().subtract(const Duration(hours: 2)), + totalAmount: 125000, + itemCount: 3, paymentMethod: 'Cash', - items: [ - TransactionItem(name: 'Nasi Goreng', quantity: 2, price: 25000), - TransactionItem(name: 'Es Teh', quantity: 3, price: 5000), - TransactionItem(name: 'Ayam Bakar', quantity: 1, price: 35000), - ], + status: TransactionStatus.completed, + receiptNumber: 'RCP-2024-001', ), Transaction( - id: 'TRX002', - customerName: 'Siti Nurhaliza', - date: DateTime.now().subtract(Duration(hours: 4)), - total: 85000, - status: 'Completed', + id: 'TXN002', + customerName: 'Jane Smith', + date: DateTime.now().subtract(const Duration(hours: 5)), + totalAmount: 87500, + itemCount: 2, paymentMethod: 'QRIS', - items: [ - TransactionItem(name: 'Gado-gado', quantity: 1, price: 20000), - TransactionItem(name: 'Jus Jeruk', quantity: 2, price: 12000), - TransactionItem(name: 'Kerupuk', quantity: 1, price: 5000), - ], + status: TransactionStatus.pending, + receiptNumber: 'RCP-2024-002', ), Transaction( - id: 'TRX003', - customerName: 'Budi Santoso', - date: DateTime.now().subtract(Duration(hours: 6)), - total: 200000, - status: 'Pending', - paymentMethod: 'Debit Card', - items: [ - TransactionItem(name: 'Paket Keluarga', quantity: 1, price: 150000), - TransactionItem(name: 'Es Campur', quantity: 2, price: 15000), - ], + id: 'TXN003', + customerName: 'Bob Johnson', + date: DateTime.now().subtract(const Duration(days: 1)), + totalAmount: 250000, + itemCount: 5, + paymentMethod: 'Credit Card', + status: TransactionStatus.refunded, + receiptNumber: 'RCP-2024-003', ), ]; + // Filter transactions based on selected status + List get filteredTransactions { + if (selectedFilter == 'All') { + return sampleTransactions; + } + + TransactionStatus? filterStatus; + switch (selectedFilter) { + case 'Completed': + filterStatus = TransactionStatus.completed; + break; + case 'Pending': + filterStatus = TransactionStatus.pending; + break; + case 'Refunded': + filterStatus = TransactionStatus.refunded; + break; + } + + return sampleTransactions + .where((transaction) => transaction.status == filterStatus) + .toList(); + } + + // Build filter chip + @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - appBar: AppBar( - elevation: 0, - backgroundColor: AppColor.white, - title: Text( - 'Transactions', - style: TextStyle( - color: AppColor.textPrimary, - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - actions: [ - IconButton( - icon: Icon(Icons.search, color: AppColor.textPrimary), - onPressed: () {}, - ), - IconButton( - icon: Icon(Icons.filter_list, color: AppColor.textPrimary), - onPressed: () => _showFilterBottomSheet(context), - ), - ], - ), - body: Column( - children: [ - _buildSummaryCards(), - _buildFilterTabs(), - Expanded(child: _buildTransactionList()), - ], - ), - floatingActionButton: FloatingActionButton.extended( - onPressed: () {}, - backgroundColor: AppColor.primary, - icon: Icon(Icons.add, color: AppColor.white), - label: Text( - 'New Sale', - style: TextStyle(color: AppColor.white, fontWeight: FontWeight.w600), - ), - ), - ); - } - - Widget _buildSummaryCards() { - return Container( - padding: EdgeInsets.all(16), - child: Row( - children: [ - Expanded( - child: _buildSummaryCard( - 'Today\'s Sales', - 'Rp 2,450,000', - Icons.trending_up, - AppColor.success, - '+12%', + body: CustomScrollView( + slivers: [ + // Custom App Bar with Hero Effect + SliverAppBar( + expandedHeight: 120, + floating: true, + pinned: true, + backgroundColor: AppColor.primary, + centerTitle: false, + flexibleSpace: TransactionAppBar( + rotationAnimation: _rotationAnimation, ), - ), - SizedBox(width: 12), - Expanded( - child: _buildSummaryCard( - 'Total Orders', - '48', - Icons.receipt_long, - AppColor.info, - '+8%', - ), - ), - ], - ), - ); - } - - Widget _buildSummaryCard( - String title, - String value, - IconData icon, - Color color, - String change, - ) { - return Container( - padding: EdgeInsets.all(16), - decoration: BoxDecoration( - color: AppColor.white, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: AppColor.black.withOpacity(0.05), - blurRadius: 10, - offset: Offset(0, 2), - ), - ], - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Icon(icon, color: color, size: 24), - Container( - padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: AppColor.success.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - change, - style: TextStyle( - color: AppColor.success, - fontSize: 10, - fontWeight: FontWeight.w600, - ), - ), - ), + actions: [ + ActionIconButton(onTap: () {}, icon: LineIcons.filter), + SpaceWidth(8), ], ), - SizedBox(height: 12), - Text( - value, - style: TextStyle( - color: AppColor.textPrimary, - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - SizedBox(height: 4), - Text( - title, - style: TextStyle( - color: AppColor.textSecondary, - fontSize: 12, - fontWeight: FontWeight.w500, - ), - ), - ], - ), - ); - } - Widget _buildFilterTabs() { - final filters = ['All', 'Completed', 'Pending', 'Cancelled']; - - return Container( - height: 60, - padding: EdgeInsets.symmetric(horizontal: 16), - child: ListView.builder( - scrollDirection: Axis.horizontal, - itemCount: filters.length, - itemBuilder: (context, index) { - final filter = filters[index]; - final isSelected = selectedFilter == filter; - - return GestureDetector( - onTap: () { - setState(() { - selectedFilter = filter; - }); - }, - child: Container( - margin: EdgeInsets.only(right: 12, top: 8, bottom: 8), - padding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - decoration: BoxDecoration( - color: isSelected ? AppColor.primary : AppColor.white, - borderRadius: BorderRadius.circular(25), - border: Border.all( - color: isSelected ? AppColor.primary : AppColor.border, - width: 1, + // Pinned Filter Section + SliverPersistentHeader( + pinned: true, + delegate: _FilterHeaderDelegate( + child: Container( + color: AppColor.background, + padding: EdgeInsets.fromLTRB( + AppValue.padding, + 10, + AppValue.padding, + 10, ), - ), - child: Text( - filter, - style: TextStyle( - color: isSelected ? AppColor.white : AppColor.textSecondary, - fontWeight: FontWeight.w600, - fontSize: 14, - ), - ), - ), - ); - }, - ), - ); - } - - Widget _buildTransactionList() { - final filteredTransactions = transactions.where((transaction) { - if (selectedFilter == 'All') return true; - return transaction.status == selectedFilter; - }).toList(); - - return ListView.builder( - padding: EdgeInsets.symmetric(horizontal: 16), - itemCount: filteredTransactions.length, - itemBuilder: (context, index) { - final transaction = filteredTransactions[index]; - return _buildTransactionCard(transaction); - }, - ); - } - - Widget _buildTransactionCard(Transaction transaction) { - return GestureDetector( - onTap: () => _showTransactionDetail(transaction), - child: Container( - margin: EdgeInsets.only(bottom: 12), - padding: EdgeInsets.all(16), - decoration: BoxDecoration( - color: AppColor.white, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: AppColor.black.withOpacity(0.05), - blurRadius: 10, - offset: Offset(0, 2), - ), - ], - ), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - transaction.id, - style: TextStyle( - color: AppColor.textPrimary, - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - SizedBox(height: 4), - Text( - transaction.customerName, - style: TextStyle( - color: AppColor.textSecondary, - fontSize: 14, - ), - ), - SizedBox(height: 4), - Text( - '${_formatTime(transaction.date)} โ€ข ${transaction.paymentMethod}', - style: TextStyle( - color: AppColor.textLight, - fontSize: 12, - ), - ), - ], - ), - ), - Column( - crossAxisAlignment: CrossAxisAlignment.end, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'Rp ${_formatCurrency(transaction.total)}', - style: TextStyle( - color: AppColor.textPrimary, - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - SizedBox(height: 8), - Container( - padding: EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - color: _getStatusColor( - transaction.status, - ).withOpacity(0.1), - borderRadius: BorderRadius.circular(20), - ), - child: Text( - transaction.status, - style: TextStyle( - color: _getStatusColor(transaction.status), - fontSize: 12, - fontWeight: FontWeight.w600, - ), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: filterOptions.map((option) { + final index = filterOptions.indexOf(option); + return Padding( + padding: EdgeInsets.only( + right: index < filterOptions.length - 1 ? 8 : 0, + ), + child: TransactionStatusTile( + label: option, + isSelected: option == selectedFilter, + onSelected: (isSelected) { + if (isSelected) { + setState(() { + selectedFilter = option; + }); + } + }, + ), + ); + }).toList(), ), ), ], ), - ], - ), - SizedBox(height: 12), - Row( - children: [ - Icon( - Icons.shopping_bag_outlined, - color: AppColor.textLight, - size: 16, - ), - SizedBox(width: 8), - Text( - '${transaction.items.length} items', - style: TextStyle(color: AppColor.textLight, fontSize: 12), - ), - Spacer(), - Icon( - Icons.arrow_forward_ios, - color: AppColor.textLight, - size: 14, - ), - ], - ), - ], - ), - ), - ); - } - - Color _getStatusColor(String status) { - switch (status) { - case 'Completed': - return AppColor.success; - case 'Pending': - return AppColor.warning; - case 'Cancelled': - return AppColor.error; - default: - return AppColor.textSecondary; - } - } - - String _formatCurrency(double amount) { - return amount - .toStringAsFixed(0) - .replaceAllMapped( - RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), - (Match m) => '${m[1]},', - ); - } - - String _formatTime(DateTime dateTime) { - final now = DateTime.now(); - final difference = now.difference(dateTime); - - if (difference.inHours < 1) { - return '${difference.inMinutes}m ago'; - } else if (difference.inHours < 24) { - return '${difference.inHours}h ago'; - } else { - return '${difference.inDays}d ago'; - } - } - - void _showFilterBottomSheet(BuildContext context) { - showModalBottomSheet( - context: context, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.vertical(top: Radius.circular(20)), - ), - builder: (context) { - return Container( - padding: EdgeInsets.all(20), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Filter Transactions', - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), ), - SizedBox(height: 20), - _buildFilterOption('Date Range', Icons.date_range), - _buildFilterOption('Payment Method', Icons.payment), - _buildFilterOption('Amount Range', Icons.attach_money), - _buildFilterOption('Customer', Icons.person), - SizedBox(height: 20), - Row( - children: [ - Expanded( - child: OutlinedButton( - onPressed: () => Navigator.pop(context), - style: OutlinedButton.styleFrom( - side: BorderSide(color: AppColor.border), - padding: EdgeInsets.symmetric(vertical: 12), - ), - child: Text( - 'Reset', - style: TextStyle(color: AppColor.textSecondary), - ), - ), - ), - SizedBox(width: 12), - Expanded( - child: ElevatedButton( - onPressed: () => Navigator.pop(context), - style: ElevatedButton.styleFrom( - backgroundColor: AppColor.primary, - padding: EdgeInsets.symmetric(vertical: 12), - ), - child: Text( - 'Apply', - style: TextStyle(color: AppColor.white), - ), - ), - ), - ], - ), - ], + ), ), - ); - }, - ); - } - Widget _buildFilterOption(String title, IconData icon) { - return ListTile( - contentPadding: EdgeInsets.zero, - leading: Icon(icon, color: AppColor.textSecondary), - title: Text(title, style: TextStyle(color: AppColor.textPrimary)), - trailing: Icon( - Icons.arrow_forward_ios, - size: 16, - color: AppColor.textLight, - ), - onTap: () {}, - ); - } + // Content + SliverPadding( + padding: EdgeInsets.all(AppValue.padding), + sliver: SliverList( + delegate: SliverChildListDelegate([ + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + children: [ + // Show filtered transaction count + if (selectedFilter != 'All') + Padding( + padding: const EdgeInsets.only(bottom: 16), + child: Row( + children: [ + Text( + '${filteredTransactions.length} ${selectedFilter.toLowerCase()} transaction${filteredTransactions.length != 1 ? 's' : ''}', + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 14, + ), + ), + ], + ), + ), - void _showTransactionDetail(Transaction transaction) { - showModalBottomSheet( - context: context, - isScrollControlled: true, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.vertical(top: Radius.circular(20)), - ), - builder: (context) { - return DraggableScrollableSheet( - initialChildSize: 0.7, - maxChildSize: 0.9, - minChildSize: 0.5, - builder: (context, scrollController) { - return Container( - padding: EdgeInsets.all(20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Center( - child: Container( - width: 40, - height: 4, - decoration: BoxDecoration( - color: AppColor.borderLight, - borderRadius: BorderRadius.circular(2), - ), - ), - ), - SizedBox(height: 20), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Transaction Detail', - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), - ), - Container( - padding: EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - color: _getStatusColor( - transaction.status, - ).withOpacity(0.1), - borderRadius: BorderRadius.circular(20), - ), - child: Text( - transaction.status, - style: TextStyle( - color: _getStatusColor(transaction.status), - fontSize: 12, - fontWeight: FontWeight.w600, - ), - ), - ), - ], - ), - SizedBox(height: 20), - _buildDetailRow('Transaction ID', transaction.id), - _buildDetailRow('Customer', transaction.customerName), - _buildDetailRow( - 'Date', - '${transaction.date.day}/${transaction.date.month}/${transaction.date.year}', - ), - _buildDetailRow('Payment Method', transaction.paymentMethod), - SizedBox(height: 20), - Text( - 'Items Ordered', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), - ), - SizedBox(height: 12), - Expanded( - child: ListView.builder( - controller: scrollController, - itemCount: transaction.items.length, - itemBuilder: (context, index) { - final item = transaction.items[index]; - return Container( - margin: EdgeInsets.only(bottom: 8), - padding: EdgeInsets.all(12), - decoration: BoxDecoration( - color: AppColor.backgroundLight, - borderRadius: BorderRadius.circular(8), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( + // Transaction List + filteredTransactions.isEmpty + ? Container( + padding: const EdgeInsets.symmetric( + vertical: 40, + ), child: Column( - crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - item.name, - style: TextStyle( - color: AppColor.textPrimary, - fontWeight: FontWeight.w600, + Icon( + LineIcons.receipt, + size: 64, + color: AppColor.textSecondary.withOpacity( + 0.5, ), ), + const SizedBox(height: 16), Text( - 'Qty: ${item.quantity}', + 'No ${selectedFilter.toLowerCase()} transactions found', style: TextStyle( color: AppColor.textSecondary, - fontSize: 12, + fontSize: 16, ), ), ], ), + ) + : Column( + children: filteredTransactions.map(( + transaction, + ) { + return TransactionTile( + transaction: transaction, + onTap: () {}, + ); + }).toList(), ), - Text( - 'Rp ${_formatCurrency(item.price * item.quantity)}', - style: TextStyle( - color: AppColor.textPrimary, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - ); - }, - ), - ), - Container( - padding: EdgeInsets.symmetric(vertical: 16), - decoration: BoxDecoration( - border: Border(top: BorderSide(color: AppColor.border)), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Total Amount', - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), - ), - Text( - 'Rp ${_formatCurrency(transaction.total)}', - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: AppColor.primary, - ), - ), ], ), ), - ], - ), - ); - }, - ); - }, - ); - } - - Widget _buildDetailRow(String label, String value) { - return Padding( - padding: EdgeInsets.symmetric(vertical: 8), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - label, - style: TextStyle(color: AppColor.textSecondary, fontSize: 14), - ), - Text( - value, - style: TextStyle( - color: AppColor.textPrimary, - fontSize: 14, - fontWeight: FontWeight.w600, + ), + ]), ), ), ], @@ -709,3 +284,30 @@ class _TransactionPageState extends State { ); } } + +// Custom delegate for pinned filter header +class _FilterHeaderDelegate extends SliverPersistentHeaderDelegate { + final Widget child; + + _FilterHeaderDelegate({required this.child}); + + @override + double get minExtent => 70; // Minimum height when collapsed + + @override + double get maxExtent => 70; // Maximum height when expanded + + @override + Widget build( + BuildContext context, + double shrinkOffset, + bool overlapsContent, + ) { + return child; + } + + @override + bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) { + return false; + } +} diff --git a/lib/presentation/pages/transaction/widgets/appbar.dart b/lib/presentation/pages/transaction/widgets/appbar.dart new file mode 100644 index 0000000..d868958 --- /dev/null +++ b/lib/presentation/pages/transaction/widgets/appbar.dart @@ -0,0 +1,97 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class TransactionAppBar extends StatelessWidget { + final Animation rotationAnimation; + const TransactionAppBar({super.key, required this.rotationAnimation}); + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 20, bottom: 16), + title: Text( + 'Transaksi', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/transaction/widgets/status_tile.dart b/lib/presentation/pages/transaction/widgets/status_tile.dart new file mode 100644 index 0000000..11757fe --- /dev/null +++ b/lib/presentation/pages/transaction/widgets/status_tile.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class TransactionStatusTile extends StatelessWidget { + final String label; + final bool isSelected; + final void Function(bool)? onSelected; + const TransactionStatusTile({ + super.key, + required this.label, + this.isSelected = false, + this.onSelected, + }); + + @override + Widget build(BuildContext context) { + return FilterChip( + label: Text( + label, + style: TextStyle( + color: isSelected ? Colors.white : AppColor.primary, + fontWeight: isSelected ? FontWeight.w600 : FontWeight.normal, + ), + ), + selected: isSelected, + onSelected: onSelected, + backgroundColor: Colors.white, + selectedColor: AppColor.primary, + checkmarkColor: Colors.white, + side: BorderSide( + color: isSelected ? AppColor.primary : Colors.grey.shade300, + width: 1, + ), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + ); + } +} diff --git a/lib/presentation/pages/transaction/widgets/transaction_tile.dart b/lib/presentation/pages/transaction/widgets/transaction_tile.dart new file mode 100644 index 0000000..2e8923e --- /dev/null +++ b/lib/presentation/pages/transaction/widgets/transaction_tile.dart @@ -0,0 +1,401 @@ +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; + +import '../../../../common/theme/theme.dart'; + +// Model untuk Transaction +class Transaction { + final String id; + final String customerName; + final DateTime date; + final double totalAmount; + final int itemCount; + final String paymentMethod; + final TransactionStatus status; + final String? receiptNumber; + + Transaction({ + required this.id, + required this.customerName, + required this.date, + required this.totalAmount, + required this.itemCount, + required this.paymentMethod, + required this.status, + this.receiptNumber, + }); +} + +enum TransactionStatus { completed, pending, cancelled, refunded } + +class TransactionTile extends StatelessWidget { + final Transaction transaction; + final VoidCallback? onTap; + final VoidCallback? onPrint; + final VoidCallback? onRefund; + + const TransactionTile({ + super.key, + required this.transaction, + this.onTap, + this.onPrint, + this.onRefund, + }); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.only(bottom: 16), + child: Card( + elevation: 4, + shadowColor: AppColor.primaryWithOpacity(0.1), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + side: BorderSide(color: AppColor.border, width: 0.5), + ), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(16), + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [AppColor.backgroundLight, AppColor.background], + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header Row + _buildHeaderRow(), + const SizedBox(height: 12), + + // Transaction Info + _buildTransactionInfo(), + const SizedBox(height: 16), + + // Amount Section + _buildAmountSection(), + const SizedBox(height: 16), + + // Footer with Actions + _buildFooterActions(), + ], + ), + ), + ), + ), + ); + } + + Widget _buildHeaderRow() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + transaction.receiptNumber ?? 'TXN-${transaction.id}', + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 2), + Text( + DateFormat('dd MMM yyyy, HH:mm').format(transaction.date), + style: const TextStyle( + fontSize: 12, + color: AppColor.textSecondary, + ), + ), + ], + ), + _buildStatusChip(), + ], + ); + } + + Widget _buildStatusChip() { + Color statusColor; + String statusText; + IconData statusIcon; + + switch (transaction.status) { + case TransactionStatus.completed: + statusColor = AppColor.success; + statusText = 'Completed'; + statusIcon = Icons.check_circle; + break; + case TransactionStatus.pending: + statusColor = AppColor.warning; + statusText = 'Pending'; + statusIcon = Icons.schedule; + break; + case TransactionStatus.cancelled: + statusColor = AppColor.error; + statusText = 'Cancelled'; + statusIcon = Icons.cancel; + break; + case TransactionStatus.refunded: + statusColor = AppColor.info; + statusText = 'Refunded'; + statusIcon = Icons.undo; + break; + } + + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), + decoration: BoxDecoration( + color: statusColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: statusColor.withOpacity(0.3), width: 1), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(statusIcon, size: 14, color: statusColor), + const SizedBox(width: 4), + Text( + statusText, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: statusColor, + ), + ), + ], + ), + ); + } + + Widget _buildTransactionInfo() { + return Row( + children: [ + Expanded( + flex: 2, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon(Icons.person_outline, size: 16, color: AppColor.primary), + const SizedBox(width: 6), + Expanded( + child: Text( + transaction.customerName, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.shopping_bag_outlined, + size: 16, + color: AppColor.primary, + ), + const SizedBox(width: 6), + Text( + '${transaction.itemCount} items', + style: const TextStyle( + fontSize: 13, + color: AppColor.textSecondary, + ), + ), + ], + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: AppColor.primaryWithOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + _getPaymentIcon(transaction.paymentMethod), + size: 16, + color: AppColor.primary, + ), + const SizedBox(width: 6), + Text( + transaction.paymentMethod, + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: AppColor.primary, + ), + ), + ], + ), + ), + ], + ); + } + + Widget _buildAmountSection() { + return Container( + width: double.infinity, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: AppColor.primaryGradient, + ), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'Total Amount', + style: TextStyle( + fontSize: 14, + color: AppColor.textWhite, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Text( + 'Rp ${NumberFormat('#,###').format(transaction.totalAmount)}', + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: AppColor.textWhite, + ), + ), + ], + ), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.backgroundLight.withOpacity(0.2), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.attach_money, + color: AppColor.textWhite, + size: 24, + ), + ), + ], + ), + ); + } + + Widget _buildFooterActions() { + return Row( + children: [ + Expanded( + child: Text( + 'ID: ${transaction.id}', + style: const TextStyle( + fontSize: 11, + color: AppColor.textLight, + fontWeight: FontWeight.w500, + ), + ), + ), + if (transaction.status == TransactionStatus.completed) ...[ + _buildActionButton( + icon: Icons.print, + label: 'Print', + onPressed: onPrint, + color: AppColor.info, + ), + const SizedBox(width: 8), + _buildActionButton( + icon: Icons.undo, + label: 'Refund', + onPressed: onRefund, + color: AppColor.warning, + ), + ], + ], + ); + } + + Widget _buildActionButton({ + required IconData icon, + required String label, + required VoidCallback? onPressed, + required Color color, + }) { + return Material( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + child: InkWell( + onTap: onPressed, + borderRadius: BorderRadius.circular(8), + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, size: 16, color: color), + const SizedBox(width: 4), + Text( + label, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: color, + ), + ), + ], + ), + ), + ), + ); + } + + IconData _getPaymentIcon(String paymentMethod) { + switch (paymentMethod.toLowerCase()) { + case 'cash': + return Icons.payments; + case 'card': + case 'credit card': + case 'debit card': + return Icons.credit_card; + case 'qris': + case 'qr code': + return Icons.qr_code; + case 'transfer': + case 'bank transfer': + return Icons.account_balance; + case 'e-wallet': + case 'digital wallet': + return Icons.account_balance_wallet; + default: + return Icons.payment; + } + } +} From 138640d47d7b140206e9fbb3a9102ffc53630fde Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 Aug 2025 23:43:07 +0700 Subject: [PATCH 012/108] feat: update home page --- lib/presentation/pages/home/home_page.dart | 156 ++++++++------------- 1 file changed, 59 insertions(+), 97 deletions(-) diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 82d7e74..a314379 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -21,21 +21,12 @@ class HomePage extends StatefulWidget { } class _HomePageState extends State with TickerProviderStateMixin { - late ScrollController _scrollController; late AnimationController _headerAnimationController; late AnimationController _contentAnimationController; - late AnimationController _appBarAnimationController; - - late Animation _appBarOpacityAnimation; - late Animation _appBarSlideAnimation; - - bool _showAppBar = false; @override void initState() { super.initState(); - _scrollController = ScrollController(); - _scrollController.addListener(_scrollListener); _headerAnimationController = AnimationController( duration: const Duration(milliseconds: 800), @@ -47,28 +38,6 @@ class _HomePageState extends State with TickerProviderStateMixin { vsync: this, ); - // AppBar Animation Controller - _appBarAnimationController = AnimationController( - duration: const Duration(milliseconds: 300), - vsync: this, - ); - - // AppBar Animations - _appBarOpacityAnimation = Tween(begin: 0.0, end: 1.0).animate( - CurvedAnimation( - parent: _appBarAnimationController, - curve: Curves.easeInOut, - ), - ); - - _appBarSlideAnimation = - Tween(begin: const Offset(0.0, -1.0), end: Offset.zero).animate( - CurvedAnimation( - parent: _appBarAnimationController, - curve: Curves.easeOutCubic, - ), - ); - _startAnimations(); } @@ -79,86 +48,79 @@ class _HomePageState extends State with TickerProviderStateMixin { }); } - void _scrollListener() { - const double threshold = 200.0; - - if (_scrollController.offset > threshold && !_showAppBar) { - setState(() { - _showAppBar = true; - }); - _appBarAnimationController.forward(); - } else if (_scrollController.offset <= threshold && _showAppBar) { - _appBarAnimationController.reverse().then((_) { - if (mounted) { - setState(() { - _showAppBar = false; - }); - } - }); - } - } - @override void dispose() { - _scrollController.removeListener(_scrollListener); - _scrollController.dispose(); _headerAnimationController.dispose(); _contentAnimationController.dispose(); - _appBarAnimationController.dispose(); super.dispose(); } - PreferredSizeWidget? _buildAnimatedAppBar() { - if (!_showAppBar) return null; - - return PreferredSize( - preferredSize: const Size.fromHeight(kToolbarHeight), - child: SlideTransition( - position: _appBarSlideAnimation, - child: FadeTransition( - opacity: _appBarOpacityAnimation, - child: AppBar( - title: const Text( - 'AppSkel POS Owner', - style: TextStyle( - fontWeight: FontWeight.w700, - fontSize: 18, - letterSpacing: -0.5, - ), - ), - foregroundColor: AppColor.textPrimary, - elevation: 0, - scrolledUnderElevation: 0, - shadowColor: AppColor.primary.withOpacity(0.1), - actions: [ActionIconButton(onTap: () {}, icon: LineIcons.bell)], - ), - ), - ), - ); - } - @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - appBar: _buildAnimatedAppBar(), body: CustomScrollView( - controller: _scrollController, - physics: const BouncingScrollPhysics(), + physics: const BouncingScrollPhysics(parent: ClampingScrollPhysics()), slivers: [ - // Enhanced Header - SliverToBoxAdapter( - child: AnimatedBuilder( - animation: _headerAnimationController, - builder: (context, child) { - return Transform.translate( - offset: Offset( - 0, - 50 * (1 - _headerAnimationController.value), + // SliverAppBar with HomeHeader as background + SliverAppBar( + expandedHeight: 250, // Adjust based on HomeHeader height + floating: true, + pinned: true, + snap: true, + elevation: 0, + scrolledUnderElevation: 8, + backgroundColor: AppColor.primary, + surfaceTintColor: Colors.transparent, + flexibleSpace: LayoutBuilder( + builder: (BuildContext context, BoxConstraints constraints) { + // Calculate collapse progress (0.0 = expanded, 1.0 = collapsed) + final double expandedHeight = 200; + final double collapsedHeight = + kToolbarHeight + MediaQuery.of(context).padding.top; + final double currentHeight = constraints.maxHeight; + + double collapseProgress = + 1.0 - + ((currentHeight - collapsedHeight) / + (expandedHeight - collapsedHeight)); + collapseProgress = collapseProgress.clamp(0.0, 1.0); + + return FlexibleSpaceBar( + title: Opacity( + opacity: collapseProgress, // Title muncul saat collapse + child: Row( + children: [ + Expanded( + child: Text( + 'AppSkel POS Owner', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.w700, + fontSize: 18, + letterSpacing: -0.5, + color: AppColor.white, + ), + ), + ), + ActionIconButton(onTap: () {}, icon: LineIcons.bell), + ], + ), ), - child: Opacity( - opacity: _headerAnimationController.value, - child: HomeHeader(), + titlePadding: const EdgeInsets.only(left: 16, bottom: 16), + background: AnimatedBuilder( + animation: _headerAnimationController, + builder: (context, child) { + return Transform.translate( + offset: Offset( + 0, + 50 * (1 - _headerAnimationController.value), + ), + child: Opacity( + opacity: _headerAnimationController.value, + child: HomeHeader(), + ), + ); + }, ), ); }, From 644531500d42591072fb338810aff0ec2383355a Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 00:02:35 +0700 Subject: [PATCH 013/108] feat: update profile --- lib/presentation/pages/home/home_page.dart | 6 +- .../pages/profile/profile_page.dart | 101 ++++-- .../pages/profile/widgets/app_setting.dart | 55 ++- .../pages/profile/widgets/header.dart | 321 +++++++++++++++--- 4 files changed, 367 insertions(+), 116 deletions(-) diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index a314379..7c08b08 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -106,7 +106,11 @@ class _HomePageState extends State with TickerProviderStateMixin { ], ), ), - titlePadding: const EdgeInsets.only(left: 16, bottom: 16), + titlePadding: const EdgeInsets.only( + left: 20, + right: 12, + bottom: 16, + ), background: AnimatedBuilder( animation: _headerAnimationController, builder: (context, child) { diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 51c95c5..0949d45 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -1,7 +1,9 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; import '../../../common/theme/theme.dart'; +import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/account_info.dart'; import 'widgets/app_setting.dart'; @@ -23,43 +25,76 @@ class _ProfilePageState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - appBar: AppBar( - title: Text( - 'Profile', - style: AppStyle.xxl.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w600, + body: CustomScrollView( + slivers: [ + SliverAppBar( + backgroundColor: AppColor.primary, + elevation: 0, + pinned: true, + expandedHeight: 264.0, + flexibleSpace: LayoutBuilder( + builder: (BuildContext context, BoxConstraints constraints) { + // Calculate the collapse ratio + final double top = constraints.biggest.height; + final double collapsedHeight = + MediaQuery.of(context).padding.top + kToolbarHeight; + final double expandedHeight = 264.0; + final double shrinkRatio = + ((expandedHeight - top) / + (expandedHeight - collapsedHeight)) + .clamp(0.0, 1.0); + + return FlexibleSpaceBar( + background: ProfileHeader(), + titlePadding: const EdgeInsets.only( + left: 20, + right: 12, + bottom: 16, + ), + title: Opacity( + opacity: shrinkRatio, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Profile', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.w700, + fontSize: 18, + letterSpacing: -0.5, + color: AppColor.white, + ), + ), + ActionIconButton( + onTap: () {}, + icon: LineIcons.userEdit, + ), + ], + ), + ), + ); + }, + ), ), - ), - backgroundColor: AppColor.primary, - elevation: 0, - actions: [ - IconButton( - icon: const Icon(Icons.edit, color: AppColor.textWhite), - onPressed: () { - // Navigate to edit profile - }, + SliverToBoxAdapter( + child: Column( + children: [ + const SpaceHeight(20), + ProfileAccountInfo(), + const SpaceHeight(12), + ProfileBusinessSetting(), + const SpaceHeight(12), + ProfileAppSetting(), + const SpaceHeight(12), + ProfileSupport(), + const SpaceHeight(12), + ProfileDangerZone(), + const SpaceHeight(30), + ], + ), ), ], ), - body: SingleChildScrollView( - child: Column( - children: [ - ProfileHeader(), - const SpaceHeight(20), - ProfileAccountInfo(), - const SpaceHeight(12), - ProfileBusinessSetting(), - const SpaceHeight(12), - ProfileAppSetting(), - const SpaceHeight(12), - ProfileSupport(), - const SpaceHeight(12), - ProfileDangerZone(), - const SpaceHeight(30), - ], - ), - ), ); } } diff --git a/lib/presentation/pages/profile/widgets/app_setting.dart b/lib/presentation/pages/profile/widgets/app_setting.dart index 16b8e44..8f34b27 100644 --- a/lib/presentation/pages/profile/widgets/app_setting.dart +++ b/lib/presentation/pages/profile/widgets/app_setting.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; import 'divider.dart'; -import 'profile_switch_tile.dart'; import 'profile_tile.dart'; class ProfileAppSetting extends StatefulWidget { @@ -13,8 +12,8 @@ class ProfileAppSetting extends StatefulWidget { } class _ProfileAppSettingState extends State { - bool _notificationsEnabled = true; - bool _darkModeEnabled = false; + // bool _notificationsEnabled = true; + // bool _darkModeEnabled = false; @override Widget build(BuildContext context) { @@ -46,34 +45,32 @@ class _ProfileAppSettingState extends State { ), ), - ProfileSwitchTile( - icon: Icons.notifications_outlined, - title: 'Notifications', - subtitle: 'Receive app notifications', - value: _notificationsEnabled, - onChanged: (value) { - setState(() { - _notificationsEnabled = value; - }); - }, - ), + // ProfileSwitchTile( + // icon: Icons.notifications_outlined, + // title: 'Notifications', + // subtitle: 'Receive app notifications', + // value: _notificationsEnabled, + // onChanged: (value) { + // setState(() { + // _notificationsEnabled = value; + // }); + // }, + // ), - ProfileDivider(), - - ProfileSwitchTile( - icon: Icons.dark_mode_outlined, - title: 'Dark Mode', - subtitle: 'Switch to dark theme', - value: _darkModeEnabled, - onChanged: (value) { - setState(() { - _darkModeEnabled = value; - }); - }, - ), - - ProfileDivider(), + // ProfileDivider(), + // ProfileSwitchTile( + // icon: Icons.dark_mode_outlined, + // title: 'Dark Mode', + // subtitle: 'Switch to dark theme', + // value: _darkModeEnabled, + // onChanged: (value) { + // setState(() { + // _darkModeEnabled = value; + // }); + // }, + // ), + // ProfileDivider(), ProfileTile( icon: Icons.language_outlined, title: 'Language', diff --git a/lib/presentation/pages/profile/widgets/header.dart b/lib/presentation/pages/profile/widgets/header.dart index 8688b9a..a8ebe71 100644 --- a/lib/presentation/pages/profile/widgets/header.dart +++ b/lib/presentation/pages/profile/widgets/header.dart @@ -3,76 +3,291 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/spacer/spacer.dart'; -class ProfileHeader extends StatelessWidget { +class ProfileHeader extends StatefulWidget { const ProfileHeader({super.key}); + @override + State createState() => _ProfileHeaderState(); +} + +class _ProfileHeaderState extends State + with SingleTickerProviderStateMixin { + late AnimationController _animationController; + late Animation _fadeInAnimation; + late Animation _slideAnimation; + late Animation _scaleAnimation; + + @override + void initState() { + super.initState(); + _animationController = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + + _fadeInAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.0, 0.6, curve: Curves.easeOut), + ), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.5), end: Offset.zero).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.2, 0.8, curve: Curves.easeOutCubic), + ), + ); + + _scaleAnimation = Tween(begin: 0.8, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.0, 0.7, curve: Curves.elasticOut), + ), + ); + + _animationController.forward(); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Container( width: double.infinity, - decoration: const BoxDecoration( + decoration: BoxDecoration( gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, + colors: [ + ...AppColor.primaryGradient, + AppColor.primaryGradient.last.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, ), + boxShadow: [ + BoxShadow( + color: AppColor.primaryGradient.first.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], ), - child: Column( + child: Stack( + alignment: Alignment.center, children: [ - const SpaceHeight(20), - - // Profile Picture - Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - border: Border.all(color: AppColor.textWhite, width: 3), - color: AppColor.primaryLight, + // Background decoration with floating circles + ...List.generate( + 6, + (index) => Positioned( + top: (index * 30.0) + 20, + right: (index * 40.0) - 50, + child: AnimatedBuilder( + animation: _animationController, + builder: (context, child) { + return Transform.rotate( + angle: _animationController.value * 2 * 3.14159 * 0.5, + child: Container( + width: 20 + (index * 5.0), + height: 20 + (index * 5.0), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.textWhite.withOpacity(0.1), + ), + ), + ); + }, + ), ), - child: ClipOval( - child: Container( - color: AppColor.primaryLight, - child: const Icon( - Icons.person, - size: 50, - color: AppColor.textWhite, + ), + + // Main content + Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SpaceHeight(30), + + // Profile Picture with enhanced design + AnimatedBuilder( + animation: _scaleAnimation, + builder: (context, child) { + return Transform.scale( + scale: _scaleAnimation.value, + child: Stack( + alignment: Alignment.center, + children: [ + // Outer glow effect + Container( + width: 120, + height: 120, + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: AppColor.textWhite.withOpacity(0.3), + blurRadius: 20, + spreadRadius: 5, + ), + ], + ), + ), + // Profile picture container + Container( + width: 110, + height: 110, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: AppColor.textWhite, + width: 4, + ), + gradient: LinearGradient( + colors: [ + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + child: ClipOval( + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.7), + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: const Icon( + Icons.person, + size: 55, + color: AppColor.textWhite, + ), + ), + ), + ), + // Online status indicator + Positioned( + bottom: 5, + right: 5, + child: Container( + width: 24, + height: 24, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.green, + border: Border.all( + color: AppColor.textWhite, + width: 3, + ), + ), + ), + ), + ], + ), + ); + }, + ), + + const SpaceHeight(20), + + // Name with animation + SlideTransition( + position: _slideAnimation, + child: FadeTransition( + opacity: _fadeInAnimation, + child: Column( + children: [ + Text( + 'John Doe', + style: AppStyle.h5.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textWhite, + shadows: [ + Shadow( + color: Colors.black.withOpacity(0.3), + offset: const Offset(0, 2), + blurRadius: 4, + ), + ], + ), + ), + const SpaceHeight(4), + Container( + height: 2, + width: 60, + decoration: BoxDecoration( + color: AppColor.textWhite.withOpacity(0.7), + borderRadius: BorderRadius.circular(1), + ), + ), + ], + ), ), ), - ), - ), - const SpaceHeight(16), + const SpaceHeight(12), - // Name - Text( - 'John Doe', - style: AppStyle.h5.copyWith( - fontSize: 24, - fontWeight: FontWeight.bold, - color: AppColor.textWhite, - ), - ), - - const SpaceHeight(4), - - // Role Badge - Container( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), - decoration: BoxDecoration( - color: AppColor.textWhite.withOpacity(0.2), - borderRadius: BorderRadius.circular(20), - ), - child: Text( - 'Business Owner', - style: AppStyle.md.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w500, + // Enhanced Role Badge + FadeTransition( + opacity: _fadeInAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 20, + vertical: 10, + ), + decoration: BoxDecoration( + color: AppColor.textWhite.withOpacity(0.25), + borderRadius: BorderRadius.circular(25), + border: Border.all( + color: AppColor.textWhite.withOpacity(0.3), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.business_center, + size: 16, + color: AppColor.textWhite.withOpacity(0.9), + ), + const SpaceHeight(6), + Text( + 'Business Owner', + style: AppStyle.md.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w600, + letterSpacing: 0.5, + ), + ), + ], + ), + ), + ), ), - ), - ), - const SpaceHeight(30), + const SpaceHeight(30), + ], + ), ], ), ); From e13aeefa1c788893fe65f93851526239f03ffec5 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 00:15:53 +0700 Subject: [PATCH 014/108] feat: language page --- lib/common/theme/theme.dart | 5 +- .../pages/language/language_page.dart | 116 ++++++++++++++++++ .../pages/language/widgets/language_tile.dart | 73 +++++++++++ .../pages/profile/widgets/app_setting.dart | 6 +- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 98 +++++++++------ 6 files changed, 256 insertions(+), 45 deletions(-) create mode 100644 lib/presentation/pages/language/language_page.dart create mode 100644 lib/presentation/pages/language/widgets/language_tile.dart diff --git a/lib/common/theme/theme.dart b/lib/common/theme/theme.dart index f4cda5d..6d1e1eb 100644 --- a/lib/common/theme/theme.dart +++ b/lib/common/theme/theme.dart @@ -58,8 +58,9 @@ class ThemeApp { appBarTheme: AppBarTheme( backgroundColor: AppColor.primary, elevation: 1, - titleTextStyle: AppStyle.lg.copyWith( - fontWeight: FontWeight.w600, + titleTextStyle: AppStyle.xl.copyWith( + fontWeight: FontWeight.w700, + letterSpacing: -0.5, color: AppColor.white, ), ), diff --git a/lib/presentation/pages/language/language_page.dart b/lib/presentation/pages/language/language_page.dart new file mode 100644 index 0000000..fe72a3e --- /dev/null +++ b/lib/presentation/pages/language/language_page.dart @@ -0,0 +1,116 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; +import '../../components/button/button.dart'; +import 'widgets/language_tile.dart'; + +@RoutePage() +class LanguagePage extends StatefulWidget { + const LanguagePage({super.key}); + + @override + State createState() => _LanguagePageState(); +} + +class _LanguagePageState extends State { + String selectedLanguage = 'en'; // Default language + + final List> languages = [ + {'code': 'en', 'name': 'English', 'nativeName': 'English', 'flag': '๐Ÿ‡บ๐Ÿ‡ธ'}, + { + 'code': 'id', + 'name': 'Indonesian', + 'nativeName': 'Bahasa Indonesia', + 'flag': '๐Ÿ‡ฎ๐Ÿ‡ฉ', + }, + {'code': 'es', 'name': 'Spanish', 'nativeName': 'Espaรฑol', 'flag': '๐Ÿ‡ช๐Ÿ‡ธ'}, + {'code': 'fr', 'name': 'French', 'nativeName': 'Franรงais', 'flag': '๐Ÿ‡ซ๐Ÿ‡ท'}, + {'code': 'de', 'name': 'German', 'nativeName': 'Deutsch', 'flag': '๐Ÿ‡ฉ๐Ÿ‡ช'}, + {'code': 'ja', 'name': 'Japanese', 'nativeName': 'ๆ—ฅๆœฌ่ชž', 'flag': '๐Ÿ‡ฏ๐Ÿ‡ต'}, + {'code': 'ko', 'name': 'Korean', 'nativeName': 'ํ•œ๊ตญ์–ด', 'flag': '๐Ÿ‡ฐ๐Ÿ‡ท'}, + {'code': 'zh', 'name': 'Chinese', 'nativeName': 'ไธญๆ–‡', 'flag': '๐Ÿ‡จ๐Ÿ‡ณ'}, + {'code': 'ar', 'name': 'Arabic', 'nativeName': 'ุงู„ุนุฑุจูŠุฉ', 'flag': '๐Ÿ‡ธ๐Ÿ‡ฆ'}, + { + 'code': 'pt', + 'name': 'Portuguese', + 'nativeName': 'Portuguรชs', + 'flag': '๐Ÿ‡ต๐Ÿ‡น', + }, + ]; + + void _selectLanguage(String languageCode) { + setState(() { + selectedLanguage = languageCode; + }); + } + + void _confirmSelection() { + // Here you would typically save the selected language to SharedPreferences + // or pass it back to the parent widget + Navigator.pop(context, selectedLanguage); + + // Show confirmation snackbar + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Language changed to ${_getLanguageName(selectedLanguage)}', + ), + backgroundColor: Colors.green, + duration: const Duration(seconds: 2), + ), + ); + } + + String _getLanguageName(String code) { + return languages.firstWhere((lang) => lang['code'] == code)['name']; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + appBar: AppBar( + title: const Text('Select Language'), + elevation: 0, + leading: IconButton( + icon: const Icon(Icons.arrow_back, color: Colors.white), + onPressed: () => context.router.back(), + ), + ), + body: Column( + children: [ + // Language list + Expanded( + child: ListView.builder( + padding: const EdgeInsets.all(16), + itemCount: languages.length, + itemBuilder: (context, index) { + final language = languages[index]; + final isSelected = selectedLanguage == language['code']; + + return LanguageTile( + isSelected: isSelected, + language: language, + onTap: () => _selectLanguage(language['code']), + ); + }, + ), + ), + + // Confirm button + Container( + padding: const EdgeInsets.all(16), + width: double.infinity, + decoration: BoxDecoration(color: AppColor.white), + child: AppElevatedButton( + text: 'Confirm', + isLoading: false, + onPressed: _confirmSelection, + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/language/widgets/language_tile.dart b/lib/presentation/pages/language/widgets/language_tile.dart new file mode 100644 index 0000000..f52dee0 --- /dev/null +++ b/lib/presentation/pages/language/widgets/language_tile.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class LanguageTile extends StatelessWidget { + final bool isSelected; + final Map language; + final Function() onTap; + const LanguageTile({ + super.key, + required this.isSelected, + required this.language, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.only(bottom: 8), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: isSelected ? AppColor.primary : AppColor.borderLight, + width: isSelected ? 2 : 1, + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: ListTile( + contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4), + leading: Container( + width: 48, + height: 48, + decoration: BoxDecoration( + color: Colors.grey[100], + borderRadius: BorderRadius.circular(24), + ), + child: Center( + child: Text(language['flag'], style: const TextStyle(fontSize: 24)), + ), + ), + title: Text( + language['name'], + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + + color: isSelected ? AppColor.primary : AppColor.textPrimary, + ), + ), + subtitle: Text( + language['nativeName'], + style: AppStyle.md.copyWith( + color: isSelected ? AppColor.primary : AppColor.textPrimary, + ), + ), + trailing: isSelected + ? Icon(Icons.check_circle, color: AppColor.primary, size: 24) + : Icon( + Icons.radio_button_unchecked, + color: AppColor.textLight, + size: 24, + ), + onTap: onTap, + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/app_setting.dart b/lib/presentation/pages/profile/widgets/app_setting.dart index 8f34b27..7e65e96 100644 --- a/lib/presentation/pages/profile/widgets/app_setting.dart +++ b/lib/presentation/pages/profile/widgets/app_setting.dart @@ -1,6 +1,8 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; +import '../../../router/app_router.gr.dart'; import 'divider.dart'; import 'profile_tile.dart'; @@ -75,9 +77,7 @@ class _ProfileAppSettingState extends State { icon: Icons.language_outlined, title: 'Language', subtitle: 'English (US)', - onTap: () { - // Show language selector - }, + onTap: () => context.router.push(LanguageRoute()), ), ProfileDivider(), diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 57f4892..d0091de 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -21,5 +21,8 @@ class AppRouter extends RootStackRouter { AutoRoute(page: ProfileRoute.page), ], ), + + // Language + AutoRoute(page: LanguageRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 2972cc6..bd838f8 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -10,30 +10,32 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i2; + as _i3; import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' as _i1; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i2; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' - as _i3; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i4; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i5; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i6; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i7; -import 'package:auto_route/auto_route.dart' as _i8; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i8; +import 'package:auto_route/auto_route.dart' as _i9; /// generated route for /// [_i1.HomePage] -class HomeRoute extends _i8.PageRouteInfo { - const HomeRoute({List<_i8.PageRouteInfo>? children}) +class HomeRoute extends _i9.PageRouteInfo { + const HomeRoute({List<_i9.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i8.PageInfo page = _i8.PageInfo( + static _i9.PageInfo page = _i9.PageInfo( name, builder: (data) { return const _i1.HomePage(); @@ -42,97 +44,113 @@ class HomeRoute extends _i8.PageRouteInfo { } /// generated route for -/// [_i2.LoginPage] -class LoginRoute extends _i8.PageRouteInfo { - const LoginRoute({List<_i8.PageRouteInfo>? children}) +/// [_i2.LanguagePage] +class LanguageRoute extends _i9.PageRouteInfo { + const LanguageRoute({List<_i9.PageRouteInfo>? children}) + : super(LanguageRoute.name, initialChildren: children); + + static const String name = 'LanguageRoute'; + + static _i9.PageInfo page = _i9.PageInfo( + name, + builder: (data) { + return const _i2.LanguagePage(); + }, + ); +} + +/// generated route for +/// [_i3.LoginPage] +class LoginRoute extends _i9.PageRouteInfo { + const LoginRoute({List<_i9.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i8.PageInfo page = _i8.PageInfo( + static _i9.PageInfo page = _i9.PageInfo( name, builder: (data) { - return const _i2.LoginPage(); + return const _i3.LoginPage(); }, ); } /// generated route for -/// [_i3.MainPage] -class MainRoute extends _i8.PageRouteInfo { - const MainRoute({List<_i8.PageRouteInfo>? children}) +/// [_i4.MainPage] +class MainRoute extends _i9.PageRouteInfo { + const MainRoute({List<_i9.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i8.PageInfo page = _i8.PageInfo( + static _i9.PageInfo page = _i9.PageInfo( name, builder: (data) { - return const _i3.MainPage(); + return const _i4.MainPage(); }, ); } /// generated route for -/// [_i4.ProfilePage] -class ProfileRoute extends _i8.PageRouteInfo { - const ProfileRoute({List<_i8.PageRouteInfo>? children}) +/// [_i5.ProfilePage] +class ProfileRoute extends _i9.PageRouteInfo { + const ProfileRoute({List<_i9.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i8.PageInfo page = _i8.PageInfo( + static _i9.PageInfo page = _i9.PageInfo( name, builder: (data) { - return const _i4.ProfilePage(); + return const _i5.ProfilePage(); }, ); } /// generated route for -/// [_i5.ReportPage] -class ReportRoute extends _i8.PageRouteInfo { - const ReportRoute({List<_i8.PageRouteInfo>? children}) +/// [_i6.ReportPage] +class ReportRoute extends _i9.PageRouteInfo { + const ReportRoute({List<_i9.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i8.PageInfo page = _i8.PageInfo( + static _i9.PageInfo page = _i9.PageInfo( name, builder: (data) { - return const _i5.ReportPage(); + return const _i6.ReportPage(); }, ); } /// generated route for -/// [_i6.SplashPage] -class SplashRoute extends _i8.PageRouteInfo { - const SplashRoute({List<_i8.PageRouteInfo>? children}) +/// [_i7.SplashPage] +class SplashRoute extends _i9.PageRouteInfo { + const SplashRoute({List<_i9.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i8.PageInfo page = _i8.PageInfo( + static _i9.PageInfo page = _i9.PageInfo( name, builder: (data) { - return const _i6.SplashPage(); + return const _i7.SplashPage(); }, ); } /// generated route for -/// [_i7.TransactionPage] -class TransactionRoute extends _i8.PageRouteInfo { - const TransactionRoute({List<_i8.PageRouteInfo>? children}) +/// [_i8.TransactionPage] +class TransactionRoute extends _i9.PageRouteInfo { + const TransactionRoute({List<_i9.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i8.PageInfo page = _i8.PageInfo( + static _i9.PageInfo page = _i9.PageInfo( name, builder: (data) { - return const _i7.TransactionPage(); + return const _i8.TransactionPage(); }, ); } From 43153f9b0d253c58fab9f4a23b17e4c09986e1b2 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 00:19:17 +0700 Subject: [PATCH 015/108] feat: toast --- .../components/toast/flushbar.dart | 43 +++++++++++++++++++ pubspec.lock | 8 ++++ pubspec.yaml | 1 + 3 files changed, 52 insertions(+) create mode 100644 lib/presentation/components/toast/flushbar.dart diff --git a/lib/presentation/components/toast/flushbar.dart b/lib/presentation/components/toast/flushbar.dart new file mode 100644 index 0000000..6e1aa52 --- /dev/null +++ b/lib/presentation/components/toast/flushbar.dart @@ -0,0 +1,43 @@ +import 'package:another_flushbar/flushbar.dart'; +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; + +class AppFlushbar { + static void showSuccess(BuildContext context, String message) { + Flushbar( + messageText: Text( + message, + style: AppStyle.lg.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + icon: const Icon(Icons.check_circle, color: Colors.white), + duration: const Duration(seconds: 2), + flushbarPosition: FlushbarPosition.BOTTOM, + backgroundColor: AppColor.secondary, + borderRadius: BorderRadius.circular(12), + margin: const EdgeInsets.all(12), + ).show(context); + } + + static void showError(BuildContext context, String message) { + Flushbar( + messageText: Text( + message, + style: AppStyle.lg.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + ), + icon: const Icon(Icons.error, color: Colors.white), + duration: const Duration(seconds: 3), + flushbarPosition: FlushbarPosition.BOTTOM, + backgroundColor: AppColor.error, + borderRadius: BorderRadius.circular(12), + margin: const EdgeInsets.all(12), + ).show(context); + } +} diff --git a/pubspec.lock b/pubspec.lock index ce8fdee..2d97622 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "7.7.1" + another_flushbar: + dependency: "direct main" + description: + name: another_flushbar + sha256: "19bf9520230ec40b300aaf9dd2a8fefcb277b25ecd1c4838f530566965befc2a" + url: "https://pub.dev" + source: hosted + version: "1.12.30" archive: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index e05cdc1..a257839 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -31,6 +31,7 @@ dependencies: line_icons: ^2.0.3 flutter_spinkit: ^5.2.2 fl_chart: ^1.0.0 + another_flushbar: ^1.12.30 dev_dependencies: flutter_test: From e732a27914cb0d629e91e92638e3286c4146c7c9 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 00:22:49 +0700 Subject: [PATCH 016/108] feat: date extension --- lib/common/extension/date_extension.dart | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lib/common/extension/date_extension.dart diff --git a/lib/common/extension/date_extension.dart b/lib/common/extension/date_extension.dart new file mode 100644 index 0000000..292a27b --- /dev/null +++ b/lib/common/extension/date_extension.dart @@ -0,0 +1,33 @@ +import 'package:intl/intl.dart'; + +extension DateTimeIndonesia on DateTime { + /// Format: 13 Agustus 2025 + String toDate() { + return DateFormat('d MMMM yyyy', 'id_ID').format(this); + } + + /// Format: 13 Agustus 2025 20:00 + String toDatetime() { + return DateFormat('d MMMM yyyy HH:mm', 'id_ID').format(this); + } + + /// Format: Rabu, 13 Agustus 2025 + String toDayDate() { + return DateFormat('EEEE, d MMMM yyyy', 'id_ID').format(this); + } + + /// Format: 13/08/2025 + String toShortDate() { + return DateFormat('dd/MM/yyyy', 'id_ID').format(this); + } + + /// Format: 13-08-2025 + String toSeverDate() { + return DateFormat('dd-MM-yyyy', 'id_ID').format(this); + } + + /// Format jam: 14:30 + String toHourMinute() { + return DateFormat('HH:mm', 'id_ID').format(this); + } +} From 3d43d7a93491f6436b0a057999d7cacd2fefa18d Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 00:26:59 +0700 Subject: [PATCH 017/108] feat: int and string extension --- lib/common/extension/date_extension.dart | 14 +++++------ lib/common/extension/extension.dart | 6 ++++- lib/common/extension/int_extension.dart | 9 +++++++ lib/common/extension/string_extension.dart | 28 ++++++++++++++++++++++ 4 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 lib/common/extension/int_extension.dart create mode 100644 lib/common/extension/string_extension.dart diff --git a/lib/common/extension/date_extension.dart b/lib/common/extension/date_extension.dart index 292a27b..0c552fd 100644 --- a/lib/common/extension/date_extension.dart +++ b/lib/common/extension/date_extension.dart @@ -1,33 +1,33 @@ -import 'package:intl/intl.dart'; +part of 'extension.dart'; extension DateTimeIndonesia on DateTime { /// Format: 13 Agustus 2025 - String toDate() { + String get toDate { return DateFormat('d MMMM yyyy', 'id_ID').format(this); } /// Format: 13 Agustus 2025 20:00 - String toDatetime() { + String get toDatetime { return DateFormat('d MMMM yyyy HH:mm', 'id_ID').format(this); } /// Format: Rabu, 13 Agustus 2025 - String toDayDate() { + String get toDayDate { return DateFormat('EEEE, d MMMM yyyy', 'id_ID').format(this); } /// Format: 13/08/2025 - String toShortDate() { + String get toShortDate { return DateFormat('dd/MM/yyyy', 'id_ID').format(this); } /// Format: 13-08-2025 - String toSeverDate() { + String get toServerDate { return DateFormat('dd-MM-yyyy', 'id_ID').format(this); } /// Format jam: 14:30 - String toHourMinute() { + String get toHourMinute { return DateFormat('HH:mm', 'id_ID').format(this); } } diff --git a/lib/common/extension/extension.dart b/lib/common/extension/extension.dart index 7199fdd..12aec9b 100644 --- a/lib/common/extension/extension.dart +++ b/lib/common/extension/extension.dart @@ -1 +1,5 @@ - // TODO: define your code +import 'package:intl/intl.dart'; + +part 'int_extension.dart'; +part 'date_extension.dart'; +part 'string_extension.dart'; diff --git a/lib/common/extension/int_extension.dart b/lib/common/extension/int_extension.dart new file mode 100644 index 0000000..b9f4180 --- /dev/null +++ b/lib/common/extension/int_extension.dart @@ -0,0 +1,9 @@ +part of 'extension.dart'; + +extension IntegerExt on int { + String get currencyFormatRp => NumberFormat.currency( + locale: 'id', + symbol: 'Rp. ', + decimalDigits: 0, + ).format(this); +} diff --git a/lib/common/extension/string_extension.dart b/lib/common/extension/string_extension.dart new file mode 100644 index 0000000..23687e9 --- /dev/null +++ b/lib/common/extension/string_extension.dart @@ -0,0 +1,28 @@ +part of 'extension.dart'; + +extension StringExt on String { + int get toIntegerFromText { + final cleanedText = replaceAll(RegExp(r'[^0-9]'), ''); + final parsedValue = int.tryParse(cleanedText) ?? 0; + return parsedValue; + } + + String get currencyFormatRpV2 { + final parsedValue = int.tryParse(this) ?? 0; + return NumberFormat.currency( + locale: 'id', + symbol: 'Rp. ', + decimalDigits: 0, + ).format(parsedValue); + } + + String get toTitleCase { + if (isEmpty) return ''; + return split(' ') + .map((word) { + if (word.isEmpty) return ''; + return word[0].toUpperCase() + word.substring(1).toLowerCase(); + }) + .join(' '); + } +} From 83edfa61f14f850ee8c8574c21510a43422882b8 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 01:17:00 +0700 Subject: [PATCH 018/108] feat: language --- lib/application/language/language_bloc.dart | 50 ++ .../language/language_bloc.freezed.dart | 488 ++++++++++++++++++ lib/application/language/language_event.dart | 8 + lib/application/language/language_state.dart | 9 + lib/common/constant/app_constant.dart | 2 +- lib/common/constant/local_storage_key.dart | 3 + .../extension/build_context_extension.dart | 5 + lib/common/extension/extension.dart | 4 + lib/domain/language/language.dart | 37 ++ lib/domain/language/language.freezed.dart | 210 ++++++++ lib/infrastructure/language/language.dart | 18 + lib/injection.config.dart | 5 + lib/l10n/app_en.arb | 53 ++ lib/l10n/app_id.arb | 53 ++ lib/l10n/app_localizations.dart | 279 ++++++++++ lib/l10n/app_localizations_en.dart | 85 +++ lib/l10n/app_localizations_id.dart | 85 +++ lib/presentation/app_widget.dart | 25 +- .../pages/auth/login/login_page.dart | 46 +- .../pages/auth/login/widgets/email_field.dart | 5 +- .../auth/login/widgets/password_field.dart | 5 +- lib/presentation/pages/home/home_page.dart | 2 +- .../pages/home/widgets/header.dart | 27 +- .../pages/language/language_page.dart | 119 +---- .../pages/language/widgets/language_tile.dart | 9 +- .../pages/main/widgets/bottom_navbar.dart | 18 +- .../pages/splash/splash_page.dart | 3 +- pubspec.lock | 37 ++ pubspec.yaml | 5 + 29 files changed, 1539 insertions(+), 156 deletions(-) create mode 100644 lib/application/language/language_bloc.dart create mode 100644 lib/application/language/language_bloc.freezed.dart create mode 100644 lib/application/language/language_event.dart create mode 100644 lib/application/language/language_state.dart create mode 100644 lib/common/constant/local_storage_key.dart create mode 100644 lib/common/extension/build_context_extension.dart create mode 100644 lib/domain/language/language.dart create mode 100644 lib/domain/language/language.freezed.dart create mode 100644 lib/infrastructure/language/language.dart create mode 100644 lib/l10n/app_en.arb create mode 100644 lib/l10n/app_id.arb create mode 100644 lib/l10n/app_localizations.dart create mode 100644 lib/l10n/app_localizations_en.dart create mode 100644 lib/l10n/app_localizations_id.dart diff --git a/lib/application/language/language_bloc.dart b/lib/application/language/language_bloc.dart new file mode 100644 index 0000000..db5b347 --- /dev/null +++ b/lib/application/language/language_bloc.dart @@ -0,0 +1,50 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../../common/constant/local_storage_key.dart'; +import '../../domain/language/language.dart'; +import '../../infrastructure/language/language.dart'; + +part 'language_event.dart'; +part 'language_state.dart'; +part 'language_bloc.freezed.dart'; + +@injectable +class LanguageBloc extends Bloc { + final SharedPreferences _prefs; + LanguageBloc(this._prefs) : super(LanguageState.initial()) { + on(_onLanguageEvent); + } + + Future _onLanguageEvent( + LanguageEvent event, + Emitter emit, + ) async { + switch (event) { + case _ChangeLanguage(:final language): + await _prefs.setString( + LocalStorageKey.lang, + language.locale.languageCode, + ); + emit(state.copyWith(language: language)); + break; + + case _LoadLanguage(): + final selectedLanguage = _prefs.getString(LocalStorageKey.lang); + + final lang = languages.firstWhere( + (item) => item.locale.languageCode == selectedLanguage, + orElse: () => Language.indonesian(), + ); + + emit( + state.copyWith( + language: selectedLanguage != null ? lang : Language.indonesian(), + ), + ); + break; + } + } +} diff --git a/lib/application/language/language_bloc.freezed.dart b/lib/application/language/language_bloc.freezed.dart new file mode 100644 index 0000000..3366671 --- /dev/null +++ b/lib/application/language/language_bloc.freezed.dart @@ -0,0 +1,488 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'language_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$LanguageEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(Language language) changeLanguage, + required TResult Function() loadLanguage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(Language language)? changeLanguage, + TResult? Function()? loadLanguage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(Language language)? changeLanguage, + TResult Function()? loadLanguage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ChangeLanguage value) changeLanguage, + required TResult Function(_LoadLanguage value) loadLanguage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ChangeLanguage value)? changeLanguage, + TResult? Function(_LoadLanguage value)? loadLanguage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ChangeLanguage value)? changeLanguage, + TResult Function(_LoadLanguage value)? loadLanguage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LanguageEventCopyWith<$Res> { + factory $LanguageEventCopyWith( + LanguageEvent value, + $Res Function(LanguageEvent) then, + ) = _$LanguageEventCopyWithImpl<$Res, LanguageEvent>; +} + +/// @nodoc +class _$LanguageEventCopyWithImpl<$Res, $Val extends LanguageEvent> + implements $LanguageEventCopyWith<$Res> { + _$LanguageEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of LanguageEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ChangeLanguageImplCopyWith<$Res> { + factory _$$ChangeLanguageImplCopyWith( + _$ChangeLanguageImpl value, + $Res Function(_$ChangeLanguageImpl) then, + ) = __$$ChangeLanguageImplCopyWithImpl<$Res>; + @useResult + $Res call({Language language}); + + $LanguageCopyWith<$Res> get language; +} + +/// @nodoc +class __$$ChangeLanguageImplCopyWithImpl<$Res> + extends _$LanguageEventCopyWithImpl<$Res, _$ChangeLanguageImpl> + implements _$$ChangeLanguageImplCopyWith<$Res> { + __$$ChangeLanguageImplCopyWithImpl( + _$ChangeLanguageImpl _value, + $Res Function(_$ChangeLanguageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LanguageEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? language = null}) { + return _then( + _$ChangeLanguageImpl( + null == language + ? _value.language + : language // ignore: cast_nullable_to_non_nullable + as Language, + ), + ); + } + + /// Create a copy of LanguageEvent + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $LanguageCopyWith<$Res> get language { + return $LanguageCopyWith<$Res>(_value.language, (value) { + return _then(_value.copyWith(language: value)); + }); + } +} + +/// @nodoc + +class _$ChangeLanguageImpl implements _ChangeLanguage { + const _$ChangeLanguageImpl(this.language); + + @override + final Language language; + + @override + String toString() { + return 'LanguageEvent.changeLanguage(language: $language)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ChangeLanguageImpl && + (identical(other.language, language) || + other.language == language)); + } + + @override + int get hashCode => Object.hash(runtimeType, language); + + /// Create a copy of LanguageEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ChangeLanguageImplCopyWith<_$ChangeLanguageImpl> get copyWith => + __$$ChangeLanguageImplCopyWithImpl<_$ChangeLanguageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(Language language) changeLanguage, + required TResult Function() loadLanguage, + }) { + return changeLanguage(language); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(Language language)? changeLanguage, + TResult? Function()? loadLanguage, + }) { + return changeLanguage?.call(language); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(Language language)? changeLanguage, + TResult Function()? loadLanguage, + required TResult orElse(), + }) { + if (changeLanguage != null) { + return changeLanguage(language); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ChangeLanguage value) changeLanguage, + required TResult Function(_LoadLanguage value) loadLanguage, + }) { + return changeLanguage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ChangeLanguage value)? changeLanguage, + TResult? Function(_LoadLanguage value)? loadLanguage, + }) { + return changeLanguage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ChangeLanguage value)? changeLanguage, + TResult Function(_LoadLanguage value)? loadLanguage, + required TResult orElse(), + }) { + if (changeLanguage != null) { + return changeLanguage(this); + } + return orElse(); + } +} + +abstract class _ChangeLanguage implements LanguageEvent { + const factory _ChangeLanguage(final Language language) = _$ChangeLanguageImpl; + + Language get language; + + /// Create a copy of LanguageEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ChangeLanguageImplCopyWith<_$ChangeLanguageImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$LoadLanguageImplCopyWith<$Res> { + factory _$$LoadLanguageImplCopyWith( + _$LoadLanguageImpl value, + $Res Function(_$LoadLanguageImpl) then, + ) = __$$LoadLanguageImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$LoadLanguageImplCopyWithImpl<$Res> + extends _$LanguageEventCopyWithImpl<$Res, _$LoadLanguageImpl> + implements _$$LoadLanguageImplCopyWith<$Res> { + __$$LoadLanguageImplCopyWithImpl( + _$LoadLanguageImpl _value, + $Res Function(_$LoadLanguageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LanguageEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$LoadLanguageImpl implements _LoadLanguage { + const _$LoadLanguageImpl(); + + @override + String toString() { + return 'LanguageEvent.loadLanguage()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$LoadLanguageImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(Language language) changeLanguage, + required TResult Function() loadLanguage, + }) { + return loadLanguage(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(Language language)? changeLanguage, + TResult? Function()? loadLanguage, + }) { + return loadLanguage?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(Language language)? changeLanguage, + TResult Function()? loadLanguage, + required TResult orElse(), + }) { + if (loadLanguage != null) { + return loadLanguage(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ChangeLanguage value) changeLanguage, + required TResult Function(_LoadLanguage value) loadLanguage, + }) { + return loadLanguage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ChangeLanguage value)? changeLanguage, + TResult? Function(_LoadLanguage value)? loadLanguage, + }) { + return loadLanguage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ChangeLanguage value)? changeLanguage, + TResult Function(_LoadLanguage value)? loadLanguage, + required TResult orElse(), + }) { + if (loadLanguage != null) { + return loadLanguage(this); + } + return orElse(); + } +} + +abstract class _LoadLanguage implements LanguageEvent { + const factory _LoadLanguage() = _$LoadLanguageImpl; +} + +/// @nodoc +mixin _$LanguageState { + Language get language => throw _privateConstructorUsedError; + + /// Create a copy of LanguageState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $LanguageStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LanguageStateCopyWith<$Res> { + factory $LanguageStateCopyWith( + LanguageState value, + $Res Function(LanguageState) then, + ) = _$LanguageStateCopyWithImpl<$Res, LanguageState>; + @useResult + $Res call({Language language}); + + $LanguageCopyWith<$Res> get language; +} + +/// @nodoc +class _$LanguageStateCopyWithImpl<$Res, $Val extends LanguageState> + implements $LanguageStateCopyWith<$Res> { + _$LanguageStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of LanguageState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? language = null}) { + return _then( + _value.copyWith( + language: null == language + ? _value.language + : language // ignore: cast_nullable_to_non_nullable + as Language, + ) + as $Val, + ); + } + + /// Create a copy of LanguageState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $LanguageCopyWith<$Res> get language { + return $LanguageCopyWith<$Res>(_value.language, (value) { + return _then(_value.copyWith(language: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$LanguageStateImplCopyWith<$Res> + implements $LanguageStateCopyWith<$Res> { + factory _$$LanguageStateImplCopyWith( + _$LanguageStateImpl value, + $Res Function(_$LanguageStateImpl) then, + ) = __$$LanguageStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({Language language}); + + @override + $LanguageCopyWith<$Res> get language; +} + +/// @nodoc +class __$$LanguageStateImplCopyWithImpl<$Res> + extends _$LanguageStateCopyWithImpl<$Res, _$LanguageStateImpl> + implements _$$LanguageStateImplCopyWith<$Res> { + __$$LanguageStateImplCopyWithImpl( + _$LanguageStateImpl _value, + $Res Function(_$LanguageStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LanguageState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? language = null}) { + return _then( + _$LanguageStateImpl( + language: null == language + ? _value.language + : language // ignore: cast_nullable_to_non_nullable + as Language, + ), + ); + } +} + +/// @nodoc + +class _$LanguageStateImpl implements _LanguageState { + const _$LanguageStateImpl({required this.language}); + + @override + final Language language; + + @override + String toString() { + return 'LanguageState(language: $language)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$LanguageStateImpl && + (identical(other.language, language) || + other.language == language)); + } + + @override + int get hashCode => Object.hash(runtimeType, language); + + /// Create a copy of LanguageState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$LanguageStateImplCopyWith<_$LanguageStateImpl> get copyWith => + __$$LanguageStateImplCopyWithImpl<_$LanguageStateImpl>(this, _$identity); +} + +abstract class _LanguageState implements LanguageState { + const factory _LanguageState({required final Language language}) = + _$LanguageStateImpl; + + @override + Language get language; + + /// Create a copy of LanguageState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$LanguageStateImplCopyWith<_$LanguageStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/language/language_event.dart b/lib/application/language/language_event.dart new file mode 100644 index 0000000..08374c7 --- /dev/null +++ b/lib/application/language/language_event.dart @@ -0,0 +1,8 @@ +part of 'language_bloc.dart'; + +@freezed +class LanguageEvent with _$LanguageEvent { + const factory LanguageEvent.changeLanguage(Language language) = + _ChangeLanguage; + const factory LanguageEvent.loadLanguage() = _LoadLanguage; +} diff --git a/lib/application/language/language_state.dart b/lib/application/language/language_state.dart new file mode 100644 index 0000000..df17325 --- /dev/null +++ b/lib/application/language/language_state.dart @@ -0,0 +1,9 @@ +part of 'language_bloc.dart'; + +@freezed +abstract class LanguageState with _$LanguageState { + const factory LanguageState({required Language language}) = _LanguageState; + + factory LanguageState.initial() => + LanguageState(language: Language.indonesian()); +} diff --git a/lib/common/constant/app_constant.dart b/lib/common/constant/app_constant.dart index b0dbc06..e421be3 100644 --- a/lib/common/constant/app_constant.dart +++ b/lib/common/constant/app_constant.dart @@ -1,3 +1,3 @@ class AppConstant { - static const String appName = ""; + static const String appName = "Apskel Owner"; } diff --git a/lib/common/constant/local_storage_key.dart b/lib/common/constant/local_storage_key.dart new file mode 100644 index 0000000..612a7f3 --- /dev/null +++ b/lib/common/constant/local_storage_key.dart @@ -0,0 +1,3 @@ +class LocalStorageKey { + static const String lang = 'lang'; +} diff --git a/lib/common/extension/build_context_extension.dart b/lib/common/extension/build_context_extension.dart new file mode 100644 index 0000000..6b8ed04 --- /dev/null +++ b/lib/common/extension/build_context_extension.dart @@ -0,0 +1,5 @@ +part of 'extension.dart'; + +extension BuildContextX on BuildContext { + AppLocalizations get lang => AppLocalizations.of(this)!; +} diff --git a/lib/common/extension/extension.dart b/lib/common/extension/extension.dart index 12aec9b..64bd608 100644 --- a/lib/common/extension/extension.dart +++ b/lib/common/extension/extension.dart @@ -1,5 +1,9 @@ +import 'package:flutter/widgets.dart'; import 'package:intl/intl.dart'; +import '../../l10n/app_localizations.dart'; + part 'int_extension.dart'; part 'date_extension.dart'; part 'string_extension.dart'; +part 'build_context_extension.dart'; diff --git a/lib/domain/language/language.dart b/lib/domain/language/language.dart new file mode 100644 index 0000000..d87a4d7 --- /dev/null +++ b/lib/domain/language/language.dart @@ -0,0 +1,37 @@ +import 'package:flutter/widgets.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'language.freezed.dart'; + +@freezed +abstract class Language with _$Language { + factory Language({ + required Locale locale, + required String name, + required String nativeName, + required String path, + }) = _Language; + + const Language._(); + + factory Language.empty() => Language( + locale: const Locale('id', 'ID'), + name: '', + path: '', + nativeName: '', + ); + + factory Language.indonesian() => Language( + locale: const Locale('id', 'ID'), + name: 'Indonesian', + nativeName: 'Bahasa Indonesia', + path: '๐Ÿ‡ฎ๐Ÿ‡ฉ', + ); + + factory Language.english() => Language( + locale: const Locale('en', 'US'), + name: 'English', + path: '๐Ÿ‡บ๐Ÿ‡ธ', + nativeName: 'English', + ); +} diff --git a/lib/domain/language/language.freezed.dart b/lib/domain/language/language.freezed.dart new file mode 100644 index 0000000..c8f89a4 --- /dev/null +++ b/lib/domain/language/language.freezed.dart @@ -0,0 +1,210 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'language.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$Language { + Locale get locale => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + String get nativeName => throw _privateConstructorUsedError; + String get path => throw _privateConstructorUsedError; + + /// Create a copy of Language + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $LanguageCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LanguageCopyWith<$Res> { + factory $LanguageCopyWith(Language value, $Res Function(Language) then) = + _$LanguageCopyWithImpl<$Res, Language>; + @useResult + $Res call({Locale locale, String name, String nativeName, String path}); +} + +/// @nodoc +class _$LanguageCopyWithImpl<$Res, $Val extends Language> + implements $LanguageCopyWith<$Res> { + _$LanguageCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Language + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? locale = null, + Object? name = null, + Object? nativeName = null, + Object? path = null, + }) { + return _then( + _value.copyWith( + locale: null == locale + ? _value.locale + : locale // ignore: cast_nullable_to_non_nullable + as Locale, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + nativeName: null == nativeName + ? _value.nativeName + : nativeName // ignore: cast_nullable_to_non_nullable + as String, + path: null == path + ? _value.path + : path // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$LanguageImplCopyWith<$Res> + implements $LanguageCopyWith<$Res> { + factory _$$LanguageImplCopyWith( + _$LanguageImpl value, + $Res Function(_$LanguageImpl) then, + ) = __$$LanguageImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({Locale locale, String name, String nativeName, String path}); +} + +/// @nodoc +class __$$LanguageImplCopyWithImpl<$Res> + extends _$LanguageCopyWithImpl<$Res, _$LanguageImpl> + implements _$$LanguageImplCopyWith<$Res> { + __$$LanguageImplCopyWithImpl( + _$LanguageImpl _value, + $Res Function(_$LanguageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Language + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? locale = null, + Object? name = null, + Object? nativeName = null, + Object? path = null, + }) { + return _then( + _$LanguageImpl( + locale: null == locale + ? _value.locale + : locale // ignore: cast_nullable_to_non_nullable + as Locale, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + nativeName: null == nativeName + ? _value.nativeName + : nativeName // ignore: cast_nullable_to_non_nullable + as String, + path: null == path + ? _value.path + : path // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$LanguageImpl extends _Language { + _$LanguageImpl({ + required this.locale, + required this.name, + required this.nativeName, + required this.path, + }) : super._(); + + @override + final Locale locale; + @override + final String name; + @override + final String nativeName; + @override + final String path; + + @override + String toString() { + return 'Language(locale: $locale, name: $name, nativeName: $nativeName, path: $path)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$LanguageImpl && + (identical(other.locale, locale) || other.locale == locale) && + (identical(other.name, name) || other.name == name) && + (identical(other.nativeName, nativeName) || + other.nativeName == nativeName) && + (identical(other.path, path) || other.path == path)); + } + + @override + int get hashCode => Object.hash(runtimeType, locale, name, nativeName, path); + + /// Create a copy of Language + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$LanguageImplCopyWith<_$LanguageImpl> get copyWith => + __$$LanguageImplCopyWithImpl<_$LanguageImpl>(this, _$identity); +} + +abstract class _Language extends Language { + factory _Language({ + required final Locale locale, + required final String name, + required final String nativeName, + required final String path, + }) = _$LanguageImpl; + _Language._() : super._(); + + @override + Locale get locale; + @override + String get name; + @override + String get nativeName; + @override + String get path; + + /// Create a copy of Language + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$LanguageImplCopyWith<_$LanguageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/language/language.dart b/lib/infrastructure/language/language.dart new file mode 100644 index 0000000..ef06c40 --- /dev/null +++ b/lib/infrastructure/language/language.dart @@ -0,0 +1,18 @@ +import 'dart:ui'; + +import '../../domain/language/language.dart'; + +List languages = [ + Language( + locale: const Locale('id', 'ID'), + name: 'Indonesian', + path: '๐Ÿ‡ฎ๐Ÿ‡ฉ', + nativeName: 'Bahasa Indonesia', + ), + Language( + locale: const Locale('en', 'US'), + name: 'English', + path: '๐Ÿ‡บ๐Ÿ‡ธ', + nativeName: 'English', + ), +]; diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 96db829..f414336 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -9,6 +9,8 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:apskel_owner_flutter/application/language/language_bloc.dart' + as _i455; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; import 'package:apskel_owner_flutter/common/di/di_auto_route.dart' as _i311; import 'package:apskel_owner_flutter/common/di/di_connectivity.dart' as _i586; @@ -50,6 +52,9 @@ extension GetItInjectableX on _i174.GetIt { gh.lazySingleton<_i543.NetworkClient>( () => _i543.NetworkClient(gh<_i895.Connectivity>()), ); + gh.factory<_i455.LanguageBloc>( + () => _i455.LanguageBloc(gh<_i460.SharedPreferences>()), + ); gh.factory<_i6.Env>(() => _i6.DevEnv(), registerFor: {_dev}); gh.lazySingleton<_i115.ApiClient>( () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb new file mode 100644 index 0000000..5353c21 --- /dev/null +++ b/lib/l10n/app_en.arb @@ -0,0 +1,53 @@ +{ + "@@locale": "en", + "indonesian": "Indonesian", + "@indonesian": {}, + "english": "English", + "@english": {}, + "language": "Language", + "@language": {}, + "version": "Version", + "@version": {}, + "select_language": "Select Language", + "@select_language": {}, + "login_header": "Welcome back", + "@login_header": {}, + "login_desc": "Sign in to your account", + "@login_desc": {}, + "email": "Email", + "@email": {}, + "email_placeholder": "Enter your email", + "@email_placeholder": {}, + "password": "Password", + "@password": {}, + "password_placeholder": "Enter your password", + "@password_placeholder": {}, + "forgot_password": "Forgot Password", + "@forgot_password": {}, + "sign_in": "Sign In", + "@sign_in": {}, + "good_morning": "Good Morning", + "@good_morning": {}, + "good_afternoon": "Good Afternoon", + "@good_afternoon": {}, + "good_evening": "Good Evening", + "@good_evening": {}, + "good_night": "Good Night", + "@good_night": {}, + "home_header_desc": "Let's improve your business performance today", + "@home_header_desc": {}, + "home": "Home", + "@home": {}, + "transaction": "Transaction", + "@transaction": {}, + "transactions": "Transactions", + "@transactions": {}, + "report": "Report", + "@report": {}, + "reports": "Reports", + "@reports": {}, + "profile": "Profile", + "@profile": {}, + "sales_today": "Sales today", + "@sales_today": {} +} diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb new file mode 100644 index 0000000..ed3af6d --- /dev/null +++ b/lib/l10n/app_id.arb @@ -0,0 +1,53 @@ +{ + "@@locale": "id", + "indonesian": "Indonesia", + "@indonesian": {}, + "english": "Inggris", + "@english": {}, + "language": "Bahasa", + "@language": {}, + "version": "Versi", + "@version": {}, + "select_language": "Pilih Bahasa", + "@select_language": {}, + "login_header": "Selamat Datang kembali", + "@login_header": {}, + "login_desc": "Masuk ke akun Anda", + "@login_desc": {}, + "email": "Email", + "@email": {}, + "email_placeholder": "Masukkan email Anda", + "@email_placeholder": {}, + "password": "Kata Sandi", + "@password": {}, + "password_placeholder": "Masukkan kata sandi Anda", + "@password_placeholder": {}, + "forgot_password": "Lupa Kata Sandi", + "@forgot_password": {}, + "sign_in": "Masuk", + "@sign_in": {}, + "good_morning": "Selamat Pagi", + "@good_morning": {}, + "good_afternoon": "Selamat Siang", + "@good_afternoon": {}, + "good_evening": "Selamat Sore", + "@good_evening": {}, + "good_night": "Selamat Malam", + "@good_night": {}, + "home_header_desc": "Mari tingkatkan performa bisnis Anda hari ini", + "@home_header_desc": {}, + "home": "Beranda", + "@home": {}, + "transaction": "Transaksi", + "@transaction": {}, + "transactions": "Transaksi", + "@transactions": {}, + "report": "Laporan", + "@report": {}, + "reports": "Laporan", + "@reports": {}, + "profile": "Profil", + "@profile": {}, + "sales_today": "Penjualan hari ini", + "@sales_today": {} +} diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart new file mode 100644 index 0000000..c03e6a4 --- /dev/null +++ b/lib/l10n/app_localizations.dart @@ -0,0 +1,279 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:intl/intl.dart' as intl; + +import 'app_localizations_en.dart'; +import 'app_localizations_id.dart'; + +// ignore_for_file: type=lint + +/// Callers can lookup localized strings with an instance of AppLocalizations +/// returned by `AppLocalizations.of(context)`. +/// +/// Applications need to include `AppLocalizations.delegate()` in their app's +/// `localizationDelegates` list, and the locales they support in the app's +/// `supportedLocales` list. For example: +/// +/// ```dart +/// import 'l10n/app_localizations.dart'; +/// +/// return MaterialApp( +/// localizationsDelegates: AppLocalizations.localizationsDelegates, +/// supportedLocales: AppLocalizations.supportedLocales, +/// home: MyApplicationHome(), +/// ); +/// ``` +/// +/// ## Update pubspec.yaml +/// +/// Please make sure to update your pubspec.yaml to include the following +/// packages: +/// +/// ```yaml +/// dependencies: +/// # Internationalization support. +/// flutter_localizations: +/// sdk: flutter +/// intl: any # Use the pinned version from flutter_localizations +/// +/// # Rest of dependencies +/// ``` +/// +/// ## iOS Applications +/// +/// iOS applications define key application metadata, including supported +/// locales, in an Info.plist file that is built into the application bundle. +/// To configure the locales supported by your app, youโ€™ll need to edit this +/// file. +/// +/// First, open your projectโ€™s ios/Runner.xcworkspace Xcode workspace file. +/// Then, in the Project Navigator, open the Info.plist file under the Runner +/// projectโ€™s Runner folder. +/// +/// Next, select the Information Property List item, select Add Item from the +/// Editor menu, then select Localizations from the pop-up menu. +/// +/// Select and expand the newly-created Localizations item then, for each +/// locale your application supports, add a new item and select the locale +/// you wish to add from the pop-up menu in the Value field. This list should +/// be consistent with the languages listed in the AppLocalizations.supportedLocales +/// property. +abstract class AppLocalizations { + AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + + final String localeName; + + static AppLocalizations? of(BuildContext context) { + return Localizations.of(context, AppLocalizations); + } + + static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); + + /// A list of this localizations delegate along with the default localizations + /// delegates. + /// + /// Returns a list of localizations delegates containing this delegate along with + /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, + /// and GlobalWidgetsLocalizations.delegate. + /// + /// Additional delegates can be added by appending to this list in + /// MaterialApp. This list does not have to be used at all if a custom list + /// of delegates is preferred or required. + static const List> localizationsDelegates = >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [ + Locale('en'), + Locale('id') + ]; + + /// No description provided for @indonesian. + /// + /// In en, this message translates to: + /// **'Indonesian'** + String get indonesian; + + /// No description provided for @english. + /// + /// In en, this message translates to: + /// **'English'** + String get english; + + /// No description provided for @language. + /// + /// In en, this message translates to: + /// **'Language'** + String get language; + + /// No description provided for @version. + /// + /// In en, this message translates to: + /// **'Version'** + String get version; + + /// No description provided for @select_language. + /// + /// In en, this message translates to: + /// **'Select Language'** + String get select_language; + + /// No description provided for @login_header. + /// + /// In en, this message translates to: + /// **'Welcome back'** + String get login_header; + + /// No description provided for @login_desc. + /// + /// In en, this message translates to: + /// **'Sign in to your account'** + String get login_desc; + + /// No description provided for @email. + /// + /// In en, this message translates to: + /// **'Email'** + String get email; + + /// No description provided for @email_placeholder. + /// + /// In en, this message translates to: + /// **'Enter your email'** + String get email_placeholder; + + /// No description provided for @password. + /// + /// In en, this message translates to: + /// **'Password'** + String get password; + + /// No description provided for @password_placeholder. + /// + /// In en, this message translates to: + /// **'Enter your password'** + String get password_placeholder; + + /// No description provided for @forgot_password. + /// + /// In en, this message translates to: + /// **'Forgot Password'** + String get forgot_password; + + /// No description provided for @sign_in. + /// + /// In en, this message translates to: + /// **'Sign In'** + String get sign_in; + + /// No description provided for @good_morning. + /// + /// In en, this message translates to: + /// **'Good Morning'** + String get good_morning; + + /// No description provided for @good_afternoon. + /// + /// In en, this message translates to: + /// **'Good Afternoon'** + String get good_afternoon; + + /// No description provided for @good_evening. + /// + /// In en, this message translates to: + /// **'Good Evening'** + String get good_evening; + + /// No description provided for @good_night. + /// + /// In en, this message translates to: + /// **'Good Night'** + String get good_night; + + /// No description provided for @home_header_desc. + /// + /// In en, this message translates to: + /// **'Let\'s improve your business performance today'** + String get home_header_desc; + + /// No description provided for @home. + /// + /// In en, this message translates to: + /// **'Home'** + String get home; + + /// No description provided for @transaction. + /// + /// In en, this message translates to: + /// **'Transaction'** + String get transaction; + + /// No description provided for @transactions. + /// + /// In en, this message translates to: + /// **'Transactions'** + String get transactions; + + /// No description provided for @report. + /// + /// In en, this message translates to: + /// **'Report'** + String get report; + + /// No description provided for @reports. + /// + /// In en, this message translates to: + /// **'Reports'** + String get reports; + + /// No description provided for @profile. + /// + /// In en, this message translates to: + /// **'Profile'** + String get profile; + + /// No description provided for @sales_today. + /// + /// In en, this message translates to: + /// **'Sales today'** + String get sales_today; +} + +class _AppLocalizationsDelegate extends LocalizationsDelegate { + const _AppLocalizationsDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture(lookupAppLocalizations(locale)); + } + + @override + bool isSupported(Locale locale) => ['en', 'id'].contains(locale.languageCode); + + @override + bool shouldReload(_AppLocalizationsDelegate old) => false; +} + +AppLocalizations lookupAppLocalizations(Locale locale) { + + + // Lookup logic when only language code is specified. + switch (locale.languageCode) { + case 'en': return AppLocalizationsEn(); + case 'id': return AppLocalizationsId(); + } + + throw FlutterError( + 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.' + ); +} diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart new file mode 100644 index 0000000..07d2105 --- /dev/null +++ b/lib/l10n/app_localizations_en.dart @@ -0,0 +1,85 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'app_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for English (`en`). +class AppLocalizationsEn extends AppLocalizations { + AppLocalizationsEn([String locale = 'en']) : super(locale); + + @override + String get indonesian => 'Indonesian'; + + @override + String get english => 'English'; + + @override + String get language => 'Language'; + + @override + String get version => 'Version'; + + @override + String get select_language => 'Select Language'; + + @override + String get login_header => 'Welcome back'; + + @override + String get login_desc => 'Sign in to your account'; + + @override + String get email => 'Email'; + + @override + String get email_placeholder => 'Enter your email'; + + @override + String get password => 'Password'; + + @override + String get password_placeholder => 'Enter your password'; + + @override + String get forgot_password => 'Forgot Password'; + + @override + String get sign_in => 'Sign In'; + + @override + String get good_morning => 'Good Morning'; + + @override + String get good_afternoon => 'Good Afternoon'; + + @override + String get good_evening => 'Good Evening'; + + @override + String get good_night => 'Good Night'; + + @override + String get home_header_desc => 'Let\'s improve your business performance today'; + + @override + String get home => 'Home'; + + @override + String get transaction => 'Transaction'; + + @override + String get transactions => 'Transactions'; + + @override + String get report => 'Report'; + + @override + String get reports => 'Reports'; + + @override + String get profile => 'Profile'; + + @override + String get sales_today => 'Sales today'; +} diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart new file mode 100644 index 0000000..fd09556 --- /dev/null +++ b/lib/l10n/app_localizations_id.dart @@ -0,0 +1,85 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'app_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for Indonesian (`id`). +class AppLocalizationsId extends AppLocalizations { + AppLocalizationsId([String locale = 'id']) : super(locale); + + @override + String get indonesian => 'Indonesia'; + + @override + String get english => 'Inggris'; + + @override + String get language => 'Bahasa'; + + @override + String get version => 'Versi'; + + @override + String get select_language => 'Pilih Bahasa'; + + @override + String get login_header => 'Selamat Datang kembali'; + + @override + String get login_desc => 'Masuk ke akun Anda'; + + @override + String get email => 'Email'; + + @override + String get email_placeholder => 'Masukkan email Anda'; + + @override + String get password => 'Kata Sandi'; + + @override + String get password_placeholder => 'Masukkan kata sandi Anda'; + + @override + String get forgot_password => 'Lupa Kata Sandi'; + + @override + String get sign_in => 'Masuk'; + + @override + String get good_morning => 'Selamat Pagi'; + + @override + String get good_afternoon => 'Selamat Siang'; + + @override + String get good_evening => 'Selamat Sore'; + + @override + String get good_night => 'Selamat Malam'; + + @override + String get home_header_desc => 'Mari tingkatkan performa bisnis Anda hari ini'; + + @override + String get home => 'Beranda'; + + @override + String get transaction => 'Transaksi'; + + @override + String get transactions => 'Transaksi'; + + @override + String get report => 'Laporan'; + + @override + String get reports => 'Laporan'; + + @override + String get profile => 'Profil'; + + @override + String get sales_today => 'Penjualan hari ini'; +} diff --git a/lib/presentation/app_widget.dart b/lib/presentation/app_widget.dart index 38ae400..1dda198 100644 --- a/lib/presentation/app_widget.dart +++ b/lib/presentation/app_widget.dart @@ -1,8 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../application/language/language_bloc.dart'; import '../common/theme/theme.dart'; import '../common/constant/app_constant.dart'; import '../injection.dart'; +import '../l10n/app_localizations.dart'; import 'router/app_router.dart'; import 'router/app_router_observer.dart'; @@ -18,12 +21,22 @@ class _AppWidgetState extends State { @override Widget build(BuildContext context) { - return MaterialApp.router( - debugShowCheckedModeBanner: false, - title: AppConstant.appName, - theme: ThemeApp.theme, - routerConfig: _appRouter.config( - navigatorObservers: () => [AppRouteObserver()], + return BlocProvider( + create: (context) => getIt(), + child: BlocBuilder( + builder: (context, state) { + return MaterialApp.router( + debugShowCheckedModeBanner: false, + title: AppConstant.appName, + locale: state.language.locale, + supportedLocales: AppLocalizations.supportedLocales, + localizationsDelegates: AppLocalizations.localizationsDelegates, + theme: ThemeApp.theme, + routerConfig: _appRouter.config( + navigatorObservers: () => [AppRouteObserver()], + ), + ); + }, ), ); } diff --git a/lib/presentation/pages/auth/login/login_page.dart b/lib/presentation/pages/auth/login/login_page.dart index 4d487fa..ae829fa 100644 --- a/lib/presentation/pages/auth/login/login_page.dart +++ b/lib/presentation/pages/auth/login/login_page.dart @@ -1,6 +1,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/button/button.dart'; import '../../../components/spacer/spacer.dart'; @@ -104,11 +105,9 @@ class _LoginPageState extends State with TickerProviderStateMixin { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildLogo(), + _buildLogo(context), SpaceHeight(48), - _buildLoginCard(), - SpaceHeight(24), - _buildFooter(), + _buildLoginCard(context), ], ), ), @@ -120,26 +119,27 @@ class _LoginPageState extends State with TickerProviderStateMixin { ); } - Widget _buildLogo() { + Widget _buildLogo(BuildContext context) { return Column( children: [ Text( - 'Welcome Back', + context.lang.login_header, style: AppStyle.h1.copyWith( fontWeight: FontWeight.bold, color: AppColor.white, ), + textAlign: TextAlign.center, ), const SpaceHeight(8), Text( - 'Sign in to your account', + context.lang.login_desc, style: AppStyle.lg.copyWith(color: AppColor.textLight), ), ], ); } - Widget _buildLoginCard() { + Widget _buildLoginCard(BuildContext context) { return Container( width: double.infinity, padding: const EdgeInsets.symmetric(vertical: 32, horizontal: 24), @@ -163,7 +163,7 @@ class _LoginPageState extends State with TickerProviderStateMixin { const SpaceHeight(24), LoginPasswordField(controller: _passwordController), const SpaceHeight(16), - _buildForgetPassword(), + _buildForgetPassword(context), const SpaceHeight(32), _buildLoginButton(), ], @@ -172,13 +172,13 @@ class _LoginPageState extends State with TickerProviderStateMixin { ); } - Widget _buildForgetPassword() { + Widget _buildForgetPassword(BuildContext context) { return Align( alignment: Alignment.centerRight, child: GestureDetector( onTap: () {}, child: Text( - 'Forgot Password?', + '${context.lang.forgot_password}?', style: AppStyle.md.copyWith( color: AppColor.primary, fontWeight: FontWeight.w600, @@ -190,31 +190,9 @@ class _LoginPageState extends State with TickerProviderStateMixin { Widget _buildLoginButton() { return AppElevatedButton( - text: 'Sign In', + text: context.lang.sign_in, isLoading: _isLoading, onPressed: _isLoading ? null : _handleLogin, ); } - - Widget _buildFooter() { - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - "Don't have an account? ", - style: AppStyle.md.copyWith(color: AppColor.textLight), - ), - GestureDetector( - onTap: () {}, - child: Text( - 'Sign Up', - style: AppStyle.md.copyWith( - color: AppColor.white, - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ); - } } diff --git a/lib/presentation/pages/auth/login/widgets/email_field.dart b/lib/presentation/pages/auth/login/widgets/email_field.dart index 5d96426..f4bca26 100644 --- a/lib/presentation/pages/auth/login/widgets/email_field.dart +++ b/lib/presentation/pages/auth/login/widgets/email_field.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../../common/extension/extension.dart'; import '../../../../../common/validator/validator.dart'; import '../../../../components/field/field.dart'; @@ -11,8 +12,8 @@ class LoginEmailField extends StatelessWidget { @override Widget build(BuildContext context) { return AppTextFormField( - title: 'Email', - hintText: 'Enter your email', + title: context.lang.email, + hintText: context.lang.email_placeholder, prefixIcon: LineIcons.envelope, validator: AppValidator.validateEmail, controller: controller, diff --git a/lib/presentation/pages/auth/login/widgets/password_field.dart b/lib/presentation/pages/auth/login/widgets/password_field.dart index df11f0a..5ab2436 100644 --- a/lib/presentation/pages/auth/login/widgets/password_field.dart +++ b/lib/presentation/pages/auth/login/widgets/password_field.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../../common/extension/extension.dart'; import '../../../../../common/validator/validator.dart'; import '../../../../components/field/field.dart'; @@ -11,9 +12,9 @@ class LoginPasswordField extends StatelessWidget { @override Widget build(BuildContext context) { return AppPasswordTextFormField( - title: 'Password', + title: context.lang.password, prefixIcon: LineIcons.lock, - hintText: 'Enter your password', + hintText: context.lang.password_placeholder, validator: AppValidator.validatePassword, controller: controller, ); diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 7c08b08..05df01a 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -64,7 +64,7 @@ class _HomePageState extends State with TickerProviderStateMixin { slivers: [ // SliverAppBar with HomeHeader as background SliverAppBar( - expandedHeight: 250, // Adjust based on HomeHeader height + expandedHeight: 260, // Adjust based on HomeHeader height floating: true, pinned: true, snap: true, diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart index 2a2eeae..a98129e 100644 --- a/lib/presentation/pages/home/widgets/header.dart +++ b/lib/presentation/pages/home/widgets/header.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/spacer/spacer.dart'; @@ -56,13 +57,27 @@ class HomeHeader extends StatelessWidget { ), ), ), - SafeArea(child: _buildContent()), + SafeArea(child: _buildContent(context)), ], ), ); } - Padding _buildContent() { + Padding _buildContent(BuildContext context) { + String greeting(BuildContext context) { + final hour = DateTime.now().hour; + + if (hour >= 4 && hour < 10) { + return context.lang.good_morning; + } else if (hour >= 10 && hour < 15) { + return context.lang.good_afternoon; + } else if (hour >= 15 && hour < 18) { + return context.lang.good_evening; + } else { + return context.lang.good_night; + } + } + return Padding( padding: EdgeInsets.all(AppValue.padding), child: Column( @@ -87,7 +102,7 @@ class HomeHeader extends StatelessWidget { ), const SpaceHeight(2), Text( - 'Dashboard', + 'Manager', style: AppStyle.sm.copyWith( color: AppColor.textLight, fontSize: 11, @@ -120,7 +135,7 @@ class HomeHeader extends StatelessWidget { // Greeting Section Text( - 'Selamat Pagi,', + '${greeting(context)},', style: AppStyle.lg.copyWith( color: AppColor.white, fontWeight: FontWeight.w500, @@ -137,7 +152,7 @@ class HomeHeader extends StatelessWidget { ), const SpaceHeight(8), Text( - 'Mari tingkatkan performa bisnis Anda hari ini', + context.lang.home_header_desc, style: AppStyle.md.copyWith( color: AppColor.white.withOpacity(0.85), fontWeight: FontWeight.w400, @@ -170,7 +185,7 @@ class HomeHeader extends StatelessWidget { ), const SizedBox(width: 6), Text( - 'Penjualan hari ini +25%', + '${context.lang.sales_today} +25%', style: AppStyle.sm.copyWith( color: AppColor.white, fontWeight: FontWeight.w600, diff --git a/lib/presentation/pages/language/language_page.dart b/lib/presentation/pages/language/language_page.dart index fe72a3e..34993b0 100644 --- a/lib/presentation/pages/language/language_page.dart +++ b/lib/presentation/pages/language/language_page.dart @@ -1,115 +1,52 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../application/language/language_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; -import '../../components/button/button.dart'; +import '../../../infrastructure/language/language.dart'; import 'widgets/language_tile.dart'; @RoutePage() -class LanguagePage extends StatefulWidget { +class LanguagePage extends StatelessWidget { const LanguagePage({super.key}); - @override - State createState() => _LanguagePageState(); -} - -class _LanguagePageState extends State { - String selectedLanguage = 'en'; // Default language - - final List> languages = [ - {'code': 'en', 'name': 'English', 'nativeName': 'English', 'flag': '๐Ÿ‡บ๐Ÿ‡ธ'}, - { - 'code': 'id', - 'name': 'Indonesian', - 'nativeName': 'Bahasa Indonesia', - 'flag': '๐Ÿ‡ฎ๐Ÿ‡ฉ', - }, - {'code': 'es', 'name': 'Spanish', 'nativeName': 'Espaรฑol', 'flag': '๐Ÿ‡ช๐Ÿ‡ธ'}, - {'code': 'fr', 'name': 'French', 'nativeName': 'Franรงais', 'flag': '๐Ÿ‡ซ๐Ÿ‡ท'}, - {'code': 'de', 'name': 'German', 'nativeName': 'Deutsch', 'flag': '๐Ÿ‡ฉ๐Ÿ‡ช'}, - {'code': 'ja', 'name': 'Japanese', 'nativeName': 'ๆ—ฅๆœฌ่ชž', 'flag': '๐Ÿ‡ฏ๐Ÿ‡ต'}, - {'code': 'ko', 'name': 'Korean', 'nativeName': 'ํ•œ๊ตญ์–ด', 'flag': '๐Ÿ‡ฐ๐Ÿ‡ท'}, - {'code': 'zh', 'name': 'Chinese', 'nativeName': 'ไธญๆ–‡', 'flag': '๐Ÿ‡จ๐Ÿ‡ณ'}, - {'code': 'ar', 'name': 'Arabic', 'nativeName': 'ุงู„ุนุฑุจูŠุฉ', 'flag': '๐Ÿ‡ธ๐Ÿ‡ฆ'}, - { - 'code': 'pt', - 'name': 'Portuguese', - 'nativeName': 'Portuguรชs', - 'flag': '๐Ÿ‡ต๐Ÿ‡น', - }, - ]; - - void _selectLanguage(String languageCode) { - setState(() { - selectedLanguage = languageCode; - }); - } - - void _confirmSelection() { - // Here you would typically save the selected language to SharedPreferences - // or pass it back to the parent widget - Navigator.pop(context, selectedLanguage); - - // Show confirmation snackbar - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - 'Language changed to ${_getLanguageName(selectedLanguage)}', - ), - backgroundColor: Colors.green, - duration: const Duration(seconds: 2), - ), - ); - } - - String _getLanguageName(String code) { - return languages.firstWhere((lang) => lang['code'] == code)['name']; - } - @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, appBar: AppBar( - title: const Text('Select Language'), + title: Text(context.lang.select_language), elevation: 0, leading: IconButton( icon: const Icon(Icons.arrow_back, color: Colors.white), onPressed: () => context.router.back(), ), ), - body: Column( - children: [ - // Language list - Expanded( - child: ListView.builder( - padding: const EdgeInsets.all(16), - itemCount: languages.length, - itemBuilder: (context, index) { - final language = languages[index]; - final isSelected = selectedLanguage == language['code']; - - return LanguageTile( - isSelected: isSelected, - language: language, - onTap: () => _selectLanguage(language['code']), - ); - }, - ), - ), - - // Confirm button - Container( + body: BlocBuilder( + builder: (context, state) { + return ListView.builder( padding: const EdgeInsets.all(16), - width: double.infinity, - decoration: BoxDecoration(color: AppColor.white), - child: AppElevatedButton( - text: 'Confirm', - isLoading: false, - onPressed: _confirmSelection, - ), - ), - ], + itemCount: languages.length, + itemBuilder: (context, index) { + final language = languages[index]; + final isSelected = + state.language.locale.languageCode == + language.locale.languageCode + ? true + : false; + + return LanguageTile( + isSelected: isSelected, + language: language, + onTap: () => context.read().add( + LanguageEvent.changeLanguage(language), + ), + ); + }, + ); + }, ), ); } diff --git a/lib/presentation/pages/language/widgets/language_tile.dart b/lib/presentation/pages/language/widgets/language_tile.dart index f52dee0..82721d8 100644 --- a/lib/presentation/pages/language/widgets/language_tile.dart +++ b/lib/presentation/pages/language/widgets/language_tile.dart @@ -1,10 +1,11 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/language/language.dart'; class LanguageTile extends StatelessWidget { final bool isSelected; - final Map language; + final Language language; final Function() onTap; const LanguageTile({ super.key, @@ -42,11 +43,11 @@ class LanguageTile extends StatelessWidget { borderRadius: BorderRadius.circular(24), ), child: Center( - child: Text(language['flag'], style: const TextStyle(fontSize: 24)), + child: Text(language.path, style: const TextStyle(fontSize: 24)), ), ), title: Text( - language['name'], + language.name, style: AppStyle.lg.copyWith( fontWeight: FontWeight.w600, @@ -54,7 +55,7 @@ class LanguageTile extends StatelessWidget { ), ), subtitle: Text( - language['nativeName'], + language.nativeName, style: AppStyle.md.copyWith( color: isSelected ? AppColor.primary : AppColor.textPrimary, ), diff --git a/lib/presentation/pages/main/widgets/bottom_navbar.dart b/lib/presentation/pages/main/widgets/bottom_navbar.dart index 0749a45..03c216c 100644 --- a/lib/presentation/pages/main/widgets/bottom_navbar.dart +++ b/lib/presentation/pages/main/widgets/bottom_navbar.dart @@ -3,6 +3,8 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icon.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../common/extension/extension.dart'; + class MainBottomNavbar extends StatefulWidget { final TabsRouter tabsRouter; @@ -26,23 +28,23 @@ class _MainBottomNavbarState extends State { items: [ BottomNavigationBarItem( icon: LineIcon(LineIcons.home), - label: 'Home', - tooltip: 'Home', + label: context.lang.home, + tooltip: context.lang.home, ), BottomNavigationBarItem( icon: LineIcon(LineIcons.moneyBill), - label: 'Transaction', - tooltip: 'Transaction', + label: context.lang.transaction, + tooltip: context.lang.transaction, ), BottomNavigationBarItem( icon: LineIcon(LineIcons.barChart), - label: 'Report', - tooltip: 'Report', + label: context.lang.report, + tooltip: context.lang.report, ), BottomNavigationBarItem( icon: LineIcon(LineIcons.user), - label: 'Profile', - tooltip: 'Profile', + label: context.lang.profile, + tooltip: context.lang.profile, ), ], ); diff --git a/lib/presentation/pages/splash/splash_page.dart b/lib/presentation/pages/splash/splash_page.dart index 9715304..bc5d33c 100644 --- a/lib/presentation/pages/splash/splash_page.dart +++ b/lib/presentation/pages/splash/splash_page.dart @@ -1,6 +1,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../components/assets/assets.gen.dart'; import '../../router/app_router.gr.dart'; @@ -156,7 +157,7 @@ class _SplashPageState extends State with TickerProviderStateMixin { child: Opacity( opacity: versionOpacity, child: Text( - 'Version 1.0.0', + '${context.lang.version} 1.0.0', style: AppStyle.md.copyWith(color: AppColor.textLight), textAlign: TextAlign.center, ), diff --git a/pubspec.lock b/pubspec.lock index 2d97622..0e3e17d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -73,6 +73,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" + bloc: + dependency: transitive + description: + name: bloc + sha256: "52c10575f4445c61dd9e0cafcc6356fdd827c4c64dd7945ef3c4105f6b6ac189" + url: "https://pub.dev" + source: hosted + version: "9.0.0" boolean_selector: dependency: transitive description: @@ -358,6 +366,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_bloc: + dependency: "direct main" + description: + name: flutter_bloc + sha256: cf51747952201a455a1c840f8171d273be009b932c75093020f9af64f2123e38 + url: "https://pub.dev" + source: hosted + version: "9.1.1" flutter_gen_core: dependency: transitive description: @@ -390,6 +406,11 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" flutter_spinkit: dependency: "direct main" description: @@ -648,6 +669,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" nm: dependency: transitive description: @@ -768,6 +797,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.3" + provider: + dependency: transitive + description: + name: provider + sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" + url: "https://pub.dev" + source: hosted + version: "6.1.5" pub_semver: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a257839..2b5427d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,6 +12,9 @@ dependencies: flutter: sdk: flutter + flutter_localizations: + sdk: flutter + cupertino_icons: ^1.0.8 auto_route: ^9.3.0 get_it: ^8.0.3 @@ -32,6 +35,7 @@ dependencies: flutter_spinkit: ^5.2.2 fl_chart: ^1.0.0 another_flushbar: ^1.12.30 + flutter_bloc: ^9.1.1 dev_dependencies: flutter_test: @@ -47,6 +51,7 @@ dev_dependencies: json_serializable: ^6.9.5 flutter: + generate: true uses-material-design: true assets: - assets/images/ From d29486571a347d421068984b6e5995d5903e3333 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 12:55:27 +0700 Subject: [PATCH 019/108] feat: form page --- lib/common/theme/theme.dart | 1 + .../components/form/form_page.dart | 470 ++++++++++++++++++ .../pages/home/widgets/feature.dart | 14 +- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 120 +++-- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 112 +++++ pubspec.yaml | 1 + .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 12 files changed, 675 insertions(+), 57 deletions(-) create mode 100644 lib/presentation/components/form/form_page.dart diff --git a/lib/common/theme/theme.dart b/lib/common/theme/theme.dart index 6d1e1eb..844f0d6 100644 --- a/lib/common/theme/theme.dart +++ b/lib/common/theme/theme.dart @@ -63,6 +63,7 @@ class ThemeApp { letterSpacing: -0.5, color: AppColor.white, ), + iconTheme: const IconThemeData(color: AppColor.white), ), ); } diff --git a/lib/presentation/components/form/form_page.dart b/lib/presentation/components/form/form_page.dart new file mode 100644 index 0000000..8862ecb --- /dev/null +++ b/lib/presentation/components/form/form_page.dart @@ -0,0 +1,470 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:image_picker/image_picker.dart'; +import 'dart:io'; + +import '../../../common/theme/theme.dart'; + +// Model untuk question item +class TaskQuestion { + final String id; + final String question; + bool? answer; + File? photo; + + TaskQuestion({ + required this.id, + required this.question, + this.answer, + this.photo, + }); +} + +// Model untuk task section +class TaskSection { + final String title; + final List questions; + + TaskSection({required this.title, required this.questions}); +} + +@RoutePage() +class DailyTasksFormPage extends StatefulWidget { + const DailyTasksFormPage({super.key}); + + @override + State createState() => _DailyTasksFormPageState(); +} + +class _DailyTasksFormPageState extends State + with SingleTickerProviderStateMixin { + late TabController _tabController; + final ImagePicker _picker = ImagePicker(); + + // Sample data untuk OPEN dan CLOSING tasks + List taskSections = [ + TaskSection( + title: "OPENING", + questions: [ + TaskQuestion(id: "open_1", question: "Apakah meja sudah dibersihkan?"), + TaskQuestion( + id: "open_2", + question: "Apakah alat kerja sudah disiapkan?", + ), + TaskQuestion( + id: "open_3", + question: "Apakah ruangan sudah dalam kondisi bersih?", + ), + TaskQuestion( + id: "open_4", + question: "Apakah penerangan sudah memadai?", + ), + ], + ), + TaskSection( + title: "CLOSING", + questions: [ + TaskQuestion( + id: "close_1", + question: "Apakah meja sudah dibersihkan kembali?", + ), + TaskQuestion( + id: "close_2", + question: "Apakah alat kerja sudah disimpan dengan rapi?", + ), + TaskQuestion(id: "close_3", question: "Apakah lampu sudah dimatikan?"), + TaskQuestion(id: "close_4", question: "Apakah pintu sudah dikunci?"), + ], + ), + ]; + + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } + + Future _pickImage(TaskQuestion question) async { + try { + final XFile? image = await _picker.pickImage( + source: ImageSource.camera, + maxWidth: 1920, + maxHeight: 1080, + imageQuality: 85, + ); + + if (image != null) { + setState(() { + question.photo = File(image.path); + }); + } + } catch (e) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text('Error mengambil foto: $e'), + backgroundColor: AppColor.error, + ), + ); + } + } + + void _removePhoto(TaskQuestion question) { + setState(() { + question.photo = null; + }); + } + + bool _isFormComplete() { + for (var section in taskSections) { + for (var question in section.questions) { + if (question.answer == null || question.photo == null) { + return false; + } + } + } + return true; + } + + void _submitForm() { + if (!_isFormComplete()) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Mohon lengkapi semua pertanyaan dan foto'), + backgroundColor: AppColor.error, + ), + ); + return; + } + + // Logic untuk submit form + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Daily tasks berhasil disimpan!'), + backgroundColor: AppColor.success, + ), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + appBar: AppBar( + title: const Text( + 'Daily Tasks', + style: TextStyle( + color: AppColor.textWhite, + fontWeight: FontWeight.bold, + ), + ), + backgroundColor: AppColor.primary, + elevation: 0, + bottom: TabBar( + controller: _tabController, + indicatorColor: AppColor.textWhite, + labelColor: AppColor.textWhite, + unselectedLabelColor: AppColor.textWhite.withOpacity(0.7), + labelStyle: const TextStyle(fontWeight: FontWeight.bold), + tabs: taskSections + .map((section) => Tab(text: section.title)) + .toList(), + ), + ), + body: Column( + children: [ + Expanded( + child: TabBarView( + controller: _tabController, + children: taskSections.map((section) { + return SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildSectionHeader(section.title), + const SizedBox(height: 16), + ...section.questions.map((question) { + return _buildQuestionCard(question); + }).toList(), + ], + ), + ); + }).toList(), + ), + ), + _buildSubmitButton(), + ], + ), + ); + } + + Widget _buildSectionHeader(String title) { + return Container( + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [AppColor.primary, AppColor.primaryLight], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + borderRadius: BorderRadius.circular(12), + ), + child: Row( + children: [ + Icon( + title == "OPENING" ? Icons.wb_sunny : Icons.nightlight_round, + color: AppColor.textWhite, + size: 24, + ), + const SizedBox(width: 12), + Text( + '$title CHECKLIST', + style: const TextStyle( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } + + Widget _buildQuestionCard(TaskQuestion question) { + return Container( + margin: const EdgeInsets.only(bottom: 16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + question.question, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 16), + + // Yes/No buttons + Row( + children: [ + Expanded( + child: _buildAnswerButton( + question: question, + value: true, + label: "YES", + icon: Icons.check_circle, + color: AppColor.success, + ), + ), + const SizedBox(width: 12), + Expanded( + child: _buildAnswerButton( + question: question, + value: false, + label: "NO", + icon: Icons.cancel, + color: AppColor.error, + ), + ), + ], + ), + + const SizedBox(height: 16), + + // Photo section + _buildPhotoSection(question), + ], + ), + ), + ); + } + + Widget _buildAnswerButton({ + required TaskQuestion question, + required bool value, + required String label, + required IconData icon, + required Color color, + }) { + bool isSelected = question.answer == value; + + return GestureDetector( + onTap: () { + setState(() { + question.answer = value; + }); + }, + child: Container( + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: BoxDecoration( + color: isSelected ? color : AppColor.backgroundLight, + border: Border.all( + color: isSelected ? color : AppColor.border, + width: 1.5, + ), + borderRadius: BorderRadius.circular(8), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + icon, + color: isSelected ? AppColor.white : AppColor.textSecondary, + size: 20, + ), + const SizedBox(width: 8), + Text( + label, + style: TextStyle( + color: isSelected ? AppColor.white : AppColor.textSecondary, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ); + } + + Widget _buildPhotoSection(TaskQuestion question) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon( + Icons.camera_alt, + color: AppColor.textSecondary, + size: 18, + ), + const SizedBox(width: 8), + const Text( + 'Foto Bukti', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: AppColor.textSecondary, + ), + ), + const Text(' *', style: TextStyle(color: AppColor.error)), + ], + ), + const SizedBox(height: 8), + + if (question.photo == null) + GestureDetector( + onTap: () => _pickImage(question), + child: Container( + height: 120, + width: double.infinity, + decoration: BoxDecoration( + color: AppColor.borderLight, + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: AppColor.border, + style: BorderStyle.solid, + ), + ), + child: const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.add_a_photo, size: 32, color: AppColor.textLight), + SizedBox(height: 8), + Text( + 'Tap untuk mengambil foto', + style: TextStyle(color: AppColor.textLight, fontSize: 14), + ), + ], + ), + ), + ) + else + Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.file( + question.photo!, + height: 200, + width: double.infinity, + fit: BoxFit.cover, + ), + ), + Positioned( + top: 8, + right: 8, + child: GestureDetector( + onTap: () => _removePhoto(question), + child: Container( + padding: const EdgeInsets.all(4), + decoration: const BoxDecoration( + color: AppColor.error, + shape: BoxShape.circle, + ), + child: const Icon( + Icons.close, + color: AppColor.white, + size: 16, + ), + ), + ), + ), + ], + ), + ], + ); + } + + Widget _buildSubmitButton() { + return Container( + padding: const EdgeInsets.all(16), + decoration: const BoxDecoration( + color: AppColor.white, + border: Border(top: BorderSide(color: AppColor.border, width: 1)), + ), + child: SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _submitForm, + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.primary, + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + elevation: 2, + ), + child: const Text( + 'SUBMIT DAILY TASKS', + style: TextStyle( + color: AppColor.textWhite, + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 9c69b2b..8b77eaf 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -1,7 +1,9 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; import '../../../../common/theme/theme.dart'; +import '../../../router/app_router.gr.dart'; import 'feature_tile.dart'; class HomeFeature extends StatelessWidget { @@ -52,7 +54,7 @@ class HomeFeature extends StatelessWidget { onTap: () {}, ), HomeFeatureTile( - title: 'Product', + title: 'Produk', color: const Color(0xFFFF9800), icon: LineIcons.box, onTap: () {}, @@ -64,15 +66,15 @@ class HomeFeature extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ HomeFeatureTile( - title: 'Laporan', + title: 'Form', color: const Color(0xFFE91E63), - icon: LineIcons.pieChart, - onTap: () {}, + icon: LineIcons.fileAlt, + onTap: () => context.router.push(DailyTasksFormRoute()), ), HomeFeatureTile( - title: 'Kas & Bank', + title: 'Jadwal', color: const Color(0xFF9C27B0), - icon: LineIcons.university, + icon: LineIcons.calendar, onTap: () {}, ), HomeFeatureTile( diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index d0091de..a4944c8 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -24,5 +24,8 @@ class AppRouter extends RootStackRouter { // Language AutoRoute(page: LanguageRoute.page), + + // Form + AutoRoute(page: DailyTasksFormRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index bd838f8..b138473 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,148 +9,166 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i3; -import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' +import 'package:apskel_owner_flutter/presentation/components/form/form_page.dart' as _i1; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' - as _i2; -import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i4; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' + as _i2; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i3; +import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i5; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i6; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i7; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i8; -import 'package:auto_route/auto_route.dart' as _i9; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i9; +import 'package:auto_route/auto_route.dart' as _i10; /// generated route for -/// [_i1.HomePage] -class HomeRoute extends _i9.PageRouteInfo { - const HomeRoute({List<_i9.PageRouteInfo>? children}) +/// [_i1.DailyTasksFormPage] +class DailyTasksFormRoute extends _i10.PageRouteInfo { + const DailyTasksFormRoute({List<_i10.PageRouteInfo>? children}) + : super(DailyTasksFormRoute.name, initialChildren: children); + + static const String name = 'DailyTasksFormRoute'; + + static _i10.PageInfo page = _i10.PageInfo( + name, + builder: (data) { + return const _i1.DailyTasksFormPage(); + }, + ); +} + +/// generated route for +/// [_i2.HomePage] +class HomeRoute extends _i10.PageRouteInfo { + const HomeRoute({List<_i10.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i1.HomePage(); + return const _i2.HomePage(); }, ); } /// generated route for -/// [_i2.LanguagePage] -class LanguageRoute extends _i9.PageRouteInfo { - const LanguageRoute({List<_i9.PageRouteInfo>? children}) +/// [_i3.LanguagePage] +class LanguageRoute extends _i10.PageRouteInfo { + const LanguageRoute({List<_i10.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i2.LanguagePage(); + return const _i3.LanguagePage(); }, ); } /// generated route for -/// [_i3.LoginPage] -class LoginRoute extends _i9.PageRouteInfo { - const LoginRoute({List<_i9.PageRouteInfo>? children}) +/// [_i4.LoginPage] +class LoginRoute extends _i10.PageRouteInfo { + const LoginRoute({List<_i10.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i3.LoginPage(); + return const _i4.LoginPage(); }, ); } /// generated route for -/// [_i4.MainPage] -class MainRoute extends _i9.PageRouteInfo { - const MainRoute({List<_i9.PageRouteInfo>? children}) +/// [_i5.MainPage] +class MainRoute extends _i10.PageRouteInfo { + const MainRoute({List<_i10.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i4.MainPage(); + return const _i5.MainPage(); }, ); } /// generated route for -/// [_i5.ProfilePage] -class ProfileRoute extends _i9.PageRouteInfo { - const ProfileRoute({List<_i9.PageRouteInfo>? children}) +/// [_i6.ProfilePage] +class ProfileRoute extends _i10.PageRouteInfo { + const ProfileRoute({List<_i10.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i5.ProfilePage(); + return const _i6.ProfilePage(); }, ); } /// generated route for -/// [_i6.ReportPage] -class ReportRoute extends _i9.PageRouteInfo { - const ReportRoute({List<_i9.PageRouteInfo>? children}) +/// [_i7.ReportPage] +class ReportRoute extends _i10.PageRouteInfo { + const ReportRoute({List<_i10.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i6.ReportPage(); + return const _i7.ReportPage(); }, ); } /// generated route for -/// [_i7.SplashPage] -class SplashRoute extends _i9.PageRouteInfo { - const SplashRoute({List<_i9.PageRouteInfo>? children}) +/// [_i8.SplashPage] +class SplashRoute extends _i10.PageRouteInfo { + const SplashRoute({List<_i10.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i7.SplashPage(); + return const _i8.SplashPage(); }, ); } /// generated route for -/// [_i8.TransactionPage] -class TransactionRoute extends _i9.PageRouteInfo { - const TransactionRoute({List<_i9.PageRouteInfo>? children}) +/// [_i9.TransactionPage] +class TransactionRoute extends _i10.PageRouteInfo { + const TransactionRoute({List<_i10.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i9.PageInfo page = _i9.PageInfo( + static _i10.PageInfo page = _i10.PageInfo( name, builder: (data) { - return const _i8.TransactionPage(); + return const _i9.TransactionPage(); }, ); } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e71a16d..64a0ece 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2e1de87..2db3c22 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + file_selector_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 7d12a67..ed3f05c 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,11 +6,13 @@ import FlutterMacOS import Foundation import connectivity_plus +import file_selector_macos import path_provider_foundation import shared_preferences_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 0e3e17d..880068d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -241,6 +241,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + url: "https://pub.dev" + source: hosted + version: "0.3.4+2" crypto: dependency: transitive description: @@ -345,6 +353,38 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + url: "https://pub.dev" + source: hosted + version: "0.9.3+2" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" + url: "https://pub.dev" + source: hosted + version: "0.9.4+3" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + url: "https://pub.dev" + source: hosted + version: "2.6.2" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + url: "https://pub.dev" + source: hosted + version: "0.9.3+4" fixnum: dependency: transitive description: @@ -411,6 +451,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: "6382ce712ff69b0f719640ce957559dde459e55ecd433c767e06d139ddf16cab" + url: "https://pub.dev" + source: hosted + version: "2.0.29" flutter_spinkit: dependency: "direct main" description: @@ -525,6 +573,70 @@ packages: url: "https://pub.dev" source: hosted version: "4.5.4" + image_picker: + dependency: "direct main" + description: + name: image_picker + sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + sha256: b08e9a04d0f8d91f4a6e767a745b9871bfbc585410205c311d0492de20a7ccd6 + url: "https://pub.dev" + source: hosted + version: "0.8.12+25" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" + url: "https://pub.dev" + source: hosted + version: "0.8.12+2" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" + url: "https://pub.dev" + source: hosted + version: "0.2.1+2" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" + url: "https://pub.dev" + source: hosted + version: "0.2.1+2" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" + url: "https://pub.dev" + source: hosted + version: "2.10.1" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" + url: "https://pub.dev" + source: hosted + version: "0.2.1+1" image_size_getter: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2b5427d..91e69aa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,7 @@ dependencies: fl_chart: ^1.0.0 another_flushbar: ^1.12.30 flutter_bloc: ^9.1.1 + image_picker: ^1.1.2 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8777c93..e6c6668 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,8 +7,11 @@ #include "generated_plugin_registrant.h" #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { ConnectivityPlusWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index cc1361d..d62d824 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST connectivity_plus + file_selector_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST From 97da18ca38a9f199f2d555ddf709e4066b8db2ef Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 13:03:50 +0700 Subject: [PATCH 020/108] feat: daily task form page --- .../form/form_page.dart => pages/form/daily_task_form_page.dart} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/presentation/{components/form/form_page.dart => pages/form/daily_task_form_page.dart} (100%) diff --git a/lib/presentation/components/form/form_page.dart b/lib/presentation/pages/form/daily_task_form_page.dart similarity index 100% rename from lib/presentation/components/form/form_page.dart rename to lib/presentation/pages/form/daily_task_form_page.dart From b6e4831602f96345c52d6e71b8bbaef5117e80af Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 13:04:58 +0700 Subject: [PATCH 021/108] feat: daily task form page --- lib/presentation/router/app_router.gr.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index b138473..2aa1b90 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,10 +9,10 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/presentation/components/form/form_page.dart' - as _i1; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i4; +import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' + as _i1; import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' as _i2; import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' From cb45f7db16624ecd61f761958497604e681c9428 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 13:55:34 +0700 Subject: [PATCH 022/108] feat: schedule page --- .../pages/home/widgets/feature.dart | 2 +- .../pages/schedule/schedule_page.dart | 1086 +++++++++++++++++ lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 90 +- pubspec.lock | 16 + pubspec.yaml | 1 + 6 files changed, 1161 insertions(+), 37 deletions(-) create mode 100644 lib/presentation/pages/schedule/schedule_page.dart diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 8b77eaf..5516e16 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -75,7 +75,7 @@ class HomeFeature extends StatelessWidget { title: 'Jadwal', color: const Color(0xFF9C27B0), icon: LineIcons.calendar, - onTap: () {}, + onTap: () => context.router.push(ScheduleRoute()), ), HomeFeatureTile( title: 'Aset Tetap', diff --git a/lib/presentation/pages/schedule/schedule_page.dart b/lib/presentation/pages/schedule/schedule_page.dart new file mode 100644 index 0000000..15b4d68 --- /dev/null +++ b/lib/presentation/pages/schedule/schedule_page.dart @@ -0,0 +1,1086 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:table_calendar/table_calendar.dart'; + +import '../../../common/theme/theme.dart'; + +// Schedule model dengan optimasi +class Schedule { + final DateTime date; + final String title; + final String? subtitle; + final String? time; + final Color color; + final IconData? icon; + final String? avatarUrl; + final bool hasDetails; + final String? location; + final String? instructions; + + const Schedule({ + required this.date, + required this.title, + this.subtitle, + this.time, + required this.color, + this.icon, + this.avatarUrl, + this.hasDetails = false, + this.location, + this.instructions, + }); + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Schedule && + runtimeType == other.runtimeType && + date == other.date; + + @override + int get hashCode => date.hashCode; +} + +@RoutePage() +class SchedulePage extends StatefulWidget { + const SchedulePage({super.key}); + + @override + State createState() => _SchedulePageState(); +} + +class _SchedulePageState extends State + with TickerProviderStateMixin { + late DateTime _selectedDay; + late DateTime _focusedDay; + late PageController _pageController; + late AnimationController _fadeController; + late AnimationController _slideController; + late AnimationController _rotationController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + late Animation rotationAnimation; + + final CalendarFormat _calendarFormat = CalendarFormat.week; + + // Optimized schedules with const constructor + static final List _schedules = [ + Schedule( + date: DateTime.now(), + title: 'Morning Shift', + subtitle: '8am - 1pm (5h)', + time: '08:00', + color: AppColor.primary, + icon: Icons.work, + hasDetails: true, + location: 'Office Building A', + instructions: 'Check all equipment before starting', + ), + Schedule( + date: DateTime.now(), + title: 'Morning Shift', + subtitle: '8am - 1pm (5h)', + time: '08:00', + color: AppColor.primary, + icon: Icons.work, + hasDetails: true, + location: 'Office Building A', + instructions: 'Check all equipment before starting', + ), + Schedule( + date: DateTime.now(), + title: 'Morning Shift', + subtitle: '8am - 1pm (5h)', + time: '08:00', + color: AppColor.primary, + icon: Icons.work, + hasDetails: true, + location: 'Office Building A', + instructions: 'Check all equipment before starting', + ), + Schedule( + date: DateTime.now(), + title: 'Morning Shift', + subtitle: '8am - 1pm (5h)', + time: '08:00', + color: AppColor.primary, + icon: Icons.work, + hasDetails: true, + location: 'Office Building A', + instructions: 'Check all equipment before starting', + ), + Schedule( + date: DateTime.now(), + title: 'Morning Shift', + subtitle: '8am - 1pm (5h)', + time: '08:00', + color: AppColor.primary, + icon: Icons.work, + hasDetails: true, + location: 'Office Building A', + instructions: 'Check all equipment before starting', + ), + Schedule( + date: DateTime.now(), + title: 'Morning Shift', + subtitle: '8am - 1pm (5h)', + time: '08:00', + color: AppColor.primary, + icon: Icons.work, + hasDetails: true, + location: 'Office Building A', + instructions: 'Check all equipment before starting', + ), + Schedule( + date: DateTime.now().add(Duration(days: 1)), + title: 'Night Shift', + subtitle: '6pm - 11pm (5h)', + time: '18:00', + color: AppColor.warning, + icon: Icons.nights_stay, + hasDetails: true, + location: 'Warehouse B', + instructions: 'Close all the lights when you exit', + ), + Schedule( + date: DateTime.now().add(Duration(days: 2)), + title: 'Stand up Meeting', + subtitle: '30 minutes', + time: '09:00', + color: AppColor.info, + icon: Icons.group, + hasDetails: true, + location: 'Conference Room', + instructions: 'Prepare weekly report', + ), + Schedule( + date: DateTime.now().add(Duration(days: 3)), + title: 'Training Session', + subtitle: '2 hours', + time: '14:00', + color: AppColor.success, + icon: Icons.school, + hasDetails: true, + location: 'Training Center', + instructions: 'Bring notebook and pen', + ), + Schedule( + date: DateTime.now().add(Duration(days: 4)), + title: 'Client Meeting', + subtitle: '1 hour', + time: '10:00', + color: Color(0xFF9C27B0), + icon: Icons.business, + hasDetails: true, + location: 'Client Office', + instructions: 'Prepare presentation slides', + ), + ]; + + @override + void initState() { + super.initState(); + _selectedDay = DateTime.now(); + _focusedDay = DateTime.now(); + _pageController = PageController(); + + // Animation controllers + _fadeController = AnimationController( + duration: const Duration(milliseconds: 300), + vsync: this, + ); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 400), + vsync: this, + ); + + _rotationController = AnimationController( + duration: const Duration(seconds: 20), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.easeOutCubic), + ); + + rotationAnimation = + Tween( + begin: 0.0, + end: 2 * 3.14159, // 360 degrees in radians + ).animate( + CurvedAnimation(parent: _rotationController, curve: Curves.linear), + ); + + // Start animations + _fadeController.forward(); + _slideController.forward(); + _rotationController.repeat(); // Infinite rotation + } + + @override + void dispose() { + _pageController.dispose(); + _fadeController.dispose(); + _slideController.dispose(); + _rotationController.dispose(); + super.dispose(); + } + + List _getEventsForDay(DateTime day) { + return _schedules.where((schedule) { + return isSameDay(schedule.date, day); + }).toList(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: AnimatedBuilder( + animation: _fadeAnimation, + builder: (context, child) { + return Opacity( + opacity: _fadeAnimation.value, + child: CustomScrollView( + physics: const BouncingScrollPhysics(), + slivers: [ + _buildSliverAppBar(), + _buildSliverCalendar(), + _buildSliverScheduleList(), + ], + ), + ); + }, + ), + ); + } + + Widget _buildSliverAppBar() { + return SliverAppBar( + expandedHeight: 120.0, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + actions: [ + Container( + margin: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(12), + ), + child: IconButton( + onPressed: () => _showCalendarOptions(), + icon: Icon( + Icons.calendar_view_week, + color: AppColor.white, + size: 24, + ), + ), + ), + ], + flexibleSpace: FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 50, bottom: 16), + title: Text( + 'My Schedule', + style: TextStyle( + color: AppColor.white, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [AppColor.primary, AppColor.primary.withOpacity(0.8)], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ); + } + + Widget _buildSliverCalendar() { + return SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: Container( + margin: const EdgeInsets.all(20), + padding: const EdgeInsets.only(bottom: 16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(24), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.04), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: TableCalendar( + firstDay: DateTime.utc(2023, 1, 1), + lastDay: DateTime.utc(2025, 12, 31), + focusedDay: _focusedDay, + selectedDayPredicate: (day) => isSameDay(_selectedDay, day), + calendarFormat: _calendarFormat, + eventLoader: _getEventsForDay, + availableCalendarFormats: const {CalendarFormat.week: 'Week'}, + headerStyle: HeaderStyle( + formatButtonVisible: false, + titleCentered: true, + leftChevronVisible: true, + rightChevronVisible: true, + headerPadding: const EdgeInsets.symmetric(vertical: 16), + titleTextStyle: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + ), + leftChevronIcon: Icon( + Icons.chevron_left, + color: AppColor.textSecondary, + ), + rightChevronIcon: Icon( + Icons.chevron_right, + color: AppColor.textSecondary, + ), + ), + calendarStyle: CalendarStyle( + outsideDaysVisible: false, + weekendTextStyle: TextStyle( + color: AppColor.textLight, + fontWeight: FontWeight.w600, + ), + defaultTextStyle: TextStyle( + color: AppColor.textPrimary, + fontWeight: FontWeight.w600, + ), + selectedTextStyle: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.w700, + ), + selectedDecoration: BoxDecoration( + color: AppColor.primary, + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + ), + todayDecoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.2), + shape: BoxShape.circle, + ), + todayTextStyle: TextStyle( + color: AppColor.primary, + fontWeight: FontWeight.w700, + ), + markerDecoration: BoxDecoration( + color: AppColor.warning, + shape: BoxShape.circle, + ), + markersMaxCount: 1, + markerMargin: const EdgeInsets.only(top: 5), + markerSize: 6, + ), + onDaySelected: (selectedDay, focusedDay) { + if (!isSameDay(_selectedDay, selectedDay)) { + setState(() { + _selectedDay = selectedDay; + _focusedDay = focusedDay; + }); + _animateScheduleChange(); + } + }, + onPageChanged: (focusedDay) { + _focusedDay = focusedDay; + }, + ), + ), + ), + ); + } + + Widget _buildSliverScheduleList() { + final selectedEvents = _getEventsForDay(_selectedDay); + + return selectedEvents.isEmpty + ? SliverFillRemaining( + child: SlideTransition( + position: _slideAnimation, + child: _buildEmptyState(), + ), + ) + : SliverPadding( + padding: const EdgeInsets.only( + top: 8, + left: 20, + right: 20, + bottom: 20, + ), + sliver: SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + return SlideTransition( + position: _slideAnimation, + child: AnimatedContainer( + duration: Duration(milliseconds: 200 + (index * 100)), + curve: Curves.easeOutCubic, + child: _buildModernScheduleItem( + selectedEvents[index], + index, + ), + ), + ); + }, childCount: selectedEvents.length), + ), + ); + } + + Widget _buildEmptyState() { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.all(32), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + shape: BoxShape.circle, + ), + child: Icon( + Icons.event_available, + size: 64, + color: AppColor.primary.withOpacity(0.6), + ), + ), + const SizedBox(height: 24), + Text( + 'No events today', + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 8), + Text( + 'Enjoy your free time!', + style: TextStyle(fontSize: 16, color: AppColor.textSecondary), + ), + ], + ), + ); + } + + Widget _buildModernScheduleItem(Schedule schedule, int index) { + return TweenAnimationBuilder( + duration: Duration(milliseconds: 300 + (index * 100)), + tween: Tween(begin: 0.0, end: 1.0), + curve: Curves.easeOutCubic, + builder: (context, value, child) { + return Transform.translate( + offset: Offset(0, 20 * (1 - value)), + child: Opacity( + opacity: value, + child: Container( + margin: const EdgeInsets.only(bottom: 16), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: schedule.hasDetails + ? () => _showModernScheduleDetails(schedule) + : null, + borderRadius: BorderRadius.circular(20), + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: schedule.color.withOpacity(0.2), + width: 2, + ), + boxShadow: [ + BoxShadow( + color: schedule.color.withOpacity(0.1), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Row( + children: [ + // Time indicator + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 8, + ), + decoration: BoxDecoration( + color: schedule.color.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + schedule.time ?? 'All day', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w700, + color: schedule.color, + ), + ), + ), + const SizedBox(width: 16), + + // Content + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + schedule.title, + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + ), + ), + if (schedule.subtitle != null) ...[ + const SizedBox(height: 4), + Text( + schedule.subtitle!, + style: TextStyle( + fontSize: 14, + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ], + if (schedule.location != null) ...[ + const SizedBox(height: 4), + Row( + children: [ + Icon( + Icons.location_on, + size: 14, + color: AppColor.textLight, + ), + const SizedBox(width: 4), + Text( + schedule.location!, + style: TextStyle( + fontSize: 12, + color: AppColor.textLight, + ), + ), + ], + ), + ], + ], + ), + ), + + // Icon and arrow + if (schedule.icon != null) ...[ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: schedule.color.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Icon( + schedule.icon, + color: schedule.color, + size: 24, + ), + ), + const SizedBox(width: 12), + ], + + if (schedule.hasDetails) + Icon( + Icons.arrow_forward_ios, + size: 16, + color: AppColor.textLight, + ), + ], + ), + ), + ), + ), + ), + ), + ); + }, + ); + } + + void _animateScheduleChange() { + _slideController.reset(); + _slideController.forward(); + } + + void _showCalendarOptions() { + showModalBottomSheet( + context: context, + backgroundColor: Colors.transparent, + builder: (context) => Container( + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(24), + topRight: Radius.circular(24), + ), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + margin: const EdgeInsets.only(top: 12), + width: 40, + height: 4, + decoration: BoxDecoration( + color: AppColor.border, + borderRadius: BorderRadius.circular(2), + ), + ), + Padding( + padding: const EdgeInsets.all(24), + child: Text( + 'Calendar Options', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + ), + ), + ), + ], + ), + ), + ); + } + + void _showModernScheduleDetails(Schedule schedule) { + showModalBottomSheet( + context: context, + backgroundColor: Colors.transparent, + isScrollControlled: true, + builder: (context) => _buildModernScheduleDetailsModal(schedule), + ); + } + + Widget _buildModernScheduleDetailsModal(Schedule schedule) { + return TweenAnimationBuilder( + duration: const Duration(milliseconds: 400), + tween: Tween(begin: 0.0, end: 1.0), + curve: Curves.easeOutCubic, + builder: (context, value, child) { + return Transform.translate( + offset: Offset(0, 50 * (1 - value)), + child: Opacity( + opacity: value, + child: Container( + height: MediaQuery.of(context).size.height * 0.75, + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(24), + topRight: Radius.circular(24), + ), + ), + child: Column( + children: [ + // Handle bar + Container( + margin: const EdgeInsets.only(top: 12), + width: 40, + height: 4, + decoration: BoxDecoration( + color: AppColor.border, + borderRadius: BorderRadius.circular(2), + ), + ), + + // Content + Expanded( + child: SingleChildScrollView( + padding: const EdgeInsets.all(24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header with color indicator + Row( + children: [ + Container( + width: 4, + height: 40, + decoration: BoxDecoration( + color: schedule.color, + borderRadius: BorderRadius.circular(2), + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + schedule.title, + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.w800, + color: AppColor.textPrimary, + ), + ), + if (schedule.time != null) + Text( + schedule.time!, + style: TextStyle( + fontSize: 16, + color: schedule.color, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + if (schedule.icon != null) + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: schedule.color.withOpacity(0.1), + borderRadius: BorderRadius.circular(16), + ), + child: Icon( + schedule.icon, + color: schedule.color, + size: 32, + ), + ), + ], + ), + + const SizedBox(height: 24), + + // Duration and location info + if (schedule.subtitle != null || + schedule.location != null) ...[ + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(16), + ), + child: Column( + children: [ + if (schedule.subtitle != null) ...[ + Row( + children: [ + Icon( + Icons.access_time, + color: AppColor.textSecondary, + size: 20, + ), + const SizedBox(width: 12), + Text( + schedule.subtitle!, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + ), + ], + ), + if (schedule.location != null) + const SizedBox(height: 16), + ], + if (schedule.location != null) + Row( + children: [ + Icon( + Icons.location_on, + color: AppColor.textSecondary, + size: 20, + ), + const SizedBox(width: 12), + Text( + schedule.location!, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + ), + ], + ), + ], + ), + ), + const SizedBox(height: 24), + ], + + // Map placeholder + Container( + height: 180, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + gradient: LinearGradient( + colors: [ + schedule.color.withOpacity(0.1), + schedule.color.withOpacity(0.05), + ], + ), + ), + child: Stack( + children: [ + // Map grid pattern + CustomPaint( + size: const Size(double.infinity, 180), + painter: MapGridPainter( + color: schedule.color.withOpacity(0.1), + ), + ), + // Location pin + Positioned( + right: 40, + top: 60, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: schedule.color, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: schedule.color.withOpacity( + 0.3, + ), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + ), + child: const Icon( + Icons.location_on, + color: Colors.white, + size: 24, + ), + ), + ), + ], + ), + ), + + const SizedBox(height: 24), + + // Instructions + if (schedule.instructions != null) ...[ + Text( + 'Instructions', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 12), + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: schedule.color.withOpacity(0.2), + ), + ), + child: Text( + schedule.instructions!, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w500, + color: AppColor.textPrimary, + height: 1.5, + ), + ), + ), + const SizedBox(height: 24), + ], + + // PDF attachment + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.border), + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.red.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: const Icon( + Icons.picture_as_pdf, + color: Colors.red, + size: 24, + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + 'Instructions.pdf', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + ), + Text( + '2.4 MB', + style: TextStyle( + fontSize: 12, + color: AppColor.textSecondary, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: schedule.color.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Icon( + Icons.download, + color: schedule.color, + size: 20, + ), + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), + ); + }, + ); + } +} + +// Custom painter for map grid +class MapGridPainter extends CustomPainter { + final Color color; + + MapGridPainter({required this.color}); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint() + ..color = color + ..strokeWidth = 1; + + // Draw vertical lines + for (int i = 0; i <= 8; i++) { + final x = (size.width / 8) * i; + canvas.drawLine(Offset(x, 0), Offset(x, size.height), paint); + } + + // Draw horizontal lines + for (int i = 0; i <= 6; i++) { + final y = (size.height / 6) * i; + canvas.drawLine(Offset(0, y), Offset(size.width, y), paint); + } + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => false; +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index a4944c8..d25e104 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -27,5 +27,8 @@ class AppRouter extends RootStackRouter { // Form AutoRoute(page: DailyTasksFormRoute.page), + + // Schedule + AutoRoute(page: ScheduleRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 2aa1b90..2916421 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -23,21 +23,23 @@ import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dar as _i6; import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i7; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i8; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i9; -import 'package:auto_route/auto_route.dart' as _i10; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i10; +import 'package:auto_route/auto_route.dart' as _i11; /// generated route for /// [_i1.DailyTasksFormPage] -class DailyTasksFormRoute extends _i10.PageRouteInfo { - const DailyTasksFormRoute({List<_i10.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i11.PageRouteInfo { + const DailyTasksFormRoute({List<_i11.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { return const _i1.DailyTasksFormPage(); @@ -47,13 +49,13 @@ class DailyTasksFormRoute extends _i10.PageRouteInfo { /// generated route for /// [_i2.HomePage] -class HomeRoute extends _i10.PageRouteInfo { - const HomeRoute({List<_i10.PageRouteInfo>? children}) +class HomeRoute extends _i11.PageRouteInfo { + const HomeRoute({List<_i11.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { return const _i2.HomePage(); @@ -63,13 +65,13 @@ class HomeRoute extends _i10.PageRouteInfo { /// generated route for /// [_i3.LanguagePage] -class LanguageRoute extends _i10.PageRouteInfo { - const LanguageRoute({List<_i10.PageRouteInfo>? children}) +class LanguageRoute extends _i11.PageRouteInfo { + const LanguageRoute({List<_i11.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { return const _i3.LanguagePage(); @@ -79,13 +81,13 @@ class LanguageRoute extends _i10.PageRouteInfo { /// generated route for /// [_i4.LoginPage] -class LoginRoute extends _i10.PageRouteInfo { - const LoginRoute({List<_i10.PageRouteInfo>? children}) +class LoginRoute extends _i11.PageRouteInfo { + const LoginRoute({List<_i11.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { return const _i4.LoginPage(); @@ -95,13 +97,13 @@ class LoginRoute extends _i10.PageRouteInfo { /// generated route for /// [_i5.MainPage] -class MainRoute extends _i10.PageRouteInfo { - const MainRoute({List<_i10.PageRouteInfo>? children}) +class MainRoute extends _i11.PageRouteInfo { + const MainRoute({List<_i11.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { return const _i5.MainPage(); @@ -111,13 +113,13 @@ class MainRoute extends _i10.PageRouteInfo { /// generated route for /// [_i6.ProfilePage] -class ProfileRoute extends _i10.PageRouteInfo { - const ProfileRoute({List<_i10.PageRouteInfo>? children}) +class ProfileRoute extends _i11.PageRouteInfo { + const ProfileRoute({List<_i11.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { return const _i6.ProfilePage(); @@ -127,13 +129,13 @@ class ProfileRoute extends _i10.PageRouteInfo { /// generated route for /// [_i7.ReportPage] -class ReportRoute extends _i10.PageRouteInfo { - const ReportRoute({List<_i10.PageRouteInfo>? children}) +class ReportRoute extends _i11.PageRouteInfo { + const ReportRoute({List<_i11.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { return const _i7.ReportPage(); @@ -142,33 +144,49 @@ class ReportRoute extends _i10.PageRouteInfo { } /// generated route for -/// [_i8.SplashPage] -class SplashRoute extends _i10.PageRouteInfo { - const SplashRoute({List<_i10.PageRouteInfo>? children}) - : super(SplashRoute.name, initialChildren: children); +/// [_i8.SchedulePage] +class ScheduleRoute extends _i11.PageRouteInfo { + const ScheduleRoute({List<_i11.PageRouteInfo>? children}) + : super(ScheduleRoute.name, initialChildren: children); - static const String name = 'SplashRoute'; + static const String name = 'ScheduleRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { - return const _i8.SplashPage(); + return const _i8.SchedulePage(); }, ); } /// generated route for -/// [_i9.TransactionPage] -class TransactionRoute extends _i10.PageRouteInfo { - const TransactionRoute({List<_i10.PageRouteInfo>? children}) +/// [_i9.SplashPage] +class SplashRoute extends _i11.PageRouteInfo { + const SplashRoute({List<_i11.PageRouteInfo>? children}) + : super(SplashRoute.name, initialChildren: children); + + static const String name = 'SplashRoute'; + + static _i11.PageInfo page = _i11.PageInfo( + name, + builder: (data) { + return const _i9.SplashPage(); + }, + ); +} + +/// generated route for +/// [_i10.TransactionPage] +class TransactionRoute extends _i11.PageRouteInfo { + const TransactionRoute({List<_i11.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i10.PageInfo page = _i10.PageInfo( + static _i11.PageInfo page = _i11.PageInfo( name, builder: (data) { - return const _i9.TransactionPage(); + return const _i10.TransactionPage(); }, ); } diff --git a/pubspec.lock b/pubspec.lock index 880068d..de57a06 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1013,6 +1013,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + simple_gesture_detector: + dependency: transitive + description: + name: simple_gesture_detector + sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3 + url: "https://pub.dev" + source: hosted + version: "0.2.1" sky_engine: dependency: transitive description: flutter @@ -1074,6 +1082,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" + table_calendar: + dependency: "direct main" + description: + name: table_calendar + sha256: "0c0c6219878b363a2d5f40c7afb159d845f253d061dc3c822aa0d5fe0f721982" + url: "https://pub.dev" + source: hosted + version: "3.2.0" term_glyph: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 91e69aa..2739fa2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: another_flushbar: ^1.12.30 flutter_bloc: ^9.1.1 image_picker: ^1.1.2 + table_calendar: ^3.2.0 dev_dependencies: flutter_test: From de42fc68a47413198b0efafc6a883b8704e14966 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 14:08:07 +0700 Subject: [PATCH 023/108] feat: package info --- lib/common/di/di_package_info.dart | 9 +++++++ lib/injection.config.dart | 9 +++++++ .../pages/splash/splash_page.dart | 5 +++- macos/Flutter/GeneratedPluginRegistrant.swift | 2 ++ pubspec.lock | 24 +++++++++++++++++++ pubspec.yaml | 1 + 6 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 lib/common/di/di_package_info.dart diff --git a/lib/common/di/di_package_info.dart b/lib/common/di/di_package_info.dart new file mode 100644 index 0000000..cbc71c7 --- /dev/null +++ b/lib/common/di/di_package_info.dart @@ -0,0 +1,9 @@ +import 'package:injectable/injectable.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +@module +abstract class PackageInfoDi { + @preResolve // karena butuh async init + @lazySingleton + Future get packageInfo => PackageInfo.fromPlatform(); +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index f414336..b62556e 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -15,6 +15,7 @@ import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; import 'package:apskel_owner_flutter/common/di/di_auto_route.dart' as _i311; import 'package:apskel_owner_flutter/common/di/di_connectivity.dart' as _i586; import 'package:apskel_owner_flutter/common/di/di_dio.dart' as _i103; +import 'package:apskel_owner_flutter/common/di/di_package_info.dart' as _i227; import 'package:apskel_owner_flutter/common/di/di_shared_preferences.dart' as _i402; import 'package:apskel_owner_flutter/common/network/network_client.dart' @@ -26,6 +27,7 @@ import 'package:connectivity_plus/connectivity_plus.dart' as _i895; import 'package:dio/dio.dart' as _i361; import 'package:get_it/get_it.dart' as _i174; import 'package:injectable/injectable.dart' as _i526; +import 'package:package_info_plus/package_info_plus.dart' as _i655; import 'package:shared_preferences/shared_preferences.dart' as _i460; const String _dev = 'dev'; @@ -42,6 +44,7 @@ extension GetItInjectableX on _i174.GetIt { final dioDi = _$DioDi(); final autoRouteDi = _$AutoRouteDi(); final connectivityDi = _$ConnectivityDi(); + final packageInfoDi = _$PackageInfoDi(); await gh.factoryAsync<_i460.SharedPreferences>( () => sharedPreferencesDi.prefs, preResolve: true, @@ -49,6 +52,10 @@ extension GetItInjectableX on _i174.GetIt { gh.lazySingleton<_i361.Dio>(() => dioDi.dio); gh.lazySingleton<_i258.AppRouter>(() => autoRouteDi.appRouter); gh.lazySingleton<_i895.Connectivity>(() => connectivityDi.connectivity); + await gh.lazySingletonAsync<_i655.PackageInfo>( + () => packageInfoDi.packageInfo, + preResolve: true, + ); gh.lazySingleton<_i543.NetworkClient>( () => _i543.NetworkClient(gh<_i895.Connectivity>()), ); @@ -71,3 +78,5 @@ class _$DioDi extends _i103.DioDi {} class _$AutoRouteDi extends _i311.AutoRouteDi {} class _$ConnectivityDi extends _i586.ConnectivityDi {} + +class _$PackageInfoDi extends _i227.PackageInfoDi {} diff --git a/lib/presentation/pages/splash/splash_page.dart b/lib/presentation/pages/splash/splash_page.dart index bc5d33c..a7706e8 100644 --- a/lib/presentation/pages/splash/splash_page.dart +++ b/lib/presentation/pages/splash/splash_page.dart @@ -1,8 +1,10 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:package_info_plus/package_info_plus.dart'; import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; +import '../../../injection.dart'; import '../../components/assets/assets.gen.dart'; import '../../router/app_router.gr.dart'; @@ -94,6 +96,7 @@ class _SplashPageState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { + final packageInfo = getIt(); return Scaffold( body: AnimatedBuilder( animation: Listenable.merge([ @@ -157,7 +160,7 @@ class _SplashPageState extends State with TickerProviderStateMixin { child: Opacity( opacity: versionOpacity, child: Text( - '${context.lang.version} 1.0.0', + '${context.lang.version} ${packageInfo.version}+${packageInfo.buildNumber}', style: AppStyle.md.copyWith(color: AppColor.textLight), textAlign: TextAlign.center, ), diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index ed3f05c..fb508ad 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,12 +7,14 @@ import Foundation import connectivity_plus import file_selector_macos +import package_info_plus import path_provider_foundation import shared_preferences_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index de57a06..2b762bf 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -805,6 +805,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" + url: "https://pub.dev" + source: hosted + version: "8.3.1" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" + url: "https://pub.dev" + source: hosted + version: "3.2.1" path: dependency: "direct main" description: @@ -1202,6 +1218,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + win32: + dependency: transitive + description: + name: win32 + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + url: "https://pub.dev" + source: hosted + version: "5.14.0" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2739fa2..725ca40 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,6 +38,7 @@ dependencies: flutter_bloc: ^9.1.1 image_picker: ^1.1.2 table_calendar: ^3.2.0 + package_info_plus: ^8.3.1 dev_dependencies: flutter_test: From 2d6d93772e7818186a9e46bd604077c7bbd4d718 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 15:03:57 +0700 Subject: [PATCH 024/108] feat: update schedule --- .../pages/schedule/schedule_page.dart | 55 ------------------- 1 file changed, 55 deletions(-) diff --git a/lib/presentation/pages/schedule/schedule_page.dart b/lib/presentation/pages/schedule/schedule_page.dart index 15b4d68..481fdfb 100644 --- a/lib/presentation/pages/schedule/schedule_page.dart +++ b/lib/presentation/pages/schedule/schedule_page.dart @@ -65,61 +65,6 @@ class _SchedulePageState extends State // Optimized schedules with const constructor static final List _schedules = [ - Schedule( - date: DateTime.now(), - title: 'Morning Shift', - subtitle: '8am - 1pm (5h)', - time: '08:00', - color: AppColor.primary, - icon: Icons.work, - hasDetails: true, - location: 'Office Building A', - instructions: 'Check all equipment before starting', - ), - Schedule( - date: DateTime.now(), - title: 'Morning Shift', - subtitle: '8am - 1pm (5h)', - time: '08:00', - color: AppColor.primary, - icon: Icons.work, - hasDetails: true, - location: 'Office Building A', - instructions: 'Check all equipment before starting', - ), - Schedule( - date: DateTime.now(), - title: 'Morning Shift', - subtitle: '8am - 1pm (5h)', - time: '08:00', - color: AppColor.primary, - icon: Icons.work, - hasDetails: true, - location: 'Office Building A', - instructions: 'Check all equipment before starting', - ), - Schedule( - date: DateTime.now(), - title: 'Morning Shift', - subtitle: '8am - 1pm (5h)', - time: '08:00', - color: AppColor.primary, - icon: Icons.work, - hasDetails: true, - location: 'Office Building A', - instructions: 'Check all equipment before starting', - ), - Schedule( - date: DateTime.now(), - title: 'Morning Shift', - subtitle: '8am - 1pm (5h)', - time: '08:00', - color: AppColor.primary, - icon: Icons.work, - hasDetails: true, - location: 'Office Building A', - instructions: 'Check all equipment before starting', - ), Schedule( date: DateTime.now(), title: 'Morning Shift', From 16230febc4189d77bd19b71769e0f29db32affe9 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 15:39:02 +0700 Subject: [PATCH 025/108] feat: update home --- lib/presentation/pages/home/home_page.dart | 2 - lib/presentation/pages/home/widgets/task.dart | 96 ------------------- .../pages/home/widgets/task_tile.dart | 68 ------------- 3 files changed, 166 deletions(-) delete mode 100644 lib/presentation/pages/home/widgets/task.dart delete mode 100644 lib/presentation/pages/home/widgets/task_tile.dart diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 05df01a..8eebf3e 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -10,7 +10,6 @@ import 'widgets/feature.dart'; import 'widgets/header.dart'; import 'widgets/performance.dart'; import 'widgets/stats.dart'; -import 'widgets/task.dart'; @RoutePage() class HomePage extends StatefulWidget { @@ -148,7 +147,6 @@ class _HomePageState extends State with TickerProviderStateMixin { children: [ HomeFeature(), HomeStats(), - HomeTask(), HomeActivity(), HomePerformance(), const SpaceHeight(40), diff --git a/lib/presentation/pages/home/widgets/task.dart b/lib/presentation/pages/home/widgets/task.dart deleted file mode 100644 index 5b47dab..0000000 --- a/lib/presentation/pages/home/widgets/task.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; -import '../../../components/spacer/spacer.dart'; -import 'task_tile.dart'; - -class HomeTask extends StatelessWidget { - const HomeTask({super.key}); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric( - vertical: 24, - horizontal: AppValue.padding, - ).copyWith(bottom: 0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Tugas Harian', - style: AppStyle.h6.copyWith( - fontWeight: FontWeight.w700, - color: AppColor.textPrimary, - letterSpacing: -0.5, - ), - ), - Text( - '3/5 Selesai', - style: AppStyle.md.copyWith( - fontWeight: FontWeight.w600, - color: AppColor.primary, - ), - ), - ], - ), - const SpaceHeight(20), - Container( - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - color: AppColor.white, - borderRadius: BorderRadius.circular(AppValue.radius), - border: Border.all(color: AppColor.border.withOpacity(0.5)), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.04), - blurRadius: 20, - offset: const Offset(0, 8), - ), - ], - ), - child: Column( - children: [ - HomeTaskTile( - title: 'Cek stok produk terlaris', - subtitle: 'Pastikan ketersediaan produk favorit pelanggan', - isCompleted: true, - color: AppColor.success, - ), - const SpaceHeight(16), - HomeTaskTile( - title: 'Review laporan penjualan kemarin', - subtitle: 'Analisis performa dan identifikasi peluang', - isCompleted: true, - color: AppColor.success, - ), - const SpaceHeight(16), - HomeTaskTile( - title: 'Update harga produk musiman', - subtitle: 'Sesuaikan harga berdasarkan demand pasar', - isCompleted: true, - color: AppColor.success, - ), - const SpaceHeight(16), - HomeTaskTile( - title: 'Backup data transaksi', - subtitle: 'Pastikan data aman dan tersimpan', - color: AppColor.warning, - ), - const SpaceHeight(16), - HomeTaskTile( - title: 'Training tim kasir baru', - subtitle: 'Onboarding karyawan untuk shift sore', - color: AppColor.info, - ), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/home/widgets/task_tile.dart b/lib/presentation/pages/home/widgets/task_tile.dart deleted file mode 100644 index f1295c4..0000000 --- a/lib/presentation/pages/home/widgets/task_tile.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; -import '../../../components/spacer/spacer.dart'; - -class HomeTaskTile extends StatelessWidget { - final String title; - final String subtitle; - final bool isCompleted; - final Color color; - const HomeTaskTile({ - super.key, - required this.title, - required this.subtitle, - this.isCompleted = false, - required this.color, - }); - - @override - Widget build(BuildContext context) { - return Row( - children: [ - Container( - width: 24, - height: 24, - decoration: BoxDecoration( - color: isCompleted ? color : Colors.transparent, - borderRadius: BorderRadius.circular(6), - border: Border.all(color: color, width: 2), - ), - child: isCompleted - ? Icon(Icons.check_rounded, color: AppColor.white, size: 16) - : null, - ), - const SpaceWidth(16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - title, - style: AppStyle.md.copyWith( - fontWeight: FontWeight.w600, - color: isCompleted - ? AppColor.textSecondary - : AppColor.textPrimary, - decoration: isCompleted - ? TextDecoration.lineThrough - : TextDecoration.none, - ), - ), - const SpaceHeight(2), - Text( - subtitle, - style: AppStyle.sm.copyWith( - color: AppColor.textLight, - decoration: isCompleted - ? TextDecoration.lineThrough - : TextDecoration.none, - ), - ), - ], - ), - ), - ], - ); - } -} From ac17c4d83028a92f8fce016942e556227aed1c2d Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 16:11:04 +0700 Subject: [PATCH 026/108] feat: product page --- .../pages/home/widgets/feature.dart | 2 +- .../pages/product/product_page.dart | 327 ++++++++++++++++++ .../pages/product/widgets/appbar.dart | 96 +++++ .../product/widgets/category_delegate.dart | 69 ++++ .../pages/product/widgets/product_tile.dart | 191 ++++++++++ lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 110 +++--- 7 files changed, 751 insertions(+), 47 deletions(-) create mode 100644 lib/presentation/pages/product/product_page.dart create mode 100644 lib/presentation/pages/product/widgets/appbar.dart create mode 100644 lib/presentation/pages/product/widgets/category_delegate.dart create mode 100644 lib/presentation/pages/product/widgets/product_tile.dart diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 5516e16..561525e 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -57,7 +57,7 @@ class HomeFeature extends StatelessWidget { title: 'Produk', color: const Color(0xFFFF9800), icon: LineIcons.box, - onTap: () {}, + onTap: () => context.router.push(ProductRoute()), ), ], ), diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_page.dart new file mode 100644 index 0000000..c44fecb --- /dev/null +++ b/lib/presentation/pages/product/product_page.dart @@ -0,0 +1,327 @@ +import 'dart:math' as math; + +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../common/theme/theme.dart'; +import '../../components/button/button.dart'; +import 'widgets/appbar.dart'; +import 'widgets/category_delegate.dart'; +import 'widgets/product_tile.dart'; + +@RoutePage() +class ProductPage extends StatefulWidget { + const ProductPage({super.key}); + + @override + State createState() => _ProductPageState(); +} + +class _ProductPageState extends State + with TickerProviderStateMixin { + String selectedCategory = 'Semua'; + List categories = ['Semua', 'Makanan', 'Minuman', 'Snack', 'Dessert']; + + // Animation + late AnimationController _rotationController; + late Animation _rotationAnimation; + + // Sample product data + List products = [ + Product( + id: '1', + name: 'Nasi Goreng Special', + price: 25000, + category: 'Makanan', + stock: 50, + imageUrl: 'assets/images/nasi_goreng.jpg', + isActive: true, + ), + Product( + id: '8', + name: 'Nasi Goreng', + price: 15000, + category: 'Makanan', + stock: 50, + imageUrl: 'assets/images/nasi_goreng.jpg', + isActive: true, + ), + Product( + id: '9', + name: 'Nasi Goreng Telor', + price: 18000, + category: 'Makanan', + stock: 50, + imageUrl: 'assets/images/nasi_goreng.jpg', + isActive: true, + ), + Product( + id: '10', + name: 'Mie Goreng ', + price: 18000, + category: 'Makanan', + stock: 50, + imageUrl: 'assets/images/nasi_goreng.jpg', + isActive: true, + ), + Product( + id: '2', + name: 'Es Teh Manis', + price: 8000, + category: 'Minuman', + stock: 100, + imageUrl: 'assets/images/es_teh.jpg', + isActive: true, + ), + Product( + id: '6', + name: 'Es Jeruk', + price: 10000, + category: 'Minuman', + stock: 100, + imageUrl: 'assets/images/es_teh.jpg', + isActive: true, + ), + Product( + id: '7', + name: 'Es Kelapa', + price: 12000, + category: 'Minuman', + stock: 100, + imageUrl: 'assets/images/es_teh.jpg', + isActive: true, + ), + Product( + id: '3', + name: 'Keripik Singkong', + price: 15000, + category: 'Snack', + stock: 25, + imageUrl: 'assets/images/keripik.jpg', + isActive: true, + ), + Product( + id: '4', + name: 'Es Krim Vanilla', + price: 12000, + category: 'Dessert', + stock: 30, + imageUrl: 'assets/images/ice_cream.jpg', + isActive: false, + ), + Product( + id: '5', + name: 'Ayam Bakar', + price: 35000, + category: 'Makanan', + stock: 20, + imageUrl: 'assets/images/ayam_bakar.jpg', + isActive: true, + ), + ]; + + List get filteredProducts { + return products.where((product) { + bool matchesCategory = + selectedCategory == 'Semua' || product.category == selectedCategory; + return matchesCategory; + }).toList(); + } + + @override + initState() { + super.initState(); + _rotationController = AnimationController( + duration: const Duration(seconds: 3), + vsync: this, + )..repeat(); + _rotationAnimation = Tween( + begin: 0, + end: 2 * math.pi, + ).animate(_rotationController); + } + + @override + void dispose() { + _rotationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + _buildSliverAppBar(), + _buildCategoryFilter(), + _buildProductGrid(), + _buildEmptyState(), + ], + ), + ); + } + + Widget _buildSliverAppBar() { + return SliverAppBar( + expandedHeight: 120.0, + floating: false, + pinned: true, + elevation: 0, + flexibleSpace: ProductAppbar(rotationAnimation: _rotationAnimation), + actions: [ + ActionIconButton(onTap: () {}, icon: LineIcons.search), + ActionIconButton(onTap: _showAddProductDialog, icon: LineIcons.plus), + ActionIconButton(onTap: _showOptionsMenu, icon: LineIcons.filter), + ], + ); + } + + Widget _buildCategoryFilter() { + return SliverPersistentHeader( + pinned: true, + delegate: ProductCategoryHeaderDelegate( + categories: categories, + selectedCategory: selectedCategory, + onCategoryChanged: (category) { + setState(() { + selectedCategory = category; + }); + }, + ), + ); + } + + Widget _buildProductGrid() { + if (filteredProducts.isEmpty) { + return const SliverToBoxAdapter(child: SizedBox.shrink()); + } + + return SliverPadding( + padding: const EdgeInsets.all(16.0), + sliver: SliverGrid( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + childAspectRatio: 0.85, + crossAxisSpacing: 16.0, + mainAxisSpacing: 16.0, + ), + delegate: SliverChildBuilderDelegate((context, index) { + final product = filteredProducts[index]; + return ProductTile(product: product, onTap: () {}); + }, childCount: filteredProducts.length), + ), + ); + } + + Widget _buildEmptyState() { + if (filteredProducts.isNotEmpty) { + return const SliverToBoxAdapter(child: SizedBox.shrink()); + } + + return SliverToBoxAdapter( + child: Container( + height: 300, + margin: const EdgeInsets.all(32.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.inventory_2_outlined, + size: 64, + color: AppColor.textLight, + ), + const SizedBox(height: 16), + Text( + 'Tidak ada produk ditemukan', + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 16, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 8), + Text( + 'Coba ubah filter atau tambah produk baru', + style: TextStyle(color: AppColor.textLight, fontSize: 14), + textAlign: TextAlign.center, + ), + ], + ), + ), + ); + } + + void _showAddProductDialog() { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Tambah Produk'), + content: const Text( + 'Dialog tambah produk akan diimplementasikan di sini', + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Batal'), + ), + ElevatedButton( + onPressed: () => Navigator.pop(context), + child: const Text('Simpan'), + ), + ], + ), + ); + } + + void _showOptionsMenu() { + showModalBottomSheet( + context: context, + builder: (context) => Container( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + leading: const Icon(Icons.sort), + title: const Text('Urutkan'), + onTap: () => Navigator.pop(context), + ), + ListTile( + leading: const Icon(Icons.filter_list), + title: const Text('Filter Lanjutan'), + onTap: () => Navigator.pop(context), + ), + ListTile( + leading: const Icon(Icons.download), + title: const Text('Export Data'), + onTap: () => Navigator.pop(context), + ), + ], + ), + ), + ); + } +} + +// Product Model +class Product { + final String id; + final String name; + final int price; + final String category; + final int stock; + final String imageUrl; + bool isActive; + + Product({ + required this.id, + required this.name, + required this.price, + required this.category, + required this.stock, + required this.imageUrl, + required this.isActive, + }); +} diff --git a/lib/presentation/pages/product/widgets/appbar.dart b/lib/presentation/pages/product/widgets/appbar.dart new file mode 100644 index 0000000..b50a9f6 --- /dev/null +++ b/lib/presentation/pages/product/widgets/appbar.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class ProductAppbar extends StatelessWidget { + final Animation rotationAnimation; + const ProductAppbar({super.key, required this.rotationAnimation}); + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + centerTitle: true, + title: Text( + 'Produk', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/product/widgets/category_delegate.dart b/lib/presentation/pages/product/widgets/category_delegate.dart new file mode 100644 index 0000000..e0a851b --- /dev/null +++ b/lib/presentation/pages/product/widgets/category_delegate.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class ProductCategoryHeaderDelegate extends SliverPersistentHeaderDelegate { + final List categories; + final String selectedCategory; + final ValueChanged onCategoryChanged; + + ProductCategoryHeaderDelegate({ + required this.categories, + required this.selectedCategory, + required this.onCategoryChanged, + }); + + @override + Widget build( + BuildContext context, + double shrinkOffset, + bool overlapsContent, + ) { + return Container( + color: AppColor.background, + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Container( + height: 50, + margin: const EdgeInsets.symmetric(horizontal: 16.0), + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: categories.length, + itemBuilder: (context, index) { + final category = categories[index]; + final isSelected = selectedCategory == category; + + return Container( + margin: const EdgeInsets.only(right: 12.0), + child: FilterChip( + label: Text(category), + selected: isSelected, + onSelected: (selected) => onCategoryChanged(category), + backgroundColor: AppColor.surface, + selectedColor: AppColor.primary, + checkmarkColor: AppColor.textWhite, + labelStyle: AppStyle.md.copyWith( + color: isSelected ? AppColor.textWhite : AppColor.textPrimary, + fontWeight: isSelected ? FontWeight.bold : FontWeight.normal, + ), + side: BorderSide( + color: isSelected ? AppColor.primary : AppColor.border, + ), + ), + ); + }, + ), + ), + ); + } + + @override + double get maxExtent => 66.0; + + @override + double get minExtent => 66.0; + + @override + bool shouldRebuild(ProductCategoryHeaderDelegate oldDelegate) { + return oldDelegate.selectedCategory != selectedCategory; + } +} diff --git a/lib/presentation/pages/product/widgets/product_tile.dart b/lib/presentation/pages/product/widgets/product_tile.dart new file mode 100644 index 0000000..7cc54c4 --- /dev/null +++ b/lib/presentation/pages/product/widgets/product_tile.dart @@ -0,0 +1,191 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import '../product_page.dart'; + +class ProductTile extends StatelessWidget { + final Product product; + final VoidCallback onTap; + + const ProductTile({super.key, required this.product, required this.onTap}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: Stack( + children: [ + Container( + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: product.isActive + ? AppColor.border + : AppColor.borderLight, + ), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [_buildProductImage(), _buildProductInfo()], + ), + ), + // Overlay gray untuk produk yang tidak aktif + if (!product.isActive) + Container( + decoration: BoxDecoration( + color: AppColor.black.withOpacity(0.4), + borderRadius: BorderRadius.circular(12.0), + ), + child: Center( + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + decoration: BoxDecoration( + color: AppColor.warning, + borderRadius: BorderRadius.circular(8), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.2), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.visibility_off, + color: AppColor.textWhite, + size: 16, + ), + SpaceWidth(6), + Text( + 'NONAKTIF', + style: AppStyle.sm.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ), + ), + ], + ), + ); + } + + Widget _buildProductImage() { + return Expanded( + flex: 2, + child: Container( + width: double.infinity, + decoration: const BoxDecoration( + color: AppColor.borderLight, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(12.0), + topRight: Radius.circular(12.0), + ), + ), + child: Stack( + children: [ + Center( + child: Icon(Icons.image, size: 32, color: AppColor.textLight), + ), + ], + ), + ), + ); + } + + Widget _buildProductInfo() { + return Expanded( + flex: 2, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + product.name, + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.bold, + color: product.isActive + ? AppColor.textPrimary + : AppColor.textSecondary, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 2), + Text( + _formatPrice(product.price), + style: AppStyle.xs.copyWith( + color: product.isActive + ? AppColor.primary + : AppColor.textSecondary, + fontWeight: FontWeight.bold, + ), + ), + const Spacer(), + _buildBottomInfo(), + ], + ), + ), + ); + } + + Widget _buildBottomInfo() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Flexible( + child: Text( + 'Stok: ${product.stock}', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontSize: 9, + ), + overflow: TextOverflow.ellipsis, + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 1), + decoration: BoxDecoration( + color: AppColor.primaryLight.withOpacity(0.1), + borderRadius: BorderRadius.circular(3.0), + ), + child: Text( + product.category, + style: AppStyle.xs.copyWith( + color: product.isActive + ? AppColor.primary + : AppColor.textSecondary, + fontSize: 8, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ); + } + + String _formatPrice(int price) { + return 'Rp ${price.toString().replaceAllMapped(RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (Match m) => '${m[1]}.')}'; + } +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index d25e104..436f77f 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -30,5 +30,8 @@ class AppRouter extends RootStackRouter { // Schedule AutoRoute(page: ScheduleRoute.page), + + // Product + AutoRoute(page: ProductRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 2916421..becfbf5 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -19,27 +19,29 @@ import 'package:apskel_owner_flutter/presentation/pages/language/language_page.d as _i3; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i5; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i6; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i7; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i8; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i10; -import 'package:auto_route/auto_route.dart' as _i11; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i11; +import 'package:auto_route/auto_route.dart' as _i12; /// generated route for /// [_i1.DailyTasksFormPage] -class DailyTasksFormRoute extends _i11.PageRouteInfo { - const DailyTasksFormRoute({List<_i11.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i12.PageRouteInfo { + const DailyTasksFormRoute({List<_i12.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { return const _i1.DailyTasksFormPage(); @@ -49,13 +51,13 @@ class DailyTasksFormRoute extends _i11.PageRouteInfo { /// generated route for /// [_i2.HomePage] -class HomeRoute extends _i11.PageRouteInfo { - const HomeRoute({List<_i11.PageRouteInfo>? children}) +class HomeRoute extends _i12.PageRouteInfo { + const HomeRoute({List<_i12.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { return const _i2.HomePage(); @@ -65,13 +67,13 @@ class HomeRoute extends _i11.PageRouteInfo { /// generated route for /// [_i3.LanguagePage] -class LanguageRoute extends _i11.PageRouteInfo { - const LanguageRoute({List<_i11.PageRouteInfo>? children}) +class LanguageRoute extends _i12.PageRouteInfo { + const LanguageRoute({List<_i12.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { return const _i3.LanguagePage(); @@ -81,13 +83,13 @@ class LanguageRoute extends _i11.PageRouteInfo { /// generated route for /// [_i4.LoginPage] -class LoginRoute extends _i11.PageRouteInfo { - const LoginRoute({List<_i11.PageRouteInfo>? children}) +class LoginRoute extends _i12.PageRouteInfo { + const LoginRoute({List<_i12.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { return const _i4.LoginPage(); @@ -97,13 +99,13 @@ class LoginRoute extends _i11.PageRouteInfo { /// generated route for /// [_i5.MainPage] -class MainRoute extends _i11.PageRouteInfo { - const MainRoute({List<_i11.PageRouteInfo>? children}) +class MainRoute extends _i12.PageRouteInfo { + const MainRoute({List<_i12.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { return const _i5.MainPage(); @@ -112,81 +114,97 @@ class MainRoute extends _i11.PageRouteInfo { } /// generated route for -/// [_i6.ProfilePage] -class ProfileRoute extends _i11.PageRouteInfo { - const ProfileRoute({List<_i11.PageRouteInfo>? children}) +/// [_i6.ProductPage] +class ProductRoute extends _i12.PageRouteInfo { + const ProductRoute({List<_i12.PageRouteInfo>? children}) + : super(ProductRoute.name, initialChildren: children); + + static const String name = 'ProductRoute'; + + static _i12.PageInfo page = _i12.PageInfo( + name, + builder: (data) { + return const _i6.ProductPage(); + }, + ); +} + +/// generated route for +/// [_i7.ProfilePage] +class ProfileRoute extends _i12.PageRouteInfo { + const ProfileRoute({List<_i12.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { - return const _i6.ProfilePage(); + return const _i7.ProfilePage(); }, ); } /// generated route for -/// [_i7.ReportPage] -class ReportRoute extends _i11.PageRouteInfo { - const ReportRoute({List<_i11.PageRouteInfo>? children}) +/// [_i8.ReportPage] +class ReportRoute extends _i12.PageRouteInfo { + const ReportRoute({List<_i12.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { - return const _i7.ReportPage(); + return const _i8.ReportPage(); }, ); } /// generated route for -/// [_i8.SchedulePage] -class ScheduleRoute extends _i11.PageRouteInfo { - const ScheduleRoute({List<_i11.PageRouteInfo>? children}) +/// [_i9.SchedulePage] +class ScheduleRoute extends _i12.PageRouteInfo { + const ScheduleRoute({List<_i12.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { - return const _i8.SchedulePage(); + return const _i9.SchedulePage(); }, ); } /// generated route for -/// [_i9.SplashPage] -class SplashRoute extends _i11.PageRouteInfo { - const SplashRoute({List<_i11.PageRouteInfo>? children}) +/// [_i10.SplashPage] +class SplashRoute extends _i12.PageRouteInfo { + const SplashRoute({List<_i12.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { - return const _i9.SplashPage(); + return const _i10.SplashPage(); }, ); } /// generated route for -/// [_i10.TransactionPage] -class TransactionRoute extends _i11.PageRouteInfo { - const TransactionRoute({List<_i11.PageRouteInfo>? children}) +/// [_i11.TransactionPage] +class TransactionRoute extends _i12.PageRouteInfo { + const TransactionRoute({List<_i12.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i11.PageInfo page = _i11.PageInfo( + static _i12.PageInfo page = _i12.PageInfo( name, builder: (data) { - return const _i10.TransactionPage(); + return const _i11.TransactionPage(); }, ); } From c9e5c8d178a467659019487458396ada2172d841 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 Aug 2025 16:32:08 +0700 Subject: [PATCH 027/108] feat: product page --- .../pages/product/product_page.dart | 180 +++++++++++++++++- .../pages/product/widgets/appbar.dart | 2 +- 2 files changed, 179 insertions(+), 3 deletions(-) diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_page.dart index c44fecb..8cce6f0 100644 --- a/lib/presentation/pages/product/product_page.dart +++ b/lib/presentation/pages/product/product_page.dart @@ -18,10 +18,13 @@ class ProductPage extends StatefulWidget { State createState() => _ProductPageState(); } +enum ViewType { grid, list } + class _ProductPageState extends State with TickerProviderStateMixin { String selectedCategory = 'Semua'; List categories = ['Semua', 'Makanan', 'Minuman', 'Snack', 'Dessert']; + ViewType currentViewType = ViewType.grid; // Animation late AnimationController _rotationController; @@ -156,7 +159,7 @@ class _ProductPageState extends State slivers: [ _buildSliverAppBar(), _buildCategoryFilter(), - _buildProductGrid(), + _buildProductContent(), _buildEmptyState(), ], ), @@ -173,6 +176,12 @@ class _ProductPageState extends State actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.search), ActionIconButton(onTap: _showAddProductDialog, icon: LineIcons.plus), + ActionIconButton( + onTap: _toggleViewType, + icon: currentViewType == ViewType.grid + ? LineIcons.list + : LineIcons.thLarge, + ), ActionIconButton(onTap: _showOptionsMenu, icon: LineIcons.filter), ], ); @@ -193,11 +202,17 @@ class _ProductPageState extends State ); } - Widget _buildProductGrid() { + Widget _buildProductContent() { if (filteredProducts.isEmpty) { return const SliverToBoxAdapter(child: SizedBox.shrink()); } + return currentViewType == ViewType.grid + ? _buildProductGrid() + : _buildProductList(); + } + + Widget _buildProductGrid() { return SliverPadding( padding: const EdgeInsets.all(16.0), sliver: SliverGrid( @@ -215,6 +230,153 @@ class _ProductPageState extends State ); } + Widget _buildProductList() { + return SliverPadding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + sliver: SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + final product = filteredProducts[index]; + return _buildProductListItem(product); + }, childCount: filteredProducts.length), + ), + ); + } + + Widget _buildProductListItem(Product product) { + return Container( + margin: const EdgeInsets.only(bottom: 12.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: InkWell( + onTap: () {}, + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Row( + children: [ + // Product Image + Container( + width: 80, + height: 80, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.background, + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.asset( + product.imageUrl, + fit: BoxFit.cover, + errorBuilder: (context, error, stackTrace) { + return Container( + color: AppColor.background, + child: Icon( + Icons.image_outlined, + color: AppColor.textLight, + size: 32, + ), + ); + }, + ), + ), + ), + const SizedBox(width: 12), + // Product Info + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + product.name, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Text( + product.category, + style: TextStyle(fontSize: 12, color: AppColor.textLight), + ), + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Rp ${_formatPrice(product.price)}', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: product.isActive + ? Colors.green.withOpacity(0.1) + : Colors.red.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + 'Stock: ${product.stock}', + style: TextStyle( + fontSize: 12, + color: product.isActive + ? Colors.green + : Colors.red, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ), + ], + ), + ), + // Action Button + IconButton( + onPressed: () {}, + icon: const Icon(Icons.more_vert), + color: AppColor.textLight, + ), + ], + ), + ), + ), + ); + } + + String _formatPrice(int price) { + return price.toString().replaceAllMapped( + RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), + (Match m) => '${m[1]}.', + ); + } + + void _toggleViewType() { + setState(() { + currentViewType = currentViewType == ViewType.grid + ? ViewType.list + : ViewType.grid; + }); + } + Widget _buildEmptyState() { if (filteredProducts.isNotEmpty) { return const SliverToBoxAdapter(child: SizedBox.shrink()); @@ -283,6 +445,20 @@ class _ProductPageState extends State child: Column( mainAxisSize: MainAxisSize.min, children: [ + ListTile( + leading: Icon( + currentViewType == ViewType.grid ? Icons.list : Icons.grid_view, + ), + title: Text( + currentViewType == ViewType.grid + ? 'Tampilan List' + : 'Tampilan Grid', + ), + onTap: () { + Navigator.pop(context); + _toggleViewType(); + }, + ), ListTile( leading: const Icon(Icons.sort), title: const Text('Urutkan'), diff --git a/lib/presentation/pages/product/widgets/appbar.dart b/lib/presentation/pages/product/widgets/appbar.dart index b50a9f6..a81d162 100644 --- a/lib/presentation/pages/product/widgets/appbar.dart +++ b/lib/presentation/pages/product/widgets/appbar.dart @@ -9,7 +9,7 @@ class ProductAppbar extends StatelessWidget { @override Widget build(BuildContext context) { return FlexibleSpaceBar( - centerTitle: true, + titlePadding: const EdgeInsets.only(left: 50, bottom: 16), title: Text( 'Produk', style: AppStyle.xl.copyWith( From 8c2afc4880014a8a7956526a0a7a3f75bfe103e8 Mon Sep 17 00:00:00 2001 From: efrilm Date: Fri, 15 Aug 2025 16:31:29 +0700 Subject: [PATCH 028/108] feat: customer page --- .../pages/customer/customer_page.dart | 235 ++++++++++++++++++ .../pages/customer/widgets/appbar.dart | 96 +++++++ .../pages/customer/widgets/customer_card.dart | 89 +++++++ .../pages/customer/widgets/customer_tile.dart | 127 ++++++++++ .../pages/home/widgets/feature.dart | 8 +- .../pages/home/widgets/feature_tile.dart | 2 +- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 158 ++++++------ 8 files changed, 643 insertions(+), 75 deletions(-) create mode 100644 lib/presentation/pages/customer/customer_page.dart create mode 100644 lib/presentation/pages/customer/widgets/appbar.dart create mode 100644 lib/presentation/pages/customer/widgets/customer_card.dart create mode 100644 lib/presentation/pages/customer/widgets/customer_tile.dart diff --git a/lib/presentation/pages/customer/customer_page.dart b/lib/presentation/pages/customer/customer_page.dart new file mode 100644 index 0000000..f63d063 --- /dev/null +++ b/lib/presentation/pages/customer/customer_page.dart @@ -0,0 +1,235 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; +import 'dart:math' as math; + +import '../../../common/theme/theme.dart'; +import '../../components/button/button.dart'; +import 'widgets/appbar.dart'; +import 'widgets/customer_card.dart'; +import 'widgets/customer_tile.dart'; + +// Customer Model +class Customer { + final String id; + final String name; + final String email; + final String phone; + final String address; + final double totalPurchases; + final int totalOrders; + final DateTime lastVisit; + final String membershipLevel; + final bool isActive; + + Customer({ + required this.id, + required this.name, + required this.email, + required this.phone, + required this.address, + required this.totalPurchases, + required this.totalOrders, + required this.lastVisit, + required this.membershipLevel, + required this.isActive, + }); +} + +@RoutePage() +class CustomerPage extends StatefulWidget { + const CustomerPage({super.key}); + + @override + State createState() => _CustomerPageState(); +} + +class _CustomerPageState extends State + with TickerProviderStateMixin { + final TextEditingController _searchController = TextEditingController(); + String _searchQuery = ''; + bool _isGridView = false; + + // Sample customer data + final List _customers = [ + Customer( + id: '001', + name: 'Ahmad Wijaya', + email: 'ahmad@email.com', + phone: '+62 812-3456-7890', + address: 'Jl. Raya No. 123, Jakarta', + totalPurchases: 2500000, + totalOrders: 15, + lastVisit: DateTime.now().subtract(Duration(days: 2)), + membershipLevel: 'Gold', + isActive: true, + ), + Customer( + id: '002', + name: 'Siti Nurhaliza', + email: 'siti@email.com', + phone: '+62 813-4567-8901', + address: 'Jl. Merdeka No. 45, Bandung', + totalPurchases: 1800000, + totalOrders: 12, + lastVisit: DateTime.now().subtract(Duration(days: 5)), + membershipLevel: 'Silver', + isActive: true, + ), + Customer( + id: '003', + name: 'Budi Santoso', + email: 'budi@email.com', + phone: '+62 814-5678-9012', + address: 'Jl. Sudirman No. 67, Surabaya', + totalPurchases: 3200000, + totalOrders: 20, + lastVisit: DateTime.now().subtract(Duration(days: 1)), + membershipLevel: 'Platinum', + isActive: true, + ), + Customer( + id: '004', + name: 'Maya Sari', + email: 'maya@email.com', + phone: '+62 815-6789-0123', + address: 'Jl. Diponegoro No. 89, Yogyakarta', + totalPurchases: 950000, + totalOrders: 8, + lastVisit: DateTime.now().subtract(Duration(days: 30)), + membershipLevel: 'Bronze', + isActive: false, + ), + ]; + + // Animation + late AnimationController _rotationController; + late Animation _rotationAnimation; + + @override + initState() { + super.initState(); + _rotationController = AnimationController( + duration: const Duration(seconds: 3), + vsync: this, + )..repeat(); + _rotationAnimation = Tween( + begin: 0, + end: 2 * math.pi, + ).animate(_rotationController); + } + + @override + void dispose() { + _searchController.dispose(); + _rotationController.dispose(); + super.dispose(); + } + + List get filteredCustomers { + var filtered = _customers.where((customer) { + final matchesSearch = + customer.name.toLowerCase().contains(_searchQuery.toLowerCase()) || + customer.email.toLowerCase().contains(_searchQuery.toLowerCase()) || + customer.phone.contains(_searchQuery); + + return matchesSearch; + }).toList(); + + return filtered; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + // SliverAppBar with gradient + SliverAppBar( + expandedHeight: 120.0, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + flexibleSpace: CustomerAppbar( + rotationAnimation: _rotationAnimation, + ), + actions: [ActionIconButton(onTap: () {}, icon: LineIcons.search)], + ), + + // Search and Filter Section + SliverToBoxAdapter( + child: Container( + color: AppColor.white, + child: Column( + children: [ + // View toggle and sort + Padding( + padding: EdgeInsets.only(left: 16, right: 16, bottom: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${filteredCustomers.length} customers found', + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 14, + ), + ), + Row( + children: [ + IconButton( + icon: Icon( + _isGridView ? Icons.list : Icons.grid_view, + color: AppColor.primary, + ), + onPressed: () { + setState(() { + _isGridView = !_isGridView; + }); + }, + ), + ], + ), + ], + ), + ), + ], + ), + ), + ), + + // Customer List + _isGridView ? _buildCustomerGrid() : _buildCustomerList(), + ], + ), + ); + } + + Widget _buildCustomerList() { + return SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + final customer = filteredCustomers[index]; + return CustomerTile(customer: customer); + }, childCount: filteredCustomers.length), + ); + } + + Widget _buildCustomerGrid() { + return SliverPadding( + padding: EdgeInsets.all(16), + sliver: SliverGrid( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + childAspectRatio: 0.8, + ), + delegate: SliverChildBuilderDelegate((context, index) { + final customer = filteredCustomers[index]; + return CustomerCard(customer: customer); + }, childCount: filteredCustomers.length), + ), + ); + } +} diff --git a/lib/presentation/pages/customer/widgets/appbar.dart b/lib/presentation/pages/customer/widgets/appbar.dart new file mode 100644 index 0000000..cb95b3c --- /dev/null +++ b/lib/presentation/pages/customer/widgets/appbar.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class CustomerAppbar extends StatelessWidget { + final Animation rotationAnimation; + const CustomerAppbar({super.key, required this.rotationAnimation}); + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 50, bottom: 16), + title: Text( + 'Customer', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/customer/widgets/customer_card.dart b/lib/presentation/pages/customer/widgets/customer_card.dart new file mode 100644 index 0000000..457c67f --- /dev/null +++ b/lib/presentation/pages/customer/widgets/customer_card.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import '../customer_page.dart'; + +class CustomerCard extends StatelessWidget { + final Customer customer; + const CustomerCard({super.key, required this.customer}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: Offset(0, 4), + ), + ], + ), + child: InkWell( + onTap: () {}, + borderRadius: BorderRadius.circular(16), + child: Padding( + padding: EdgeInsets.all(16), + child: Column( + children: [ + CircleAvatar( + backgroundColor: _getMembershipColor(customer.membershipLevel), + radius: 30, + child: Text( + customer.name[0].toUpperCase(), + style: AppStyle.xxl.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + SpaceHeight(12), + Text( + customer.name, + style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), + textAlign: TextAlign.center, + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + SizedBox(height: 8), + Container( + padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: _getMembershipColor( + customer.membershipLevel, + ).withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + customer.membershipLevel, + style: AppStyle.sm.copyWith( + color: _getMembershipColor(customer.membershipLevel), + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ), + ), + ); + } + + Color _getMembershipColor(String level) { + switch (level) { + case 'Platinum': + return Color(0xFF9C27B0); + case 'Gold': + return Color(0xFFFF9800); + case 'Silver': + return Color(0xFF607D8B); + case 'Bronze': + return Color(0xFF795548); + default: + return AppColor.primary; + } + } +} diff --git a/lib/presentation/pages/customer/widgets/customer_tile.dart b/lib/presentation/pages/customer/widgets/customer_tile.dart new file mode 100644 index 0000000..69bf48a --- /dev/null +++ b/lib/presentation/pages/customer/widgets/customer_tile.dart @@ -0,0 +1,127 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import '../customer_page.dart'; + +class CustomerTile extends StatelessWidget { + final Customer customer; + const CustomerTile({super.key, required this.customer}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.symmetric(horizontal: AppValue.margin, vertical: 6), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: Offset(0, 2), + ), + ], + ), + child: ListTile( + contentPadding: EdgeInsets.all(16), + leading: CircleAvatar( + backgroundColor: _getMembershipColor(customer.membershipLevel), + child: Text( + customer.name[0].toUpperCase(), + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + title: Text( + customer.name, + style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), + ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SpaceHeight(4), + Text(customer.email), + SpaceHeight(2), + Text(customer.phone), + SpaceHeight(4), + Row( + children: [ + Container( + padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: _getMembershipColor( + customer.membershipLevel, + ).withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + customer.membershipLevel, + style: AppStyle.sm.copyWith( + color: _getMembershipColor(customer.membershipLevel), + fontWeight: FontWeight.bold, + ), + ), + ), + SpaceWidth(8), + Container( + padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: customer.isActive + ? AppColor.success.withOpacity(0.1) + : AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + customer.isActive ? 'Active' : 'Inactive', + style: AppStyle.sm.copyWith( + color: customer.isActive + ? AppColor.success + : AppColor.error, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ], + ), + trailing: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Rp ${customer.totalPurchases.toStringAsFixed(0)}', + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + Text( + '${customer.totalOrders} orders', + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + ], + ), + onTap: () {}, + ), + ); + } + + Color _getMembershipColor(String level) { + switch (level) { + case 'Platinum': + return Color(0xFF9C27B0); + case 'Gold': + return Color(0xFFFF9800); + case 'Silver': + return Color(0xFF607D8B); + case 'Bronze': + return Color(0xFF795548); + default: + return AppColor.primary; + } + } +} diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 561525e..1083032 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -78,16 +78,16 @@ class HomeFeature extends StatelessWidget { onTap: () => context.router.push(ScheduleRoute()), ), HomeFeatureTile( - title: 'Aset Tetap', + title: 'Inventaris', color: const Color(0xFF00BCD4), - icon: LineIcons.businessTime, + icon: LineIcons.archive, onTap: () {}, ), HomeFeatureTile( - title: 'Kontak', + title: 'Pelanggan', color: const Color(0xFFFF5722), icon: LineIcons.userPlus, - onTap: () {}, + onTap: () => context.router.push(CustomerRoute()), ), ], ), diff --git a/lib/presentation/pages/home/widgets/feature_tile.dart b/lib/presentation/pages/home/widgets/feature_tile.dart index 98a2a5c..ba6e95a 100644 --- a/lib/presentation/pages/home/widgets/feature_tile.dart +++ b/lib/presentation/pages/home/widgets/feature_tile.dart @@ -23,7 +23,7 @@ class HomeFeatureTile extends StatelessWidget { onTap: onTap, borderRadius: BorderRadius.circular(AppValue.radius), child: Container( - padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 8), + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 6), child: Column( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 436f77f..b57d15f 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -33,5 +33,8 @@ class AppRouter extends RootStackRouter { // Product AutoRoute(page: ProductRoute.page), + + // Customer + AutoRoute(page: CustomerRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index becfbf5..15ddee1 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -10,201 +10,219 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i4; -import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' - as _i1; -import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' - as _i2; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' - as _i3; -import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i5; -import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' + as _i1; +import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' + as _i2; +import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' + as _i3; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i4; +import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i6; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i7; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i8; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i11; -import 'package:auto_route/auto_route.dart' as _i12; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i12; +import 'package:auto_route/auto_route.dart' as _i13; /// generated route for -/// [_i1.DailyTasksFormPage] -class DailyTasksFormRoute extends _i12.PageRouteInfo { - const DailyTasksFormRoute({List<_i12.PageRouteInfo>? children}) +/// [_i1.CustomerPage] +class CustomerRoute extends _i13.PageRouteInfo { + const CustomerRoute({List<_i13.PageRouteInfo>? children}) + : super(CustomerRoute.name, initialChildren: children); + + static const String name = 'CustomerRoute'; + + static _i13.PageInfo page = _i13.PageInfo( + name, + builder: (data) { + return const _i1.CustomerPage(); + }, + ); +} + +/// generated route for +/// [_i2.DailyTasksFormPage] +class DailyTasksFormRoute extends _i13.PageRouteInfo { + const DailyTasksFormRoute({List<_i13.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i1.DailyTasksFormPage(); + return const _i2.DailyTasksFormPage(); }, ); } /// generated route for -/// [_i2.HomePage] -class HomeRoute extends _i12.PageRouteInfo { - const HomeRoute({List<_i12.PageRouteInfo>? children}) +/// [_i3.HomePage] +class HomeRoute extends _i13.PageRouteInfo { + const HomeRoute({List<_i13.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i2.HomePage(); + return const _i3.HomePage(); }, ); } /// generated route for -/// [_i3.LanguagePage] -class LanguageRoute extends _i12.PageRouteInfo { - const LanguageRoute({List<_i12.PageRouteInfo>? children}) +/// [_i4.LanguagePage] +class LanguageRoute extends _i13.PageRouteInfo { + const LanguageRoute({List<_i13.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i3.LanguagePage(); + return const _i4.LanguagePage(); }, ); } /// generated route for -/// [_i4.LoginPage] -class LoginRoute extends _i12.PageRouteInfo { - const LoginRoute({List<_i12.PageRouteInfo>? children}) +/// [_i5.LoginPage] +class LoginRoute extends _i13.PageRouteInfo { + const LoginRoute({List<_i13.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i4.LoginPage(); + return const _i5.LoginPage(); }, ); } /// generated route for -/// [_i5.MainPage] -class MainRoute extends _i12.PageRouteInfo { - const MainRoute({List<_i12.PageRouteInfo>? children}) +/// [_i6.MainPage] +class MainRoute extends _i13.PageRouteInfo { + const MainRoute({List<_i13.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i5.MainPage(); + return const _i6.MainPage(); }, ); } /// generated route for -/// [_i6.ProductPage] -class ProductRoute extends _i12.PageRouteInfo { - const ProductRoute({List<_i12.PageRouteInfo>? children}) +/// [_i7.ProductPage] +class ProductRoute extends _i13.PageRouteInfo { + const ProductRoute({List<_i13.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i6.ProductPage(); + return const _i7.ProductPage(); }, ); } /// generated route for -/// [_i7.ProfilePage] -class ProfileRoute extends _i12.PageRouteInfo { - const ProfileRoute({List<_i12.PageRouteInfo>? children}) +/// [_i8.ProfilePage] +class ProfileRoute extends _i13.PageRouteInfo { + const ProfileRoute({List<_i13.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i7.ProfilePage(); + return const _i8.ProfilePage(); }, ); } /// generated route for -/// [_i8.ReportPage] -class ReportRoute extends _i12.PageRouteInfo { - const ReportRoute({List<_i12.PageRouteInfo>? children}) +/// [_i9.ReportPage] +class ReportRoute extends _i13.PageRouteInfo { + const ReportRoute({List<_i13.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i8.ReportPage(); + return const _i9.ReportPage(); }, ); } /// generated route for -/// [_i9.SchedulePage] -class ScheduleRoute extends _i12.PageRouteInfo { - const ScheduleRoute({List<_i12.PageRouteInfo>? children}) +/// [_i10.SchedulePage] +class ScheduleRoute extends _i13.PageRouteInfo { + const ScheduleRoute({List<_i13.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i9.SchedulePage(); + return const _i10.SchedulePage(); }, ); } /// generated route for -/// [_i10.SplashPage] -class SplashRoute extends _i12.PageRouteInfo { - const SplashRoute({List<_i12.PageRouteInfo>? children}) +/// [_i11.SplashPage] +class SplashRoute extends _i13.PageRouteInfo { + const SplashRoute({List<_i13.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i10.SplashPage(); + return const _i11.SplashPage(); }, ); } /// generated route for -/// [_i11.TransactionPage] -class TransactionRoute extends _i12.PageRouteInfo { - const TransactionRoute({List<_i12.PageRouteInfo>? children}) +/// [_i12.TransactionPage] +class TransactionRoute extends _i13.PageRouteInfo { + const TransactionRoute({List<_i13.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i12.PageInfo page = _i12.PageInfo( + static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i11.TransactionPage(); + return const _i12.TransactionPage(); }, ); } From 1fd76b9741f99f59bf4bcd035d72ee944742c3b3 Mon Sep 17 00:00:00 2001 From: efrilm Date: Fri, 15 Aug 2025 18:02:09 +0700 Subject: [PATCH 029/108] feat: inventory page --- .../pages/home/widgets/feature.dart | 2 +- .../pages/inventory/inventory_page.dart | 556 ++++++++++++++++++ .../pages/inventory/widgets/appbar.dart | 96 +++ .../inventory/widgets/ingredient_tile.dart | 109 ++++ .../pages/inventory/widgets/product_tile.dart | 154 +++++ .../pages/inventory/widgets/stat_card.dart | 101 ++++ .../inventory/widgets/tabbar_delegate.dart | 52 ++ lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 146 +++-- 9 files changed, 1154 insertions(+), 65 deletions(-) create mode 100644 lib/presentation/pages/inventory/inventory_page.dart create mode 100644 lib/presentation/pages/inventory/widgets/appbar.dart create mode 100644 lib/presentation/pages/inventory/widgets/ingredient_tile.dart create mode 100644 lib/presentation/pages/inventory/widgets/product_tile.dart create mode 100644 lib/presentation/pages/inventory/widgets/stat_card.dart create mode 100644 lib/presentation/pages/inventory/widgets/tabbar_delegate.dart diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 1083032..d7b4f8c 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -81,7 +81,7 @@ class HomeFeature extends StatelessWidget { title: 'Inventaris', color: const Color(0xFF00BCD4), icon: LineIcons.archive, - onTap: () {}, + onTap: () => context.router.push(InventoryRoute()), ), HomeFeatureTile( title: 'Pelanggan', diff --git a/lib/presentation/pages/inventory/inventory_page.dart b/lib/presentation/pages/inventory/inventory_page.dart new file mode 100644 index 0000000..f0004e7 --- /dev/null +++ b/lib/presentation/pages/inventory/inventory_page.dart @@ -0,0 +1,556 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; +import 'widgets/appbar.dart'; +import 'widgets/ingredient_tile.dart'; +import 'widgets/product_tile.dart'; +import 'widgets/stat_card.dart'; +import 'widgets/tabbar_delegate.dart'; + +// Sample inventory data for products +class ProductItem { + final String id; + final String name; + final String category; + final int quantity; + final double price; + final String status; + final String image; + + ProductItem({ + required this.id, + required this.name, + required this.category, + required this.quantity, + required this.price, + required this.status, + required this.image, + }); +} + +// Sample inventory data for ingredients +class IngredientItem { + final String id; + final String name; + final String unit; + final double quantity; + final double minQuantity; + final String status; + final String image; + + IngredientItem({ + required this.id, + required this.name, + required this.unit, + required this.quantity, + required this.minQuantity, + required this.status, + required this.image, + }); +} + +// Custom SliverPersistentHeaderDelegate untuk TabBar + +@RoutePage() +class InventoryPage extends StatefulWidget { + const InventoryPage({super.key}); + + @override + State createState() => _InventoryPageState(); +} + +class _InventoryPageState extends State + with TickerProviderStateMixin { + late AnimationController _fadeAnimationController; + late AnimationController _slideAnimationController; + late AnimationController _rotationAnimationController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + late Animation rotationAnimation; + late TabController _tabController; + + final List productItems = [ + ProductItem( + id: '1', + name: 'Laptop Gaming ASUS ROG', + category: 'Elektronik', + quantity: 5, + price: 15000000, + status: 'available', + image: '๐Ÿ’ป', + ), + ProductItem( + id: '2', + name: 'Kemeja Formal Pria', + category: 'Fashion', + quantity: 25, + price: 250000, + status: 'available', + image: '๐Ÿ‘”', + ), + ProductItem( + id: '3', + name: 'Smartphone Samsung Galaxy', + category: 'Elektronik', + quantity: 12, + price: 8500000, + status: 'available', + image: '๐Ÿ“ฑ', + ), + ProductItem( + id: '4', + name: 'Tas Ransel Travel', + category: 'Fashion', + quantity: 8, + price: 350000, + status: 'low_stock', + image: '๐ŸŽ’', + ), + ProductItem( + id: '4', + name: 'Tas Ransel Travel', + category: 'Fashion', + quantity: 8, + price: 350000, + status: 'low_stock', + image: '๐ŸŽ’', + ), + ProductItem( + id: '4', + name: 'Tas Ransel Travel', + category: 'Fashion', + quantity: 8, + price: 350000, + status: 'low_stock', + image: '๐ŸŽ’', + ), + ]; + + final List ingredientItems = [ + IngredientItem( + id: '1', + name: 'Tepung Terigu', + unit: 'kg', + quantity: 50.5, + minQuantity: 10.0, + status: 'available', + image: '๐ŸŒพ', + ), + IngredientItem( + id: '2', + name: 'Gula Pasir', + unit: 'kg', + quantity: 2.5, + minQuantity: 5.0, + status: 'low_stock', + image: '๐Ÿฌ', + ), + IngredientItem( + id: '3', + name: 'Telur Ayam', + unit: 'butir', + quantity: 120, + minQuantity: 50, + status: 'available', + image: '๐Ÿฅš', + ), + IngredientItem( + id: '4', + name: 'Susu Segar', + unit: 'liter', + quantity: 0, + minQuantity: 10.0, + status: 'out_of_stock', + image: '๐Ÿฅ›', + ), + IngredientItem( + id: '5', + name: 'Mentega', + unit: 'kg', + quantity: 15.2, + minQuantity: 5.0, + status: 'available', + image: '๐Ÿงˆ', + ), + ]; + + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + + _fadeAnimationController = AnimationController( + duration: const Duration(milliseconds: 1000), + vsync: this, + ); + _slideAnimationController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + _rotationAnimationController = AnimationController( + duration: const Duration(seconds: 20), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _fadeAnimationController, + curve: Curves.easeInOut, + ), + ); + + _slideAnimation = + Tween(begin: const Offset(0.0, 0.3), end: Offset.zero).animate( + CurvedAnimation( + parent: _slideAnimationController, + curve: Curves.easeOutBack, + ), + ); + + rotationAnimation = Tween( + begin: 0.0, + end: 2 * 3.14159, + ).animate(_rotationAnimationController); + + _fadeAnimationController.forward(); + _slideAnimationController.forward(); + _rotationAnimationController.repeat(); + } + + @override + void dispose() { + _fadeAnimationController.dispose(); + _slideAnimationController.dispose(); + _rotationAnimationController.dispose(); + _tabController.dispose(); + super.dispose(); + } + + Color getStatusColor(String status) { + switch (status) { + case 'available': + return AppColor.success; + case 'low_stock': + return AppColor.warning; + case 'out_of_stock': + return AppColor.error; + default: + return AppColor.textSecondary; + } + } + + String getStatusText(String status) { + switch (status) { + case 'available': + return 'Tersedia'; + case 'low_stock': + return 'Stok Rendah'; + case 'out_of_stock': + return 'Habis'; + default: + return 'Unknown'; + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: NestedScrollView( + headerSliverBuilder: (context, innerBoxIsScrolled) { + return [ + _buildSliverAppBar(), + SliverPersistentHeader( + pinned: true, + delegate: InventorySliverTabBarDelegate( + tabBar: TabBar( + controller: _tabController, + indicator: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(25), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + indicatorSize: TabBarIndicatorSize.tab, + indicatorPadding: const EdgeInsets.all(6), + labelColor: AppColor.textWhite, + unselectedLabelColor: AppColor.textSecondary, + labelStyle: const TextStyle( + fontWeight: FontWeight.w700, + fontSize: 13, + ), + unselectedLabelStyle: const TextStyle( + fontWeight: FontWeight.w500, + fontSize: 13, + ), + dividerColor: Colors.transparent, + splashFactory: NoSplash.splashFactory, + overlayColor: MaterialStateProperty.all( + Colors.transparent, + ), + tabs: [ + Tab( + height: 40, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 12), + child: const Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.inventory_2_rounded, size: 16), + SizedBox(width: 6), + Text('Produk'), + ], + ), + ), + ), + Tab( + height: 40, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 12), + child: const Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.restaurant_menu_rounded, size: 16), + SizedBox(width: 6), + Text('Bahan'), + ], + ), + ), + ), + ], + ), + ), + ), + ]; + }, + body: TabBarView( + controller: _tabController, + children: [_buildProductTab(), _buildIngredientTab()], + ), + ), + ), + ), + ); + } + + Widget _buildSliverAppBar() { + return SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + elevation: 0, + backgroundColor: AppColor.primary, + flexibleSpace: InventoryAppBar(rotationAnimation: rotationAnimation), + ); + } + + Widget _buildProductTab() { + return CustomScrollView( + slivers: [ + SliverToBoxAdapter(child: _buildProductStats()), + SliverPadding( + padding: const EdgeInsets.all(16), + sliver: SliverGrid( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 12, + mainAxisSpacing: 12, + childAspectRatio: 0.75, + ), + delegate: SliverChildBuilderDelegate( + (context, index) => + InventoryProductTile(item: productItems[index]), + childCount: productItems.length, + ), + ), + ), + ], + ); + } + + Widget _buildIngredientTab() { + return CustomScrollView( + slivers: [ + SliverToBoxAdapter(child: _buildIngredientStats()), + SliverPadding( + padding: const EdgeInsets.all(16), + sliver: SliverList( + delegate: SliverChildBuilderDelegate( + (context, index) => + InventoryIngredientTile(item: ingredientItems[index]), + childCount: ingredientItems.length, + ), + ), + ), + ], + ); + } + + Widget _buildProductStats() { + final totalProducts = productItems.length; + final availableProducts = productItems + .where((item) => item.status == 'available') + .length; + final lowStockProducts = productItems + .where((item) => item.status == 'low_stock') + .length; + + return Container( + margin: const EdgeInsets.all(16), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: _buildStatCard( + 'Total Produk', + totalProducts.toString(), + Icons.inventory_2_rounded, + AppColor.primary, + '+12%', + ), + ), + const SizedBox(width: 16), + Expanded( + child: _buildStatCard( + 'Tersedia', + availableProducts.toString(), + Icons.check_circle_rounded, + AppColor.success, + '+5%', + ), + ), + ], + ), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: _buildStatCard( + 'Stok Rendah', + lowStockProducts.toString(), + Icons.warning_rounded, + AppColor.warning, + '-8%', + ), + ), + const SizedBox(width: 16), + Expanded( + child: Container(), // Empty space for balance + ), + ], + ), + ], + ), + ); + } + + Widget _buildIngredientStats() { + final totalIngredients = ingredientItems.length; + final availableIngredients = ingredientItems + .where((item) => item.status == 'available') + .length; + final lowStockIngredients = ingredientItems + .where((item) => item.status == 'low_stock') + .length; + final outOfStockIngredients = ingredientItems + .where((item) => item.status == 'out_of_stock') + .length; + + return Container( + margin: const EdgeInsets.all(16), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: _buildStatCard( + 'Total Bahan', + totalIngredients.toString(), + Icons.restaurant_menu_rounded, + AppColor.primary, + '+8%', + ), + ), + const SizedBox(width: 16), + Expanded( + child: _buildStatCard( + 'Tersedia', + availableIngredients.toString(), + Icons.check_circle_rounded, + AppColor.success, + '+15%', + ), + ), + ], + ), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: _buildStatCard( + 'Stok Kurang', + lowStockIngredients.toString(), + Icons.warning_rounded, + AppColor.warning, + '-3%', + ), + ), + const SizedBox(width: 16), + Expanded( + child: _buildStatCard( + 'Habis', + outOfStockIngredients.toString(), + Icons.error_rounded, + AppColor.error, + '+1', + ), + ), + ], + ), + ], + ), + ); + } + + Widget _buildStatCard( + String title, + String value, + IconData icon, + Color color, + String change, + ) { + return TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: const Duration(milliseconds: 800), + builder: (context, animationValue, child) { + return Transform.scale( + scale: animationValue, + child: InventoryStatCard( + title: title, + value: value, + icon: icon, + color: color, + change: change, + ), + ); + }, + ); + } +} diff --git a/lib/presentation/pages/inventory/widgets/appbar.dart b/lib/presentation/pages/inventory/widgets/appbar.dart new file mode 100644 index 0000000..6be4fe7 --- /dev/null +++ b/lib/presentation/pages/inventory/widgets/appbar.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class InventoryAppBar extends StatelessWidget { + const InventoryAppBar({super.key, required this.rotationAnimation}); + + final Animation rotationAnimation; + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 50, bottom: 16), + title: Text( + 'Inventaris', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.textWhite.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.textWhite.withOpacity(0.05), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.textWhite.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/inventory/widgets/ingredient_tile.dart b/lib/presentation/pages/inventory/widgets/ingredient_tile.dart new file mode 100644 index 0000000..5a54464 --- /dev/null +++ b/lib/presentation/pages/inventory/widgets/ingredient_tile.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import '../inventory_page.dart'; + +class InventoryIngredientTile extends StatelessWidget { + final IngredientItem item; + const InventoryIngredientTile({super.key, required this.item}); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.primaryWithOpacity(0.1), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + children: [ + Container( + width: 60, + height: 60, + decoration: BoxDecoration( + gradient: LinearGradient(colors: AppColor.backgroundGradient), + borderRadius: BorderRadius.circular(12), + ), + child: Center( + child: Text(item.image, style: const TextStyle(fontSize: 24)), + ), + ), + const SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + item.name, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + SpaceHeight(4), + Text( + 'Stok: ${item.quantity} ${item.unit}', + style: AppStyle.md.copyWith(color: AppColor.textSecondary), + ), + SpaceHeight(4), + Text( + 'Min: ${item.minQuantity} ${item.unit}', + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: getStatusColor(item.status), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + getStatusText(item.status), + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textWhite, + ), + ), + ), + ], + ), + ); + } + + Color getStatusColor(String status) { + switch (status) { + case 'available': + return AppColor.success; + case 'low_stock': + return AppColor.warning; + case 'out_of_stock': + return AppColor.error; + default: + return AppColor.textSecondary; + } + } + + String getStatusText(String status) { + switch (status) { + case 'available': + return 'Tersedia'; + case 'low_stock': + return 'Stok Rendah'; + case 'out_of_stock': + return 'Habis'; + default: + return 'Unknown'; + } + } +} diff --git a/lib/presentation/pages/inventory/widgets/product_tile.dart b/lib/presentation/pages/inventory/widgets/product_tile.dart new file mode 100644 index 0000000..bcfdd6e --- /dev/null +++ b/lib/presentation/pages/inventory/widgets/product_tile.dart @@ -0,0 +1,154 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import '../inventory_page.dart'; + +class InventoryProductTile extends StatelessWidget { + final ProductItem item; + const InventoryProductTile({super.key, required this.item}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.primary.withOpacity(0.08), width: 1), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.06), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Image Container + Container( + height: 85, + width: double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.backgroundGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16), + ), + ), + child: Center( + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.textWhite.withOpacity(0.9), + borderRadius: BorderRadius.circular(12), + ), + child: Text(item.image, style: const TextStyle(fontSize: 32)), + ), + ), + ), + + // Content Container + Expanded( + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Product Name + Text( + item.name, + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + height: 1.2, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + + SpaceHeight(4), + + // Category + Container( + padding: const EdgeInsets.symmetric( + horizontal: 6, + vertical: 2, + ), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Text( + item.category, + style: AppStyle.xs.copyWith( + fontSize: 9, + fontWeight: FontWeight.w500, + color: AppColor.primary, + ), + ), + ), + + const Spacer(), + + // Price + Text( + 'Rp ${item.price}', + style: AppStyle.sm.copyWith( + fontSize: 13, + fontWeight: FontWeight.w700, + color: AppColor.primary, + ), + ), + + SpaceHeight(6), + + // Quantity & Status + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${item.quantity} pcs', + style: AppStyle.xs.copyWith( + fontSize: 11, + fontWeight: FontWeight.w500, + color: AppColor.textSecondary, + ), + ), + Container( + width: 8, + height: 8, + decoration: BoxDecoration( + color: getStatusColor(item.status), + shape: BoxShape.circle, + ), + ), + ], + ), + ], + ), + ), + ), + ], + ), + ); + } + + Color getStatusColor(String status) { + switch (status) { + case 'available': + return AppColor.success; + case 'low_stock': + return AppColor.warning; + case 'out_of_stock': + return AppColor.error; + default: + return AppColor.textSecondary; + } + } +} diff --git a/lib/presentation/pages/inventory/widgets/stat_card.dart b/lib/presentation/pages/inventory/widgets/stat_card.dart new file mode 100644 index 0000000..08d5125 --- /dev/null +++ b/lib/presentation/pages/inventory/widgets/stat_card.dart @@ -0,0 +1,101 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; + +class InventoryStatCard extends StatelessWidget { + final String title; + final String value; + final IconData icon; + final Color color; + final String change; + const InventoryStatCard({ + super.key, + required this.title, + required this.value, + required this.icon, + required this.color, + required this.change, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: color.withOpacity(0.1), + blurRadius: 15, + offset: const Offset(0, 5), + ), + ], + border: Border.all(color: color.withOpacity(0.2), width: 1.5), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color.withOpacity(0.2), color.withOpacity(0.1)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + ), + child: Icon(icon, color: color, size: 24), + ), + const Spacer(), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: _getChangeColor(change).withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + change, + style: AppStyle.sm.copyWith( + color: _getChangeColor(change), + fontWeight: FontWeight.w700, + ), + ), + ), + ], + ), + SpaceHeight(16), + Text( + title, + style: AppStyle.md.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + SpaceHeight(4), + Text( + value, + style: AppStyle.h3.copyWith( + color: color, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } + + Color _getChangeColor(String change) { + if (change.startsWith('+')) { + return AppColor.success; + } else if (change.startsWith('-')) { + return AppColor.error; + } else { + return AppColor.warning; + } + } +} diff --git a/lib/presentation/pages/inventory/widgets/tabbar_delegate.dart b/lib/presentation/pages/inventory/widgets/tabbar_delegate.dart new file mode 100644 index 0000000..22a92e3 --- /dev/null +++ b/lib/presentation/pages/inventory/widgets/tabbar_delegate.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class InventorySliverTabBarDelegate extends SliverPersistentHeaderDelegate { + final TabBar tabBar; + + InventorySliverTabBarDelegate({required this.tabBar}); + + @override + double get minExtent => 60; + + @override + double get maxExtent => 60; + + @override + Widget build( + BuildContext context, + double shrinkOffset, + bool overlapsContent, + ) { + return Container( + decoration: BoxDecoration( + color: AppColor.surface, + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + child: Container( + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(30), + border: Border.all( + color: AppColor.primary.withOpacity(0.1), + width: 1, + ), + ), + child: tabBar, + ), + ); + } + + @override + bool shouldRebuild(InventorySliverTabBarDelegate oldDelegate) { + return false; + } +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index b57d15f..b70c6ed 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -36,5 +36,8 @@ class AppRouter extends RootStackRouter { // Customer AutoRoute(page: CustomerRoute.page), + + // Inventory + AutoRoute(page: InventoryRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 15ddee1..ecc9d9b 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -10,40 +10,42 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i5; + as _i6; import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' as _i1; import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' as _i2; import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' as _i3; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' as _i4; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i5; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' - as _i6; -import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i7; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i8; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i12; -import 'package:auto_route/auto_route.dart' as _i13; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i13; +import 'package:auto_route/auto_route.dart' as _i14; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i13.PageRouteInfo { - const CustomerRoute({List<_i13.PageRouteInfo>? children}) +class CustomerRoute extends _i14.PageRouteInfo { + const CustomerRoute({List<_i14.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { return const _i1.CustomerPage(); @@ -53,13 +55,13 @@ class CustomerRoute extends _i13.PageRouteInfo { /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i13.PageRouteInfo { - const DailyTasksFormRoute({List<_i13.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i14.PageRouteInfo { + const DailyTasksFormRoute({List<_i14.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -69,13 +71,13 @@ class DailyTasksFormRoute extends _i13.PageRouteInfo { /// generated route for /// [_i3.HomePage] -class HomeRoute extends _i13.PageRouteInfo { - const HomeRoute({List<_i13.PageRouteInfo>? children}) +class HomeRoute extends _i14.PageRouteInfo { + const HomeRoute({List<_i14.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { return const _i3.HomePage(); @@ -84,145 +86,161 @@ class HomeRoute extends _i13.PageRouteInfo { } /// generated route for -/// [_i4.LanguagePage] -class LanguageRoute extends _i13.PageRouteInfo { - const LanguageRoute({List<_i13.PageRouteInfo>? children}) +/// [_i4.InventoryPage] +class InventoryRoute extends _i14.PageRouteInfo { + const InventoryRoute({List<_i14.PageRouteInfo>? children}) + : super(InventoryRoute.name, initialChildren: children); + + static const String name = 'InventoryRoute'; + + static _i14.PageInfo page = _i14.PageInfo( + name, + builder: (data) { + return const _i4.InventoryPage(); + }, + ); +} + +/// generated route for +/// [_i5.LanguagePage] +class LanguageRoute extends _i14.PageRouteInfo { + const LanguageRoute({List<_i14.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i4.LanguagePage(); + return const _i5.LanguagePage(); }, ); } /// generated route for -/// [_i5.LoginPage] -class LoginRoute extends _i13.PageRouteInfo { - const LoginRoute({List<_i13.PageRouteInfo>? children}) +/// [_i6.LoginPage] +class LoginRoute extends _i14.PageRouteInfo { + const LoginRoute({List<_i14.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i5.LoginPage(); + return const _i6.LoginPage(); }, ); } /// generated route for -/// [_i6.MainPage] -class MainRoute extends _i13.PageRouteInfo { - const MainRoute({List<_i13.PageRouteInfo>? children}) +/// [_i7.MainPage] +class MainRoute extends _i14.PageRouteInfo { + const MainRoute({List<_i14.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i6.MainPage(); + return const _i7.MainPage(); }, ); } /// generated route for -/// [_i7.ProductPage] -class ProductRoute extends _i13.PageRouteInfo { - const ProductRoute({List<_i13.PageRouteInfo>? children}) +/// [_i8.ProductPage] +class ProductRoute extends _i14.PageRouteInfo { + const ProductRoute({List<_i14.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i7.ProductPage(); + return const _i8.ProductPage(); }, ); } /// generated route for -/// [_i8.ProfilePage] -class ProfileRoute extends _i13.PageRouteInfo { - const ProfileRoute({List<_i13.PageRouteInfo>? children}) +/// [_i9.ProfilePage] +class ProfileRoute extends _i14.PageRouteInfo { + const ProfileRoute({List<_i14.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i8.ProfilePage(); + return const _i9.ProfilePage(); }, ); } /// generated route for -/// [_i9.ReportPage] -class ReportRoute extends _i13.PageRouteInfo { - const ReportRoute({List<_i13.PageRouteInfo>? children}) +/// [_i10.ReportPage] +class ReportRoute extends _i14.PageRouteInfo { + const ReportRoute({List<_i14.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i9.ReportPage(); + return const _i10.ReportPage(); }, ); } /// generated route for -/// [_i10.SchedulePage] -class ScheduleRoute extends _i13.PageRouteInfo { - const ScheduleRoute({List<_i13.PageRouteInfo>? children}) +/// [_i11.SchedulePage] +class ScheduleRoute extends _i14.PageRouteInfo { + const ScheduleRoute({List<_i14.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i10.SchedulePage(); + return const _i11.SchedulePage(); }, ); } /// generated route for -/// [_i11.SplashPage] -class SplashRoute extends _i13.PageRouteInfo { - const SplashRoute({List<_i13.PageRouteInfo>? children}) +/// [_i12.SplashPage] +class SplashRoute extends _i14.PageRouteInfo { + const SplashRoute({List<_i14.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i11.SplashPage(); + return const _i12.SplashPage(); }, ); } /// generated route for -/// [_i12.TransactionPage] -class TransactionRoute extends _i13.PageRouteInfo { - const TransactionRoute({List<_i13.PageRouteInfo>? children}) +/// [_i13.TransactionPage] +class TransactionRoute extends _i14.PageRouteInfo { + const TransactionRoute({List<_i14.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i13.PageInfo page = _i13.PageInfo( + static _i14.PageInfo page = _i14.PageInfo( name, builder: (data) { - return const _i12.TransactionPage(); + return const _i13.TransactionPage(); }, ); } From 71ebb26227af6a00d837143d9e30c56c1ad01c0b Mon Sep 17 00:00:00 2001 From: efrilm Date: Fri, 15 Aug 2025 18:28:13 +0700 Subject: [PATCH 030/108] feat: sales page --- .../pages/home/widgets/feature.dart | 2 +- lib/presentation/pages/sales/sales_page.dart | 652 ++++++++++++++++++ .../pages/sales/widgets/appbar.dart | 96 +++ .../pages/sales/widgets/summary_card.dart | 101 +++ lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 116 ++-- 6 files changed, 920 insertions(+), 50 deletions(-) create mode 100644 lib/presentation/pages/sales/sales_page.dart create mode 100644 lib/presentation/pages/sales/widgets/appbar.dart create mode 100644 lib/presentation/pages/sales/widgets/summary_card.dart diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index d7b4f8c..c0345ae 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -39,7 +39,7 @@ class HomeFeature extends StatelessWidget { title: 'Penjualan', color: const Color(0xFF4CAF50), icon: LineIcons.receipt, - onTap: () {}, + onTap: () => context.router.push(SalesRoute()), ), HomeFeatureTile( title: 'Pembelian', diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart new file mode 100644 index 0000000..f3188cf --- /dev/null +++ b/lib/presentation/pages/sales/sales_page.dart @@ -0,0 +1,652 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; +import '../../components/spacer/spacer.dart'; +import 'widgets/appbar.dart'; +import 'widgets/summary_card.dart'; + +// Data Models +class SalesData { + final String dateFrom; + final String dateTo; + final SalesSummary summary; + final List dailySales; + + SalesData({ + required this.dateFrom, + required this.dateTo, + required this.summary, + required this.dailySales, + }); +} + +class SalesSummary { + final double totalSales; + final int totalOrders; + final int totalItems; + final double averageOrderValue; + final double totalTax; + final double totalDiscount; + final double netSales; + + SalesSummary({ + required this.totalSales, + required this.totalOrders, + required this.totalItems, + required this.averageOrderValue, + required this.totalTax, + required this.totalDiscount, + required this.netSales, + }); +} + +class DailySales { + final DateTime date; + final double sales; + final int orders; + final int items; + final double tax; + final double discount; + final double netSales; + + DailySales({ + required this.date, + required this.sales, + required this.orders, + required this.items, + required this.tax, + required this.discount, + required this.netSales, + }); +} + +@RoutePage() +class SalesPage extends StatefulWidget { + const SalesPage({super.key}); + + @override + State createState() => _SalesPageState(); +} + +class _SalesPageState extends State with TickerProviderStateMixin { + late AnimationController rotationAnimationController; + late Animation rotationAnimation; + + late AnimationController slideAnimationController; + late Animation slideAnimation; + + late AnimationController fadeAnimationController; + late Animation fadeAnimation; + @override + void initState() { + super.initState(); + + // Rotation Animation + rotationAnimationController = AnimationController( + duration: const Duration(seconds: 20), + vsync: this, + ); + rotationAnimation = + Tween( + begin: 0, + end: 6.28, // 2 * PI + ).animate( + CurvedAnimation( + parent: rotationAnimationController, + curve: Curves.linear, + ), + ); + rotationAnimationController.repeat(); + + // Slide Animation + slideAnimationController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation( + parent: slideAnimationController, + curve: Curves.easeOutCubic, + ), + ); + + // Fade Animation + fadeAnimationController = AnimationController( + duration: const Duration(milliseconds: 600), + vsync: this, + ); + fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: fadeAnimationController, curve: Curves.easeOut), + ); + + // Start animations + Future.delayed(const Duration(milliseconds: 300), () { + slideAnimationController.forward(); + fadeAnimationController.forward(); + }); + } + + @override + void dispose() { + rotationAnimationController.dispose(); + slideAnimationController.dispose(); + fadeAnimationController.dispose(); + super.dispose(); + } + + // Sample data based on your JSON + final SalesData salesData = SalesData( + dateFrom: "2025-08-01T00:00:00+07:00", + dateTo: "2025-08-15T23:59:59.999999999+07:00", + summary: SalesSummary( + totalSales: 4291000, + totalOrders: 62, + totalItems: 62, + averageOrderValue: 69209.67741935483, + totalTax: 0, + totalDiscount: 0, + netSales: 4291000, + ), + dailySales: [ + DailySales( + date: DateTime.parse("2025-08-13T00:00:00Z"), + sales: 3841000, + orders: 52, + items: 52, + tax: 0, + discount: 0, + netSales: 3841000, + ), + DailySales( + date: DateTime.parse("2025-08-14T00:00:00Z"), + sales: 450000, + orders: 10, + items: 10, + tax: 0, + discount: 0, + netSales: 450000, + ), + ], + ); + + String formatCurrency(double amount) { + return 'Rp ${amount.toStringAsFixed(0).replaceAllMapped(RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (Match m) => '${m[1]}.')}'; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + // App Bar + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + flexibleSpace: SalesAppbar(rotationAnimation: rotationAnimation), + ), + + // Date Range Header + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.symmetric( + horizontal: 20, + vertical: 12, + ), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + children: [ + Icon(Icons.date_range, color: AppColor.primary, size: 20), + SpaceWidth(8), + Text( + 'Aug 1 - Aug 15, 2025', + style: AppStyle.md.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), + ), + ), + ), + + // Summary Cards + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Summary', + style: AppStyle.xxl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SpaceHeight(16), + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 800), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Row( + children: [ + Expanded( + child: _buildSummaryCard( + 'Total Sales', + formatCurrency( + salesData.summary.totalSales, + ), + Icons.trending_up, + AppColor.success, + 0, + ), + ), + SpaceWidth(12), + Expanded( + child: _buildSummaryCard( + 'Total Orders', + '${salesData.summary.totalOrders}', + Icons.shopping_cart, + AppColor.info, + 100, + ), + ), + ], + ), + ); + }, + ), + const SpaceHeight(12), + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1000), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Row( + children: [ + Expanded( + child: _buildSummaryCard( + 'Avg Order Value', + formatCurrency( + salesData.summary.averageOrderValue, + ), + Icons.attach_money, + AppColor.warning, + 200, + ), + ), + SpaceWidth(12), + Expanded( + child: _buildSummaryCard( + 'Total Items', + '${salesData.summary.totalItems}', + Icons.inventory, + AppColor.primary, + 300, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ), + ), + ), + ), + + // Net Sales Card + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1200), + curve: Curves.bounceOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: AppColor.successGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.success.withOpacity(0.3), + blurRadius: 15, + offset: const Offset(0, 5), + ), + ], + ), + child: Row( + children: [ + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1500), + curve: Curves.elasticOut, + builder: (context, iconValue, child) { + return Transform.rotate( + angle: iconValue * 0.1, + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(12), + ), + child: const Icon( + Icons.account_balance_wallet, + color: AppColor.textWhite, + size: 28, + ), + ), + ); + }, + ), + SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Net Sales', + style: TextStyle( + color: AppColor.textWhite.withOpacity( + 0.9, + ), + fontSize: 14, + fontWeight: FontWeight.w500, + ), + ), + const SpaceHeight(4), + TweenAnimationBuilder( + tween: Tween( + begin: 0.0, + end: salesData.summary.netSales, + ), + duration: const Duration( + milliseconds: 2000, + ), + curve: Curves.easeOutCubic, + builder: (context, countValue, child) { + return Text( + formatCurrency(countValue), + style: const TextStyle( + color: AppColor.textWhite, + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ); + }, + ), + ], + ), + ), + ], + ), + ), + ); + }, + ), + ), + ), + ), + + // Daily Sales Section Header + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Padding( + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), + child: Text( + 'Daily Breakdown', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + ), + ), + ), + + // Daily Sales List + SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + final dailySale = salesData.dailySales[index]; + return SlideTransition( + position: + Tween( + begin: Offset(index.isEven ? -1.0 : 1.0, 0), + end: Offset.zero, + ).animate( + CurvedAnimation( + parent: slideAnimationController, + curve: Interval( + 0.2 + (index * 0.1), + 0.8 + (index * 0.1), + curve: Curves.easeOutBack, + ), + ), + ), + child: FadeTransition( + opacity: Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: fadeAnimationController, + curve: Interval( + 0.3 + (index * 0.1), + 0.9 + (index * 0.1), + curve: Curves.easeOut, + ), + ), + ), + child: Container( + margin: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: _buildDailySalesItem(dailySale), + ), + ), + ); + }, childCount: salesData.dailySales.length), + ), + + // Bottom Padding + const SliverToBoxAdapter(child: SpaceHeight(32)), + ], + ), + ); + } + + Widget _buildSummaryCard( + String title, + String value, + IconData icon, + Color color, + int delay, + ) { + return SalesSummaryCard( + fadeAnimation: fadeAnimation, + title: title, + value: value, + icon: icon, + color: color, + delay: delay, + ); + } + + Widget _buildDailySalesItem(DailySales dailySale) { + return ExpansionTile( + leading: Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(Icons.calendar_today, color: AppColor.primary, size: 20), + ), + title: Text( + '${dailySale.date.day}/${dailySale.date.month}/${dailySale.date.year}', + style: const TextStyle( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + subtitle: Text( + formatCurrency(dailySale.sales), + style: TextStyle( + color: AppColor.success, + fontWeight: FontWeight.w600, + fontSize: 16, + ), + ), + trailing: Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: AppColor.info.withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + '${dailySale.orders} orders', + style: TextStyle( + color: AppColor.info, + fontWeight: FontWeight.w500, + fontSize: 12, + ), + ), + ), + children: [ + Padding( + padding: const EdgeInsets.all(16), + child: Row( + children: [ + Expanded( + child: _buildDetailItem( + 'Items', + '${dailySale.items}', + Icons.inventory_2, + ), + ), + Expanded( + child: _buildDetailItem( + 'Tax', + formatCurrency(dailySale.tax), + Icons.receipt, + ), + ), + Expanded( + child: _buildDetailItem( + 'Discount', + formatCurrency(dailySale.discount), + Icons.local_offer, + ), + ), + ], + ), + ), + ], + ); + } + + Widget _buildDetailItem(String label, String value, IconData icon) { + return TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 600), + curve: Curves.bounceOut, + builder: (context, animValue, child) { + return Transform.scale( + scale: animValue, + child: Column( + children: [ + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 800), + curve: Curves.elasticOut, + builder: (context, iconValue, child) { + return Transform.rotate( + angle: iconValue * 0.1, + child: Icon(icon, color: AppColor.textSecondary, size: 20), + ); + }, + ), + const SpaceHeight(4), + Text( + label, + style: TextStyle(color: AppColor.textSecondary, fontSize: 12), + ), + const SpaceHeight(2), + AnimatedBuilder( + animation: fadeAnimation, + builder: (context, child) { + return Text( + value, + style: TextStyle( + color: AppColor.textPrimary, + fontWeight: FontWeight.w600, + fontSize: 14, + ), + ); + }, + ), + ], + ), + ); + }, + ); + } +} diff --git a/lib/presentation/pages/sales/widgets/appbar.dart b/lib/presentation/pages/sales/widgets/appbar.dart new file mode 100644 index 0000000..9dfbcf2 --- /dev/null +++ b/lib/presentation/pages/sales/widgets/appbar.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class SalesAppbar extends StatelessWidget { + const SalesAppbar({super.key, required this.rotationAnimation}); + + final Animation rotationAnimation; + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 50, bottom: 16), + title: Text( + 'Penjualan', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: rotationAnimation.value, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.1), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: rotationAnimation, + builder: (context, child) { + return Transform.rotate( + angle: -rotationAnimation.value * 0.2, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/sales/widgets/summary_card.dart b/lib/presentation/pages/sales/widgets/summary_card.dart new file mode 100644 index 0000000..f8908ce --- /dev/null +++ b/lib/presentation/pages/sales/widgets/summary_card.dart @@ -0,0 +1,101 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class SalesSummaryCard extends StatelessWidget { + const SalesSummaryCard({ + super.key, + required this.fadeAnimation, + required this.title, + required this.value, + required this.icon, + required this.color, + required this.delay, + }); + + final Animation fadeAnimation; + final String title; + final String value; + final IconData icon; + final Color color; + final int delay; + + @override + Widget build(BuildContext context) { + return TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: Duration(milliseconds: 800 + delay), + curve: Curves.easeOutBack, + builder: (context, animValue, child) { + return Transform.scale( + scale: animValue, + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: Duration(milliseconds: 1000 + delay), + curve: Curves.bounceOut, + builder: (context, iconValue, child) { + return Transform.scale( + scale: iconValue, + child: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon(icon, color: color, size: 20), + ), + ); + }, + ), + const Spacer(), + ], + ), + const SizedBox(height: 12), + Text( + title, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontSize: 12, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + AnimatedBuilder( + animation: fadeAnimation, + builder: (context, child) { + return Text( + value, + style: AppStyle.xl.copyWith( + color: AppColor.textPrimary, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ); + }, + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index b70c6ed..6abc5ab 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -39,5 +39,8 @@ class AppRouter extends RootStackRouter { // Inventory AutoRoute(page: InventoryRoute.page), + + // Sales + AutoRoute(page: SalesRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index ecc9d9b..ede7c25 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -29,23 +29,25 @@ import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dar as _i9; import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i13; -import 'package:auto_route/auto_route.dart' as _i14; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i14; +import 'package:auto_route/auto_route.dart' as _i15; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i14.PageRouteInfo { - const CustomerRoute({List<_i14.PageRouteInfo>? children}) +class CustomerRoute extends _i15.PageRouteInfo { + const CustomerRoute({List<_i15.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i1.CustomerPage(); @@ -55,13 +57,13 @@ class CustomerRoute extends _i14.PageRouteInfo { /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i14.PageRouteInfo { - const DailyTasksFormRoute({List<_i14.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i15.PageRouteInfo { + const DailyTasksFormRoute({List<_i15.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -71,13 +73,13 @@ class DailyTasksFormRoute extends _i14.PageRouteInfo { /// generated route for /// [_i3.HomePage] -class HomeRoute extends _i14.PageRouteInfo { - const HomeRoute({List<_i14.PageRouteInfo>? children}) +class HomeRoute extends _i15.PageRouteInfo { + const HomeRoute({List<_i15.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i3.HomePage(); @@ -87,13 +89,13 @@ class HomeRoute extends _i14.PageRouteInfo { /// generated route for /// [_i4.InventoryPage] -class InventoryRoute extends _i14.PageRouteInfo { - const InventoryRoute({List<_i14.PageRouteInfo>? children}) +class InventoryRoute extends _i15.PageRouteInfo { + const InventoryRoute({List<_i15.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i4.InventoryPage(); @@ -103,13 +105,13 @@ class InventoryRoute extends _i14.PageRouteInfo { /// generated route for /// [_i5.LanguagePage] -class LanguageRoute extends _i14.PageRouteInfo { - const LanguageRoute({List<_i14.PageRouteInfo>? children}) +class LanguageRoute extends _i15.PageRouteInfo { + const LanguageRoute({List<_i15.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i5.LanguagePage(); @@ -119,13 +121,13 @@ class LanguageRoute extends _i14.PageRouteInfo { /// generated route for /// [_i6.LoginPage] -class LoginRoute extends _i14.PageRouteInfo { - const LoginRoute({List<_i14.PageRouteInfo>? children}) +class LoginRoute extends _i15.PageRouteInfo { + const LoginRoute({List<_i15.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i6.LoginPage(); @@ -135,13 +137,13 @@ class LoginRoute extends _i14.PageRouteInfo { /// generated route for /// [_i7.MainPage] -class MainRoute extends _i14.PageRouteInfo { - const MainRoute({List<_i14.PageRouteInfo>? children}) +class MainRoute extends _i15.PageRouteInfo { + const MainRoute({List<_i15.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i7.MainPage(); @@ -151,13 +153,13 @@ class MainRoute extends _i14.PageRouteInfo { /// generated route for /// [_i8.ProductPage] -class ProductRoute extends _i14.PageRouteInfo { - const ProductRoute({List<_i14.PageRouteInfo>? children}) +class ProductRoute extends _i15.PageRouteInfo { + const ProductRoute({List<_i15.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i8.ProductPage(); @@ -167,13 +169,13 @@ class ProductRoute extends _i14.PageRouteInfo { /// generated route for /// [_i9.ProfilePage] -class ProfileRoute extends _i14.PageRouteInfo { - const ProfileRoute({List<_i14.PageRouteInfo>? children}) +class ProfileRoute extends _i15.PageRouteInfo { + const ProfileRoute({List<_i15.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i9.ProfilePage(); @@ -183,13 +185,13 @@ class ProfileRoute extends _i14.PageRouteInfo { /// generated route for /// [_i10.ReportPage] -class ReportRoute extends _i14.PageRouteInfo { - const ReportRoute({List<_i14.PageRouteInfo>? children}) +class ReportRoute extends _i15.PageRouteInfo { + const ReportRoute({List<_i15.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { return const _i10.ReportPage(); @@ -198,49 +200,65 @@ class ReportRoute extends _i14.PageRouteInfo { } /// generated route for -/// [_i11.SchedulePage] -class ScheduleRoute extends _i14.PageRouteInfo { - const ScheduleRoute({List<_i14.PageRouteInfo>? children}) +/// [_i11.SalesPage] +class SalesRoute extends _i15.PageRouteInfo { + const SalesRoute({List<_i15.PageRouteInfo>? children}) + : super(SalesRoute.name, initialChildren: children); + + static const String name = 'SalesRoute'; + + static _i15.PageInfo page = _i15.PageInfo( + name, + builder: (data) { + return const _i11.SalesPage(); + }, + ); +} + +/// generated route for +/// [_i12.SchedulePage] +class ScheduleRoute extends _i15.PageRouteInfo { + const ScheduleRoute({List<_i15.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { - return const _i11.SchedulePage(); + return const _i12.SchedulePage(); }, ); } /// generated route for -/// [_i12.SplashPage] -class SplashRoute extends _i14.PageRouteInfo { - const SplashRoute({List<_i14.PageRouteInfo>? children}) +/// [_i13.SplashPage] +class SplashRoute extends _i15.PageRouteInfo { + const SplashRoute({List<_i15.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { - return const _i12.SplashPage(); + return const _i13.SplashPage(); }, ); } /// generated route for -/// [_i13.TransactionPage] -class TransactionRoute extends _i14.PageRouteInfo { - const TransactionRoute({List<_i14.PageRouteInfo>? children}) +/// [_i14.TransactionPage] +class TransactionRoute extends _i15.PageRouteInfo { + const TransactionRoute({List<_i15.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i14.PageInfo page = _i14.PageInfo( + static _i15.PageInfo page = _i15.PageInfo( name, builder: (data) { - return const _i13.TransactionPage(); + return const _i14.TransactionPage(); }, ); } From 3115c02b0ac8ac2bd1aa9d3920f168e744bab444 Mon Sep 17 00:00:00 2001 From: efrilm Date: Fri, 15 Aug 2025 23:06:47 +0700 Subject: [PATCH 031/108] feat: purchase page --- .../pages/home/widgets/feature.dart | 2 +- .../pages/purchase/purchase_page.dart | 370 ++++++++++++++++++ .../pages/purchase/widgets/appbar.dart | 201 ++++++++++ .../pages/purchase/widgets/purchase_tile.dart | 313 +++++++++++++++ .../pages/purchase/widgets/stat_card.dart | 111 ++++++ .../pages/purchase/widgets/status_chip.dart | 34 ++ lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 134 ++++--- 8 files changed, 1109 insertions(+), 59 deletions(-) create mode 100644 lib/presentation/pages/purchase/purchase_page.dart create mode 100644 lib/presentation/pages/purchase/widgets/appbar.dart create mode 100644 lib/presentation/pages/purchase/widgets/purchase_tile.dart create mode 100644 lib/presentation/pages/purchase/widgets/stat_card.dart create mode 100644 lib/presentation/pages/purchase/widgets/status_chip.dart diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index c0345ae..0df4dcd 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -45,7 +45,7 @@ class HomeFeature extends StatelessWidget { title: 'Pembelian', color: const Color(0xFF2196F3), icon: LineIcons.shoppingCart, - onTap: () {}, + onTap: () => context.router.push(PurchaseRoute()), ), HomeFeatureTile( title: 'Biaya', diff --git a/lib/presentation/pages/purchase/purchase_page.dart b/lib/presentation/pages/purchase/purchase_page.dart new file mode 100644 index 0000000..5704ee1 --- /dev/null +++ b/lib/presentation/pages/purchase/purchase_page.dart @@ -0,0 +1,370 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import 'widgets/appbar.dart'; +import 'widgets/purchase_tile.dart'; +import 'widgets/stat_card.dart'; +import 'widgets/status_chip.dart'; + +// AppColor class (sesuai dengan yang Anda berikan) +class AppColor { + // Primary Colors + static const Color primary = Color(0xFF36175e); + static const Color primaryLight = Color(0xFF5a2d85); + static const Color primaryDark = Color(0xFF1e0d35); + + // Secondary Colors + static const Color secondary = Color(0xFF4CAF50); + static const Color secondaryLight = Color(0xFF81C784); + static const Color secondaryDark = Color(0xFF388E3C); + + // Background Colors + static const Color background = Color(0xFFF8F9FA); + static const Color backgroundLight = Color(0xFFFFFFFF); + static const Color backgroundDark = Color(0xFF1A1A1A); + static const Color surface = Color(0xFFFFFFFF); + static const Color surfaceDark = Color(0xFF2D2D2D); + + // Text Colors + static const Color textPrimary = Color(0xFF212121); + static const Color textSecondary = Color(0xFF757575); + static const Color textLight = Color(0xFFBDBDBD); + static const Color textWhite = Color(0xFFFFFFFF); + + // Status Colors + static const Color success = Color(0xFF4CAF50); + static const Color error = Color(0xFFE53E3E); + static const Color warning = Color(0xFFFF9800); + static const Color info = Color(0xFF2196F3); + + // Border Colors + static const Color border = Color(0xFFE0E0E0); + static const Color borderLight = Color(0xFFF0F0F0); + static const Color borderDark = Color(0xFFBDBDBD); + + // Basic Color + static const Color white = Color(0xFFFFFFFF); + static const Color black = Color(0xFF000000); + + // Gradient Colors + static const List primaryGradient = [ + Color(0xFF36175e), + Color(0xFF5a2d85), + ]; + + static const List successGradient = [ + Color(0xFF4CAF50), + Color(0xFF81C784), + ]; + + static const List backgroundGradient = [ + Color(0xFFF5F5F5), + Color(0xFFE8E8E8), + ]; + + // Opacity Variations + static Color primaryWithOpacity(double opacity) => + primary.withOpacity(opacity); + static Color successWithOpacity(double opacity) => + success.withOpacity(opacity); + static Color errorWithOpacity(double opacity) => error.withOpacity(opacity); + static Color warningWithOpacity(double opacity) => + warning.withOpacity(opacity); +} + +// AppStyle class (sesuai dengan yang Anda berikan) +class AppStyle { + static TextStyle xs = const TextStyle( + color: AppColor.textPrimary, + fontSize: 11, + ); + static TextStyle sm = const TextStyle( + color: AppColor.textPrimary, + fontSize: 12, + ); + static TextStyle md = const TextStyle( + color: AppColor.textPrimary, + fontSize: 14, + ); + static TextStyle lg = const TextStyle( + color: AppColor.textPrimary, + fontSize: 16, + ); + static TextStyle xl = const TextStyle( + color: AppColor.textPrimary, + fontSize: 18, + ); + static TextStyle xxl = const TextStyle( + color: AppColor.textPrimary, + fontSize: 20, + ); + static TextStyle h6 = const TextStyle( + color: AppColor.textPrimary, + fontSize: 22, + ); + static TextStyle h5 = const TextStyle( + color: AppColor.textPrimary, + fontSize: 24, + ); + static TextStyle h4 = const TextStyle( + color: AppColor.textPrimary, + fontSize: 26, + ); + static TextStyle h3 = const TextStyle( + color: AppColor.textPrimary, + fontSize: 28, + ); + static TextStyle h2 = const TextStyle( + color: AppColor.textPrimary, + fontSize: 30, + ); + static TextStyle h1 = const TextStyle( + color: AppColor.textPrimary, + fontSize: 32, + ); +} + +class PurchasePage extends StatefulWidget { + const PurchasePage({Key? key}) : super(key: key); + + @override + State createState() => _PurchasePageState(); +} + +class _PurchasePageState extends State + with TickerProviderStateMixin { + late AnimationController rotationAnimation; + late AnimationController cardAnimation; + late AnimationController floatingAnimation; + String selectedFilter = 'Semua'; + final List filterOptions = [ + 'Semua', + 'Pending', + 'Completed', + 'Cancelled', + ]; + + final List> purchaseData = [ + { + 'id': 'PO-001', + 'supplier': 'PT. Sumber Rezeki', + 'date': '15 Aug 2025', + 'total': 2500000, + 'status': 'Completed', + 'items': 15, + }, + { + 'id': 'PO-002', + 'supplier': 'CV. Maju Jaya', + 'date': '14 Aug 2025', + 'total': 1750000, + 'status': 'Pending', + 'items': 8, + }, + { + 'id': 'PO-003', + 'supplier': 'PT. Global Supply', + 'date': '13 Aug 2025', + 'total': 3200000, + 'status': 'Completed', + 'items': 22, + }, + { + 'id': 'PO-004', + 'supplier': 'UD. Berkah Mandiri', + 'date': '12 Aug 2025', + 'total': 890000, + 'status': 'Cancelled', + 'items': 5, + }, + ]; + + @override + void initState() { + super.initState(); + rotationAnimation = AnimationController( + duration: const Duration(seconds: 20), + vsync: this, + )..repeat(); + + cardAnimation = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + + floatingAnimation = AnimationController( + duration: const Duration(seconds: 3), + vsync: this, + )..repeat(reverse: true); + + cardAnimation.forward(); + } + + @override + void dispose() { + rotationAnimation.dispose(); + cardAnimation.dispose(); + floatingAnimation.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + SliverAppBar( + expandedHeight: 120.0, + floating: false, + pinned: true, + elevation: 0, + backgroundColor: AppColor.primary, + + flexibleSpace: PurchaseAppbar( + rotationAnimation: rotationAnimation, + floatingAnimation: floatingAnimation, + ), + ), + + // Stats Cards + SliverToBoxAdapter( + child: Container( + color: AppColor.background, + padding: const EdgeInsets.all(16.0), + child: Row( + children: [ + Expanded( + child: PurchaseStatCard( + title: 'Total Pembelian', + value: 'Rp 8.340.000', + icon: LineIcons.shoppingCart, + iconColor: AppColor.success, + cardAnimation: cardAnimation, + ), + ), + const SizedBox(width: 12), + Expanded( + child: PurchaseStatCard( + title: 'Pending Order', + value: '3 Orders', + icon: LineIcons.clock, + iconColor: AppColor.warning, + cardAnimation: cardAnimation, + ), + ), + ], + ), + ), + ), + + // Filter Section + SliverToBoxAdapter( + child: Container( + color: AppColor.surface, + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Riwayat Pembelian', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.primary, + borderRadius: BorderRadius.circular(20), + ), + child: Text( + '${purchaseData.length} Orders', + style: AppStyle.sm.copyWith( + color: AppColor.textWhite, + ), + ), + ), + ], + ), + const SizedBox(height: 12), + SizedBox( + height: 40, + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: filterOptions.length, + itemBuilder: (context, index) { + final isSelected = + selectedFilter == filterOptions[index]; + return PurchaseStatusChip( + isSelected: isSelected, + text: filterOptions[index], + onSelected: (selected) { + setState(() { + selectedFilter = filterOptions[index]; + }); + }, + ); + }, + ), + ), + ], + ), + ), + ), + + // Purchase List + SliverPadding( + padding: const EdgeInsets.all(16), + sliver: SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + final purchase = purchaseData[index]; + return AnimatedBuilder( + animation: cardAnimation, + builder: (context, child) { + final delay = index * 0.1; + final animValue = (cardAnimation.value - delay).clamp( + 0.0, + 1.0, + ); + + return Transform.translate( + offset: Offset(0, 30 * (1 - animValue)), + child: Opacity( + opacity: animValue, + child: PurchaseTile(purchase: purchase, index: index), + ), + ); + }, + ); + }, childCount: purchaseData.length), + ), + ), + + // Bottom spacing for FAB + const SliverToBoxAdapter(child: SizedBox(height: 80)), + ], + ), + floatingActionButton: FloatingActionButton.extended( + onPressed: () { + // Navigate to create new purchase + }, + backgroundColor: AppColor.secondary, + icon: const Icon(LineIcons.plus, color: AppColor.textWhite), + label: Text( + 'Buat Pembelian', + style: AppStyle.md.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w600, + ), + ), + ), + ); + } +} diff --git a/lib/presentation/pages/purchase/widgets/appbar.dart b/lib/presentation/pages/purchase/widgets/appbar.dart new file mode 100644 index 0000000..0437c0d --- /dev/null +++ b/lib/presentation/pages/purchase/widgets/appbar.dart @@ -0,0 +1,201 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class PurchaseAppbar extends StatelessWidget { + const PurchaseAppbar({ + super.key, + required this.rotationAnimation, + required this.floatingAnimation, + }); + + final AnimationController rotationAnimation; + final AnimationController floatingAnimation; + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 50, bottom: 16), + title: Text( + 'Pembelian', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + // Animated geometric shapes with enhanced effects + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: Listenable.merge([ + rotationAnimation, + floatingAnimation, + ]), + builder: (context, child) { + return Transform.translate( + offset: Offset( + floatingAnimation.value * 10, + floatingAnimation.value * 15, + ), + child: Transform.rotate( + angle: rotationAnimation.value * 2 * 3.14159, + child: Container( + width: 120, + height: 120, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: RadialGradient( + colors: [ + AppColor.white.withOpacity(0.15), + AppColor.white.withOpacity(0.05), + ], + ), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.1), + blurRadius: 20, + spreadRadius: 5, + ), + ], + ), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: Listenable.merge([ + rotationAnimation, + floatingAnimation, + ]), + builder: (context, child) { + return Transform.translate( + offset: Offset( + -floatingAnimation.value * 8, + -floatingAnimation.value * 12, + ), + child: Transform.rotate( + angle: -rotationAnimation.value * 0.5 * 3.14159, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: RadialGradient( + colors: [ + AppColor.white.withOpacity(0.1), + AppColor.white.withOpacity(0.02), + ], + ), + ), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: Listenable.merge([ + rotationAnimation, + floatingAnimation, + ]), + builder: (context, child) { + return Transform.translate( + offset: Offset( + floatingAnimation.value * 5, + -floatingAnimation.value * 8, + ), + child: Transform.rotate( + angle: -rotationAnimation.value * 0.3 * 3.14159, + child: Container( + width: 50, + height: 50, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + gradient: LinearGradient( + colors: [ + AppColor.white.withOpacity(0.12), + AppColor.white.withOpacity(0.04), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + ), + ), + ); + }, + ), + ), + // Additional floating elements + Positioned( + left: 60, + top: 80, + child: AnimatedBuilder( + animation: floatingAnimation, + builder: (context, child) { + return Transform.translate( + offset: Offset( + floatingAnimation.value * 3, + floatingAnimation.value * 6, + ), + child: Container( + width: 30, + height: 30, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + Positioned( + right: 40, + top: 120, + child: AnimatedBuilder( + animation: floatingAnimation, + builder: (context, child) { + return Transform.translate( + offset: Offset( + -floatingAnimation.value * 4, + floatingAnimation.value * 7, + ), + child: Container( + width: 20, + height: 20, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: AppColor.white.withOpacity(0.06), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/purchase/widgets/purchase_tile.dart b/lib/presentation/pages/purchase/widgets/purchase_tile.dart new file mode 100644 index 0000000..fa22bf2 --- /dev/null +++ b/lib/presentation/pages/purchase/widgets/purchase_tile.dart @@ -0,0 +1,313 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../common/theme/theme.dart'; + +class PurchaseTile extends StatelessWidget { + final Map purchase; + final int index; + const PurchaseTile({super.key, required this.purchase, required this.index}); + + @override + Widget build(BuildContext context) { + Color statusColor; + + switch (purchase['status']) { + case 'Completed': + statusColor = AppColor.success; + break; + case 'Pending': + statusColor = AppColor.warning; + break; + case 'Cancelled': + statusColor = AppColor.error; + break; + default: + statusColor = AppColor.textSecondary; + } + return AnimatedContainer( + duration: Duration(milliseconds: 300 + (index * 50)), + curve: Curves.easeOutCubic, + margin: const EdgeInsets.only(bottom: 16), + child: Material( + elevation: 0, + borderRadius: BorderRadius.circular(20), + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [AppColor.surface, AppColor.surface.withOpacity(0.95)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColor.border.withOpacity(0.2), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.08), + blurRadius: 25, + offset: const Offset(0, 10), + spreadRadius: 0, + ), + BoxShadow( + color: AppColor.black.withOpacity(0.04), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Text( + purchase['id'], + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.textWhite, + ), + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 8, + ), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + statusColor.withOpacity(0.15), + statusColor.withOpacity(0.05), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: statusColor.withOpacity(0.2), + width: 1, + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 8, + height: 8, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: statusColor, + ), + ), + const SizedBox(width: 6), + Text( + purchase['status'], + style: AppStyle.xs.copyWith( + color: statusColor, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + ), + ], + ), + const SizedBox(height: 16), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.background.withOpacity(0.5), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: AppColor.border.withOpacity(0.3), + width: 1, + ), + ), + child: Column( + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + LineIcons.building, + color: AppColor.primary, + size: 16, + ), + ), + const SizedBox(width: 12), + Expanded( + child: Text( + purchase['supplier'], + style: AppStyle.md.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + const SizedBox(height: 12), + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.info.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + LineIcons.calendar, + color: AppColor.info, + size: 16, + ), + ), + const SizedBox(width: 12), + Text( + purchase['date'], + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const Spacer(), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: AppColor.secondary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + LineIcons.shoppingBag, + color: AppColor.secondary, + size: 14, + ), + const SizedBox(width: 4), + Text( + '${purchase['items']} items', + style: AppStyle.xs.copyWith( + color: AppColor.secondary, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + const SizedBox(height: 16), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Total Pembelian', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Text( + 'Rp ${purchase['total'].toString().replaceAllMapped(RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (Match m) => '${m[1]}.')}', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w800, + color: AppColor.primary, + ), + ), + ], + ), + Row( + children: [ + _buildActionButton(LineIcons.eye, AppColor.info, () {}), + const SizedBox(width: 8), + _buildActionButton( + LineIcons.edit, + AppColor.warning, + () {}, + ), + const SizedBox(width: 8), + _buildActionButton( + LineIcons.trash, + AppColor.error, + () {}, + ), + ], + ), + ], + ), + ], + ), + ), + ), + ); + } + + Widget _buildActionButton( + IconData icon, + Color color, + VoidCallback onPressed, + ) { + return Container( + width: 40, + height: 40, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color.withOpacity(0.15), color.withOpacity(0.05)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withOpacity(0.2), width: 1), + ), + child: Material( + color: Colors.transparent, + child: InkWell( + borderRadius: BorderRadius.circular(12), + onTap: onPressed, + child: Center(child: Icon(icon, color: color, size: 18)), + ), + ), + ); + } +} diff --git a/lib/presentation/pages/purchase/widgets/stat_card.dart b/lib/presentation/pages/purchase/widgets/stat_card.dart new file mode 100644 index 0000000..edb17f3 --- /dev/null +++ b/lib/presentation/pages/purchase/widgets/stat_card.dart @@ -0,0 +1,111 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class PurchaseStatCard extends StatelessWidget { + final String title; + final String value; + final IconData icon; + final Color iconColor; + final Animation cardAnimation; + const PurchaseStatCard({ + super.key, + required this.title, + required this.value, + required this.icon, + required this.iconColor, + required this.cardAnimation, + }); + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: cardAnimation, + builder: (context, child) { + return Transform.scale( + scale: 0.8 + (cardAnimation.value * 0.2), + child: Opacity( + opacity: cardAnimation.value, + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [AppColor.surface, AppColor.surface.withOpacity(0.9)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.1), + blurRadius: 20, + offset: const Offset(0, 8), + spreadRadius: 0, + ), + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + border: Border.all( + color: AppColor.border.withOpacity(0.3), + width: 1, + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + iconColor.withOpacity(0.15), + iconColor.withOpacity(0.05), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: iconColor.withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Icon(icon, color: iconColor, size: 24), + ), + ], + ), + const SizedBox(height: 16), + Text( + title, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 6), + Text( + value, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w800, + color: AppColor.textPrimary, + height: 1.2, + ), + ), + ], + ), + ), + ), + ); + }, + ); + } +} diff --git a/lib/presentation/pages/purchase/widgets/status_chip.dart b/lib/presentation/pages/purchase/widgets/status_chip.dart new file mode 100644 index 0000000..91a85ab --- /dev/null +++ b/lib/presentation/pages/purchase/widgets/status_chip.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class PurchaseStatusChip extends StatelessWidget { + final bool isSelected; + final String text; + final Function(bool) onSelected; + const PurchaseStatusChip({ + super.key, + required this.isSelected, + required this.text, + required this.onSelected, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(right: 8), + child: FilterChip( + selected: isSelected, + label: Text( + text, + style: AppStyle.sm.copyWith( + color: isSelected ? AppColor.textWhite : AppColor.textSecondary, + ), + ), + backgroundColor: AppColor.backgroundLight, + selectedColor: AppColor.primary, + onSelected: onSelected, + ), + ); + } +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 6abc5ab..13d1984 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -42,5 +42,8 @@ class AppRouter extends RootStackRouter { // Sales AutoRoute(page: SalesRoute.page), + + // Purchase page + AutoRoute(page: PurchaseRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index ede7c25..83010ff 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -27,27 +27,29 @@ import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dar as _i8; import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i14; -import 'package:auto_route/auto_route.dart' as _i15; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i15; +import 'package:auto_route/auto_route.dart' as _i16; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i15.PageRouteInfo { - const CustomerRoute({List<_i15.PageRouteInfo>? children}) +class CustomerRoute extends _i16.PageRouteInfo { + const CustomerRoute({List<_i16.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i1.CustomerPage(); @@ -57,13 +59,13 @@ class CustomerRoute extends _i15.PageRouteInfo { /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i15.PageRouteInfo { - const DailyTasksFormRoute({List<_i15.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i16.PageRouteInfo { + const DailyTasksFormRoute({List<_i16.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -73,13 +75,13 @@ class DailyTasksFormRoute extends _i15.PageRouteInfo { /// generated route for /// [_i3.HomePage] -class HomeRoute extends _i15.PageRouteInfo { - const HomeRoute({List<_i15.PageRouteInfo>? children}) +class HomeRoute extends _i16.PageRouteInfo { + const HomeRoute({List<_i16.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i3.HomePage(); @@ -89,13 +91,13 @@ class HomeRoute extends _i15.PageRouteInfo { /// generated route for /// [_i4.InventoryPage] -class InventoryRoute extends _i15.PageRouteInfo { - const InventoryRoute({List<_i15.PageRouteInfo>? children}) +class InventoryRoute extends _i16.PageRouteInfo { + const InventoryRoute({List<_i16.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i4.InventoryPage(); @@ -105,13 +107,13 @@ class InventoryRoute extends _i15.PageRouteInfo { /// generated route for /// [_i5.LanguagePage] -class LanguageRoute extends _i15.PageRouteInfo { - const LanguageRoute({List<_i15.PageRouteInfo>? children}) +class LanguageRoute extends _i16.PageRouteInfo { + const LanguageRoute({List<_i16.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i5.LanguagePage(); @@ -121,13 +123,13 @@ class LanguageRoute extends _i15.PageRouteInfo { /// generated route for /// [_i6.LoginPage] -class LoginRoute extends _i15.PageRouteInfo { - const LoginRoute({List<_i15.PageRouteInfo>? children}) +class LoginRoute extends _i16.PageRouteInfo { + const LoginRoute({List<_i16.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i6.LoginPage(); @@ -137,13 +139,13 @@ class LoginRoute extends _i15.PageRouteInfo { /// generated route for /// [_i7.MainPage] -class MainRoute extends _i15.PageRouteInfo { - const MainRoute({List<_i15.PageRouteInfo>? children}) +class MainRoute extends _i16.PageRouteInfo { + const MainRoute({List<_i16.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i7.MainPage(); @@ -153,13 +155,13 @@ class MainRoute extends _i15.PageRouteInfo { /// generated route for /// [_i8.ProductPage] -class ProductRoute extends _i15.PageRouteInfo { - const ProductRoute({List<_i15.PageRouteInfo>? children}) +class ProductRoute extends _i16.PageRouteInfo { + const ProductRoute({List<_i16.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i8.ProductPage(); @@ -169,13 +171,13 @@ class ProductRoute extends _i15.PageRouteInfo { /// generated route for /// [_i9.ProfilePage] -class ProfileRoute extends _i15.PageRouteInfo { - const ProfileRoute({List<_i15.PageRouteInfo>? children}) +class ProfileRoute extends _i16.PageRouteInfo { + const ProfileRoute({List<_i16.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i9.ProfilePage(); @@ -184,81 +186,97 @@ class ProfileRoute extends _i15.PageRouteInfo { } /// generated route for -/// [_i10.ReportPage] -class ReportRoute extends _i15.PageRouteInfo { - const ReportRoute({List<_i15.PageRouteInfo>? children}) +/// [_i10.PurchasePage] +class PurchaseRoute extends _i16.PageRouteInfo { + const PurchaseRoute({List<_i16.PageRouteInfo>? children}) + : super(PurchaseRoute.name, initialChildren: children); + + static const String name = 'PurchaseRoute'; + + static _i16.PageInfo page = _i16.PageInfo( + name, + builder: (data) { + return const _i10.PurchasePage(); + }, + ); +} + +/// generated route for +/// [_i11.ReportPage] +class ReportRoute extends _i16.PageRouteInfo { + const ReportRoute({List<_i16.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i10.ReportPage(); + return const _i11.ReportPage(); }, ); } /// generated route for -/// [_i11.SalesPage] -class SalesRoute extends _i15.PageRouteInfo { - const SalesRoute({List<_i15.PageRouteInfo>? children}) +/// [_i12.SalesPage] +class SalesRoute extends _i16.PageRouteInfo { + const SalesRoute({List<_i16.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i11.SalesPage(); + return const _i12.SalesPage(); }, ); } /// generated route for -/// [_i12.SchedulePage] -class ScheduleRoute extends _i15.PageRouteInfo { - const ScheduleRoute({List<_i15.PageRouteInfo>? children}) +/// [_i13.SchedulePage] +class ScheduleRoute extends _i16.PageRouteInfo { + const ScheduleRoute({List<_i16.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i12.SchedulePage(); + return const _i13.SchedulePage(); }, ); } /// generated route for -/// [_i13.SplashPage] -class SplashRoute extends _i15.PageRouteInfo { - const SplashRoute({List<_i15.PageRouteInfo>? children}) +/// [_i14.SplashPage] +class SplashRoute extends _i16.PageRouteInfo { + const SplashRoute({List<_i16.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i13.SplashPage(); + return const _i14.SplashPage(); }, ); } /// generated route for -/// [_i14.TransactionPage] -class TransactionRoute extends _i15.PageRouteInfo { - const TransactionRoute({List<_i15.PageRouteInfo>? children}) +/// [_i15.TransactionPage] +class TransactionRoute extends _i16.PageRouteInfo { + const TransactionRoute({List<_i16.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i14.TransactionPage(); + return const _i15.TransactionPage(); }, ); } From ad2681dfdea59a8baa8331fed414b1b592b4b871 Mon Sep 17 00:00:00 2001 From: efrilm Date: Fri, 15 Aug 2025 23:53:05 +0700 Subject: [PATCH 032/108] feat: finance page --- .../pages/finance/finance_page.dart | 454 ++++++++++++++++++ .../pages/finance/widgets/appbar.dart | 201 ++++++++ .../pages/finance/widgets/cash_flow.dart | 397 +++++++++++++++ .../pages/finance/widgets/category.dart | 146 ++++++ .../pages/finance/widgets/profit_loss.dart | 158 ++++++ .../pages/finance/widgets/summary_card.dart | 88 ++++ .../pages/home/widgets/feature.dart | 4 +- .../pages/purchase/purchase_page.dart | 123 +---- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 188 ++++---- 10 files changed, 1556 insertions(+), 206 deletions(-) create mode 100644 lib/presentation/pages/finance/finance_page.dart create mode 100644 lib/presentation/pages/finance/widgets/appbar.dart create mode 100644 lib/presentation/pages/finance/widgets/cash_flow.dart create mode 100644 lib/presentation/pages/finance/widgets/category.dart create mode 100644 lib/presentation/pages/finance/widgets/profit_loss.dart create mode 100644 lib/presentation/pages/finance/widgets/summary_card.dart diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart new file mode 100644 index 0000000..8acbf22 --- /dev/null +++ b/lib/presentation/pages/finance/finance_page.dart @@ -0,0 +1,454 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../common/theme/theme.dart'; +import 'widgets/appbar.dart'; +import 'widgets/cash_flow.dart'; +import 'widgets/category.dart'; +import 'widgets/profit_loss.dart'; +import 'widgets/summary_card.dart'; + +@RoutePage() +class FinancePage extends StatefulWidget { + const FinancePage({super.key}); + + @override + State createState() => _FinancePageState(); +} + +class _FinancePageState extends State + with TickerProviderStateMixin { + late AnimationController _slideController; + late AnimationController _fadeController; + late AnimationController _scaleController; + late AnimationController _rotationController; + late AnimationController _floatingController; + + late Animation _slideAnimation; + late Animation _fadeAnimation; + late Animation _scaleAnimation; + late Animation rotationAnimation; + late Animation floatingAnimation; + + String selectedPeriod = 'Hari ini'; + final List periods = [ + 'Hari ini', + 'Minggu ini', + 'Bulan ini', + 'Tahun ini', + ]; + + @override + void initState() { + super.initState(); + + rotationAnimation = AnimationController( + duration: const Duration(seconds: 20), + vsync: this, + )..repeat(); + + floatingAnimation = AnimationController( + duration: const Duration(seconds: 3), + vsync: this, + )..repeat(reverse: true); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _fadeController = AnimationController( + duration: const Duration(milliseconds: 1000), + vsync: this, + ); + + _scaleController = AnimationController( + duration: const Duration(milliseconds: 600), + vsync: this, + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.easeOutCubic), + ); + + _fadeAnimation = Tween( + begin: 0.0, + end: 1.0, + ).animate(CurvedAnimation(parent: _fadeController, curve: Curves.easeIn)); + + _scaleAnimation = Tween(begin: 0.8, end: 1.0).animate( + CurvedAnimation(parent: _scaleController, curve: Curves.elasticOut), + ); + + // Start animations + _fadeController.forward(); + Future.delayed(const Duration(milliseconds: 200), () { + _slideController.forward(); + }); + Future.delayed(const Duration(milliseconds: 400), () { + _scaleController.forward(); + }); + } + + @override + void dispose() { + _slideController.dispose(); + _fadeController.dispose(); + _scaleController.dispose(); + _rotationController.dispose(); + _floatingController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + // SliverAppBar with animated background + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + elevation: 0, + flexibleSpace: FinanceAppbar( + rotationAnimation: rotationAnimation, + floatingAnimation: floatingAnimation, + ), + ), + + // Header dengan filter periode + SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: _buildPeriodSelector(), + ), + ), + + // Summary Cards + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: _buildSummaryCards(), + ), + ), + + // Cash Flow Analysis + SliverToBoxAdapter( + child: ScaleTransition( + scale: _scaleAnimation, + child: FinanceCashFlow(), + ), + ), + + // Profit Loss Detail + SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: FinanceProfitLoss(), + ), + ), + + // Transaction Categories + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: FinanceCategory(), + ), + ), + + // Monthly Comparison + SliverToBoxAdapter( + child: ScaleTransition( + scale: _scaleAnimation, + child: _buildMonthlyComparison(), + ), + ), + + // Bottom spacing + const SliverToBoxAdapter(child: SizedBox(height: 100)), + ], + ), + ); + } + + Widget _buildPeriodSelector() { + return Container( + padding: const EdgeInsets.all(16), + child: Row( + children: [ + Expanded( + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.border), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: selectedPeriod, + isExpanded: true, + icon: const Icon( + LineIcons.angleDown, + color: AppColor.primary, + ), + style: AppStyle.md, + items: periods.map((String period) { + return DropdownMenuItem( + value: period, + child: Text(period), + ); + }).toList(), + onChanged: (String? newValue) { + setState(() { + selectedPeriod = newValue!; + }); + }, + ), + ), + ), + ), + const SizedBox(width: 12), + Container( + decoration: BoxDecoration( + color: AppColor.primary, + borderRadius: BorderRadius.circular(12), + ), + child: IconButton( + onPressed: () {}, + icon: const Icon(LineIcons.calendar, color: AppColor.white), + ), + ), + ], + ), + ); + } + + Widget _buildSummaryCards() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: FinanceSummaryCard( + title: 'Total Pendapatan', + amount: 'Rp 25.840.000', + icon: LineIcons.arrowUp, + color: AppColor.success, + change: '+12.5%', + isPositive: true, + ), + ), + const SizedBox(width: 12), + Expanded( + child: FinanceSummaryCard( + title: 'Total Pengeluaran', + amount: 'Rp 18.320.000', + icon: LineIcons.arrowDown, + color: AppColor.error, + change: '+8.2%', + isPositive: false, + ), + ), + ], + ), + const SizedBox(height: 12), + Row( + children: [ + Expanded( + child: FinanceSummaryCard( + title: 'Keuntungan Bersih', + amount: 'Rp 7.520.000', + icon: LineIcons.lineChart, + color: AppColor.info, + change: '+15.3%', + isPositive: true, + ), + ), + const SizedBox(width: 12), + Expanded( + child: FinanceSummaryCard( + title: 'Margin Profit', + amount: '29.1%', + icon: LineIcons.percent, + color: AppColor.warning, + change: '+2.1%', + isPositive: true, + ), + ), + ], + ), + ], + ), + ); + } + + Widget _buildMonthlyComparison() { + return Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.textLight.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.warning.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: const Icon( + LineIcons.calendarCheck, + color: AppColor.warning, + size: 20, + ), + ), + const SizedBox(width: 12), + Text( + 'Perbandingan Bulanan', + style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), + ), + ], + ), + const SizedBox(height: 20), + + Row( + children: [ + Expanded( + child: _buildComparisonCard( + 'Bulan Ini', + 'Rp 7.52M', + '+15.3%', + true, + AppColor.primary, + ), + ), + const SizedBox(width: 12), + Expanded( + child: _buildComparisonCard( + 'Bulan Lalu', + 'Rp 6.53M', + '-2.1%', + false, + AppColor.textSecondary, + ), + ), + ], + ), + const SizedBox(height: 16), + + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.05), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.success.withOpacity(0.2)), + ), + child: Row( + children: [ + const Icon( + LineIcons.thumbsUp, + color: AppColor.success, + size: 20, + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Performa Bagus!', + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.success, + ), + ), + Text( + 'Keuntungan meningkat 15.3% dari bulan lalu', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildComparisonCard( + String period, + String amount, + String change, + bool isPositive, + Color color, + ) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: color.withOpacity(0.05), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withOpacity(0.2)), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + period, + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + const SizedBox(height: 8), + Text( + amount, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: color, + ), + ), + const SizedBox(height: 4), + Row( + children: [ + Icon( + isPositive ? LineIcons.arrowUp : LineIcons.arrowDown, + size: 14, + color: isPositive ? AppColor.success : AppColor.error, + ), + const SizedBox(width: 4), + Text( + change, + style: AppStyle.xs.copyWith( + color: isPositive ? AppColor.success : AppColor.error, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/finance/widgets/appbar.dart b/lib/presentation/pages/finance/widgets/appbar.dart new file mode 100644 index 0000000..f37030f --- /dev/null +++ b/lib/presentation/pages/finance/widgets/appbar.dart @@ -0,0 +1,201 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class FinanceAppbar extends StatelessWidget { + const FinanceAppbar({ + super.key, + required this.rotationAnimation, + required this.floatingAnimation, + }); + + final Animation rotationAnimation; + final Animation floatingAnimation; + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: const EdgeInsets.only(left: 50, bottom: 16), + title: Text( + 'Keuangan', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Stack( + children: [ + // Animated geometric shapes + Positioned( + right: -20, + top: -20, + child: AnimatedBuilder( + animation: Listenable.merge([ + rotationAnimation, + floatingAnimation, + ]), + builder: (context, child) { + return Transform.translate( + offset: Offset( + floatingAnimation.value * 10, + floatingAnimation.value * 15, + ), + child: Transform.rotate( + angle: rotationAnimation.value * 2 * 3.14159, + child: Container( + width: 120, + height: 120, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: RadialGradient( + colors: [ + AppColor.white.withOpacity(0.15), + AppColor.white.withOpacity(0.05), + ], + ), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.1), + blurRadius: 20, + spreadRadius: 5, + ), + ], + ), + ), + ), + ); + }, + ), + ), + Positioned( + left: -30, + bottom: -30, + child: AnimatedBuilder( + animation: Listenable.merge([ + rotationAnimation, + floatingAnimation, + ]), + builder: (context, child) { + return Transform.translate( + offset: Offset( + -floatingAnimation.value * 8, + -floatingAnimation.value * 12, + ), + child: Transform.rotate( + angle: -rotationAnimation.value * 0.5 * 3.14159, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: RadialGradient( + colors: [ + AppColor.white.withOpacity(0.1), + AppColor.white.withOpacity(0.02), + ], + ), + ), + ), + ), + ); + }, + ), + ), + Positioned( + right: 80, + bottom: 30, + child: AnimatedBuilder( + animation: Listenable.merge([ + rotationAnimation, + floatingAnimation, + ]), + builder: (context, child) { + return Transform.translate( + offset: Offset( + floatingAnimation.value * 5, + -floatingAnimation.value * 8, + ), + child: Transform.rotate( + angle: -rotationAnimation.value * 0.3 * 3.14159, + child: Container( + width: 50, + height: 50, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + gradient: LinearGradient( + colors: [ + AppColor.white.withOpacity(0.12), + AppColor.white.withOpacity(0.04), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + ), + ), + ); + }, + ), + ), + // Additional floating elements + Positioned( + left: 60, + top: 80, + child: AnimatedBuilder( + animation: floatingAnimation, + builder: (context, child) { + return Transform.translate( + offset: Offset( + floatingAnimation.value * 3, + floatingAnimation.value * 6, + ), + child: Container( + width: 30, + height: 30, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.08), + ), + ), + ); + }, + ), + ), + Positioned( + right: 40, + top: 120, + child: AnimatedBuilder( + animation: floatingAnimation, + builder: (context, child) { + return Transform.translate( + offset: Offset( + -floatingAnimation.value * 4, + floatingAnimation.value * 7, + ), + child: Container( + width: 20, + height: 20, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: AppColor.white.withOpacity(0.06), + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/finance/widgets/cash_flow.dart b/lib/presentation/pages/finance/widgets/cash_flow.dart new file mode 100644 index 0000000..5c45492 --- /dev/null +++ b/lib/presentation/pages/finance/widgets/cash_flow.dart @@ -0,0 +1,397 @@ +import 'package:fl_chart/fl_chart.dart'; +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../common/theme/theme.dart'; + +class FinanceCashFlow extends StatelessWidget { + const FinanceCashFlow({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.textLight.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + ), + borderRadius: BorderRadius.circular(8), + ), + child: const Icon( + LineIcons.areaChart, + color: AppColor.white, + size: 20, + ), + ), + const SizedBox(width: 12), + Text( + 'Analisis Cash Flow', + style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), + ), + ], + ), + IconButton( + onPressed: () {}, + icon: const Icon( + LineIcons.alternateExternalLink, + color: AppColor.primary, + ), + ), + ], + ), + const SizedBox(height: 20), + + // Cash Flow Indicators + Row( + children: [ + Expanded( + child: _buildCashFlowIndicator( + 'Cash In', + 'Rp 28.5M', + LineIcons.arrowUp, + AppColor.success, + ), + ), + const SizedBox(width: 16), + Expanded( + child: _buildCashFlowIndicator( + 'Cash Out', + 'Rp 21.2M', + LineIcons.arrowDown, + AppColor.error, + ), + ), + const SizedBox(width: 16), + Expanded( + child: _buildCashFlowIndicator( + 'Net Flow', + 'Rp 7.3M', + LineIcons.equals, + AppColor.info, + ), + ), + ], + ), + const SizedBox(height: 20), + + // FL Chart Implementation + Container( + height: 200, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.borderLight), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Grafik Cash Flow 7 Hari Terakhir', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 16), + Expanded( + child: LineChart( + LineChartData( + gridData: FlGridData( + show: true, + drawVerticalLine: false, + horizontalInterval: 5000000, // 5M interval + getDrawingHorizontalLine: (value) { + return FlLine( + color: AppColor.borderLight, + strokeWidth: 1, + ); + }, + ), + titlesData: FlTitlesData( + show: true, + rightTitles: AxisTitles( + sideTitles: SideTitles(showTitles: false), + ), + topTitles: AxisTitles( + sideTitles: SideTitles(showTitles: false), + ), + bottomTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + reservedSize: 30, + interval: 1, + getTitlesWidget: (double value, TitleMeta meta) { + const style = TextStyle( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 10, + ); + Widget text; + switch (value.toInt()) { + case 0: + text = const Text('Sen', style: style); + break; + case 1: + text = const Text('Sel', style: style); + break; + case 2: + text = const Text('Rab', style: style); + break; + case 3: + text = const Text('Kam', style: style); + break; + case 4: + text = const Text('Jum', style: style); + break; + case 5: + text = const Text('Sab', style: style); + break; + case 6: + text = const Text('Min', style: style); + break; + default: + text = const Text('', style: style); + break; + } + return SideTitleWidget(meta: meta, child: text); + }, + ), + ), + leftTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + interval: 10000000, // 10M interval + reservedSize: 42, + getTitlesWidget: (double value, TitleMeta meta) { + return Text( + '${(value / 1000000).toInt()}M', + style: const TextStyle( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 10, + ), + textAlign: TextAlign.left, + ); + }, + ), + ), + ), + borderData: FlBorderData( + show: true, + border: Border.all(color: AppColor.borderLight), + ), + minX: 0, + maxX: 6, + minY: -5000000, + maxY: 30000000, + lineBarsData: [ + // Cash In Line + LineChartBarData( + spots: const [ + FlSpot(0, 25000000), // Monday + FlSpot(1, 22000000), // Tuesday + FlSpot(2, 28000000), // Wednesday + FlSpot(3, 24000000), // Thursday + FlSpot(4, 30000000), // Friday + FlSpot(5, 18000000), // Saturday + FlSpot(6, 26000000), // Sunday + ], + isCurved: true, + gradient: LinearGradient( + colors: [ + AppColor.success.withOpacity(0.8), + AppColor.success, + ], + ), + barWidth: 3, + isStrokeCapRound: true, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 4, + color: AppColor.success, + strokeWidth: 2, + strokeColor: AppColor.white, + ); + }, + ), + belowBarData: BarAreaData( + show: true, + gradient: LinearGradient( + colors: [ + AppColor.success.withOpacity(0.1), + AppColor.success.withOpacity(0.0), + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + ), + // Cash Out Line + LineChartBarData( + spots: const [ + FlSpot(0, 20000000), // Monday + FlSpot(1, 18000000), // Tuesday + FlSpot(2, 23000000), // Wednesday + FlSpot(3, 19000000), // Thursday + FlSpot(4, 25000000), // Friday + FlSpot(5, 15000000), // Saturday + FlSpot(6, 21000000), // Sunday + ], + isCurved: true, + gradient: LinearGradient( + colors: [ + AppColor.error.withOpacity(0.8), + AppColor.error, + ], + ), + barWidth: 3, + isStrokeCapRound: true, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 4, + color: AppColor.error, + strokeWidth: 2, + strokeColor: AppColor.white, + ); + }, + ), + ), + // Net Flow Line + LineChartBarData( + spots: const [ + FlSpot(0, 5000000), // Monday + FlSpot(1, 4000000), // Tuesday + FlSpot(2, 5000000), // Wednesday + FlSpot(3, 5000000), // Thursday + FlSpot(4, 5000000), // Friday + FlSpot(5, 3000000), // Saturday + FlSpot(6, 5000000), // Sunday + ], + isCurved: true, + gradient: LinearGradient( + colors: [ + AppColor.info.withOpacity(0.8), + AppColor.info, + ], + ), + barWidth: 3, + isStrokeCapRound: true, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 4, + color: AppColor.info, + strokeWidth: 2, + strokeColor: AppColor.white, + ); + }, + ), + ), + ], + ), + ), + ), + const SizedBox(height: 12), + // Legend + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _buildChartLegend('Cash In', AppColor.success), + const SizedBox(width: 20), + _buildChartLegend('Cash Out', AppColor.error), + const SizedBox(width: 20), + _buildChartLegend('Net Flow', AppColor.info), + ], + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildChartLegend(String label, Color color) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 12, + height: 12, + decoration: BoxDecoration(color: color, shape: BoxShape.circle), + ), + const SizedBox(width: 6), + Text( + label, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ], + ); + } + + Widget _buildCashFlowIndicator( + String label, + String amount, + IconData icon, + Color color, + ) { + return Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: color.withOpacity(0.05), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withOpacity(0.2)), + ), + child: Column( + children: [ + Icon(icon, color: color, size: 20), + const SizedBox(height: 8), + Text( + label, + style: AppStyle.xs.copyWith(color: AppColor.textSecondary), + ), + const SizedBox(height: 4), + Text( + amount, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: color, + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/finance/widgets/category.dart b/lib/presentation/pages/finance/widgets/category.dart new file mode 100644 index 0000000..7c18f38 --- /dev/null +++ b/lib/presentation/pages/finance/widgets/category.dart @@ -0,0 +1,146 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../common/theme/theme.dart'; + +class FinanceCategory extends StatelessWidget { + const FinanceCategory({super.key}); + + @override + Widget build(BuildContext context) { + final categories = [ + { + 'name': 'Makanan & Minuman', + 'amount': 'Rp 18.5M', + 'percentage': 72, + 'color': AppColor.primary, + }, + { + 'name': 'Produk Retail', + 'amount': 'Rp 4.2M', + 'percentage': 16, + 'color': AppColor.secondary, + }, + { + 'name': 'Jasa & Lainnya', + 'amount': 'Rp 3.1M', + 'percentage': 12, + 'color': AppColor.info, + }, + ]; + + return Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.textLight.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.secondary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: const Icon( + LineIcons.pieChart, + color: AppColor.secondary, + size: 20, + ), + ), + const SizedBox(width: 12), + Text( + 'Kategori Penjualan', + style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), + ), + ], + ), + const SizedBox(height: 20), + + ...categories + .map( + (category) => _buildCategoryItem( + category['name'] as String, + category['amount'] as String, + category['percentage'] as int, + category['color'] as Color, + ), + ) + .toList(), + ], + ), + ); + } + + Widget _buildCategoryItem( + String name, + String amount, + int percentage, + Color color, + ) { + return Container( + margin: const EdgeInsets.only(bottom: 16), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + width: 12, + height: 12, + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(6), + ), + ), + const SizedBox(width: 12), + Text( + name, + style: AppStyle.md.copyWith(fontWeight: FontWeight.w600), + ), + ], + ), + Text( + amount, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: color, + ), + ), + ], + ), + const SizedBox(height: 8), + LinearProgressIndicator( + value: percentage / 100, + backgroundColor: AppColor.borderLight, + valueColor: AlwaysStoppedAnimation(color), + minHeight: 6, + ), + const SizedBox(height: 4), + Align( + alignment: Alignment.centerRight, + child: Text( + '$percentage%', + style: AppStyle.xs.copyWith(color: AppColor.textSecondary), + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/finance/widgets/profit_loss.dart b/lib/presentation/pages/finance/widgets/profit_loss.dart new file mode 100644 index 0000000..a3fa885 --- /dev/null +++ b/lib/presentation/pages/finance/widgets/profit_loss.dart @@ -0,0 +1,158 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../common/theme/theme.dart'; + +class FinanceProfitLoss extends StatelessWidget { + const FinanceProfitLoss({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.textLight.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.info.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: const Icon( + LineIcons.calculator, + color: AppColor.info, + size: 20, + ), + ), + const SizedBox(width: 12), + Text( + 'Detail Profit & Loss', + style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), + ), + ], + ), + const SizedBox(height: 20), + + _buildPLItem( + 'Penjualan Kotor', + 'Rp 25.840.000', + AppColor.success, + true, + ), + _buildPLItem('Diskon & Retur', '- Rp 560.000', AppColor.error, false), + const Divider(height: 24), + _buildPLItem( + 'Penjualan Bersih', + 'Rp 25.280.000', + AppColor.textPrimary, + true, + isHeader: true, + ), + const SizedBox(height: 12), + _buildPLItem( + 'HPP (Harga Pokok Penjualan)', + '- Rp 15.120.000', + AppColor.error, + false, + ), + const Divider(height: 24), + _buildPLItem( + 'Laba Kotor', + 'Rp 10.160.000', + AppColor.success, + true, + isHeader: true, + ), + const SizedBox(height: 12), + _buildPLItem( + 'Biaya Operasional', + '- Rp 2.640.000', + AppColor.error, + false, + ), + const Divider(height: 24), + _buildPLItem( + 'Laba Bersih', + 'Rp 7.520.000', + AppColor.primary, + true, + isHeader: true, + showPercentage: true, + percentage: '29.8%', + ), + ], + ), + ); + } + + Widget _buildPLItem( + String title, + String amount, + Color color, + bool isPositive, { + bool isHeader = false, + bool showPercentage = false, + String? percentage, + }) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 4), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + title, + style: isHeader + ? AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: color, + ) + : AppStyle.md.copyWith(color: AppColor.textSecondary), + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + amount, + style: isHeader + ? AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: color, + ) + : AppStyle.md.copyWith( + color: color, + fontWeight: FontWeight.w600, + ), + ), + if (showPercentage && percentage != null) + Text( + percentage, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontStyle: FontStyle.italic, + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/finance/widgets/summary_card.dart b/lib/presentation/pages/finance/widgets/summary_card.dart new file mode 100644 index 0000000..94689d3 --- /dev/null +++ b/lib/presentation/pages/finance/widgets/summary_card.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class FinanceSummaryCard extends StatelessWidget { + const FinanceSummaryCard({ + super.key, + required this.title, + required this.amount, + required this.icon, + required this.color, + required this.change, + required this.isPositive, + }); + + final String title; + final String amount; + final IconData icon; + final Color color; + final String change; + final bool isPositive; + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.textLight.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon(icon, color: color, size: 20), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: isPositive + ? AppColor.success.withOpacity(0.1) + : AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + change, + style: AppStyle.xs.copyWith( + color: isPositive ? AppColor.success : AppColor.error, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + const SizedBox(height: 12), + Text( + title, + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + const SizedBox(height: 4), + Text( + amount, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 0df4dcd..4d4f998 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -48,10 +48,10 @@ class HomeFeature extends StatelessWidget { onTap: () => context.router.push(PurchaseRoute()), ), HomeFeatureTile( - title: 'Biaya', + title: 'Keuangan', color: const Color(0xFF8BC34A), icon: LineIcons.moneyCheck, - onTap: () {}, + onTap: () => context.router.push(FinanceRoute()), ), HomeFeatureTile( title: 'Produk', diff --git a/lib/presentation/pages/purchase/purchase_page.dart b/lib/presentation/pages/purchase/purchase_page.dart index 5704ee1..d5dbdd8 100644 --- a/lib/presentation/pages/purchase/purchase_page.dart +++ b/lib/presentation/pages/purchase/purchase_page.dart @@ -1,131 +1,16 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../common/theme/theme.dart'; import 'widgets/appbar.dart'; import 'widgets/purchase_tile.dart'; import 'widgets/stat_card.dart'; import 'widgets/status_chip.dart'; -// AppColor class (sesuai dengan yang Anda berikan) -class AppColor { - // Primary Colors - static const Color primary = Color(0xFF36175e); - static const Color primaryLight = Color(0xFF5a2d85); - static const Color primaryDark = Color(0xFF1e0d35); - - // Secondary Colors - static const Color secondary = Color(0xFF4CAF50); - static const Color secondaryLight = Color(0xFF81C784); - static const Color secondaryDark = Color(0xFF388E3C); - - // Background Colors - static const Color background = Color(0xFFF8F9FA); - static const Color backgroundLight = Color(0xFFFFFFFF); - static const Color backgroundDark = Color(0xFF1A1A1A); - static const Color surface = Color(0xFFFFFFFF); - static const Color surfaceDark = Color(0xFF2D2D2D); - - // Text Colors - static const Color textPrimary = Color(0xFF212121); - static const Color textSecondary = Color(0xFF757575); - static const Color textLight = Color(0xFFBDBDBD); - static const Color textWhite = Color(0xFFFFFFFF); - - // Status Colors - static const Color success = Color(0xFF4CAF50); - static const Color error = Color(0xFFE53E3E); - static const Color warning = Color(0xFFFF9800); - static const Color info = Color(0xFF2196F3); - - // Border Colors - static const Color border = Color(0xFFE0E0E0); - static const Color borderLight = Color(0xFFF0F0F0); - static const Color borderDark = Color(0xFFBDBDBD); - - // Basic Color - static const Color white = Color(0xFFFFFFFF); - static const Color black = Color(0xFF000000); - - // Gradient Colors - static const List primaryGradient = [ - Color(0xFF36175e), - Color(0xFF5a2d85), - ]; - - static const List successGradient = [ - Color(0xFF4CAF50), - Color(0xFF81C784), - ]; - - static const List backgroundGradient = [ - Color(0xFFF5F5F5), - Color(0xFFE8E8E8), - ]; - - // Opacity Variations - static Color primaryWithOpacity(double opacity) => - primary.withOpacity(opacity); - static Color successWithOpacity(double opacity) => - success.withOpacity(opacity); - static Color errorWithOpacity(double opacity) => error.withOpacity(opacity); - static Color warningWithOpacity(double opacity) => - warning.withOpacity(opacity); -} - -// AppStyle class (sesuai dengan yang Anda berikan) -class AppStyle { - static TextStyle xs = const TextStyle( - color: AppColor.textPrimary, - fontSize: 11, - ); - static TextStyle sm = const TextStyle( - color: AppColor.textPrimary, - fontSize: 12, - ); - static TextStyle md = const TextStyle( - color: AppColor.textPrimary, - fontSize: 14, - ); - static TextStyle lg = const TextStyle( - color: AppColor.textPrimary, - fontSize: 16, - ); - static TextStyle xl = const TextStyle( - color: AppColor.textPrimary, - fontSize: 18, - ); - static TextStyle xxl = const TextStyle( - color: AppColor.textPrimary, - fontSize: 20, - ); - static TextStyle h6 = const TextStyle( - color: AppColor.textPrimary, - fontSize: 22, - ); - static TextStyle h5 = const TextStyle( - color: AppColor.textPrimary, - fontSize: 24, - ); - static TextStyle h4 = const TextStyle( - color: AppColor.textPrimary, - fontSize: 26, - ); - static TextStyle h3 = const TextStyle( - color: AppColor.textPrimary, - fontSize: 28, - ); - static TextStyle h2 = const TextStyle( - color: AppColor.textPrimary, - fontSize: 30, - ); - static TextStyle h1 = const TextStyle( - color: AppColor.textPrimary, - fontSize: 32, - ); -} - +@RoutePage() class PurchasePage extends StatefulWidget { - const PurchasePage({Key? key}) : super(key: key); + const PurchasePage({super.key}); @override State createState() => _PurchasePageState(); diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 13d1984..8158193 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -45,5 +45,8 @@ class AppRouter extends RootStackRouter { // Purchase page AutoRoute(page: PurchaseRoute.page), + + // Finance page + AutoRoute(page: FinanceRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 83010ff..a530708 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -10,46 +10,48 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i6; + as _i7; import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' as _i1; +import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' + as _i3; import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' as _i2; import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' - as _i3; -import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' as _i4; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' as _i5; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i6; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' - as _i7; -import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i8; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i15; -import 'package:auto_route/auto_route.dart' as _i16; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i16; +import 'package:auto_route/auto_route.dart' as _i17; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i16.PageRouteInfo { - const CustomerRoute({List<_i16.PageRouteInfo>? children}) +class CustomerRoute extends _i17.PageRouteInfo { + const CustomerRoute({List<_i17.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { return const _i1.CustomerPage(); @@ -59,13 +61,13 @@ class CustomerRoute extends _i16.PageRouteInfo { /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i16.PageRouteInfo { - const DailyTasksFormRoute({List<_i16.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i17.PageRouteInfo { + const DailyTasksFormRoute({List<_i17.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -74,209 +76,225 @@ class DailyTasksFormRoute extends _i16.PageRouteInfo { } /// generated route for -/// [_i3.HomePage] -class HomeRoute extends _i16.PageRouteInfo { - const HomeRoute({List<_i16.PageRouteInfo>? children}) +/// [_i3.FinancePage] +class FinanceRoute extends _i17.PageRouteInfo { + const FinanceRoute({List<_i17.PageRouteInfo>? children}) + : super(FinanceRoute.name, initialChildren: children); + + static const String name = 'FinanceRoute'; + + static _i17.PageInfo page = _i17.PageInfo( + name, + builder: (data) { + return const _i3.FinancePage(); + }, + ); +} + +/// generated route for +/// [_i4.HomePage] +class HomeRoute extends _i17.PageRouteInfo { + const HomeRoute({List<_i17.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i3.HomePage(); + return const _i4.HomePage(); }, ); } /// generated route for -/// [_i4.InventoryPage] -class InventoryRoute extends _i16.PageRouteInfo { - const InventoryRoute({List<_i16.PageRouteInfo>? children}) +/// [_i5.InventoryPage] +class InventoryRoute extends _i17.PageRouteInfo { + const InventoryRoute({List<_i17.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i4.InventoryPage(); + return const _i5.InventoryPage(); }, ); } /// generated route for -/// [_i5.LanguagePage] -class LanguageRoute extends _i16.PageRouteInfo { - const LanguageRoute({List<_i16.PageRouteInfo>? children}) +/// [_i6.LanguagePage] +class LanguageRoute extends _i17.PageRouteInfo { + const LanguageRoute({List<_i17.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i5.LanguagePage(); + return const _i6.LanguagePage(); }, ); } /// generated route for -/// [_i6.LoginPage] -class LoginRoute extends _i16.PageRouteInfo { - const LoginRoute({List<_i16.PageRouteInfo>? children}) +/// [_i7.LoginPage] +class LoginRoute extends _i17.PageRouteInfo { + const LoginRoute({List<_i17.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i6.LoginPage(); + return const _i7.LoginPage(); }, ); } /// generated route for -/// [_i7.MainPage] -class MainRoute extends _i16.PageRouteInfo { - const MainRoute({List<_i16.PageRouteInfo>? children}) +/// [_i8.MainPage] +class MainRoute extends _i17.PageRouteInfo { + const MainRoute({List<_i17.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i7.MainPage(); + return const _i8.MainPage(); }, ); } /// generated route for -/// [_i8.ProductPage] -class ProductRoute extends _i16.PageRouteInfo { - const ProductRoute({List<_i16.PageRouteInfo>? children}) +/// [_i9.ProductPage] +class ProductRoute extends _i17.PageRouteInfo { + const ProductRoute({List<_i17.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i8.ProductPage(); + return const _i9.ProductPage(); }, ); } /// generated route for -/// [_i9.ProfilePage] -class ProfileRoute extends _i16.PageRouteInfo { - const ProfileRoute({List<_i16.PageRouteInfo>? children}) +/// [_i10.ProfilePage] +class ProfileRoute extends _i17.PageRouteInfo { + const ProfileRoute({List<_i17.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i9.ProfilePage(); + return const _i10.ProfilePage(); }, ); } /// generated route for -/// [_i10.PurchasePage] -class PurchaseRoute extends _i16.PageRouteInfo { - const PurchaseRoute({List<_i16.PageRouteInfo>? children}) +/// [_i11.PurchasePage] +class PurchaseRoute extends _i17.PageRouteInfo { + const PurchaseRoute({List<_i17.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i10.PurchasePage(); + return const _i11.PurchasePage(); }, ); } /// generated route for -/// [_i11.ReportPage] -class ReportRoute extends _i16.PageRouteInfo { - const ReportRoute({List<_i16.PageRouteInfo>? children}) +/// [_i12.ReportPage] +class ReportRoute extends _i17.PageRouteInfo { + const ReportRoute({List<_i17.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i11.ReportPage(); + return const _i12.ReportPage(); }, ); } /// generated route for -/// [_i12.SalesPage] -class SalesRoute extends _i16.PageRouteInfo { - const SalesRoute({List<_i16.PageRouteInfo>? children}) +/// [_i13.SalesPage] +class SalesRoute extends _i17.PageRouteInfo { + const SalesRoute({List<_i17.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i12.SalesPage(); + return const _i13.SalesPage(); }, ); } /// generated route for -/// [_i13.SchedulePage] -class ScheduleRoute extends _i16.PageRouteInfo { - const ScheduleRoute({List<_i16.PageRouteInfo>? children}) +/// [_i14.SchedulePage] +class ScheduleRoute extends _i17.PageRouteInfo { + const ScheduleRoute({List<_i17.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i13.SchedulePage(); + return const _i14.SchedulePage(); }, ); } /// generated route for -/// [_i14.SplashPage] -class SplashRoute extends _i16.PageRouteInfo { - const SplashRoute({List<_i16.PageRouteInfo>? children}) +/// [_i15.SplashPage] +class SplashRoute extends _i17.PageRouteInfo { + const SplashRoute({List<_i17.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i14.SplashPage(); + return const _i15.SplashPage(); }, ); } /// generated route for -/// [_i15.TransactionPage] -class TransactionRoute extends _i16.PageRouteInfo { - const TransactionRoute({List<_i16.PageRouteInfo>? children}) +/// [_i16.TransactionPage] +class TransactionRoute extends _i17.PageRouteInfo { + const TransactionRoute({List<_i17.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i16.PageInfo page = _i16.PageInfo( + static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i15.TransactionPage(); + return const _i16.TransactionPage(); }, ); } From ebfdb7274c170cf396d55281ecfa56262132ae0d Mon Sep 17 00:00:00 2001 From: efrilm Date: Fri, 15 Aug 2025 23:59:07 +0700 Subject: [PATCH 033/108] feat: update header home --- .../pages/home/widgets/header.dart | 498 +++++++++++++----- 1 file changed, 379 insertions(+), 119 deletions(-) diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart index a98129e..b4882e9 100644 --- a/lib/presentation/pages/home/widgets/header.dart +++ b/lib/presentation/pages/home/widgets/header.dart @@ -4,9 +4,78 @@ import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/spacer/spacer.dart'; -class HomeHeader extends StatelessWidget { +class HomeHeader extends StatefulWidget { const HomeHeader({super.key}); + @override + State createState() => _HomeHeaderState(); +} + +class _HomeHeaderState extends State with TickerProviderStateMixin { + late AnimationController _backgroundAnimationController; + late AnimationController _pulseAnimationController; + late AnimationController _rotationAnimationController; + + late Animation _circleAnimation; + late Animation _pulseAnimation; + late Animation _rotationAnimation; + + @override + void initState() { + super.initState(); + + // Background animation controller for floating circles + _backgroundAnimationController = AnimationController( + duration: const Duration(seconds: 15), + vsync: this, + )..repeat(reverse: true); // Add reverse for smooth back-and-forth + + // Pulse animation for subtle breathing effect + _pulseAnimationController = AnimationController( + duration: const Duration(seconds: 6), + vsync: this, + )..repeat(reverse: true); + + // Rotation animation for decorative elements (keep this smooth) + _rotationAnimationController = AnimationController( + duration: const Duration(seconds: 45), + vsync: this, + )..repeat(); + + _circleAnimation = + Tween( + begin: 0.0, + end: 20.0, // Reduced movement range + ).animate( + CurvedAnimation( + parent: _backgroundAnimationController, + curve: Curves.easeInOutSine, // Smoother curve + ), + ); + + _pulseAnimation = Tween(begin: 0.08, end: 0.12).animate( + CurvedAnimation( + parent: _pulseAnimationController, + curve: Curves.easeInOutSine, // Smoother breathing effect + ), + ); + + _rotationAnimation = Tween(begin: 0.0, end: 2 * 3.14159).animate( + CurvedAnimation( + parent: _rotationAnimationController, + curve: Curves.linear, + ), + ); + } + + @override + void dispose() { + _backgroundAnimationController.dispose(); + _pulseAnimationController.dispose(); + _rotationAnimationController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Container( @@ -32,31 +101,148 @@ class HomeHeader extends StatelessWidget { ), child: Stack( children: [ - // Decorative circles - Positioned( - top: -50, - right: -50, - child: Container( - width: 150, - height: 150, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.1), - ), - ), + // Animated decorative circles + AnimatedBuilder( + animation: Listenable.merge([ + _backgroundAnimationController, + _pulseAnimationController, + ]), + builder: (context, child) { + return Stack( + children: [ + // Large floating circle + Positioned( + top: -50 + _circleAnimation.value, + right: -50 + (_circleAnimation.value * 0.5), + child: AnimatedBuilder( + animation: _pulseAnimationController, + builder: (context, child) { + return Container( + width: 150, + height: 150, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity( + _pulseAnimation.value, + ), + ), + ); + }, + ), + ), + + // Medium floating circle + Positioned( + top: 80 - (_circleAnimation.value * 0.3), + right: -20 + (_circleAnimation.value * 0.8), + child: AnimatedBuilder( + animation: _pulseAnimationController, + builder: (context, child) { + return Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity( + _pulseAnimation.value * 0.5, + ), + ), + ); + }, + ), + ), + + // Small floating circle + Positioned( + top: 150 + (_circleAnimation.value * 0.4), + right: 30 - (_circleAnimation.value * 0.2), + child: AnimatedBuilder( + animation: _pulseAnimationController, + builder: (context, child) { + return Container( + width: 40, + height: 40, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity( + _pulseAnimation.value * 0.7, + ), + ), + ); + }, + ), + ), + + // Left side decorative circles + Positioned( + top: 60 + (_circleAnimation.value * 0.6), + left: -30, + child: AnimatedBuilder( + animation: _pulseAnimationController, + builder: (context, child) { + return Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity( + _pulseAnimation.value * 0.3, + ), + ), + ); + }, + ), + ), + + Positioned( + bottom: 20 - (_circleAnimation.value * 0.5), + left: -20 + (_circleAnimation.value * 0.3), + child: AnimatedBuilder( + animation: _pulseAnimationController, + builder: (context, child) { + return Container( + width: 60, + height: 60, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity( + _pulseAnimation.value * 0.4, + ), + ), + ); + }, + ), + ), + ], + ); + }, ), - Positioned( - top: 80, - right: -20, - child: Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.05), - ), - ), + + // Rotating subtle gradient overlay + AnimatedBuilder( + animation: _rotationAnimationController, + builder: (context, child) { + return Transform.rotate( + angle: _rotationAnimation.value, + child: Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: const Alignment(0.8, -0.8), + radius: 1.5, + colors: [ + AppColor.white.withOpacity(0.05), + Colors.transparent, + AppColor.primary.withOpacity(0.1), + ], + stops: const [0.0, 0.6, 1.0], + ), + ), + ), + ); + }, ), + + // Content SafeArea(child: _buildContent(context)), ], ), @@ -84,115 +270,189 @@ class HomeHeader extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - // Top bar - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'AppSkel POS Owner', - style: AppStyle.lg.copyWith( - color: AppColor.white.withOpacity(0.9), - fontWeight: FontWeight.w600, - letterSpacing: 0.3, + // Top bar with subtle animation + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 800), + builder: (context, value, child) { + return Transform.translate( + offset: Offset(0, 20 * (1 - value)), + child: Opacity( + opacity: value, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'AppSkel POS Owner', + style: AppStyle.lg.copyWith( + color: AppColor.white.withOpacity(0.9), + fontWeight: FontWeight.w600, + letterSpacing: 0.3, + ), + ), + const SpaceHeight(2), + Text( + 'Manager', + style: AppStyle.sm.copyWith( + color: AppColor.textLight, + fontSize: 11, + fontWeight: FontWeight.w400, + ), + ), + ], + ), ), - ), - const SpaceHeight(2), - Text( - 'Manager', - style: AppStyle.sm.copyWith( - color: AppColor.textLight, - fontSize: 11, - fontWeight: FontWeight.w400, + // Animated notification icon + AnimatedBuilder( + animation: _pulseAnimationController, + builder: (context, child) { + return Transform.scale( + scale: 1.0 + (_pulseAnimation.value * 0.1), + child: Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.1), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: const Icon( + Icons.notifications_none_rounded, + color: AppColor.white, + size: 20, + ), + ), + ); + }, ), - ), - ], - ), - ), - Container( - padding: const EdgeInsets.all(10), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(14), - border: Border.all( - color: AppColor.white.withOpacity(0.3), - width: 1, + ], ), ), - child: const Icon( - Icons.notifications_none_rounded, - color: AppColor.white, - size: 20, - ), - ), - ], + ); + }, ), const SpaceHeight(24), - // Greeting Section - Text( - '${greeting(context)},', - style: AppStyle.lg.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w500, - ), - ), - const SpaceHeight(2), - Text( - 'Vira Vania! ๐Ÿ‘‹', - style: AppStyle.h4.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w800, - letterSpacing: -0.5, - ), - ), - const SpaceHeight(8), - Text( - context.lang.home_header_desc, - style: AppStyle.md.copyWith( - color: AppColor.white.withOpacity(0.85), - fontWeight: FontWeight.w400, - height: 1.3, - ), - maxLines: 2, - overflow: TextOverflow.ellipsis, + // Greeting Section with staggered animation + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1000), + builder: (context, value, child) { + return Transform.translate( + offset: Offset(0, 30 * (1 - value)), + child: Opacity( + opacity: value, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${greeting(context)},', + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w500, + ), + ), + const SpaceHeight(2), + Text( + 'Vira Vania! ๐Ÿ‘‹', + style: AppStyle.h4.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w800, + letterSpacing: -0.5, + ), + ), + const SpaceHeight(8), + Text( + context.lang.home_header_desc, + style: AppStyle.md.copyWith( + color: AppColor.white.withOpacity(0.85), + fontWeight: FontWeight.w400, + height: 1.3, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + ); + }, ), const SpaceHeight(16), - // Today's highlight - Container( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: AppColor.white.withOpacity(0.3), - width: 1, - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.trending_up_rounded, - color: AppColor.white, - size: 14, - ), - const SizedBox(width: 6), - Text( - '${context.lang.sales_today} +25%', - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w600, + // Today's highlight with delayed animation + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1200), + builder: (context, value, child) { + return Transform.translate( + offset: Offset(0, 20 * (1 - value)), + child: Opacity( + opacity: value, + child: AnimatedBuilder( + animation: _pulseAnimationController, + builder: (context, child) { + return Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.white.withOpacity( + 0.2 + (_pulseAnimation.value * 0.05), + ), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.1), + blurRadius: 4 + (_pulseAnimation.value * 2), + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.trending_up_rounded, + color: AppColor.white, + size: 14, + ), + const SizedBox(width: 6), + Text( + '${context.lang.sales_today} +25%', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ); + }, ), ), - ], - ), + ); + }, ), ], ), From 9b398cabb6fe78d50ad13dd0ab7ac5b904c1b043 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 00:02:02 +0700 Subject: [PATCH 034/108] feat: update login page --- .../pages/auth/login/login_page.dart | 234 ++++++++++++++++-- 1 file changed, 207 insertions(+), 27 deletions(-) diff --git a/lib/presentation/pages/auth/login/login_page.dart b/lib/presentation/pages/auth/login/login_page.dart index ae829fa..dd11d8f 100644 --- a/lib/presentation/pages/auth/login/login_page.dart +++ b/lib/presentation/pages/auth/login/login_page.dart @@ -1,5 +1,6 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'dart:math' as math; import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; @@ -26,8 +27,13 @@ class _LoginPageState extends State with TickerProviderStateMixin { late AnimationController _fadeController; late AnimationController _slideController; + late AnimationController _backgroundController; + late AnimationController _floatingController; + late Animation _fadeAnimation; late Animation _slideAnimation; + late Animation _backgroundAnimation; + late Animation _floatingAnimation; @override void initState() { @@ -43,6 +49,16 @@ class _LoginPageState extends State with TickerProviderStateMixin { vsync: this, ); + _backgroundController = AnimationController( + duration: const Duration(seconds: 10), + vsync: this, + )..repeat(); + + _floatingController = AnimationController( + duration: const Duration(seconds: 6), + vsync: this, + )..repeat(reverse: true); + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), ); @@ -51,8 +67,19 @@ class _LoginPageState extends State with TickerProviderStateMixin { Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( CurvedAnimation(parent: _slideController, curve: Curves.easeOutCubic), ); + + _backgroundAnimation = Tween( + begin: 0.0, + end: 2 * math.pi, + ).animate(_backgroundController); + + _floatingAnimation = Tween(begin: -20.0, end: 20.0).animate( + CurvedAnimation(parent: _floatingController, curve: Curves.easeInOut), + ); + _emailController.text = 'test@example.com'; _passwordController.text = 'password'; + _fadeController.forward(); _slideController.forward(); } @@ -61,6 +88,8 @@ class _LoginPageState extends State with TickerProviderStateMixin { void dispose() { _fadeController.dispose(); _slideController.dispose(); + _backgroundController.dispose(); + _floatingController.dispose(); _emailController.dispose(); _passwordController.dispose(); super.dispose(); @@ -86,36 +115,164 @@ class _LoginPageState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { return Scaffold( - body: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: AppColor.primaryGradient, - ), - ), - child: SafeArea( - child: Center( - child: SingleChildScrollView( - padding: EdgeInsets.symmetric(horizontal: AppValue.padding), - child: FadeTransition( - opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - _buildLogo(context), - SpaceHeight(48), - _buildLoginCard(context), - ], + body: AnimatedBuilder( + animation: Listenable.merge([ + _backgroundController, + _floatingController, + ]), + builder: (context, child) { + return Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: AppColor.primaryGradient, + ), + ), + child: Stack( + children: [ + // Animated background elements + _buildAnimatedBackground(), + + // Main content + SafeArea( + child: Center( + child: SingleChildScrollView( + padding: EdgeInsets.symmetric( + horizontal: AppValue.padding, + ), + child: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _buildLogo(context), + SpaceHeight(48), + _buildLoginCard(context), + ], + ), + ), + ), + ), ), ), + ], + ), + ); + }, + ), + ); + } + + Widget _buildAnimatedBackground() { + return Stack( + children: [ + // Floating circles + ...List.generate(6, (index) { + final double size = 80 + (index * 40); + final double left = + (index * 60.0) % MediaQuery.of(context).size.width; + final double top = + (index * 120.0) % MediaQuery.of(context).size.height; + + return Positioned( + left: left + math.sin(_backgroundAnimation.value + index) * 30, + top: top + _floatingAnimation.value + (index * 10), + child: Container( + width: size, + height: size, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.white.withOpacity(0.1), + border: Border.all( + color: Colors.white.withOpacity(0.2), + width: 2, + ), + ), + ), + ); + }), + + // Rotating geometric shapes + Positioned( + top: 100, + right: 50, + child: Transform.rotate( + angle: _backgroundAnimation.value, + child: Container( + width: 60, + height: 60, + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.08), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: Colors.white.withOpacity(0.15), + width: 1, + ), ), ), ), ), - ), + + Positioned( + bottom: 150, + left: 30, + child: Transform.rotate( + angle: -_backgroundAnimation.value * 0.5, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.06), + shape: BoxShape.circle, + border: Border.all( + color: Colors.white.withOpacity(0.12), + width: 1, + ), + ), + ), + ), + ), + + // Floating particles + ...List.generate(8, (index) { + return Positioned( + left: (index * 45.0) % MediaQuery.of(context).size.width, + top: (index * 80.0) % MediaQuery.of(context).size.height, + child: Transform.translate( + offset: Offset( + math.sin(_backgroundAnimation.value + index * 0.5) * 20, + math.cos(_backgroundAnimation.value + index * 0.3) * 15, + ), + child: Container( + width: 4 + (index % 3) * 2, + height: 4 + (index % 3) * 2, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.white.withOpacity(0.3), + ), + ), + ), + ); + }), + + // Gradient overlay for better text readability + Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Colors.transparent, + Colors.black.withOpacity(0.1), + Colors.transparent, + ], + ), + ), + ), + ], ); } @@ -127,13 +284,29 @@ class _LoginPageState extends State with TickerProviderStateMixin { style: AppStyle.h1.copyWith( fontWeight: FontWeight.bold, color: AppColor.white, + shadows: [ + Shadow( + offset: const Offset(0, 2), + blurRadius: 10, + color: Colors.black.withOpacity(0.3), + ), + ], ), textAlign: TextAlign.center, ), const SpaceHeight(8), Text( context.lang.login_desc, - style: AppStyle.lg.copyWith(color: AppColor.textLight), + style: AppStyle.lg.copyWith( + color: AppColor.textLight, + shadows: [ + Shadow( + offset: const Offset(0, 1), + blurRadius: 5, + color: Colors.black.withOpacity(0.2), + ), + ], + ), ), ], ); @@ -147,10 +320,17 @@ class _LoginPageState extends State with TickerProviderStateMixin { color: AppColor.white, borderRadius: BorderRadius.circular(24), boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.15), + blurRadius: 40, + offset: const Offset(0, 20), + spreadRadius: 0, + ), BoxShadow( color: AppColor.black.withOpacity(0.1), - blurRadius: 30, - offset: const Offset(0, 15), + blurRadius: 10, + offset: const Offset(0, 5), + spreadRadius: 0, ), ], ), From d334bb8f170c2b50af90db1629740df039de8861 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 00:12:30 +0700 Subject: [PATCH 035/108] feat: update profile home --- lib/common/painter/wave_painter.dart | 42 ++ .../pages/profile/widgets/header.dart | 509 +++++++++++------- 2 files changed, 363 insertions(+), 188 deletions(-) create mode 100644 lib/common/painter/wave_painter.dart diff --git a/lib/common/painter/wave_painter.dart b/lib/common/painter/wave_painter.dart new file mode 100644 index 0000000..750a7f5 --- /dev/null +++ b/lib/common/painter/wave_painter.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'dart:math' as math; + +class WavePainter extends CustomPainter { + final double animation; + final Color color; + + WavePainter({required this.animation, required this.color}); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint() + ..color = color + ..strokeWidth = 1.5 + ..style = PaintingStyle.stroke; + + final path = Path(); + + // Create simplified wave patterns (reduced from 3 to 2 waves) + for (int i = 0; i < 2; i++) { + path.reset(); + final double waveHeight = 15 + (i * 8); + final double frequency = 0.015 + (i * 0.008); + final double phase = animation + (i * math.pi / 2); + + path.moveTo(0, size.height * 0.4 + (i * 40)); + + for (double x = 0; x <= size.width; x += 8) { + final y = + size.height * 0.4 + + (i * 40) + + math.sin((x * frequency) + phase) * waveHeight; + path.lineTo(x, y); + } + + canvas.drawPath(path, paint..color = color.withOpacity(0.2 - (i * 0.05))); + } + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => true; +} diff --git a/lib/presentation/pages/profile/widgets/header.dart b/lib/presentation/pages/profile/widgets/header.dart index a8ebe71..9377c8d 100644 --- a/lib/presentation/pages/profile/widgets/header.dart +++ b/lib/presentation/pages/profile/widgets/header.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'dart:math' as math; +import '../../../../common/painter/wave_painter.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/spacer/spacer.dart'; @@ -11,20 +13,45 @@ class ProfileHeader extends StatefulWidget { } class _ProfileHeaderState extends State - with SingleTickerProviderStateMixin { + with TickerProviderStateMixin { late AnimationController _animationController; + late AnimationController _particleController; + late AnimationController _waveController; + late AnimationController _breathController; + late Animation _fadeInAnimation; late Animation _slideAnimation; late Animation _scaleAnimation; + late Animation _particleAnimation; + late Animation _waveAnimation; + late Animation _breathAnimation; @override void initState() { super.initState(); + + // Main content animations _animationController = AnimationController( duration: const Duration(milliseconds: 1200), vsync: this, ); + _particleController = AnimationController( + duration: const Duration(seconds: 8), + vsync: this, + )..repeat(); + + _waveController = AnimationController( + duration: const Duration(seconds: 6), + vsync: this, + )..repeat(); + + _breathController = AnimationController( + duration: const Duration(seconds: 4), + vsync: this, + )..repeat(reverse: true); + + // Content animations _fadeInAnimation = Tween(begin: 0.0, end: 1.0).animate( CurvedAnimation( parent: _animationController, @@ -47,82 +74,179 @@ class _ProfileHeaderState extends State ), ); + _particleAnimation = Tween( + begin: 0.0, + end: 2 * math.pi, + ).animate(_particleController); + + _waveAnimation = Tween( + begin: 0.0, + end: 2 * math.pi, + ).animate(_waveController); + + _breathAnimation = Tween(begin: 0.8, end: 1.2).animate( + CurvedAnimation(parent: _breathController, curve: Curves.easeInOut), + ); + _animationController.forward(); } @override void dispose() { _animationController.dispose(); + _particleController.dispose(); + _waveController.dispose(); + _breathController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - return Container( - width: double.infinity, - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - ...AppColor.primaryGradient, - AppColor.primaryGradient.last.withOpacity(0.8), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - boxShadow: [ - BoxShadow( - color: AppColor.primaryGradient.first.withOpacity(0.3), - blurRadius: 20, - offset: const Offset(0, 10), + return AnimatedBuilder( + animation: Listenable.merge([ + _particleController, + _waveController, + _breathController, + ]), + builder: (context, child) { + return Container( + width: double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + ...AppColor.primaryGradient, + AppColor.primaryGradient.last.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + boxShadow: [ + BoxShadow( + color: AppColor.primaryGradient.first.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], ), - ], - ), - child: Stack( - alignment: Alignment.center, - children: [ - // Background decoration with floating circles - ...List.generate( - 6, - (index) => Positioned( - top: (index * 30.0) + 20, - right: (index * 40.0) - 50, - child: AnimatedBuilder( - animation: _animationController, - builder: (context, child) { - return Transform.rotate( - angle: _animationController.value * 2 * 3.14159 * 0.5, - child: Container( - width: 20 + (index * 5.0), - height: 20 + (index * 5.0), - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.textWhite.withOpacity(0.1), - ), + child: Stack( + alignment: Alignment.center, + children: [ + // Simplified animated background + _buildAnimatedBackground(), + + // Main content + _buildMainContent(), + ], + ), + ); + }, + ); + } + + Widget _buildAnimatedBackground() { + return Stack( + children: [ + // Floating particles with orbital motion + ...List.generate(12, (index) { + final double radius = 80 + (index * 20); + final double angle = _particleAnimation.value + (index * 0.5); + final double centerX = MediaQuery.of(context).size.width * 0.5; + final double centerY = 150; + + return Positioned( + left: centerX + math.cos(angle) * radius - 6, + top: centerY + math.sin(angle) * (radius * 0.6) - 6, + child: Transform.scale( + scale: _breathAnimation.value * 0.5, + child: Container( + width: 3 + (index % 4), + height: 3 + (index % 4), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.textWhite.withOpacity(0.6), + boxShadow: [ + BoxShadow( + color: AppColor.textWhite.withOpacity(0.3), + blurRadius: 8, + spreadRadius: 1, ), - ); - }, + ], + ), ), ), + ); + }), + + // Wave patterns + Positioned.fill( + child: CustomPaint( + painter: WavePainter( + animation: _waveAnimation.value, + color: AppColor.textWhite.withOpacity(0.1), + ), ), + ), - // Main content - Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const SpaceHeight(30), + // Sparkle effects + ...List.generate(6, (index) { + return Positioned( + left: (index * 80.0) % MediaQuery.of(context).size.width, + top: 50 + (index * 30.0), + child: Transform.rotate( + angle: _particleAnimation.value * 2 + index, + child: Transform.scale( + scale: math.sin(_particleAnimation.value + index) * 0.5 + 1, + child: Icon( + Icons.auto_awesome, + size: 12 + (index % 3) * 4, + color: AppColor.textWhite.withOpacity(0.4), + ), + ), + ), + ); + }), - // Profile Picture with enhanced design - AnimatedBuilder( - animation: _scaleAnimation, - builder: (context, child) { - return Transform.scale( - scale: _scaleAnimation.value, - child: Stack( - alignment: Alignment.center, - children: [ - // Outer glow effect - Container( + // Gradient overlay for depth + Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: const Alignment(0, -0.3), + radius: 1.2, + colors: [ + Colors.transparent, + AppColor.primaryGradient.first.withOpacity(0.1), + Colors.transparent, + ], + ), + ), + ), + ], + ); + } + + Widget _buildMainContent() { + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SpaceHeight(30), + + // Profile Picture with simplified design + AnimatedBuilder( + animation: _scaleAnimation, + builder: (context, child) { + return Transform.scale( + scale: _scaleAnimation.value, + child: Stack( + alignment: Alignment.center, + children: [ + // Outer glow effect with breathing animation + AnimatedBuilder( + animation: _breathAnimation, + builder: (context, child) { + return Transform.scale( + scale: _breathAnimation.value * 0.1 + 1, + child: Container( width: 120, height: 120, decoration: BoxDecoration( @@ -136,49 +260,54 @@ class _ProfileHeaderState extends State ], ), ), - // Profile picture container - Container( - width: 110, - height: 110, - decoration: BoxDecoration( - shape: BoxShape.circle, - border: Border.all( - color: AppColor.textWhite, - width: 4, - ), - gradient: LinearGradient( - colors: [ - AppColor.primaryLight, - AppColor.primaryLight.withOpacity(0.8), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - ), - child: ClipOval( - child: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.primaryLight, - AppColor.primaryLight.withOpacity(0.7), - ], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: const Icon( - Icons.person, - size: 55, - color: AppColor.textWhite, - ), - ), + ); + }, + ), + // Profile picture container + Container( + width: 110, + height: 110, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all(color: AppColor.textWhite, width: 4), + gradient: LinearGradient( + colors: [ + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + child: ClipOval( + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.7), + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, ), ), - // Online status indicator - Positioned( - bottom: 5, - right: 5, + child: const Icon( + Icons.person, + size: 55, + color: AppColor.textWhite, + ), + ), + ), + ), + // Online status indicator with subtle pulse + Positioned( + bottom: 5, + right: 5, + child: AnimatedBuilder( + animation: _breathController, + builder: (context, child) { + return Transform.scale( + scale: _breathAnimation.value * 0.2 + 1, child: Container( width: 24, height: 24, @@ -189,107 +318,111 @@ class _ProfileHeaderState extends State color: AppColor.textWhite, width: 3, ), + boxShadow: [ + BoxShadow( + color: Colors.green.withOpacity(0.6), + blurRadius: 8, + spreadRadius: 2, + ), + ], ), ), - ), - ], + ); + }, ), - ); - }, + ), + ], ), + ); + }, + ), - const SpaceHeight(20), + const SpaceHeight(20), - // Name with animation - SlideTransition( - position: _slideAnimation, - child: FadeTransition( - opacity: _fadeInAnimation, - child: Column( - children: [ - Text( - 'John Doe', - style: AppStyle.h5.copyWith( - fontWeight: FontWeight.bold, - color: AppColor.textWhite, - shadows: [ - Shadow( - color: Colors.black.withOpacity(0.3), - offset: const Offset(0, 2), - blurRadius: 4, - ), - ], - ), - ), - const SpaceHeight(4), - Container( - height: 2, - width: 60, - decoration: BoxDecoration( - color: AppColor.textWhite.withOpacity(0.7), - borderRadius: BorderRadius.circular(1), - ), + // Name with animation + SlideTransition( + position: _slideAnimation, + child: FadeTransition( + opacity: _fadeInAnimation, + child: Column( + children: [ + Text( + 'John Doe', + style: AppStyle.h5.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textWhite, + shadows: [ + Shadow( + color: Colors.black.withOpacity(0.3), + offset: const Offset(0, 2), + blurRadius: 4, ), ], ), ), - ), - - const SpaceHeight(12), - - // Enhanced Role Badge - FadeTransition( - opacity: _fadeInAnimation, - child: SlideTransition( - position: _slideAnimation, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 20, - vertical: 10, - ), - decoration: BoxDecoration( - color: AppColor.textWhite.withOpacity(0.25), - borderRadius: BorderRadius.circular(25), - border: Border.all( - color: AppColor.textWhite.withOpacity(0.3), - width: 1, - ), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.1), - blurRadius: 10, - offset: const Offset(0, 4), - ), - ], - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.business_center, - size: 16, - color: AppColor.textWhite.withOpacity(0.9), - ), - const SpaceHeight(6), - Text( - 'Business Owner', - style: AppStyle.md.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w600, - letterSpacing: 0.5, - ), - ), - ], - ), + const SpaceHeight(4), + Container( + height: 2, + width: 60, + decoration: BoxDecoration( + color: AppColor.textWhite.withOpacity(0.7), + borderRadius: BorderRadius.circular(1), ), ), - ), - - const SpaceHeight(30), - ], + ], + ), ), - ], - ), + ), + + const SpaceHeight(12), + + // Enhanced Role Badge + FadeTransition( + opacity: _fadeInAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + decoration: BoxDecoration( + color: AppColor.textWhite.withOpacity(0.25), + borderRadius: BorderRadius.circular(25), + border: Border.all( + color: AppColor.textWhite.withOpacity(0.3), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.business_center, + size: 16, + color: AppColor.textWhite.withOpacity(0.9), + ), + const SpaceHeight(6), + Text( + 'Business Owner', + style: AppStyle.md.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w600, + letterSpacing: 0.5, + ), + ), + ], + ), + ), + ), + ), + + const SpaceHeight(30), + ], ); } } From d73cd1a5740513ccc49b4dede3b9522907d5de46 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 00:39:09 +0700 Subject: [PATCH 036/108] feat: custom appbar --- .../components/appbar/appbar.dart | 189 ++++++++++++++++ .../pages/customer/customer_page.dart | 20 +- .../pages/finance/finance_page.dart | 23 +- .../pages/finance/widgets/appbar.dart | 201 ------------------ .../pages/inventory/inventory_page.dart | 17 +- .../pages/inventory/widgets/appbar.dart | 96 --------- .../pages/product/product_page.dart | 19 +- .../pages/product/widgets/appbar.dart | 96 --------- .../pages/purchase/purchase_page.dart | 20 +- .../pages/purchase/widgets/appbar.dart | 201 ------------------ .../pages/report/report_page.dart | 5 +- .../pages/report/widgets/appbar.dart | 96 --------- lib/presentation/pages/sales/sales_page.dart | 25 +-- .../pages/sales/widgets/appbar.dart | 96 --------- .../pages/schedule/schedule_page.dart | 144 +------------ .../pages/transaction/transaction_page.dart | 21 +- 16 files changed, 207 insertions(+), 1062 deletions(-) create mode 100644 lib/presentation/components/appbar/appbar.dart delete mode 100644 lib/presentation/pages/finance/widgets/appbar.dart delete mode 100644 lib/presentation/pages/inventory/widgets/appbar.dart delete mode 100644 lib/presentation/pages/product/widgets/appbar.dart delete mode 100644 lib/presentation/pages/purchase/widgets/appbar.dart delete mode 100644 lib/presentation/pages/report/widgets/appbar.dart delete mode 100644 lib/presentation/pages/sales/widgets/appbar.dart diff --git a/lib/presentation/components/appbar/appbar.dart b/lib/presentation/components/appbar/appbar.dart new file mode 100644 index 0000000..51713e2 --- /dev/null +++ b/lib/presentation/components/appbar/appbar.dart @@ -0,0 +1,189 @@ +import 'package:flutter/material.dart'; +import 'dart:math' as math; + +import '../../../../common/theme/theme.dart'; +import '../../../common/painter/wave_painter.dart'; + +class CustomAppBar extends StatefulWidget { + final String title; + final bool isBack; + const CustomAppBar({super.key, required this.title, this.isBack = true}); + + @override + State createState() => _CustomAppBarState(); +} + +class _CustomAppBarState extends State + with TickerProviderStateMixin { + late AnimationController _particleController; + late AnimationController _waveController; + late AnimationController _breathController; + + late Animation _particleAnimation; + late Animation _waveAnimation; + late Animation _breathAnimation; + + @override + void initState() { + super.initState(); + + _particleController = AnimationController( + duration: const Duration(seconds: 8), + vsync: this, + )..repeat(); + + _waveController = AnimationController( + duration: const Duration(seconds: 6), + vsync: this, + )..repeat(); + + _breathController = AnimationController( + duration: const Duration(seconds: 4), + vsync: this, + )..repeat(reverse: true); + + _particleAnimation = Tween( + begin: 0.0, + end: 2 * math.pi, + ).animate(_particleController); + + _waveAnimation = Tween( + begin: 0.0, + end: 2 * math.pi, + ).animate(_waveController); + + _breathAnimation = Tween(begin: 0.8, end: 1.2).animate( + CurvedAnimation(parent: _breathController, curve: Curves.easeInOut), + ); + } + + @override + void dispose() { + _particleController.dispose(); + _waveController.dispose(); + _breathController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return FlexibleSpaceBar( + titlePadding: EdgeInsets.only(left: widget.isBack ? 50 : 20, bottom: 16), + title: Text( + widget.title, + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: AnimatedBuilder( + animation: Listenable.merge([ + _particleController, + _waveController, + _breathController, + ]), + builder: (context, child) { + return Stack( + children: [ + // Animated background elements + _buildAnimatedBackground(context), + ], + ); + }, + ), + ), + ); + } + + Widget _buildAnimatedBackground(BuildContext context) { + final size = MediaQuery.of(context).size; + + return Stack( + children: [ + // Floating particles with orbital motion + ...List.generate(8, (index) { + final double radius = 40 + (index * 15); + final double angle = _particleAnimation.value + (index * 0.8); + final double centerX = size.width * 0.7; + final double centerY = 60; + + return Positioned( + left: centerX + math.cos(angle) * radius - 3, + top: centerY + math.sin(angle) * (radius * 0.5) - 3, + child: Transform.scale( + scale: _breathAnimation.value * 0.5, + child: Container( + width: 4 + (index % 3), + height: 4 + (index % 3), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.textWhite.withOpacity(0.6), + boxShadow: [ + BoxShadow( + color: AppColor.textWhite.withOpacity(0.3), + blurRadius: 6, + spreadRadius: 1, + ), + ], + ), + ), + ), + ); + }), + + // Wave patterns + Positioned.fill( + child: CustomPaint( + painter: WavePainter( + animation: _waveAnimation.value, + color: AppColor.textWhite.withOpacity(0.1), + ), + ), + ), + + // Sparkle effects + ...List.generate(4, (index) { + return Positioned( + left: (index * 90.0) % size.width, + top: 20 + (index * 25.0), + child: Transform.rotate( + angle: _particleAnimation.value * 2 + index, + child: Transform.scale( + scale: math.sin(_particleAnimation.value + index) * 0.5 + 1, + child: Icon( + Icons.auto_awesome, + size: 10 + (index % 3) * 3, + color: AppColor.textWhite.withOpacity(0.4), + ), + ), + ), + ); + }), + + // Gradient overlay for depth + Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: const Alignment(0.3, -0.2), + radius: 1.2, + colors: [ + Colors.transparent, + AppColor.primaryGradient.first.withOpacity(0.1), + Colors.transparent, + ], + ), + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/customer/customer_page.dart b/lib/presentation/pages/customer/customer_page.dart index f63d063..da89db4 100644 --- a/lib/presentation/pages/customer/customer_page.dart +++ b/lib/presentation/pages/customer/customer_page.dart @@ -1,11 +1,10 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; -import 'dart:math' as math; import '../../../common/theme/theme.dart'; +import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; -import 'widgets/appbar.dart'; import 'widgets/customer_card.dart'; import 'widgets/customer_tile.dart'; @@ -102,27 +101,14 @@ class _CustomerPageState extends State ), ]; - // Animation - late AnimationController _rotationController; - late Animation _rotationAnimation; - @override initState() { super.initState(); - _rotationController = AnimationController( - duration: const Duration(seconds: 3), - vsync: this, - )..repeat(); - _rotationAnimation = Tween( - begin: 0, - end: 2 * math.pi, - ).animate(_rotationController); } @override void dispose() { _searchController.dispose(); - _rotationController.dispose(); super.dispose(); } @@ -151,9 +137,7 @@ class _CustomerPageState extends State floating: false, pinned: true, backgroundColor: AppColor.primary, - flexibleSpace: CustomerAppbar( - rotationAnimation: _rotationAnimation, - ), + flexibleSpace: CustomAppBar(title: 'Pelanggan'), actions: [ActionIconButton(onTap: () {}, icon: LineIcons.search)], ), diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index 8acbf22..b38a86d 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; import '../../../common/theme/theme.dart'; -import 'widgets/appbar.dart'; +import '../../components/appbar/appbar.dart'; import 'widgets/cash_flow.dart'; import 'widgets/category.dart'; import 'widgets/profit_loss.dart'; @@ -22,14 +22,10 @@ class _FinancePageState extends State late AnimationController _slideController; late AnimationController _fadeController; late AnimationController _scaleController; - late AnimationController _rotationController; - late AnimationController _floatingController; late Animation _slideAnimation; late Animation _fadeAnimation; late Animation _scaleAnimation; - late Animation rotationAnimation; - late Animation floatingAnimation; String selectedPeriod = 'Hari ini'; final List periods = [ @@ -43,16 +39,6 @@ class _FinancePageState extends State void initState() { super.initState(); - rotationAnimation = AnimationController( - duration: const Duration(seconds: 20), - vsync: this, - )..repeat(); - - floatingAnimation = AnimationController( - duration: const Duration(seconds: 3), - vsync: this, - )..repeat(reverse: true); - _slideController = AnimationController( duration: const Duration(milliseconds: 800), vsync: this, @@ -97,8 +83,6 @@ class _FinancePageState extends State _slideController.dispose(); _fadeController.dispose(); _scaleController.dispose(); - _rotationController.dispose(); - _floatingController.dispose(); super.dispose(); } @@ -115,10 +99,7 @@ class _FinancePageState extends State pinned: true, backgroundColor: AppColor.primary, elevation: 0, - flexibleSpace: FinanceAppbar( - rotationAnimation: rotationAnimation, - floatingAnimation: floatingAnimation, - ), + flexibleSpace: CustomAppBar(title: 'Keuangan'), ), // Header dengan filter periode diff --git a/lib/presentation/pages/finance/widgets/appbar.dart b/lib/presentation/pages/finance/widgets/appbar.dart deleted file mode 100644 index f37030f..0000000 --- a/lib/presentation/pages/finance/widgets/appbar.dart +++ /dev/null @@ -1,201 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; - -class FinanceAppbar extends StatelessWidget { - const FinanceAppbar({ - super.key, - required this.rotationAnimation, - required this.floatingAnimation, - }); - - final Animation rotationAnimation; - final Animation floatingAnimation; - - @override - Widget build(BuildContext context) { - return FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 50, bottom: 16), - title: Text( - 'Keuangan', - style: AppStyle.xl.copyWith( - color: AppColor.textWhite, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - // Animated geometric shapes - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: Listenable.merge([ - rotationAnimation, - floatingAnimation, - ]), - builder: (context, child) { - return Transform.translate( - offset: Offset( - floatingAnimation.value * 10, - floatingAnimation.value * 15, - ), - child: Transform.rotate( - angle: rotationAnimation.value * 2 * 3.14159, - child: Container( - width: 120, - height: 120, - decoration: BoxDecoration( - shape: BoxShape.circle, - gradient: RadialGradient( - colors: [ - AppColor.white.withOpacity(0.15), - AppColor.white.withOpacity(0.05), - ], - ), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.1), - blurRadius: 20, - spreadRadius: 5, - ), - ], - ), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: Listenable.merge([ - rotationAnimation, - floatingAnimation, - ]), - builder: (context, child) { - return Transform.translate( - offset: Offset( - -floatingAnimation.value * 8, - -floatingAnimation.value * 12, - ), - child: Transform.rotate( - angle: -rotationAnimation.value * 0.5 * 3.14159, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - gradient: RadialGradient( - colors: [ - AppColor.white.withOpacity(0.1), - AppColor.white.withOpacity(0.02), - ], - ), - ), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: Listenable.merge([ - rotationAnimation, - floatingAnimation, - ]), - builder: (context, child) { - return Transform.translate( - offset: Offset( - floatingAnimation.value * 5, - -floatingAnimation.value * 8, - ), - child: Transform.rotate( - angle: -rotationAnimation.value * 0.3 * 3.14159, - child: Container( - width: 50, - height: 50, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), - gradient: LinearGradient( - colors: [ - AppColor.white.withOpacity(0.12), - AppColor.white.withOpacity(0.04), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - ), - ), - ), - ); - }, - ), - ), - // Additional floating elements - Positioned( - left: 60, - top: 80, - child: AnimatedBuilder( - animation: floatingAnimation, - builder: (context, child) { - return Transform.translate( - offset: Offset( - floatingAnimation.value * 3, - floatingAnimation.value * 6, - ), - child: Container( - width: 30, - height: 30, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - Positioned( - right: 40, - top: 120, - child: AnimatedBuilder( - animation: floatingAnimation, - builder: (context, child) { - return Transform.translate( - offset: Offset( - -floatingAnimation.value * 4, - floatingAnimation.value * 7, - ), - child: Container( - width: 20, - height: 20, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6), - color: AppColor.white.withOpacity(0.06), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/inventory/inventory_page.dart b/lib/presentation/pages/inventory/inventory_page.dart index f0004e7..16cd5c7 100644 --- a/lib/presentation/pages/inventory/inventory_page.dart +++ b/lib/presentation/pages/inventory/inventory_page.dart @@ -2,7 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import '../../../common/theme/theme.dart'; -import 'widgets/appbar.dart'; +import '../../components/appbar/appbar.dart'; import 'widgets/ingredient_tile.dart'; import 'widgets/product_tile.dart'; import 'widgets/stat_card.dart'; @@ -64,10 +64,8 @@ class _InventoryPageState extends State with TickerProviderStateMixin { late AnimationController _fadeAnimationController; late AnimationController _slideAnimationController; - late AnimationController _rotationAnimationController; late Animation _fadeAnimation; late Animation _slideAnimation; - late Animation rotationAnimation; late TabController _tabController; final List productItems = [ @@ -188,10 +186,6 @@ class _InventoryPageState extends State duration: const Duration(milliseconds: 800), vsync: this, ); - _rotationAnimationController = AnimationController( - duration: const Duration(seconds: 20), - vsync: this, - ); _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( CurvedAnimation( @@ -208,21 +202,14 @@ class _InventoryPageState extends State ), ); - rotationAnimation = Tween( - begin: 0.0, - end: 2 * 3.14159, - ).animate(_rotationAnimationController); - _fadeAnimationController.forward(); _slideAnimationController.forward(); - _rotationAnimationController.repeat(); } @override void dispose() { _fadeAnimationController.dispose(); _slideAnimationController.dispose(); - _rotationAnimationController.dispose(); _tabController.dispose(); super.dispose(); } @@ -356,7 +343,7 @@ class _InventoryPageState extends State pinned: true, elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: InventoryAppBar(rotationAnimation: rotationAnimation), + flexibleSpace: CustomAppBar(title: 'Inventaris'), ); } diff --git a/lib/presentation/pages/inventory/widgets/appbar.dart b/lib/presentation/pages/inventory/widgets/appbar.dart deleted file mode 100644 index 6be4fe7..0000000 --- a/lib/presentation/pages/inventory/widgets/appbar.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; - -class InventoryAppBar extends StatelessWidget { - const InventoryAppBar({super.key, required this.rotationAnimation}); - - final Animation rotationAnimation; - - @override - Widget build(BuildContext context) { - return FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 50, bottom: 16), - title: Text( - 'Inventaris', - style: AppStyle.xl.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w600, - ), - ), - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: rotationAnimation.value, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.textWhite.withOpacity(0.1), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.5, - child: Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.textWhite.withOpacity(0.05), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.2, - child: Container( - width: 40, - height: 40, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: AppColor.textWhite.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_page.dart index 8cce6f0..259d0ea 100644 --- a/lib/presentation/pages/product/product_page.dart +++ b/lib/presentation/pages/product/product_page.dart @@ -1,12 +1,10 @@ -import 'dart:math' as math; - import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; import '../../../common/theme/theme.dart'; +import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; -import 'widgets/appbar.dart'; import 'widgets/category_delegate.dart'; import 'widgets/product_tile.dart'; @@ -26,10 +24,6 @@ class _ProductPageState extends State List categories = ['Semua', 'Makanan', 'Minuman', 'Snack', 'Dessert']; ViewType currentViewType = ViewType.grid; - // Animation - late AnimationController _rotationController; - late Animation _rotationAnimation; - // Sample product data List products = [ Product( @@ -135,19 +129,10 @@ class _ProductPageState extends State @override initState() { super.initState(); - _rotationController = AnimationController( - duration: const Duration(seconds: 3), - vsync: this, - )..repeat(); - _rotationAnimation = Tween( - begin: 0, - end: 2 * math.pi, - ).animate(_rotationController); } @override void dispose() { - _rotationController.dispose(); super.dispose(); } @@ -172,7 +157,7 @@ class _ProductPageState extends State floating: false, pinned: true, elevation: 0, - flexibleSpace: ProductAppbar(rotationAnimation: _rotationAnimation), + flexibleSpace: CustomAppBar(title: 'Produk'), actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.search), ActionIconButton(onTap: _showAddProductDialog, icon: LineIcons.plus), diff --git a/lib/presentation/pages/product/widgets/appbar.dart b/lib/presentation/pages/product/widgets/appbar.dart deleted file mode 100644 index a81d162..0000000 --- a/lib/presentation/pages/product/widgets/appbar.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; - -class ProductAppbar extends StatelessWidget { - final Animation rotationAnimation; - const ProductAppbar({super.key, required this.rotationAnimation}); - - @override - Widget build(BuildContext context) { - return FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 50, bottom: 16), - title: Text( - 'Produk', - style: AppStyle.xl.copyWith( - color: AppColor.textWhite, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: rotationAnimation.value, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.1), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.5, - child: Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.05), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.2, - child: Container( - width: 40, - height: 40, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: AppColor.white.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/purchase/purchase_page.dart b/lib/presentation/pages/purchase/purchase_page.dart index d5dbdd8..5775227 100644 --- a/lib/presentation/pages/purchase/purchase_page.dart +++ b/lib/presentation/pages/purchase/purchase_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; import '../../../common/theme/theme.dart'; -import 'widgets/appbar.dart'; +import '../../components/appbar/appbar.dart'; import 'widgets/purchase_tile.dart'; import 'widgets/stat_card.dart'; import 'widgets/status_chip.dart'; @@ -18,9 +18,7 @@ class PurchasePage extends StatefulWidget { class _PurchasePageState extends State with TickerProviderStateMixin { - late AnimationController rotationAnimation; late AnimationController cardAnimation; - late AnimationController floatingAnimation; String selectedFilter = 'Semua'; final List filterOptions = [ 'Semua', @@ -67,29 +65,18 @@ class _PurchasePageState extends State @override void initState() { super.initState(); - rotationAnimation = AnimationController( - duration: const Duration(seconds: 20), - vsync: this, - )..repeat(); cardAnimation = AnimationController( duration: const Duration(milliseconds: 1200), vsync: this, ); - floatingAnimation = AnimationController( - duration: const Duration(seconds: 3), - vsync: this, - )..repeat(reverse: true); - cardAnimation.forward(); } @override void dispose() { - rotationAnimation.dispose(); cardAnimation.dispose(); - floatingAnimation.dispose(); super.dispose(); } @@ -106,10 +93,7 @@ class _PurchasePageState extends State elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: PurchaseAppbar( - rotationAnimation: rotationAnimation, - floatingAnimation: floatingAnimation, - ), + flexibleSpace: CustomAppBar(title: 'Pembelian'), ), // Stats Cards diff --git a/lib/presentation/pages/purchase/widgets/appbar.dart b/lib/presentation/pages/purchase/widgets/appbar.dart deleted file mode 100644 index 0437c0d..0000000 --- a/lib/presentation/pages/purchase/widgets/appbar.dart +++ /dev/null @@ -1,201 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; - -class PurchaseAppbar extends StatelessWidget { - const PurchaseAppbar({ - super.key, - required this.rotationAnimation, - required this.floatingAnimation, - }); - - final AnimationController rotationAnimation; - final AnimationController floatingAnimation; - - @override - Widget build(BuildContext context) { - return FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 50, bottom: 16), - title: Text( - 'Pembelian', - style: AppStyle.xl.copyWith( - color: AppColor.textWhite, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - // Animated geometric shapes with enhanced effects - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: Listenable.merge([ - rotationAnimation, - floatingAnimation, - ]), - builder: (context, child) { - return Transform.translate( - offset: Offset( - floatingAnimation.value * 10, - floatingAnimation.value * 15, - ), - child: Transform.rotate( - angle: rotationAnimation.value * 2 * 3.14159, - child: Container( - width: 120, - height: 120, - decoration: BoxDecoration( - shape: BoxShape.circle, - gradient: RadialGradient( - colors: [ - AppColor.white.withOpacity(0.15), - AppColor.white.withOpacity(0.05), - ], - ), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.1), - blurRadius: 20, - spreadRadius: 5, - ), - ], - ), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: Listenable.merge([ - rotationAnimation, - floatingAnimation, - ]), - builder: (context, child) { - return Transform.translate( - offset: Offset( - -floatingAnimation.value * 8, - -floatingAnimation.value * 12, - ), - child: Transform.rotate( - angle: -rotationAnimation.value * 0.5 * 3.14159, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - gradient: RadialGradient( - colors: [ - AppColor.white.withOpacity(0.1), - AppColor.white.withOpacity(0.02), - ], - ), - ), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: Listenable.merge([ - rotationAnimation, - floatingAnimation, - ]), - builder: (context, child) { - return Transform.translate( - offset: Offset( - floatingAnimation.value * 5, - -floatingAnimation.value * 8, - ), - child: Transform.rotate( - angle: -rotationAnimation.value * 0.3 * 3.14159, - child: Container( - width: 50, - height: 50, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), - gradient: LinearGradient( - colors: [ - AppColor.white.withOpacity(0.12), - AppColor.white.withOpacity(0.04), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - ), - ), - ), - ); - }, - ), - ), - // Additional floating elements - Positioned( - left: 60, - top: 80, - child: AnimatedBuilder( - animation: floatingAnimation, - builder: (context, child) { - return Transform.translate( - offset: Offset( - floatingAnimation.value * 3, - floatingAnimation.value * 6, - ), - child: Container( - width: 30, - height: 30, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - Positioned( - right: 40, - top: 120, - child: AnimatedBuilder( - animation: floatingAnimation, - builder: (context, child) { - return Transform.translate( - offset: Offset( - -floatingAnimation.value * 4, - floatingAnimation.value * 7, - ), - child: Container( - width: 20, - height: 20, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6), - color: AppColor.white.withOpacity(0.06), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/report/report_page.dart b/lib/presentation/pages/report/report_page.dart index 3884eb4..05510e4 100644 --- a/lib/presentation/pages/report/report_page.dart +++ b/lib/presentation/pages/report/report_page.dart @@ -4,9 +4,9 @@ import 'package:line_icons/line_icons.dart'; import 'dart:math' as math; import '../../../common/theme/theme.dart'; +import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; -import 'widgets/appbar.dart'; import 'widgets/quick_stats.dart'; import 'widgets/report_action.dart'; import 'widgets/revenue_summary.dart'; @@ -80,14 +80,13 @@ class _ReportPageState extends State with TickerProviderStateMixin { backgroundColor: AppColor.background, body: CustomScrollView( slivers: [ - // Custom App Bar with Hero Effect SliverAppBar( expandedHeight: 120, floating: false, pinned: true, backgroundColor: AppColor.primary, centerTitle: false, - flexibleSpace: ReportAppBar(rotationAnimation: _rotationAnimation), + flexibleSpace: CustomAppBar(title: 'Laporan', isBack: false), actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.download), ActionIconButton(onTap: () {}, icon: LineIcons.filter), diff --git a/lib/presentation/pages/report/widgets/appbar.dart b/lib/presentation/pages/report/widgets/appbar.dart deleted file mode 100644 index 09c34fa..0000000 --- a/lib/presentation/pages/report/widgets/appbar.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; - -class ReportAppBar extends StatelessWidget { - final Animation rotationAnimation; - const ReportAppBar({super.key, required this.rotationAnimation}); - - @override - Widget build(BuildContext context) { - return FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 20, bottom: 16), - title: Text( - 'Laporan Bisnis', - style: AppStyle.xl.copyWith( - color: AppColor.textWhite, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: rotationAnimation.value, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.1), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.5, - child: Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.05), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.2, - child: Container( - width: 40, - height: 40, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: AppColor.white.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart index f3188cf..33d4368 100644 --- a/lib/presentation/pages/sales/sales_page.dart +++ b/lib/presentation/pages/sales/sales_page.dart @@ -2,8 +2,8 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import '../../../common/theme/theme.dart'; +import '../../components/appbar/appbar.dart'; import '../../components/spacer/spacer.dart'; -import 'widgets/appbar.dart'; import 'widgets/summary_card.dart'; // Data Models @@ -70,9 +70,6 @@ class SalesPage extends StatefulWidget { } class _SalesPageState extends State with TickerProviderStateMixin { - late AnimationController rotationAnimationController; - late Animation rotationAnimation; - late AnimationController slideAnimationController; late Animation slideAnimation; @@ -82,23 +79,6 @@ class _SalesPageState extends State with TickerProviderStateMixin { void initState() { super.initState(); - // Rotation Animation - rotationAnimationController = AnimationController( - duration: const Duration(seconds: 20), - vsync: this, - ); - rotationAnimation = - Tween( - begin: 0, - end: 6.28, // 2 * PI - ).animate( - CurvedAnimation( - parent: rotationAnimationController, - curve: Curves.linear, - ), - ); - rotationAnimationController.repeat(); - // Slide Animation slideAnimationController = AnimationController( duration: const Duration(milliseconds: 800), @@ -130,7 +110,6 @@ class _SalesPageState extends State with TickerProviderStateMixin { @override void dispose() { - rotationAnimationController.dispose(); slideAnimationController.dispose(); fadeAnimationController.dispose(); super.dispose(); @@ -187,7 +166,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { floating: false, pinned: true, backgroundColor: AppColor.primary, - flexibleSpace: SalesAppbar(rotationAnimation: rotationAnimation), + flexibleSpace: CustomAppBar(title: 'Penjualan'), ), // Date Range Header diff --git a/lib/presentation/pages/sales/widgets/appbar.dart b/lib/presentation/pages/sales/widgets/appbar.dart deleted file mode 100644 index 9dfbcf2..0000000 --- a/lib/presentation/pages/sales/widgets/appbar.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; - -class SalesAppbar extends StatelessWidget { - const SalesAppbar({super.key, required this.rotationAnimation}); - - final Animation rotationAnimation; - - @override - Widget build(BuildContext context) { - return FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 50, bottom: 16), - title: Text( - 'Penjualan', - style: AppStyle.xl.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w600, - ), - ), - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: rotationAnimation.value, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.1), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.5, - child: Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.05), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.2, - child: Container( - width: 40, - height: 40, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: AppColor.white.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/schedule/schedule_page.dart b/lib/presentation/pages/schedule/schedule_page.dart index 481fdfb..89ae7bd 100644 --- a/lib/presentation/pages/schedule/schedule_page.dart +++ b/lib/presentation/pages/schedule/schedule_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:table_calendar/table_calendar.dart'; import '../../../common/theme/theme.dart'; +import '../../components/appbar/appbar.dart'; // Schedule model dengan optimasi class Schedule { @@ -212,107 +213,7 @@ class _SchedulePageState extends State floating: false, pinned: true, backgroundColor: AppColor.primary, - actions: [ - Container( - margin: const EdgeInsets.all(8), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(12), - ), - child: IconButton( - onPressed: () => _showCalendarOptions(), - icon: Icon( - Icons.calendar_view_week, - color: AppColor.white, - size: 24, - ), - ), - ), - ], - flexibleSpace: FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 50, bottom: 16), - title: Text( - 'My Schedule', - style: TextStyle( - color: AppColor.white, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), - background: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [AppColor.primary, AppColor.primary.withOpacity(0.8)], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: rotationAnimation.value, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.1), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.5, - child: Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.05), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.2, - child: Container( - width: 40, - height: 40, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: AppColor.white.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ), + flexibleSpace: CustomAppBar(title: 'Jadwal'), ); } @@ -639,47 +540,6 @@ class _SchedulePageState extends State _slideController.forward(); } - void _showCalendarOptions() { - showModalBottomSheet( - context: context, - backgroundColor: Colors.transparent, - builder: (context) => Container( - decoration: BoxDecoration( - color: AppColor.white, - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(24), - topRight: Radius.circular(24), - ), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - margin: const EdgeInsets.only(top: 12), - width: 40, - height: 4, - decoration: BoxDecoration( - color: AppColor.border, - borderRadius: BorderRadius.circular(2), - ), - ), - Padding( - padding: const EdgeInsets.all(24), - child: Text( - 'Calendar Options', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.w700, - color: AppColor.textPrimary, - ), - ), - ), - ], - ), - ), - ); - } - void _showModernScheduleDetails(Schedule schedule) { showModalBottomSheet( context: context, diff --git a/lib/presentation/pages/transaction/transaction_page.dart b/lib/presentation/pages/transaction/transaction_page.dart index 7216c3c..f9ce760 100644 --- a/lib/presentation/pages/transaction/transaction_page.dart +++ b/lib/presentation/pages/transaction/transaction_page.dart @@ -1,13 +1,11 @@ -import 'dart:math' as math; - import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; import '../../../common/theme/theme.dart'; +import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; -import 'widgets/appbar.dart'; import 'widgets/status_tile.dart'; import 'widgets/transaction_tile.dart'; @@ -23,10 +21,8 @@ class _TransactionPageState extends State with TickerProviderStateMixin { late AnimationController _fadeController; late AnimationController _slideController; - late AnimationController _rotationController; late Animation _fadeAnimation; late Animation _slideAnimation; - late Animation _rotationAnimation; // Filter state String selectedFilter = 'All'; @@ -51,11 +47,6 @@ class _TransactionPageState extends State vsync: this, ); - _rotationController = AnimationController( - duration: const Duration(seconds: 3), - vsync: this, - )..repeat(); - _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), ); @@ -65,11 +56,6 @@ class _TransactionPageState extends State CurvedAnimation(parent: _slideController, curve: Curves.elasticOut), ); - _rotationAnimation = Tween( - begin: 0, - end: 2 * math.pi, - ).animate(_rotationController); - _fadeController.forward(); _slideController.forward(); } @@ -78,7 +64,6 @@ class _TransactionPageState extends State void dispose() { _fadeController.dispose(); _slideController.dispose(); - _rotationController.dispose(); super.dispose(); } @@ -154,9 +139,7 @@ class _TransactionPageState extends State pinned: true, backgroundColor: AppColor.primary, centerTitle: false, - flexibleSpace: TransactionAppBar( - rotationAnimation: _rotationAnimation, - ), + flexibleSpace: CustomAppBar(title: 'Transaction', isBack: false), actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.filter), SpaceWidth(8), From 6019036cd7af68b0a9a8969f6ba7068e9f18b3ff Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 00:45:05 +0700 Subject: [PATCH 037/108] feat: header home page --- .../pages/home/widgets/header.dart | 746 +++++++++--------- 1 file changed, 383 insertions(+), 363 deletions(-) diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart index b4882e9..2ba3973 100644 --- a/lib/presentation/pages/home/widgets/header.dart +++ b/lib/presentation/pages/home/widgets/header.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; +import 'dart:math' as math; import '../../../../common/extension/extension.dart'; +import '../../../../common/painter/wave_painter.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/spacer/spacer.dart'; @@ -12,244 +14,248 @@ class HomeHeader extends StatefulWidget { } class _HomeHeaderState extends State with TickerProviderStateMixin { - late AnimationController _backgroundAnimationController; - late AnimationController _pulseAnimationController; - late AnimationController _rotationAnimationController; + late AnimationController _animationController; + late AnimationController _particleController; + late AnimationController _waveController; + late AnimationController _breathController; - late Animation _circleAnimation; - late Animation _pulseAnimation; - late Animation _rotationAnimation; + late Animation _fadeInAnimation; + late Animation _slideAnimation; + late Animation _scaleAnimation; + late Animation _particleAnimation; + late Animation _waveAnimation; + late Animation _breathAnimation; @override void initState() { super.initState(); - // Background animation controller for floating circles - _backgroundAnimationController = AnimationController( - duration: const Duration(seconds: 15), + // Main content animations + _animationController = AnimationController( + duration: const Duration(milliseconds: 1200), vsync: this, - )..repeat(reverse: true); // Add reverse for smooth back-and-forth + ); - // Pulse animation for subtle breathing effect - _pulseAnimationController = AnimationController( - duration: const Duration(seconds: 6), - vsync: this, - )..repeat(reverse: true); - - // Rotation animation for decorative elements (keep this smooth) - _rotationAnimationController = AnimationController( - duration: const Duration(seconds: 45), + _particleController = AnimationController( + duration: const Duration(seconds: 8), vsync: this, )..repeat(); - _circleAnimation = - Tween( - begin: 0.0, - end: 20.0, // Reduced movement range - ).animate( + _waveController = AnimationController( + duration: const Duration(seconds: 6), + vsync: this, + )..repeat(); + + _breathController = AnimationController( + duration: const Duration(seconds: 4), + vsync: this, + )..repeat(reverse: true); + + // Content animations + _fadeInAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.0, 0.6, curve: Curves.easeOut), + ), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.5), end: Offset.zero).animate( CurvedAnimation( - parent: _backgroundAnimationController, - curve: Curves.easeInOutSine, // Smoother curve + parent: _animationController, + curve: const Interval(0.2, 0.8, curve: Curves.easeOutCubic), ), ); - _pulseAnimation = Tween(begin: 0.08, end: 0.12).animate( + _scaleAnimation = Tween(begin: 0.8, end: 1.0).animate( CurvedAnimation( - parent: _pulseAnimationController, - curve: Curves.easeInOutSine, // Smoother breathing effect + parent: _animationController, + curve: const Interval(0.0, 0.7, curve: Curves.elasticOut), ), ); - _rotationAnimation = Tween(begin: 0.0, end: 2 * 3.14159).animate( - CurvedAnimation( - parent: _rotationAnimationController, - curve: Curves.linear, - ), + _particleAnimation = Tween( + begin: 0.0, + end: 2 * math.pi, + ).animate(_particleController); + + _waveAnimation = Tween( + begin: 0.0, + end: 2 * math.pi, + ).animate(_waveController); + + _breathAnimation = Tween(begin: 0.8, end: 1.2).animate( + CurvedAnimation(parent: _breathController, curve: Curves.easeInOut), ); + + _animationController.forward(); } @override void dispose() { - _backgroundAnimationController.dispose(); - _pulseAnimationController.dispose(); - _rotationAnimationController.dispose(); + _animationController.dispose(); + _particleController.dispose(); + _waveController.dispose(); + _breathController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - return Container( - height: 280, - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.primary, - AppColor.primaryLight, - AppColor.primaryLight.withOpacity(0.8), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - stops: const [0.0, 0.7, 1.0], - ), - boxShadow: [ - BoxShadow( - color: AppColor.primary.withOpacity(0.3), - blurRadius: 20, - offset: const Offset(0, 10), + return AnimatedBuilder( + animation: Listenable.merge([ + _particleController, + _waveController, + _breathController, + ]), + builder: (context, child) { + return Container( + height: 280, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary, + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + stops: const [0.0, 0.7, 1.0], + ), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], ), - ], - ), - child: Stack( - children: [ - // Animated decorative circles - AnimatedBuilder( - animation: Listenable.merge([ - _backgroundAnimationController, - _pulseAnimationController, - ]), - builder: (context, child) { - return Stack( - children: [ - // Large floating circle - Positioned( - top: -50 + _circleAnimation.value, - right: -50 + (_circleAnimation.value * 0.5), - child: AnimatedBuilder( - animation: _pulseAnimationController, - builder: (context, child) { - return Container( - width: 150, - height: 150, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity( - _pulseAnimation.value, - ), - ), - ); - }, - ), - ), + child: Stack( + children: [ + // Enhanced animated background + _buildAnimatedBackground(), - // Medium floating circle - Positioned( - top: 80 - (_circleAnimation.value * 0.3), - right: -20 + (_circleAnimation.value * 0.8), - child: AnimatedBuilder( - animation: _pulseAnimationController, - builder: (context, child) { - return Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity( - _pulseAnimation.value * 0.5, - ), - ), - ); - }, - ), - ), - - // Small floating circle - Positioned( - top: 150 + (_circleAnimation.value * 0.4), - right: 30 - (_circleAnimation.value * 0.2), - child: AnimatedBuilder( - animation: _pulseAnimationController, - builder: (context, child) { - return Container( - width: 40, - height: 40, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity( - _pulseAnimation.value * 0.7, - ), - ), - ); - }, - ), - ), - - // Left side decorative circles - Positioned( - top: 60 + (_circleAnimation.value * 0.6), - left: -30, - child: AnimatedBuilder( - animation: _pulseAnimationController, - builder: (context, child) { - return Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity( - _pulseAnimation.value * 0.3, - ), - ), - ); - }, - ), - ), - - Positioned( - bottom: 20 - (_circleAnimation.value * 0.5), - left: -20 + (_circleAnimation.value * 0.3), - child: AnimatedBuilder( - animation: _pulseAnimationController, - builder: (context, child) { - return Container( - width: 60, - height: 60, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity( - _pulseAnimation.value * 0.4, - ), - ), - ); - }, - ), - ), - ], - ); - }, + // Main content + SafeArea(child: _buildContent(context)), + ], ), - - // Rotating subtle gradient overlay - AnimatedBuilder( - animation: _rotationAnimationController, - builder: (context, child) { - return Transform.rotate( - angle: _rotationAnimation.value, - child: Container( - decoration: BoxDecoration( - gradient: RadialGradient( - center: const Alignment(0.8, -0.8), - radius: 1.5, - colors: [ - AppColor.white.withOpacity(0.05), - Colors.transparent, - AppColor.primary.withOpacity(0.1), - ], - stops: const [0.0, 0.6, 1.0], - ), - ), - ), - ); - }, - ), - - // Content - SafeArea(child: _buildContent(context)), - ], - ), + ); + }, ); } - Padding _buildContent(BuildContext context) { + Widget _buildAnimatedBackground() { + return Stack( + children: [ + // Floating particles with orbital motion + ...List.generate(12, (index) { + final double radius = 60 + (index * 15); + final double angle = _particleAnimation.value + (index * 0.5); + final double centerX = MediaQuery.of(context).size.width * 0.8; + final double centerY = 100; + + return Positioned( + left: centerX + math.cos(angle) * radius - 4, + top: centerY + math.sin(angle) * (radius * 0.5) - 4, + child: Transform.scale( + scale: _breathAnimation.value * 0.4, + child: Container( + width: 2 + (index % 3), + height: 2 + (index % 3), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.7), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.3), + blurRadius: 6, + spreadRadius: 1, + ), + ], + ), + ), + ), + ); + }), + + // Wave patterns + Positioned.fill( + child: CustomPaint( + painter: WavePainter( + animation: _waveAnimation.value, + color: AppColor.white.withOpacity(0.08), + ), + ), + ), + + // Sparkle effects + ...List.generate(8, (index) { + return Positioned( + left: (index * 60.0) % MediaQuery.of(context).size.width, + top: 30 + (index * 25.0), + child: Transform.rotate( + angle: _particleAnimation.value * 2 + index, + child: Transform.scale( + scale: math.sin(_particleAnimation.value + index) * 0.3 + 0.8, + child: Icon( + Icons.auto_awesome, + size: 8 + (index % 3) * 3, + color: AppColor.white.withOpacity(0.5), + ), + ), + ), + ); + }), + + // Gradient overlay for depth + Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: const Alignment(0.8, -0.3), + radius: 1.5, + colors: [ + Colors.transparent, + AppColor.primary.withOpacity(0.1), + Colors.transparent, + ], + ), + ), + ), + + // Additional left side particles + ...List.generate(6, (index) { + final double radius = 40 + (index * 10); + final double angle = _particleAnimation.value * 0.5 + (index * 1.2); + final double centerX = MediaQuery.of(context).size.width * 0.1; + final double centerY = 120; + + return Positioned( + left: centerX + math.cos(angle) * radius - 2, + top: centerY + math.sin(angle) * (radius * 0.7) - 2, + child: Transform.scale( + scale: _breathAnimation.value * 0.3 + 0.5, + child: Container( + width: 2 + (index % 2), + height: 2 + (index % 2), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.4), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.2), + blurRadius: 4, + ), + ], + ), + ), + ), + ); + }), + ], + ); + } + + Widget _buildContent(BuildContext context) { String greeting(BuildContext context) { final hour = DateTime.now().hour; @@ -270,189 +276,203 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - // Top bar with subtle animation - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 800), - builder: (context, value, child) { - return Transform.translate( - offset: Offset(0, 20 * (1 - value)), - child: Opacity( - opacity: value, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'AppSkel POS Owner', - style: AppStyle.lg.copyWith( - color: AppColor.white.withOpacity(0.9), - fontWeight: FontWeight.w600, - letterSpacing: 0.3, - ), - ), - const SpaceHeight(2), - Text( - 'Manager', - style: AppStyle.sm.copyWith( - color: AppColor.textLight, - fontSize: 11, - fontWeight: FontWeight.w400, - ), - ), - ], - ), - ), - // Animated notification icon - AnimatedBuilder( - animation: _pulseAnimationController, - builder: (context, child) { - return Transform.scale( - scale: 1.0 + (_pulseAnimation.value * 0.1), - child: Container( - padding: const EdgeInsets.all(10), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(14), - border: Border.all( - color: AppColor.white.withOpacity(0.3), - width: 1, + // Top bar with enhanced animation + SlideTransition( + position: _slideAnimation, + child: FadeTransition( + opacity: _fadeInAnimation, + child: Transform.scale( + scale: _scaleAnimation.value, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'AppSkel POS Owner', + style: AppStyle.lg.copyWith( + color: AppColor.white.withOpacity(0.9), + fontWeight: FontWeight.w600, + letterSpacing: 0.3, + shadows: [ + Shadow( + color: Colors.black.withOpacity(0.2), + offset: const Offset(0, 1), + blurRadius: 2, ), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.1), - blurRadius: 8, - offset: const Offset(0, 2), - ), - ], - ), - child: const Icon( - Icons.notifications_none_rounded, - color: AppColor.white, - size: 20, - ), + ], ), - ); - }, + ), + const SpaceHeight(2), + Text( + 'Manager', + style: AppStyle.sm.copyWith( + color: AppColor.white.withOpacity(0.7), + fontSize: 11, + fontWeight: FontWeight.w400, + ), + ), + ], ), - ], - ), + ), + // Enhanced notification icon with breathing animation + AnimatedBuilder( + animation: _breathController, + builder: (context, child) { + return Transform.scale( + scale: _breathAnimation.value * 0.1 + 1.0, + child: Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.25), + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.2), + blurRadius: 8 + (_breathAnimation.value * 2), + offset: const Offset(0, 2), + ), + ], + ), + child: const Icon( + Icons.notifications_none_rounded, + color: AppColor.white, + size: 20, + ), + ), + ); + }, + ), + ], ), - ); - }, + ), + ), ), const SpaceHeight(24), - // Greeting Section with staggered animation - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1000), - builder: (context, value, child) { - return Transform.translate( - offset: Offset(0, 30 * (1 - value)), - child: Opacity( - opacity: value, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - '${greeting(context)},', - style: AppStyle.lg.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w500, - ), + // Greeting Section with enhanced animations + SlideTransition( + position: _slideAnimation, + child: FadeTransition( + opacity: _fadeInAnimation, + child: Transform.scale( + scale: _scaleAnimation.value, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${greeting(context)},', + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w500, + shadows: [ + Shadow( + color: Colors.black.withOpacity(0.2), + offset: const Offset(0, 1), + blurRadius: 2, + ), + ], ), - const SpaceHeight(2), - Text( - 'Vira Vania! ๐Ÿ‘‹', - style: AppStyle.h4.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w800, - letterSpacing: -0.5, - ), + ), + const SpaceHeight(2), + Text( + 'Vira Vania! ๐Ÿ‘‹', + style: AppStyle.h4.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w800, + letterSpacing: -0.5, + shadows: [ + Shadow( + color: Colors.black.withOpacity(0.2), + offset: const Offset(0, 2), + blurRadius: 4, + ), + ], ), - const SpaceHeight(8), - Text( - context.lang.home_header_desc, - style: AppStyle.md.copyWith( - color: AppColor.white.withOpacity(0.85), - fontWeight: FontWeight.w400, - height: 1.3, - ), - maxLines: 2, - overflow: TextOverflow.ellipsis, + ), + const SpaceHeight(8), + Text( + context.lang.home_header_desc, + style: AppStyle.md.copyWith( + color: AppColor.white.withOpacity(0.85), + fontWeight: FontWeight.w400, + height: 1.3, ), - ], - ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ], ), - ); - }, + ), + ), ), const SpaceHeight(16), - // Today's highlight with delayed animation - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1200), - builder: (context, value, child) { - return Transform.translate( - offset: Offset(0, 20 * (1 - value)), - child: Opacity( - opacity: value, - child: AnimatedBuilder( - animation: _pulseAnimationController, - builder: (context, child) { - return Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, + // Today's highlight with enhanced breathing animation + FadeTransition( + opacity: _fadeInAnimation, + child: SlideTransition( + position: _slideAnimation, + child: AnimatedBuilder( + animation: _breathController, + builder: (context, child) { + return Transform.scale( + scale: _breathAnimation.value * 0.05 + 1.0, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.25), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, ), - decoration: BoxDecoration( - color: AppColor.white.withOpacity( - 0.2 + (_pulseAnimation.value * 0.05), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.1), + blurRadius: 6 + (_breathAnimation.value * 2), + offset: const Offset(0, 2), ), - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: AppColor.white.withOpacity(0.3), - width: 1, - ), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.1), - blurRadius: 4 + (_pulseAnimation.value * 2), - offset: const Offset(0, 2), - ), - ], - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Transform.scale( + scale: _breathAnimation.value * 0.1 + 1.0, + child: Icon( Icons.trending_up_rounded, color: AppColor.white, size: 14, ), - const SizedBox(width: 6), - Text( - '${context.lang.sales_today} +25%', - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w600, - ), + ), + const SizedBox(width: 6), + Text( + '${context.lang.sales_today} +25%', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + letterSpacing: 0.3, ), - ], - ), - ); - }, - ), - ), - ); - }, + ), + ], + ), + ), + ); + }, + ), + ), ), ], ), From 255b10d5a9b276e518217324965577dee66c4bbf Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 17:27:57 +0700 Subject: [PATCH 038/108] feat: login api --- devtools_options.yaml | 4 + .../auth/login_form/login_form_bloc.dart | 54 + .../login_form/login_form_bloc.freezed.dart | 734 ++++++++++++ .../auth/login_form/login_form_event.dart | 9 + .../auth/login_form/login_form_state.dart | 15 + lib/common/api/api_client.dart | 1 + lib/common/constant/local_storage_key.dart | 2 + lib/common/url/api_path.dart | 3 + lib/domain/auth/auth.dart | 11 + lib/domain/auth/auth.freezed.dart | 1039 +++++++++++++++++ lib/domain/auth/entities/auth_entity.dart | 18 + lib/domain/auth/entities/user_entity.dart | 32 + lib/domain/auth/failures/auth_failure.dart | 9 + .../auth/repositories/i_auth_repository.dart | 8 + lib/env.dart | 4 +- lib/infrastructure/auth/auth_dtos.dart | 9 + .../auth/auth_dtos.freezed.dart | 642 ++++++++++ lib/infrastructure/auth/auth_dtos.g.dart | 51 + .../auth/datasources/local_data_provider.dart | 54 + .../datasources/remote_data_provider.dart | 44 + lib/infrastructure/auth/dto/auth_dto.dart | 23 + lib/infrastructure/auth/dto/user_dto.dart | 39 + .../auth/repositories/auth_repository.dart | 45 + lib/injection.config.dart | 24 + .../field/password_text_form_field.dart | 3 + .../components/field/text_form_field.dart | 3 + .../components/toast/flushbar.dart | 11 + .../pages/auth/login/login_page.dart | 166 +-- .../pages/auth/login/widgets/email_field.dart | 11 +- .../auth/login/widgets/password_field.dart | 13 +- lib/presentation/router/app_router.gr.dart | 2 +- 31 files changed, 2997 insertions(+), 86 deletions(-) create mode 100644 devtools_options.yaml create mode 100644 lib/application/auth/login_form/login_form_bloc.dart create mode 100644 lib/application/auth/login_form/login_form_bloc.freezed.dart create mode 100644 lib/application/auth/login_form/login_form_event.dart create mode 100644 lib/application/auth/login_form/login_form_state.dart create mode 100644 lib/common/url/api_path.dart create mode 100644 lib/domain/auth/auth.dart create mode 100644 lib/domain/auth/auth.freezed.dart create mode 100644 lib/domain/auth/entities/auth_entity.dart create mode 100644 lib/domain/auth/entities/user_entity.dart create mode 100644 lib/domain/auth/failures/auth_failure.dart create mode 100644 lib/domain/auth/repositories/i_auth_repository.dart create mode 100644 lib/infrastructure/auth/auth_dtos.dart create mode 100644 lib/infrastructure/auth/auth_dtos.freezed.dart create mode 100644 lib/infrastructure/auth/auth_dtos.g.dart create mode 100644 lib/infrastructure/auth/datasources/local_data_provider.dart create mode 100644 lib/infrastructure/auth/datasources/remote_data_provider.dart create mode 100644 lib/infrastructure/auth/dto/auth_dto.dart create mode 100644 lib/infrastructure/auth/dto/user_dto.dart create mode 100644 lib/infrastructure/auth/repositories/auth_repository.dart diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..4dcfde9 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,4 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: + - shared_preferences: true \ No newline at end of file diff --git a/lib/application/auth/login_form/login_form_bloc.dart b/lib/application/auth/login_form/login_form_bloc.dart new file mode 100644 index 0000000..2c51083 --- /dev/null +++ b/lib/application/auth/login_form/login_form_bloc.dart @@ -0,0 +1,54 @@ +// ignore: depend_on_referenced_packages; +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/auth/auth.dart'; + +part 'login_form_event.dart'; +part 'login_form_state.dart'; +part 'login_form_bloc.freezed.dart'; + +@injectable +class LoginFormBloc extends Bloc { + final IAuthRepository _repository; + LoginFormBloc(this._repository) : super(LoginFormState.initial()) { + on(_onLoginFormEvent); + } + + Future _onLoginFormEvent( + LoginFormEvent event, + Emitter emit, + ) { + return event.map( + emailChanged: (e) async { + emit(state.copyWith(email: e.email)); + }, + passwordChanged: (e) async { + emit(state.copyWith(password: e.password)); + }, + submitted: (e) async { + Either? failureOrAuth; + emit(state.copyWith(isSubmitting: true, failureOrAuthOption: none())); + + final emailValid = state.email.isNotEmpty; + final passwordValid = state.password.isNotEmpty; + + if (emailValid && passwordValid) { + failureOrAuth = await _repository.login( + email: state.email, + password: state.password, + ); + emit( + state.copyWith( + isSubmitting: false, + failureOrAuthOption: optionOf(failureOrAuth), + ), + ); + } + emit(state.copyWith(showErrorMessages: true, isSubmitting: false)); + }, + ); + } +} diff --git a/lib/application/auth/login_form/login_form_bloc.freezed.dart b/lib/application/auth/login_form/login_form_bloc.freezed.dart new file mode 100644 index 0000000..8bdc3cc --- /dev/null +++ b/lib/application/auth/login_form/login_form_bloc.freezed.dart @@ -0,0 +1,734 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'login_form_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$LoginFormEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(String email) emailChanged, + required TResult Function(String password) passwordChanged, + required TResult Function() submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String email)? emailChanged, + TResult? Function(String password)? passwordChanged, + TResult? Function()? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String email)? emailChanged, + TResult Function(String password)? passwordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_EmailChanged value) emailChanged, + required TResult Function(_PasswordChanged value) passwordChanged, + required TResult Function(_Submitted value) submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_EmailChanged value)? emailChanged, + TResult? Function(_PasswordChanged value)? passwordChanged, + TResult? Function(_Submitted value)? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_EmailChanged value)? emailChanged, + TResult Function(_PasswordChanged value)? passwordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LoginFormEventCopyWith<$Res> { + factory $LoginFormEventCopyWith( + LoginFormEvent value, + $Res Function(LoginFormEvent) then, + ) = _$LoginFormEventCopyWithImpl<$Res, LoginFormEvent>; +} + +/// @nodoc +class _$LoginFormEventCopyWithImpl<$Res, $Val extends LoginFormEvent> + implements $LoginFormEventCopyWith<$Res> { + _$LoginFormEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$EmailChangedImplCopyWith<$Res> { + factory _$$EmailChangedImplCopyWith( + _$EmailChangedImpl value, + $Res Function(_$EmailChangedImpl) then, + ) = __$$EmailChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String email}); +} + +/// @nodoc +class __$$EmailChangedImplCopyWithImpl<$Res> + extends _$LoginFormEventCopyWithImpl<$Res, _$EmailChangedImpl> + implements _$$EmailChangedImplCopyWith<$Res> { + __$$EmailChangedImplCopyWithImpl( + _$EmailChangedImpl _value, + $Res Function(_$EmailChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? email = null}) { + return _then( + _$EmailChangedImpl( + null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$EmailChangedImpl implements _EmailChanged { + const _$EmailChangedImpl(this.email); + + @override + final String email; + + @override + String toString() { + return 'LoginFormEvent.emailChanged(email: $email)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$EmailChangedImpl && + (identical(other.email, email) || other.email == email)); + } + + @override + int get hashCode => Object.hash(runtimeType, email); + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$EmailChangedImplCopyWith<_$EmailChangedImpl> get copyWith => + __$$EmailChangedImplCopyWithImpl<_$EmailChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String email) emailChanged, + required TResult Function(String password) passwordChanged, + required TResult Function() submitted, + }) { + return emailChanged(email); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String email)? emailChanged, + TResult? Function(String password)? passwordChanged, + TResult? Function()? submitted, + }) { + return emailChanged?.call(email); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String email)? emailChanged, + TResult Function(String password)? passwordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (emailChanged != null) { + return emailChanged(email); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_EmailChanged value) emailChanged, + required TResult Function(_PasswordChanged value) passwordChanged, + required TResult Function(_Submitted value) submitted, + }) { + return emailChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_EmailChanged value)? emailChanged, + TResult? Function(_PasswordChanged value)? passwordChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return emailChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_EmailChanged value)? emailChanged, + TResult Function(_PasswordChanged value)? passwordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (emailChanged != null) { + return emailChanged(this); + } + return orElse(); + } +} + +abstract class _EmailChanged implements LoginFormEvent { + const factory _EmailChanged(final String email) = _$EmailChangedImpl; + + String get email; + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$EmailChangedImplCopyWith<_$EmailChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$PasswordChangedImplCopyWith<$Res> { + factory _$$PasswordChangedImplCopyWith( + _$PasswordChangedImpl value, + $Res Function(_$PasswordChangedImpl) then, + ) = __$$PasswordChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String password}); +} + +/// @nodoc +class __$$PasswordChangedImplCopyWithImpl<$Res> + extends _$LoginFormEventCopyWithImpl<$Res, _$PasswordChangedImpl> + implements _$$PasswordChangedImplCopyWith<$Res> { + __$$PasswordChangedImplCopyWithImpl( + _$PasswordChangedImpl _value, + $Res Function(_$PasswordChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? password = null}) { + return _then( + _$PasswordChangedImpl( + null == password + ? _value.password + : password // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$PasswordChangedImpl implements _PasswordChanged { + const _$PasswordChangedImpl(this.password); + + @override + final String password; + + @override + String toString() { + return 'LoginFormEvent.passwordChanged(password: $password)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PasswordChangedImpl && + (identical(other.password, password) || + other.password == password)); + } + + @override + int get hashCode => Object.hash(runtimeType, password); + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PasswordChangedImplCopyWith<_$PasswordChangedImpl> get copyWith => + __$$PasswordChangedImplCopyWithImpl<_$PasswordChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String email) emailChanged, + required TResult Function(String password) passwordChanged, + required TResult Function() submitted, + }) { + return passwordChanged(password); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String email)? emailChanged, + TResult? Function(String password)? passwordChanged, + TResult? Function()? submitted, + }) { + return passwordChanged?.call(password); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String email)? emailChanged, + TResult Function(String password)? passwordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (passwordChanged != null) { + return passwordChanged(password); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_EmailChanged value) emailChanged, + required TResult Function(_PasswordChanged value) passwordChanged, + required TResult Function(_Submitted value) submitted, + }) { + return passwordChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_EmailChanged value)? emailChanged, + TResult? Function(_PasswordChanged value)? passwordChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return passwordChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_EmailChanged value)? emailChanged, + TResult Function(_PasswordChanged value)? passwordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (passwordChanged != null) { + return passwordChanged(this); + } + return orElse(); + } +} + +abstract class _PasswordChanged implements LoginFormEvent { + const factory _PasswordChanged(final String password) = _$PasswordChangedImpl; + + String get password; + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PasswordChangedImplCopyWith<_$PasswordChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$SubmittedImplCopyWith<$Res> { + factory _$$SubmittedImplCopyWith( + _$SubmittedImpl value, + $Res Function(_$SubmittedImpl) then, + ) = __$$SubmittedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$SubmittedImplCopyWithImpl<$Res> + extends _$LoginFormEventCopyWithImpl<$Res, _$SubmittedImpl> + implements _$$SubmittedImplCopyWith<$Res> { + __$$SubmittedImplCopyWithImpl( + _$SubmittedImpl _value, + $Res Function(_$SubmittedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LoginFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$SubmittedImpl implements _Submitted { + const _$SubmittedImpl(); + + @override + String toString() { + return 'LoginFormEvent.submitted()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$SubmittedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String email) emailChanged, + required TResult Function(String password) passwordChanged, + required TResult Function() submitted, + }) { + return submitted(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String email)? emailChanged, + TResult? Function(String password)? passwordChanged, + TResult? Function()? submitted, + }) { + return submitted?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String email)? emailChanged, + TResult Function(String password)? passwordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_EmailChanged value) emailChanged, + required TResult Function(_PasswordChanged value) passwordChanged, + required TResult Function(_Submitted value) submitted, + }) { + return submitted(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_EmailChanged value)? emailChanged, + TResult? Function(_PasswordChanged value)? passwordChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return submitted?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_EmailChanged value)? emailChanged, + TResult Function(_PasswordChanged value)? passwordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(this); + } + return orElse(); + } +} + +abstract class _Submitted implements LoginFormEvent { + const factory _Submitted() = _$SubmittedImpl; +} + +/// @nodoc +mixin _$LoginFormState { + String get email => throw _privateConstructorUsedError; + String get password => throw _privateConstructorUsedError; + Option> get failureOrAuthOption => + throw _privateConstructorUsedError; + bool get isSubmitting => throw _privateConstructorUsedError; + bool get showErrorMessages => throw _privateConstructorUsedError; + + /// Create a copy of LoginFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $LoginFormStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LoginFormStateCopyWith<$Res> { + factory $LoginFormStateCopyWith( + LoginFormState value, + $Res Function(LoginFormState) then, + ) = _$LoginFormStateCopyWithImpl<$Res, LoginFormState>; + @useResult + $Res call({ + String email, + String password, + Option> failureOrAuthOption, + bool isSubmitting, + bool showErrorMessages, + }); +} + +/// @nodoc +class _$LoginFormStateCopyWithImpl<$Res, $Val extends LoginFormState> + implements $LoginFormStateCopyWith<$Res> { + _$LoginFormStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of LoginFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? email = null, + Object? password = null, + Object? failureOrAuthOption = null, + Object? isSubmitting = null, + Object? showErrorMessages = null, + }) { + return _then( + _value.copyWith( + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + password: null == password + ? _value.password + : password // ignore: cast_nullable_to_non_nullable + as String, + failureOrAuthOption: null == failureOrAuthOption + ? _value.failureOrAuthOption + : failureOrAuthOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + showErrorMessages: null == showErrorMessages + ? _value.showErrorMessages + : showErrorMessages // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$LoginFormStateImplCopyWith<$Res> + implements $LoginFormStateCopyWith<$Res> { + factory _$$LoginFormStateImplCopyWith( + _$LoginFormStateImpl value, + $Res Function(_$LoginFormStateImpl) then, + ) = __$$LoginFormStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String email, + String password, + Option> failureOrAuthOption, + bool isSubmitting, + bool showErrorMessages, + }); +} + +/// @nodoc +class __$$LoginFormStateImplCopyWithImpl<$Res> + extends _$LoginFormStateCopyWithImpl<$Res, _$LoginFormStateImpl> + implements _$$LoginFormStateImplCopyWith<$Res> { + __$$LoginFormStateImplCopyWithImpl( + _$LoginFormStateImpl _value, + $Res Function(_$LoginFormStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LoginFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? email = null, + Object? password = null, + Object? failureOrAuthOption = null, + Object? isSubmitting = null, + Object? showErrorMessages = null, + }) { + return _then( + _$LoginFormStateImpl( + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + password: null == password + ? _value.password + : password // ignore: cast_nullable_to_non_nullable + as String, + failureOrAuthOption: null == failureOrAuthOption + ? _value.failureOrAuthOption + : failureOrAuthOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + showErrorMessages: null == showErrorMessages + ? _value.showErrorMessages + : showErrorMessages // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$LoginFormStateImpl implements _LoginFormState { + const _$LoginFormStateImpl({ + required this.email, + required this.password, + required this.failureOrAuthOption, + this.isSubmitting = false, + this.showErrorMessages = false, + }); + + @override + final String email; + @override + final String password; + @override + final Option> failureOrAuthOption; + @override + @JsonKey() + final bool isSubmitting; + @override + @JsonKey() + final bool showErrorMessages; + + @override + String toString() { + return 'LoginFormState(email: $email, password: $password, failureOrAuthOption: $failureOrAuthOption, isSubmitting: $isSubmitting, showErrorMessages: $showErrorMessages)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$LoginFormStateImpl && + (identical(other.email, email) || other.email == email) && + (identical(other.password, password) || + other.password == password) && + (identical(other.failureOrAuthOption, failureOrAuthOption) || + other.failureOrAuthOption == failureOrAuthOption) && + (identical(other.isSubmitting, isSubmitting) || + other.isSubmitting == isSubmitting) && + (identical(other.showErrorMessages, showErrorMessages) || + other.showErrorMessages == showErrorMessages)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + email, + password, + failureOrAuthOption, + isSubmitting, + showErrorMessages, + ); + + /// Create a copy of LoginFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$LoginFormStateImplCopyWith<_$LoginFormStateImpl> get copyWith => + __$$LoginFormStateImplCopyWithImpl<_$LoginFormStateImpl>( + this, + _$identity, + ); +} + +abstract class _LoginFormState implements LoginFormState { + const factory _LoginFormState({ + required final String email, + required final String password, + required final Option> failureOrAuthOption, + final bool isSubmitting, + final bool showErrorMessages, + }) = _$LoginFormStateImpl; + + @override + String get email; + @override + String get password; + @override + Option> get failureOrAuthOption; + @override + bool get isSubmitting; + @override + bool get showErrorMessages; + + /// Create a copy of LoginFormState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$LoginFormStateImplCopyWith<_$LoginFormStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/auth/login_form/login_form_event.dart b/lib/application/auth/login_form/login_form_event.dart new file mode 100644 index 0000000..4294a96 --- /dev/null +++ b/lib/application/auth/login_form/login_form_event.dart @@ -0,0 +1,9 @@ +part of 'login_form_bloc.dart'; + +@freezed +sealed class LoginFormEvent with _$LoginFormEvent { + const factory LoginFormEvent.emailChanged(String email) = _EmailChanged; + const factory LoginFormEvent.passwordChanged(String password) = + _PasswordChanged; + const factory LoginFormEvent.submitted() = _Submitted; +} diff --git a/lib/application/auth/login_form/login_form_state.dart b/lib/application/auth/login_form/login_form_state.dart new file mode 100644 index 0000000..c917b8b --- /dev/null +++ b/lib/application/auth/login_form/login_form_state.dart @@ -0,0 +1,15 @@ +part of 'login_form_bloc.dart'; + +@freezed +class LoginFormState with _$LoginFormState { + const factory LoginFormState({ + required String email, + required String password, + required Option> failureOrAuthOption, + @Default(false) bool isSubmitting, + @Default(false) bool showErrorMessages, + }) = _LoginFormState; + + factory LoginFormState.initial() => + LoginFormState(email: '', password: '', failureOrAuthOption: none()); +} diff --git a/lib/common/api/api_client.dart b/lib/common/api/api_client.dart index ca71634..95ab220 100644 --- a/lib/common/api/api_client.dart +++ b/lib/common/api/api_client.dart @@ -25,6 +25,7 @@ class ApiClient { ApiClient(this._dio, this._env) { _dio.options.baseUrl = _env.baseUrl; + _dio.options.validateStatus = (status) => status! < 500; _dio.options.connectTimeout = const Duration(seconds: 20); _dio.interceptors.add(BadNetworkErrorInterceptor()); _dio.interceptors.add(BadRequestErrorInterceptor()); diff --git a/lib/common/constant/local_storage_key.dart b/lib/common/constant/local_storage_key.dart index 612a7f3..e8a67f6 100644 --- a/lib/common/constant/local_storage_key.dart +++ b/lib/common/constant/local_storage_key.dart @@ -1,3 +1,5 @@ class LocalStorageKey { static const String lang = 'lang'; + static const String token = 'token'; + static const String user = 'user'; } diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart new file mode 100644 index 0000000..78543f2 --- /dev/null +++ b/lib/common/url/api_path.dart @@ -0,0 +1,3 @@ +class ApiPath { + static const String login = '/api/v1/auth/login'; +} diff --git a/lib/domain/auth/auth.dart b/lib/domain/auth/auth.dart new file mode 100644 index 0000000..959c3c1 --- /dev/null +++ b/lib/domain/auth/auth.dart @@ -0,0 +1,11 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:dartz/dartz.dart'; + +import '../../common/api/api_failure.dart'; + +part 'failures/auth_failure.dart'; +part 'repositories/i_auth_repository.dart'; +part 'entities/auth_entity.dart'; +part 'entities/user_entity.dart'; + +part 'auth.freezed.dart'; diff --git a/lib/domain/auth/auth.freezed.dart b/lib/domain/auth/auth.freezed.dart new file mode 100644 index 0000000..2a44bc1 --- /dev/null +++ b/lib/domain/auth/auth.freezed.dart @@ -0,0 +1,1039 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'auth.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$AuthFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AuthFailureCopyWith<$Res> { + factory $AuthFailureCopyWith( + AuthFailure value, + $Res Function(AuthFailure) then, + ) = _$AuthFailureCopyWithImpl<$Res, AuthFailure>; +} + +/// @nodoc +class _$AuthFailureCopyWithImpl<$Res, $Val extends AuthFailure> + implements $AuthFailureCopyWith<$Res> { + _$AuthFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$AuthFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'AuthFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements AuthFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$AuthFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'AuthFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements AuthFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$AuthFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'AuthFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements AuthFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of AuthFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$Auth { + String get token => throw _privateConstructorUsedError; + DateTime get expiresAt => throw _privateConstructorUsedError; + User get user => throw _privateConstructorUsedError; + + /// Create a copy of Auth + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AuthCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AuthCopyWith<$Res> { + factory $AuthCopyWith(Auth value, $Res Function(Auth) then) = + _$AuthCopyWithImpl<$Res, Auth>; + @useResult + $Res call({String token, DateTime expiresAt, User user}); + + $UserCopyWith<$Res> get user; +} + +/// @nodoc +class _$AuthCopyWithImpl<$Res, $Val extends Auth> + implements $AuthCopyWith<$Res> { + _$AuthCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Auth + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? token = null, + Object? expiresAt = null, + Object? user = null, + }) { + return _then( + _value.copyWith( + token: null == token + ? _value.token + : token // ignore: cast_nullable_to_non_nullable + as String, + expiresAt: null == expiresAt + ? _value.expiresAt + : expiresAt // ignore: cast_nullable_to_non_nullable + as DateTime, + user: null == user + ? _value.user + : user // ignore: cast_nullable_to_non_nullable + as User, + ) + as $Val, + ); + } + + /// Create a copy of Auth + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $UserCopyWith<$Res> get user { + return $UserCopyWith<$Res>(_value.user, (value) { + return _then(_value.copyWith(user: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$AuthImplCopyWith<$Res> implements $AuthCopyWith<$Res> { + factory _$$AuthImplCopyWith( + _$AuthImpl value, + $Res Function(_$AuthImpl) then, + ) = __$$AuthImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String token, DateTime expiresAt, User user}); + + @override + $UserCopyWith<$Res> get user; +} + +/// @nodoc +class __$$AuthImplCopyWithImpl<$Res> + extends _$AuthCopyWithImpl<$Res, _$AuthImpl> + implements _$$AuthImplCopyWith<$Res> { + __$$AuthImplCopyWithImpl(_$AuthImpl _value, $Res Function(_$AuthImpl) _then) + : super(_value, _then); + + /// Create a copy of Auth + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? token = null, + Object? expiresAt = null, + Object? user = null, + }) { + return _then( + _$AuthImpl( + token: null == token + ? _value.token + : token // ignore: cast_nullable_to_non_nullable + as String, + expiresAt: null == expiresAt + ? _value.expiresAt + : expiresAt // ignore: cast_nullable_to_non_nullable + as DateTime, + user: null == user + ? _value.user + : user // ignore: cast_nullable_to_non_nullable + as User, + ), + ); + } +} + +/// @nodoc + +class _$AuthImpl extends _Auth { + const _$AuthImpl({ + required this.token, + required this.expiresAt, + required this.user, + }) : super._(); + + @override + final String token; + @override + final DateTime expiresAt; + @override + final User user; + + @override + String toString() { + return 'Auth(token: $token, expiresAt: $expiresAt, user: $user)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AuthImpl && + (identical(other.token, token) || other.token == token) && + (identical(other.expiresAt, expiresAt) || + other.expiresAt == expiresAt) && + (identical(other.user, user) || other.user == user)); + } + + @override + int get hashCode => Object.hash(runtimeType, token, expiresAt, user); + + /// Create a copy of Auth + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AuthImplCopyWith<_$AuthImpl> get copyWith => + __$$AuthImplCopyWithImpl<_$AuthImpl>(this, _$identity); +} + +abstract class _Auth extends Auth { + const factory _Auth({ + required final String token, + required final DateTime expiresAt, + required final User user, + }) = _$AuthImpl; + const _Auth._() : super._(); + + @override + String get token; + @override + DateTime get expiresAt; + @override + User get user; + + /// Create a copy of Auth + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AuthImplCopyWith<_$AuthImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$User { + String get id => throw _privateConstructorUsedError; + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + String get email => throw _privateConstructorUsedError; + String get role => throw _privateConstructorUsedError; + Map get permissions => throw _privateConstructorUsedError; + bool get isActive => throw _privateConstructorUsedError; + DateTime get createdAt => throw _privateConstructorUsedError; + DateTime get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $UserCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserCopyWith<$Res> { + factory $UserCopyWith(User value, $Res Function(User) then) = + _$UserCopyWithImpl<$Res, User>; + @useResult + $Res call({ + String id, + String organizationId, + String outletId, + String name, + String email, + String role, + Map permissions, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class _$UserCopyWithImpl<$Res, $Val extends User> + implements $UserCopyWith<$Res> { + _$UserCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? outletId = null, + Object? name = null, + Object? email = null, + Object? role = null, + Object? permissions = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + role: null == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String, + permissions: null == permissions + ? _value.permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$UserImplCopyWith<$Res> implements $UserCopyWith<$Res> { + factory _$$UserImplCopyWith( + _$UserImpl value, + $Res Function(_$UserImpl) then, + ) = __$$UserImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String organizationId, + String outletId, + String name, + String email, + String role, + Map permissions, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class __$$UserImplCopyWithImpl<$Res> + extends _$UserCopyWithImpl<$Res, _$UserImpl> + implements _$$UserImplCopyWith<$Res> { + __$$UserImplCopyWithImpl(_$UserImpl _value, $Res Function(_$UserImpl) _then) + : super(_value, _then); + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? outletId = null, + Object? name = null, + Object? email = null, + Object? role = null, + Object? permissions = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _$UserImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + role: null == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String, + permissions: null == permissions + ? _value._permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$UserImpl extends _User { + const _$UserImpl({ + required this.id, + required this.organizationId, + required this.outletId, + required this.name, + required this.email, + required this.role, + required final Map permissions, + required this.isActive, + required this.createdAt, + required this.updatedAt, + }) : _permissions = permissions, + super._(); + + @override + final String id; + @override + final String organizationId; + @override + final String outletId; + @override + final String name; + @override + final String email; + @override + final String role; + final Map _permissions; + @override + Map get permissions { + if (_permissions is EqualUnmodifiableMapView) return _permissions; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_permissions); + } + + @override + final bool isActive; + @override + final DateTime createdAt; + @override + final DateTime updatedAt; + + @override + String toString() { + return 'User(id: $id, organizationId: $organizationId, outletId: $outletId, name: $name, email: $email, role: $role, permissions: $permissions, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$UserImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.name, name) || other.name == name) && + (identical(other.email, email) || other.email == email) && + (identical(other.role, role) || other.role == role) && + const DeepCollectionEquality().equals( + other._permissions, + _permissions, + ) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + outletId, + name, + email, + role, + const DeepCollectionEquality().hash(_permissions), + isActive, + createdAt, + updatedAt, + ); + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$UserImplCopyWith<_$UserImpl> get copyWith => + __$$UserImplCopyWithImpl<_$UserImpl>(this, _$identity); +} + +abstract class _User extends User { + const factory _User({ + required final String id, + required final String organizationId, + required final String outletId, + required final String name, + required final String email, + required final String role, + required final Map permissions, + required final bool isActive, + required final DateTime createdAt, + required final DateTime updatedAt, + }) = _$UserImpl; + const _User._() : super._(); + + @override + String get id; + @override + String get organizationId; + @override + String get outletId; + @override + String get name; + @override + String get email; + @override + String get role; + @override + Map get permissions; + @override + bool get isActive; + @override + DateTime get createdAt; + @override + DateTime get updatedAt; + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$UserImplCopyWith<_$UserImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/auth/entities/auth_entity.dart b/lib/domain/auth/entities/auth_entity.dart new file mode 100644 index 0000000..fdce15a --- /dev/null +++ b/lib/domain/auth/entities/auth_entity.dart @@ -0,0 +1,18 @@ +part of '../auth.dart'; + +@freezed +class Auth with _$Auth { + const Auth._(); + const factory Auth({ + required String token, + required DateTime expiresAt, + required User user, + }) = _Auth; + + /// State kosong (misalnya untuk initial state di Bloc) + factory Auth.empty() => Auth( + token: '', + expiresAt: DateTime.fromMillisecondsSinceEpoch(0), + user: User.empty(), + ); +} diff --git a/lib/domain/auth/entities/user_entity.dart b/lib/domain/auth/entities/user_entity.dart new file mode 100644 index 0000000..822ca23 --- /dev/null +++ b/lib/domain/auth/entities/user_entity.dart @@ -0,0 +1,32 @@ +part of '../auth.dart'; + +@freezed +class User with _$User { + const User._(); + + const factory User({ + required String id, + required String organizationId, + required String outletId, + required String name, + required String email, + required String role, + required Map permissions, + required bool isActive, + required DateTime createdAt, + required DateTime updatedAt, + }) = _User; + + factory User.empty() => User( + id: '', + organizationId: '', + outletId: '', + name: '', + email: '', + role: '', + permissions: {}, + isActive: false, + createdAt: DateTime.now(), + updatedAt: DateTime.now(), + ); +} diff --git a/lib/domain/auth/failures/auth_failure.dart b/lib/domain/auth/failures/auth_failure.dart new file mode 100644 index 0000000..bf304fd --- /dev/null +++ b/lib/domain/auth/failures/auth_failure.dart @@ -0,0 +1,9 @@ +part of '../auth.dart'; + +@freezed +sealed class AuthFailure with _$AuthFailure { + const factory AuthFailure.serverError(ApiFailure failure) = _ServerError; + const factory AuthFailure.unexpectedError() = _UnexpectedError; + const factory AuthFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/auth/repositories/i_auth_repository.dart b/lib/domain/auth/repositories/i_auth_repository.dart new file mode 100644 index 0000000..2cdc9f0 --- /dev/null +++ b/lib/domain/auth/repositories/i_auth_repository.dart @@ -0,0 +1,8 @@ +part of '../auth.dart'; + +abstract class IAuthRepository { + Future> login({ + required String email, + required String password, + }); +} diff --git a/lib/env.dart b/lib/env.dart index de21eb6..5a347a5 100644 --- a/lib/env.dart +++ b/lib/env.dart @@ -9,12 +9,12 @@ abstract class Env { @dev class DevEnv implements Env { @override - String get baseUrl => ''; // example value + String get baseUrl => 'https://enaklo-pos-be.altru.id'; // example value } @Injectable(as: Env) @prod class ProdEnv implements Env { @override - String get baseUrl => ''; + String get baseUrl => 'https://enaklo-pos-be.altru.id'; } diff --git a/lib/infrastructure/auth/auth_dtos.dart b/lib/infrastructure/auth/auth_dtos.dart new file mode 100644 index 0000000..69e8179 --- /dev/null +++ b/lib/infrastructure/auth/auth_dtos.dart @@ -0,0 +1,9 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/auth/auth.dart'; + +part 'auth_dtos.freezed.dart'; +part 'auth_dtos.g.dart'; + +part 'dto/auth_dto.dart'; +part 'dto/user_dto.dart'; diff --git a/lib/infrastructure/auth/auth_dtos.freezed.dart b/lib/infrastructure/auth/auth_dtos.freezed.dart new file mode 100644 index 0000000..2de3110 --- /dev/null +++ b/lib/infrastructure/auth/auth_dtos.freezed.dart @@ -0,0 +1,642 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'auth_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +AuthDto _$AuthDtoFromJson(Map json) { + return _AuthDto.fromJson(json); +} + +/// @nodoc +mixin _$AuthDto { + @JsonKey(name: 'token') + String? get token => throw _privateConstructorUsedError; + @JsonKey(name: 'expires_at') + String? get expiresAt => throw _privateConstructorUsedError; + @JsonKey(name: 'user') + UserDto? get user => throw _privateConstructorUsedError; + + /// Serializes this AuthDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of AuthDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AuthDtoCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AuthDtoCopyWith<$Res> { + factory $AuthDtoCopyWith(AuthDto value, $Res Function(AuthDto) then) = + _$AuthDtoCopyWithImpl<$Res, AuthDto>; + @useResult + $Res call({ + @JsonKey(name: 'token') String? token, + @JsonKey(name: 'expires_at') String? expiresAt, + @JsonKey(name: 'user') UserDto? user, + }); + + $UserDtoCopyWith<$Res>? get user; +} + +/// @nodoc +class _$AuthDtoCopyWithImpl<$Res, $Val extends AuthDto> + implements $AuthDtoCopyWith<$Res> { + _$AuthDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AuthDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? token = freezed, + Object? expiresAt = freezed, + Object? user = freezed, + }) { + return _then( + _value.copyWith( + token: freezed == token + ? _value.token + : token // ignore: cast_nullable_to_non_nullable + as String?, + expiresAt: freezed == expiresAt + ? _value.expiresAt + : expiresAt // ignore: cast_nullable_to_non_nullable + as String?, + user: freezed == user + ? _value.user + : user // ignore: cast_nullable_to_non_nullable + as UserDto?, + ) + as $Val, + ); + } + + /// Create a copy of AuthDto + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $UserDtoCopyWith<$Res>? get user { + if (_value.user == null) { + return null; + } + + return $UserDtoCopyWith<$Res>(_value.user!, (value) { + return _then(_value.copyWith(user: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$AuthDtoImplCopyWith<$Res> implements $AuthDtoCopyWith<$Res> { + factory _$$AuthDtoImplCopyWith( + _$AuthDtoImpl value, + $Res Function(_$AuthDtoImpl) then, + ) = __$$AuthDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'token') String? token, + @JsonKey(name: 'expires_at') String? expiresAt, + @JsonKey(name: 'user') UserDto? user, + }); + + @override + $UserDtoCopyWith<$Res>? get user; +} + +/// @nodoc +class __$$AuthDtoImplCopyWithImpl<$Res> + extends _$AuthDtoCopyWithImpl<$Res, _$AuthDtoImpl> + implements _$$AuthDtoImplCopyWith<$Res> { + __$$AuthDtoImplCopyWithImpl( + _$AuthDtoImpl _value, + $Res Function(_$AuthDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? token = freezed, + Object? expiresAt = freezed, + Object? user = freezed, + }) { + return _then( + _$AuthDtoImpl( + token: freezed == token + ? _value.token + : token // ignore: cast_nullable_to_non_nullable + as String?, + expiresAt: freezed == expiresAt + ? _value.expiresAt + : expiresAt // ignore: cast_nullable_to_non_nullable + as String?, + user: freezed == user + ? _value.user + : user // ignore: cast_nullable_to_non_nullable + as UserDto?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$AuthDtoImpl extends _AuthDto { + const _$AuthDtoImpl({ + @JsonKey(name: 'token') this.token, + @JsonKey(name: 'expires_at') this.expiresAt, + @JsonKey(name: 'user') this.user, + }) : super._(); + + factory _$AuthDtoImpl.fromJson(Map json) => + _$$AuthDtoImplFromJson(json); + + @override + @JsonKey(name: 'token') + final String? token; + @override + @JsonKey(name: 'expires_at') + final String? expiresAt; + @override + @JsonKey(name: 'user') + final UserDto? user; + + @override + String toString() { + return 'AuthDto(token: $token, expiresAt: $expiresAt, user: $user)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AuthDtoImpl && + (identical(other.token, token) || other.token == token) && + (identical(other.expiresAt, expiresAt) || + other.expiresAt == expiresAt) && + (identical(other.user, user) || other.user == user)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, token, expiresAt, user); + + /// Create a copy of AuthDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AuthDtoImplCopyWith<_$AuthDtoImpl> get copyWith => + __$$AuthDtoImplCopyWithImpl<_$AuthDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$AuthDtoImplToJson(this); + } +} + +abstract class _AuthDto extends AuthDto { + const factory _AuthDto({ + @JsonKey(name: 'token') final String? token, + @JsonKey(name: 'expires_at') final String? expiresAt, + @JsonKey(name: 'user') final UserDto? user, + }) = _$AuthDtoImpl; + const _AuthDto._() : super._(); + + factory _AuthDto.fromJson(Map json) = _$AuthDtoImpl.fromJson; + + @override + @JsonKey(name: 'token') + String? get token; + @override + @JsonKey(name: 'expires_at') + String? get expiresAt; + @override + @JsonKey(name: 'user') + UserDto? get user; + + /// Create a copy of AuthDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AuthDtoImplCopyWith<_$AuthDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +UserDto _$UserDtoFromJson(Map json) { + return _UserDto.fromJson(json); +} + +/// @nodoc +mixin _$UserDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'name') + String? get name => throw _privateConstructorUsedError; + @JsonKey(name: 'email') + String? get email => throw _privateConstructorUsedError; + @JsonKey(name: 'role') + String? get role => throw _privateConstructorUsedError; + @JsonKey(name: 'permissions') + Map? get permissions => throw _privateConstructorUsedError; + @JsonKey(name: 'is_active') + bool? get isActive => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this UserDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $UserDtoCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserDtoCopyWith<$Res> { + factory $UserDtoCopyWith(UserDto value, $Res Function(UserDto) then) = + _$UserDtoCopyWithImpl<$Res, UserDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'email') String? email, + @JsonKey(name: 'role') String? role, + @JsonKey(name: 'permissions') Map? permissions, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class _$UserDtoCopyWithImpl<$Res, $Val extends UserDto> + implements $UserDtoCopyWith<$Res> { + _$UserDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? outletId = freezed, + Object? name = freezed, + Object? email = freezed, + Object? role = freezed, + Object? permissions = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + email: freezed == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String?, + role: freezed == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String?, + permissions: freezed == permissions + ? _value.permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$UserDtoImplCopyWith<$Res> implements $UserDtoCopyWith<$Res> { + factory _$$UserDtoImplCopyWith( + _$UserDtoImpl value, + $Res Function(_$UserDtoImpl) then, + ) = __$$UserDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'email') String? email, + @JsonKey(name: 'role') String? role, + @JsonKey(name: 'permissions') Map? permissions, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class __$$UserDtoImplCopyWithImpl<$Res> + extends _$UserDtoCopyWithImpl<$Res, _$UserDtoImpl> + implements _$$UserDtoImplCopyWith<$Res> { + __$$UserDtoImplCopyWithImpl( + _$UserDtoImpl _value, + $Res Function(_$UserDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? outletId = freezed, + Object? name = freezed, + Object? email = freezed, + Object? role = freezed, + Object? permissions = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$UserDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + email: freezed == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String?, + role: freezed == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String?, + permissions: freezed == permissions + ? _value._permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$UserDtoImpl extends _UserDto { + const _$UserDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'name') this.name, + @JsonKey(name: 'email') this.email, + @JsonKey(name: 'role') this.role, + @JsonKey(name: 'permissions') final Map? permissions, + @JsonKey(name: 'is_active') this.isActive, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + }) : _permissions = permissions, + super._(); + + factory _$UserDtoImpl.fromJson(Map json) => + _$$UserDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'name') + final String? name; + @override + @JsonKey(name: 'email') + final String? email; + @override + @JsonKey(name: 'role') + final String? role; + final Map? _permissions; + @override + @JsonKey(name: 'permissions') + Map? get permissions { + final value = _permissions; + if (value == null) return null; + if (_permissions is EqualUnmodifiableMapView) return _permissions; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'is_active') + final bool? isActive; + @override + @JsonKey(name: 'created_at') + final String? createdAt; + @override + @JsonKey(name: 'updated_at') + final String? updatedAt; + + @override + String toString() { + return 'UserDto(id: $id, organizationId: $organizationId, outletId: $outletId, name: $name, email: $email, role: $role, permissions: $permissions, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$UserDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.name, name) || other.name == name) && + (identical(other.email, email) || other.email == email) && + (identical(other.role, role) || other.role == role) && + const DeepCollectionEquality().equals( + other._permissions, + _permissions, + ) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + outletId, + name, + email, + role, + const DeepCollectionEquality().hash(_permissions), + isActive, + createdAt, + updatedAt, + ); + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$UserDtoImplCopyWith<_$UserDtoImpl> get copyWith => + __$$UserDtoImplCopyWithImpl<_$UserDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$UserDtoImplToJson(this); + } +} + +abstract class _UserDto extends UserDto { + const factory _UserDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'name') final String? name, + @JsonKey(name: 'email') final String? email, + @JsonKey(name: 'role') final String? role, + @JsonKey(name: 'permissions') final Map? permissions, + @JsonKey(name: 'is_active') final bool? isActive, + @JsonKey(name: 'created_at') final String? createdAt, + @JsonKey(name: 'updated_at') final String? updatedAt, + }) = _$UserDtoImpl; + const _UserDto._() : super._(); + + factory _UserDto.fromJson(Map json) = _$UserDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'name') + String? get name; + @override + @JsonKey(name: 'email') + String? get email; + @override + @JsonKey(name: 'role') + String? get role; + @override + @JsonKey(name: 'permissions') + Map? get permissions; + @override + @JsonKey(name: 'is_active') + bool? get isActive; + @override + @JsonKey(name: 'created_at') + String? get createdAt; + @override + @JsonKey(name: 'updated_at') + String? get updatedAt; + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$UserDtoImplCopyWith<_$UserDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/auth/auth_dtos.g.dart b/lib/infrastructure/auth/auth_dtos.g.dart new file mode 100644 index 0000000..795ecd9 --- /dev/null +++ b/lib/infrastructure/auth/auth_dtos.g.dart @@ -0,0 +1,51 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'auth_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$AuthDtoImpl _$$AuthDtoImplFromJson(Map json) => + _$AuthDtoImpl( + token: json['token'] as String?, + expiresAt: json['expires_at'] as String?, + user: json['user'] == null + ? null + : UserDto.fromJson(json['user'] as Map), + ); + +Map _$$AuthDtoImplToJson(_$AuthDtoImpl instance) => + { + 'token': instance.token, + 'expires_at': instance.expiresAt, + 'user': instance.user, + }; + +_$UserDtoImpl _$$UserDtoImplFromJson(Map json) => + _$UserDtoImpl( + id: json['id'] as String?, + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + name: json['name'] as String?, + email: json['email'] as String?, + role: json['role'] as String?, + permissions: json['permissions'] as Map?, + isActive: json['is_active'] as bool?, + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, + ); + +Map _$$UserDtoImplToJson(_$UserDtoImpl instance) => + { + 'id': instance.id, + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'name': instance.name, + 'email': instance.email, + 'role': instance.role, + 'permissions': instance.permissions, + 'is_active': instance.isActive, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, + }; diff --git a/lib/infrastructure/auth/datasources/local_data_provider.dart b/lib/infrastructure/auth/datasources/local_data_provider.dart new file mode 100644 index 0000000..0b146a6 --- /dev/null +++ b/lib/infrastructure/auth/datasources/local_data_provider.dart @@ -0,0 +1,54 @@ +import 'dart:convert'; + +import 'package:injectable/injectable.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../../../common/constant/local_storage_key.dart'; +import '../../../domain/auth/auth.dart'; +import '../auth_dtos.dart'; + +@injectable +class AuthLocalDataProvider { + final SharedPreferences _sharedPreferences; + + AuthLocalDataProvider(this._sharedPreferences); + + Future saveToken(String token) async { + await _sharedPreferences.setString(LocalStorageKey.token, token); + } + + Future getToken() async { + return _sharedPreferences.getString(LocalStorageKey.token); + } + + Future deleteToken() async { + await _sharedPreferences.remove(LocalStorageKey.token); + } + + Future hasToken() async { + return _sharedPreferences.containsKey(LocalStorageKey.token); + } + + Future saveCurrentUser(UserDto user) async { + final userJsonString = jsonEncode(user.toJson()); + await _sharedPreferences.setString(LocalStorageKey.user, userJsonString); + } + + Future currentUser() async { + final userString = _sharedPreferences.getString(LocalStorageKey.user); + if (userString == null) return User.empty(); + + final Map userMap = jsonDecode(userString); + final userDto = UserDto.fromJson(userMap); + return userDto.toDomain(); + } + + Future deleteCurrentUser() async { + await _sharedPreferences.remove(LocalStorageKey.user); + } + + Future deleteAllAuth() async { + await _sharedPreferences.remove(LocalStorageKey.token); + await _sharedPreferences.remove(LocalStorageKey.user); + } +} diff --git a/lib/infrastructure/auth/datasources/remote_data_provider.dart b/lib/infrastructure/auth/datasources/remote_data_provider.dart new file mode 100644 index 0000000..41033f3 --- /dev/null +++ b/lib/infrastructure/auth/datasources/remote_data_provider.dart @@ -0,0 +1,44 @@ +import 'dart:developer'; + +import 'package:injectable/injectable.dart'; +import 'package:data_channel/data_channel.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/auth/auth.dart'; +import '../auth_dtos.dart'; + +@injectable +class AuthRemoteDataProvider { + final ApiClient _apiClient; + final String _logName = "AuthRemoteDataProvider"; + + AuthRemoteDataProvider(this._apiClient); + + Future> login({ + required String email, + required String password, + }) async { + try { + final response = await _apiClient.post( + ApiPath.login, + data: {'email': email, 'password': password}, + ); + + if (response.data['code'] == 401) { + return DC.error( + AuthFailure.serverError( + ApiFailure.unauthorized('Incorrect email or password'), + ), + ); + } + + final dto = AuthDto.fromJson(response.data['data']); + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('login', name: _logName, error: e, stackTrace: s); + return DC.error(AuthFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/auth/dto/auth_dto.dart b/lib/infrastructure/auth/dto/auth_dto.dart new file mode 100644 index 0000000..8ee5a68 --- /dev/null +++ b/lib/infrastructure/auth/dto/auth_dto.dart @@ -0,0 +1,23 @@ +part of '../auth_dtos.dart'; + +@freezed +class AuthDto with _$AuthDto { + const AuthDto._(); + + const factory AuthDto({ + @JsonKey(name: 'token') String? token, + @JsonKey(name: 'expires_at') String? expiresAt, + @JsonKey(name: 'user') UserDto? user, + }) = _AuthDto; + + factory AuthDto.fromJson(Map json) => + _$AuthDtoFromJson(json); + + Auth toDomain() => Auth( + token: token ?? '', + expiresAt: expiresAt != null + ? DateTime.parse(expiresAt ?? "") + : DateTime.fromMillisecondsSinceEpoch(0), + user: user?.toDomain() ?? User.empty(), + ); +} diff --git a/lib/infrastructure/auth/dto/user_dto.dart b/lib/infrastructure/auth/dto/user_dto.dart new file mode 100644 index 0000000..be57e5d --- /dev/null +++ b/lib/infrastructure/auth/dto/user_dto.dart @@ -0,0 +1,39 @@ +part of '../auth_dtos.dart'; + +@freezed +class UserDto with _$UserDto { + const UserDto._(); + + const factory UserDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'email') String? email, + @JsonKey(name: 'role') String? role, + @JsonKey(name: 'permissions') Map? permissions, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }) = _UserDto; + + factory UserDto.fromJson(Map json) => + _$UserDtoFromJson(json); + + User toDomain() => User( + id: id ?? '', + organizationId: organizationId ?? '', + outletId: outletId ?? '', + name: name ?? '', + email: email ?? '', + role: role ?? '', + permissions: permissions ?? {}, + isActive: isActive ?? false, + createdAt: createdAt != null + ? DateTime.parse(createdAt ?? "") + : DateTime.fromMillisecondsSinceEpoch(0), + updatedAt: updatedAt != null + ? DateTime.parse(updatedAt ?? "") + : DateTime.fromMillisecondsSinceEpoch(0), + ); +} diff --git a/lib/infrastructure/auth/repositories/auth_repository.dart b/lib/infrastructure/auth/repositories/auth_repository.dart new file mode 100644 index 0000000..9faa273 --- /dev/null +++ b/lib/infrastructure/auth/repositories/auth_repository.dart @@ -0,0 +1,45 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/auth/auth.dart'; +import '../datasources/local_data_provider.dart'; +import '../datasources/remote_data_provider.dart'; + +@Injectable(as: IAuthRepository) +class AuthRepository implements IAuthRepository { + final AuthLocalDataProvider _localDataProvider; + final AuthRemoteDataProvider _remoteDataProvider; + + final String _logName = 'AuthRepository'; + + AuthRepository(this._localDataProvider, this._remoteDataProvider); + + @override + Future> login({ + required String email, + required String password, + }) async { + try { + final result = await _remoteDataProvider.login( + email: email, + password: password, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + await _localDataProvider.saveToken(auth.token); + await _localDataProvider.saveCurrentUser(result.data!.user!); + + return right(auth); + } catch (e, s) { + log('loginError', name: _logName, error: e, stackTrace: s); + return left(const AuthFailure.unexpectedError()); + } + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index b62556e..4a98ad4 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -9,6 +9,8 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:apskel_owner_flutter/application/auth/login_form/login_form_bloc.dart' + as _i775; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; @@ -20,7 +22,14 @@ import 'package:apskel_owner_flutter/common/di/di_shared_preferences.dart' as _i402; import 'package:apskel_owner_flutter/common/network/network_client.dart' as _i543; +import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; import 'package:apskel_owner_flutter/env.dart' as _i6; +import 'package:apskel_owner_flutter/infrastructure/auth/datasources/local_data_provider.dart' + as _i991; +import 'package:apskel_owner_flutter/infrastructure/auth/datasources/remote_data_provider.dart' + as _i17; +import 'package:apskel_owner_flutter/infrastructure/auth/repositories/auth_repository.dart' + as _i1035; import 'package:apskel_owner_flutter/presentation/router/app_router.dart' as _i258; import 'package:connectivity_plus/connectivity_plus.dart' as _i895; @@ -63,10 +72,25 @@ extension GetItInjectableX on _i174.GetIt { () => _i455.LanguageBloc(gh<_i460.SharedPreferences>()), ); gh.factory<_i6.Env>(() => _i6.DevEnv(), registerFor: {_dev}); + gh.factory<_i991.AuthLocalDataProvider>( + () => _i991.AuthLocalDataProvider(gh<_i460.SharedPreferences>()), + ); gh.lazySingleton<_i115.ApiClient>( () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); + gh.factory<_i17.AuthRemoteDataProvider>( + () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), + ); + gh.factory<_i49.IAuthRepository>( + () => _i1035.AuthRepository( + gh<_i991.AuthLocalDataProvider>(), + gh<_i17.AuthRemoteDataProvider>(), + ), + ); + gh.factory<_i775.LoginFormBloc>( + () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), + ); return this; } } diff --git a/lib/presentation/components/field/password_text_form_field.dart b/lib/presentation/components/field/password_text_form_field.dart index 7da90f0..ef285eb 100644 --- a/lib/presentation/components/field/password_text_form_field.dart +++ b/lib/presentation/components/field/password_text_form_field.dart @@ -8,6 +8,7 @@ class AppPasswordTextFormField extends StatefulWidget { this.hintText, required this.prefixIcon, this.validator, + this.onChanged, }); final TextEditingController? controller; @@ -15,6 +16,7 @@ class AppPasswordTextFormField extends StatefulWidget { final String? hintText; final IconData prefixIcon; final String? Function(String?)? validator; + final Function(String)? onChanged; @override State createState() => @@ -42,6 +44,7 @@ class _AppPasswordTextFormFieldState extends State { cursorColor: AppColor.primary, obscureText: _obscurePassword, style: AppStyle.md.copyWith(color: AppColor.textPrimary), + onChanged: widget.onChanged, decoration: InputDecoration( hintText: widget.hintText, prefixIcon: LineIcon( diff --git a/lib/presentation/components/field/text_form_field.dart b/lib/presentation/components/field/text_form_field.dart index 2400c8e..4b2fcc3 100644 --- a/lib/presentation/components/field/text_form_field.dart +++ b/lib/presentation/components/field/text_form_field.dart @@ -8,6 +8,7 @@ class AppTextFormField extends StatelessWidget { this.hintText, required this.prefixIcon, this.validator, + this.onChanged, }); final TextEditingController? controller; @@ -15,6 +16,7 @@ class AppTextFormField extends StatelessWidget { final String? hintText; final IconData prefixIcon; final String? Function(String?)? validator; + final Function(String)? onChanged; @override Widget build(BuildContext context) { @@ -33,6 +35,7 @@ class AppTextFormField extends StatelessWidget { controller: controller, keyboardType: TextInputType.emailAddress, cursorColor: AppColor.primary, + onChanged: onChanged, style: AppStyle.md.copyWith(color: AppColor.textPrimary), decoration: InputDecoration( hintText: hintText, diff --git a/lib/presentation/components/toast/flushbar.dart b/lib/presentation/components/toast/flushbar.dart index 6e1aa52..55732a9 100644 --- a/lib/presentation/components/toast/flushbar.dart +++ b/lib/presentation/components/toast/flushbar.dart @@ -2,6 +2,7 @@ import 'package:another_flushbar/flushbar.dart'; import 'package:flutter/material.dart'; import '../../../common/theme/theme.dart'; +import '../../../domain/auth/auth.dart'; class AppFlushbar { static void showSuccess(BuildContext context, String message) { @@ -40,4 +41,14 @@ class AppFlushbar { margin: const EdgeInsets.all(12), ).show(context); } + + static void showAuthFailureToast(BuildContext context, AuthFailure failure) => + showError( + context, + failure.map( + serverError: (value) => value.failure.toStringFormatted(context), + dynamicErrorMessage: (value) => value.erroMessage, + unexpectedError: (value) => 'Error has eccoured', + ), + ); } diff --git a/lib/presentation/pages/auth/login/login_page.dart b/lib/presentation/pages/auth/login/login_page.dart index dd11d8f..4046c24 100644 --- a/lib/presentation/pages/auth/login/login_page.dart +++ b/lib/presentation/pages/auth/login/login_page.dart @@ -1,30 +1,32 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'dart:math' as math; +import '../../../../application/auth/login_form/login_form_bloc.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../injection.dart'; import '../../../components/button/button.dart'; import '../../../components/spacer/spacer.dart'; +import '../../../components/toast/flushbar.dart'; import '../../../router/app_router.gr.dart'; import 'widgets/email_field.dart'; import 'widgets/password_field.dart'; @RoutePage() -class LoginPage extends StatefulWidget { +class LoginPage extends StatefulWidget implements AutoRouteWrapper { const LoginPage({super.key}); @override State createState() => _LoginPageState(); + + @override + Widget wrappedRoute(BuildContext context) => + BlocProvider(create: (_) => getIt(), child: this); } class _LoginPageState extends State with TickerProviderStateMixin { - final _formKey = GlobalKey(); - final _emailController = TextEditingController(); - final _passwordController = TextEditingController(); - - bool _isLoading = false; - late AnimationController _fadeController; late AnimationController _slideController; late AnimationController _backgroundController; @@ -77,9 +79,6 @@ class _LoginPageState extends State with TickerProviderStateMixin { CurvedAnimation(parent: _floatingController, curve: Curves.easeInOut), ); - _emailController.text = 'test@example.com'; - _passwordController.text = 'password'; - _fadeController.forward(); _slideController.forward(); } @@ -90,78 +89,88 @@ class _LoginPageState extends State with TickerProviderStateMixin { _slideController.dispose(); _backgroundController.dispose(); _floatingController.dispose(); - _emailController.dispose(); - _passwordController.dispose(); super.dispose(); } Future _handleLogin() async { - if (_formKey.currentState!.validate()) { - setState(() { - _isLoading = true; - }); - - // Simulasi proses login - await Future.delayed(const Duration(seconds: 2)); - - setState(() { - _isLoading = false; - }); - - context.router.replace(const MainRoute()); - } + context.read().add(LoginFormEvent.submitted()); } @override Widget build(BuildContext context) { - return Scaffold( - body: AnimatedBuilder( - animation: Listenable.merge([ - _backgroundController, - _floatingController, - ]), - builder: (context, child) { - return Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: AppColor.primaryGradient, + return BlocListener( + listenWhen: (previous, current) => + previous.failureOrAuthOption != current.failureOrAuthOption, + listener: (context, state) { + state.failureOrAuthOption.fold( + () => null, + (either) => either.fold( + (f) => AppFlushbar.showAuthFailureToast(context, f), + (user) { + if (context.mounted) { + context.router.replace(const MainRoute()); + } + }, + ), + ); + }, + child: Scaffold( + body: AnimatedBuilder( + animation: Listenable.merge([ + _backgroundController, + _floatingController, + ]), + builder: (context, child) { + return Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: AppColor.primaryGradient, + ), ), - ), - child: Stack( - children: [ - // Animated background elements - _buildAnimatedBackground(), + child: Stack( + children: [ + // Animated background elements + _buildAnimatedBackground(), - // Main content - SafeArea( - child: Center( - child: SingleChildScrollView( - padding: EdgeInsets.symmetric( - horizontal: AppValue.padding, - ), - child: FadeTransition( - opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - _buildLogo(context), - SpaceHeight(48), - _buildLoginCard(context), - ], + // Main content + SafeArea( + child: Center( + child: SingleChildScrollView( + padding: EdgeInsets.symmetric( + horizontal: AppValue.padding, + ), + child: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: BlocBuilder( + builder: (context, state) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _buildLogo(context), + SpaceHeight(48), + _buildLoginCard( + context, + state.isSubmitting, + state.showErrorMessages, + ), + ], + ); + }, + ), ), ), ), ), ), - ), - ], - ), - ); - }, + ], + ), + ); + }, + ), ), ); } @@ -312,7 +321,11 @@ class _LoginPageState extends State with TickerProviderStateMixin { ); } - Widget _buildLoginCard(BuildContext context) { + Widget _buildLoginCard( + BuildContext context, + bool isLoading, + bool showErrorMessages, + ) { return Container( width: double.infinity, padding: const EdgeInsets.symmetric(vertical: 32, horizontal: 24), @@ -335,17 +348,20 @@ class _LoginPageState extends State with TickerProviderStateMixin { ], ), child: Form( - key: _formKey, + autovalidateMode: showErrorMessages + ? AutovalidateMode.always + : AutovalidateMode.disabled, + child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - LoginEmailField(controller: _emailController), + LoginEmailField(), const SpaceHeight(24), - LoginPasswordField(controller: _passwordController), + LoginPasswordField(), const SpaceHeight(16), _buildForgetPassword(context), const SpaceHeight(32), - _buildLoginButton(), + _buildLoginButton(isLoading), ], ), ), @@ -368,11 +384,11 @@ class _LoginPageState extends State with TickerProviderStateMixin { ); } - Widget _buildLoginButton() { + Widget _buildLoginButton(bool isLoading) { return AppElevatedButton( text: context.lang.sign_in, - isLoading: _isLoading, - onPressed: _isLoading ? null : _handleLogin, + isLoading: isLoading, + onPressed: _handleLogin, ); } } diff --git a/lib/presentation/pages/auth/login/widgets/email_field.dart b/lib/presentation/pages/auth/login/widgets/email_field.dart index f4bca26..0c041b6 100644 --- a/lib/presentation/pages/auth/login/widgets/email_field.dart +++ b/lib/presentation/pages/auth/login/widgets/email_field.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../../application/auth/login_form/login_form_bloc.dart'; import '../../../../../common/extension/extension.dart'; import '../../../../../common/validator/validator.dart'; import '../../../../components/field/field.dart'; class LoginEmailField extends StatelessWidget { - final TextEditingController? controller; - const LoginEmailField({super.key, this.controller}); + const LoginEmailField({super.key}); @override Widget build(BuildContext context) { @@ -15,8 +16,10 @@ class LoginEmailField extends StatelessWidget { title: context.lang.email, hintText: context.lang.email_placeholder, prefixIcon: LineIcons.envelope, - validator: AppValidator.validateEmail, - controller: controller, + validator: (value) => + AppValidator.validateEmail(context.read().state.email), + onChanged: (value) => + context.read().add(LoginFormEvent.emailChanged(value)), ); } } diff --git a/lib/presentation/pages/auth/login/widgets/password_field.dart b/lib/presentation/pages/auth/login/widgets/password_field.dart index 5ab2436..5ddab86 100644 --- a/lib/presentation/pages/auth/login/widgets/password_field.dart +++ b/lib/presentation/pages/auth/login/widgets/password_field.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../../application/auth/login_form/login_form_bloc.dart'; import '../../../../../common/extension/extension.dart'; import '../../../../../common/validator/validator.dart'; import '../../../../components/field/field.dart'; class LoginPasswordField extends StatelessWidget { - final TextEditingController controller; - const LoginPasswordField({super.key, required this.controller}); + const LoginPasswordField({super.key}); @override Widget build(BuildContext context) { @@ -15,8 +16,12 @@ class LoginPasswordField extends StatelessWidget { title: context.lang.password, prefixIcon: LineIcons.lock, hintText: context.lang.password_placeholder, - validator: AppValidator.validatePassword, - controller: controller, + validator: (value) => AppValidator.validatePassword( + context.read().state.password, + ), + onChanged: (value) => context.read().add( + LoginFormEvent.passwordChanged(value), + ), ); } } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index a530708..f7fd053 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -150,7 +150,7 @@ class LoginRoute extends _i17.PageRouteInfo { static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i7.LoginPage(); + return _i17.WrappedRoute(child: const _i7.LoginPage()); }, ); } From edf067369d94923d322c5f808cabcc37a9b8df49 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 17:48:49 +0700 Subject: [PATCH 039/108] feat: auth --- lib/application/auth/auth_bloc.dart | 49 ++ lib/application/auth/auth_bloc.freezed.dart | 806 ++++++++++++++++++ lib/application/auth/auth_event.dart | 6 + lib/application/auth/auth_state.dart | 26 + .../auth/repositories/i_auth_repository.dart | 2 + .../auth/repositories/auth_repository.dart | 16 + lib/injection.config.dart | 4 + lib/presentation/app_widget.dart | 8 +- .../pages/splash/splash_page.dart | 168 ++-- 9 files changed, 1006 insertions(+), 79 deletions(-) create mode 100644 lib/application/auth/auth_bloc.dart create mode 100644 lib/application/auth/auth_bloc.freezed.dart create mode 100644 lib/application/auth/auth_event.dart create mode 100644 lib/application/auth/auth_state.dart diff --git a/lib/application/auth/auth_bloc.dart b/lib/application/auth/auth_bloc.dart new file mode 100644 index 0000000..1b7bed5 --- /dev/null +++ b/lib/application/auth/auth_bloc.dart @@ -0,0 +1,49 @@ +import 'package:bloc/bloc.dart'; +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../domain/auth/auth.dart'; + +part 'auth_event.dart'; +part 'auth_state.dart'; +part 'auth_bloc.freezed.dart'; + +@injectable +class AuthBloc extends Bloc { + final IAuthRepository _repository; + AuthBloc(this._repository) : super(AuthState.initial()) { + on(_onAuthEvent); + } + + Future _onAuthEvent(AuthEvent event, Emitter emit) { + return event.map( + fetchCurrentUser: (e) async { + emit(state.copyWith(failureOption: none())); + + final token = await _repository.hasToken(); + + final failureOrAuth = await _repository.currentUser(); + + failureOrAuth.fold( + (f) => emit( + state.copyWith( + failureOption: optionOf(f), + status: token + ? AuthStatus.authenticated() + : AuthStatus.unauthenticated(), + ), + ), + (user) => emit( + state.copyWith( + user: user, + status: token + ? AuthStatus.authenticated() + : AuthStatus.unauthenticated(), + ), + ), + ); + }, + ); + } +} diff --git a/lib/application/auth/auth_bloc.freezed.dart b/lib/application/auth/auth_bloc.freezed.dart new file mode 100644 index 0000000..7fd3e02 --- /dev/null +++ b/lib/application/auth/auth_bloc.freezed.dart @@ -0,0 +1,806 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'auth_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$AuthEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetchCurrentUser, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchCurrentUser, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchCurrentUser, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchCurrentUser value) fetchCurrentUser, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchCurrentUser value)? fetchCurrentUser, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchCurrentUser value)? fetchCurrentUser, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AuthEventCopyWith<$Res> { + factory $AuthEventCopyWith(AuthEvent value, $Res Function(AuthEvent) then) = + _$AuthEventCopyWithImpl<$Res, AuthEvent>; +} + +/// @nodoc +class _$AuthEventCopyWithImpl<$Res, $Val extends AuthEvent> + implements $AuthEventCopyWith<$Res> { + _$AuthEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AuthEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchCurrentUserImplCopyWith<$Res> { + factory _$$FetchCurrentUserImplCopyWith( + _$FetchCurrentUserImpl value, + $Res Function(_$FetchCurrentUserImpl) then, + ) = __$$FetchCurrentUserImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchCurrentUserImplCopyWithImpl<$Res> + extends _$AuthEventCopyWithImpl<$Res, _$FetchCurrentUserImpl> + implements _$$FetchCurrentUserImplCopyWith<$Res> { + __$$FetchCurrentUserImplCopyWithImpl( + _$FetchCurrentUserImpl _value, + $Res Function(_$FetchCurrentUserImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchCurrentUserImpl implements _FetchCurrentUser { + const _$FetchCurrentUserImpl(); + + @override + String toString() { + return 'AuthEvent.fetchCurrentUser()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchCurrentUserImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() fetchCurrentUser, + }) { + return fetchCurrentUser(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchCurrentUser, + }) { + return fetchCurrentUser?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchCurrentUser, + required TResult orElse(), + }) { + if (fetchCurrentUser != null) { + return fetchCurrentUser(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchCurrentUser value) fetchCurrentUser, + }) { + return fetchCurrentUser(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchCurrentUser value)? fetchCurrentUser, + }) { + return fetchCurrentUser?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchCurrentUser value)? fetchCurrentUser, + required TResult orElse(), + }) { + if (fetchCurrentUser != null) { + return fetchCurrentUser(this); + } + return orElse(); + } +} + +abstract class _FetchCurrentUser implements AuthEvent { + const factory _FetchCurrentUser() = _$FetchCurrentUserImpl; +} + +/// @nodoc +mixin _$AuthState { + User get user => throw _privateConstructorUsedError; + AuthStatus get status => throw _privateConstructorUsedError; + Option get failureOption => throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of AuthState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AuthStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AuthStateCopyWith<$Res> { + factory $AuthStateCopyWith(AuthState value, $Res Function(AuthState) then) = + _$AuthStateCopyWithImpl<$Res, AuthState>; + @useResult + $Res call({ + User user, + AuthStatus status, + Option failureOption, + bool isFetching, + }); + + $UserCopyWith<$Res> get user; + $AuthStatusCopyWith<$Res> get status; +} + +/// @nodoc +class _$AuthStateCopyWithImpl<$Res, $Val extends AuthState> + implements $AuthStateCopyWith<$Res> { + _$AuthStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AuthState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? user = null, + Object? status = null, + Object? failureOption = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + user: null == user + ? _value.user + : user // ignore: cast_nullable_to_non_nullable + as User, + status: null == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as AuthStatus, + failureOption: null == failureOption + ? _value.failureOption + : failureOption // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of AuthState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $UserCopyWith<$Res> get user { + return $UserCopyWith<$Res>(_value.user, (value) { + return _then(_value.copyWith(user: value) as $Val); + }); + } + + /// Create a copy of AuthState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $AuthStatusCopyWith<$Res> get status { + return $AuthStatusCopyWith<$Res>(_value.status, (value) { + return _then(_value.copyWith(status: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$AuthStateImplCopyWith<$Res> + implements $AuthStateCopyWith<$Res> { + factory _$$AuthStateImplCopyWith( + _$AuthStateImpl value, + $Res Function(_$AuthStateImpl) then, + ) = __$$AuthStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + User user, + AuthStatus status, + Option failureOption, + bool isFetching, + }); + + @override + $UserCopyWith<$Res> get user; + @override + $AuthStatusCopyWith<$Res> get status; +} + +/// @nodoc +class __$$AuthStateImplCopyWithImpl<$Res> + extends _$AuthStateCopyWithImpl<$Res, _$AuthStateImpl> + implements _$$AuthStateImplCopyWith<$Res> { + __$$AuthStateImplCopyWithImpl( + _$AuthStateImpl _value, + $Res Function(_$AuthStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? user = null, + Object? status = null, + Object? failureOption = null, + Object? isFetching = null, + }) { + return _then( + _$AuthStateImpl( + user: null == user + ? _value.user + : user // ignore: cast_nullable_to_non_nullable + as User, + status: null == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as AuthStatus, + failureOption: null == failureOption + ? _value.failureOption + : failureOption // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$AuthStateImpl extends _AuthState { + const _$AuthStateImpl({ + required this.user, + this.status = const AuthStatus.initial(), + required this.failureOption, + this.isFetching = false, + }) : super._(); + + @override + final User user; + @override + @JsonKey() + final AuthStatus status; + @override + final Option failureOption; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'AuthState(user: $user, status: $status, failureOption: $failureOption, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AuthStateImpl && + (identical(other.user, user) || other.user == user) && + (identical(other.status, status) || other.status == status) && + (identical(other.failureOption, failureOption) || + other.failureOption == failureOption) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => + Object.hash(runtimeType, user, status, failureOption, isFetching); + + /// Create a copy of AuthState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AuthStateImplCopyWith<_$AuthStateImpl> get copyWith => + __$$AuthStateImplCopyWithImpl<_$AuthStateImpl>(this, _$identity); +} + +abstract class _AuthState extends AuthState { + const factory _AuthState({ + required final User user, + final AuthStatus status, + required final Option failureOption, + final bool isFetching, + }) = _$AuthStateImpl; + const _AuthState._() : super._(); + + @override + User get user; + @override + AuthStatus get status; + @override + Option get failureOption; + @override + bool get isFetching; + + /// Create a copy of AuthState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AuthStateImplCopyWith<_$AuthStateImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$AuthStatus { + @optionalTypeArgs + TResult when({ + required TResult Function() authenticated, + required TResult Function() unauthenticated, + required TResult Function() initial, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? authenticated, + TResult? Function()? unauthenticated, + TResult? Function()? initial, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? authenticated, + TResult Function()? unauthenticated, + TResult Function()? initial, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Authenticated value) authenticated, + required TResult Function(_Unauthenticated value) unauthenticated, + required TResult Function(_Initial value) initial, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Authenticated value)? authenticated, + TResult? Function(_Unauthenticated value)? unauthenticated, + TResult? Function(_Initial value)? initial, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Authenticated value)? authenticated, + TResult Function(_Unauthenticated value)? unauthenticated, + TResult Function(_Initial value)? initial, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AuthStatusCopyWith<$Res> { + factory $AuthStatusCopyWith( + AuthStatus value, + $Res Function(AuthStatus) then, + ) = _$AuthStatusCopyWithImpl<$Res, AuthStatus>; +} + +/// @nodoc +class _$AuthStatusCopyWithImpl<$Res, $Val extends AuthStatus> + implements $AuthStatusCopyWith<$Res> { + _$AuthStatusCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AuthStatus + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$AuthenticatedImplCopyWith<$Res> { + factory _$$AuthenticatedImplCopyWith( + _$AuthenticatedImpl value, + $Res Function(_$AuthenticatedImpl) then, + ) = __$$AuthenticatedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$AuthenticatedImplCopyWithImpl<$Res> + extends _$AuthStatusCopyWithImpl<$Res, _$AuthenticatedImpl> + implements _$$AuthenticatedImplCopyWith<$Res> { + __$$AuthenticatedImplCopyWithImpl( + _$AuthenticatedImpl _value, + $Res Function(_$AuthenticatedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthStatus + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$AuthenticatedImpl implements _Authenticated { + const _$AuthenticatedImpl(); + + @override + String toString() { + return 'AuthStatus.authenticated()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$AuthenticatedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() authenticated, + required TResult Function() unauthenticated, + required TResult Function() initial, + }) { + return authenticated(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? authenticated, + TResult? Function()? unauthenticated, + TResult? Function()? initial, + }) { + return authenticated?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? authenticated, + TResult Function()? unauthenticated, + TResult Function()? initial, + required TResult orElse(), + }) { + if (authenticated != null) { + return authenticated(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Authenticated value) authenticated, + required TResult Function(_Unauthenticated value) unauthenticated, + required TResult Function(_Initial value) initial, + }) { + return authenticated(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Authenticated value)? authenticated, + TResult? Function(_Unauthenticated value)? unauthenticated, + TResult? Function(_Initial value)? initial, + }) { + return authenticated?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Authenticated value)? authenticated, + TResult Function(_Unauthenticated value)? unauthenticated, + TResult Function(_Initial value)? initial, + required TResult orElse(), + }) { + if (authenticated != null) { + return authenticated(this); + } + return orElse(); + } +} + +abstract class _Authenticated implements AuthStatus { + const factory _Authenticated() = _$AuthenticatedImpl; +} + +/// @nodoc +abstract class _$$UnauthenticatedImplCopyWith<$Res> { + factory _$$UnauthenticatedImplCopyWith( + _$UnauthenticatedImpl value, + $Res Function(_$UnauthenticatedImpl) then, + ) = __$$UnauthenticatedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnauthenticatedImplCopyWithImpl<$Res> + extends _$AuthStatusCopyWithImpl<$Res, _$UnauthenticatedImpl> + implements _$$UnauthenticatedImplCopyWith<$Res> { + __$$UnauthenticatedImplCopyWithImpl( + _$UnauthenticatedImpl _value, + $Res Function(_$UnauthenticatedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthStatus + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnauthenticatedImpl implements _Unauthenticated { + const _$UnauthenticatedImpl(); + + @override + String toString() { + return 'AuthStatus.unauthenticated()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnauthenticatedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() authenticated, + required TResult Function() unauthenticated, + required TResult Function() initial, + }) { + return unauthenticated(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? authenticated, + TResult? Function()? unauthenticated, + TResult? Function()? initial, + }) { + return unauthenticated?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? authenticated, + TResult Function()? unauthenticated, + TResult Function()? initial, + required TResult orElse(), + }) { + if (unauthenticated != null) { + return unauthenticated(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Authenticated value) authenticated, + required TResult Function(_Unauthenticated value) unauthenticated, + required TResult Function(_Initial value) initial, + }) { + return unauthenticated(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Authenticated value)? authenticated, + TResult? Function(_Unauthenticated value)? unauthenticated, + TResult? Function(_Initial value)? initial, + }) { + return unauthenticated?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Authenticated value)? authenticated, + TResult Function(_Unauthenticated value)? unauthenticated, + TResult Function(_Initial value)? initial, + required TResult orElse(), + }) { + if (unauthenticated != null) { + return unauthenticated(this); + } + return orElse(); + } +} + +abstract class _Unauthenticated implements AuthStatus { + const factory _Unauthenticated() = _$UnauthenticatedImpl; +} + +/// @nodoc +abstract class _$$InitialImplCopyWith<$Res> { + factory _$$InitialImplCopyWith( + _$InitialImpl value, + $Res Function(_$InitialImpl) then, + ) = __$$InitialImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$InitialImplCopyWithImpl<$Res> + extends _$AuthStatusCopyWithImpl<$Res, _$InitialImpl> + implements _$$InitialImplCopyWith<$Res> { + __$$InitialImplCopyWithImpl( + _$InitialImpl _value, + $Res Function(_$InitialImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AuthStatus + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$InitialImpl implements _Initial { + const _$InitialImpl(); + + @override + String toString() { + return 'AuthStatus.initial()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$InitialImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() authenticated, + required TResult Function() unauthenticated, + required TResult Function() initial, + }) { + return initial(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? authenticated, + TResult? Function()? unauthenticated, + TResult? Function()? initial, + }) { + return initial?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? authenticated, + TResult Function()? unauthenticated, + TResult Function()? initial, + required TResult orElse(), + }) { + if (initial != null) { + return initial(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Authenticated value) authenticated, + required TResult Function(_Unauthenticated value) unauthenticated, + required TResult Function(_Initial value) initial, + }) { + return initial(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Authenticated value)? authenticated, + TResult? Function(_Unauthenticated value)? unauthenticated, + TResult? Function(_Initial value)? initial, + }) { + return initial?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Authenticated value)? authenticated, + TResult Function(_Unauthenticated value)? unauthenticated, + TResult Function(_Initial value)? initial, + required TResult orElse(), + }) { + if (initial != null) { + return initial(this); + } + return orElse(); + } +} + +abstract class _Initial implements AuthStatus { + const factory _Initial() = _$InitialImpl; +} diff --git a/lib/application/auth/auth_event.dart b/lib/application/auth/auth_event.dart new file mode 100644 index 0000000..6c3c293 --- /dev/null +++ b/lib/application/auth/auth_event.dart @@ -0,0 +1,6 @@ +part of 'auth_bloc.dart'; + +@freezed +class AuthEvent with _$AuthEvent { + const factory AuthEvent.fetchCurrentUser() = _FetchCurrentUser; +} diff --git a/lib/application/auth/auth_state.dart b/lib/application/auth/auth_state.dart new file mode 100644 index 0000000..483740d --- /dev/null +++ b/lib/application/auth/auth_state.dart @@ -0,0 +1,26 @@ +part of 'auth_bloc.dart'; + +@freezed +class AuthState with _$AuthState { + const AuthState._(); + + const factory AuthState({ + required User user, + @Default(AuthStatus.initial()) AuthStatus status, + required Option failureOption, + @Default(false) bool isFetching, + }) = _AuthState; + + factory AuthState.initial() => + AuthState(user: User.empty(), failureOption: none()); + + bool get isAuthenticated => status == const AuthStatus.authenticated(); + bool get isInitial => status == const AuthStatus.initial(); +} + +@freezed +sealed class AuthStatus with _$AuthStatus { + const factory AuthStatus.authenticated() = _Authenticated; + const factory AuthStatus.unauthenticated() = _Unauthenticated; + const factory AuthStatus.initial() = _Initial; +} diff --git a/lib/domain/auth/repositories/i_auth_repository.dart b/lib/domain/auth/repositories/i_auth_repository.dart index 2cdc9f0..22adf9d 100644 --- a/lib/domain/auth/repositories/i_auth_repository.dart +++ b/lib/domain/auth/repositories/i_auth_repository.dart @@ -5,4 +5,6 @@ abstract class IAuthRepository { required String email, required String password, }); + Future hasToken(); + Future> currentUser(); } diff --git a/lib/infrastructure/auth/repositories/auth_repository.dart b/lib/infrastructure/auth/repositories/auth_repository.dart index 9faa273..4682b67 100644 --- a/lib/infrastructure/auth/repositories/auth_repository.dart +++ b/lib/infrastructure/auth/repositories/auth_repository.dart @@ -42,4 +42,20 @@ class AuthRepository implements IAuthRepository { return left(const AuthFailure.unexpectedError()); } } + + @override + Future> currentUser() async { + try { + User user = await _localDataProvider.currentUser(); + return right(user); + } catch (e, s) { + log('currentUserError', name: _logName, error: e, stackTrace: s); + return left(const AuthFailure.unexpectedError()); + } + } + + @override + Future hasToken() async { + return await _localDataProvider.hasToken(); + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 4a98ad4..c5bfd6f 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -9,6 +9,7 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:apskel_owner_flutter/application/auth/auth_bloc.dart' as _i945; import 'package:apskel_owner_flutter/application/auth/login_form/login_form_bloc.dart' as _i775; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' @@ -91,6 +92,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); + gh.factory<_i945.AuthBloc>( + () => _i945.AuthBloc(gh<_i49.IAuthRepository>()), + ); return this; } } diff --git a/lib/presentation/app_widget.dart b/lib/presentation/app_widget.dart index 1dda198..9ff9ce6 100644 --- a/lib/presentation/app_widget.dart +++ b/lib/presentation/app_widget.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import '../application/auth/auth_bloc.dart'; import '../application/language/language_bloc.dart'; import '../common/theme/theme.dart'; import '../common/constant/app_constant.dart'; @@ -21,8 +22,11 @@ class _AppWidgetState extends State { @override Widget build(BuildContext context) { - return BlocProvider( - create: (context) => getIt(), + return MultiBlocProvider( + providers: [ + BlocProvider(create: (context) => getIt()), + BlocProvider(create: (context) => getIt()), + ], child: BlocBuilder( builder: (context, state) { return MaterialApp.router( diff --git a/lib/presentation/pages/splash/splash_page.dart b/lib/presentation/pages/splash/splash_page.dart index a7706e8..46024f7 100644 --- a/lib/presentation/pages/splash/splash_page.dart +++ b/lib/presentation/pages/splash/splash_page.dart @@ -1,7 +1,9 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:package_info_plus/package_info_plus.dart'; +import '../../../application/auth/auth_bloc.dart'; import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../injection.dart'; @@ -77,15 +79,10 @@ class _SplashPageState extends State with TickerProviderStateMixin { // Navigate to home screen after all animations complete await Future.delayed(const Duration(milliseconds: 2000)); if (mounted) { - _navigateToHome(); + context.read().add(const AuthEvent.fetchCurrentUser()); } } - void _navigateToHome() { - // Uncomment dan sesuaikan dengan route yang ada - context.router.replace(const LoginRoute()); - } - @override void dispose() { _logoController.dispose(); @@ -97,80 +94,97 @@ class _SplashPageState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { final packageInfo = getIt(); - return Scaffold( - body: AnimatedBuilder( - animation: Listenable.merge([ - _logoController, - _versionController, - _backgroundController, - ]), - builder: (context, child) { - // Clamp values to prevent opacity errors - final logoOpacity = _logoAnimation.value.clamp(0.0, 1.0); - final versionOpacity = _versionAnimation.value.clamp(0.0, 1.0); - final backgroundOpacity = _backgroundAnimation.value.clamp(0.0, 1.0); + return BlocListener( + listenWhen: (previous, current) => previous.status != current.status, + listener: (context, state) { + if (state.isAuthenticated) { + context.router.replace(const MainRoute()); + } else { + context.router.replace(const LoginRoute()); + } + }, + child: Scaffold( + body: AnimatedBuilder( + animation: Listenable.merge([ + _logoController, + _versionController, + _backgroundController, + ]), + builder: (context, child) { + // Clamp values to prevent opacity errors + final logoOpacity = _logoAnimation.value.clamp(0.0, 1.0); + final versionOpacity = _versionAnimation.value.clamp(0.0, 1.0); + final backgroundOpacity = _backgroundAnimation.value.clamp( + 0.0, + 1.0, + ); - return Container( - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - AppColor.primaryWithOpacity(backgroundOpacity), - AppColor.primaryWithOpacity(backgroundOpacity * 0.8), + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + AppColor.primaryWithOpacity(backgroundOpacity), + AppColor.primaryWithOpacity(backgroundOpacity * 0.8), + ], + ), + ), + child: Stack( + children: [ + // Logo di tengah + Center( + child: Transform.scale( + scale: logoOpacity, + child: Opacity( + opacity: logoOpacity, + child: Container( + width: 150, + height: 150, + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 30, + offset: const Offset(0, 15), + ), + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular( + AppValue.radius, + ), + child: Assets.images.logo.image(fit: BoxFit.cover), + ), + ), + ), + ), + ), + + // Version di bagian bawah + Positioned( + bottom: 60, + left: 0, + right: 0, + child: Transform.translate( + offset: Offset(0, 20 * (1 - versionOpacity)), + child: Opacity( + opacity: versionOpacity, + child: Text( + '${context.lang.version} ${packageInfo.version}+${packageInfo.buildNumber}', + style: AppStyle.md.copyWith( + color: AppColor.textLight, + ), + textAlign: TextAlign.center, + ), + ), + ), + ), ], ), - ), - child: Stack( - children: [ - // Logo di tengah - Center( - child: Transform.scale( - scale: logoOpacity, - child: Opacity( - opacity: logoOpacity, - child: Container( - width: 150, - height: 150, - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.1), - blurRadius: 30, - offset: const Offset(0, 15), - ), - ], - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(AppValue.radius), - child: Assets.images.logo.image(fit: BoxFit.cover), - ), - ), - ), - ), - ), - - // Version di bagian bawah - Positioned( - bottom: 60, - left: 0, - right: 0, - child: Transform.translate( - offset: Offset(0, 20 * (1 - versionOpacity)), - child: Opacity( - opacity: versionOpacity, - child: Text( - '${context.lang.version} ${packageInfo.version}+${packageInfo.buildNumber}', - style: AppStyle.md.copyWith(color: AppColor.textLight), - textAlign: TextAlign.center, - ), - ), - ), - ), - ], - ), - ); - }, + ); + }, + ), ), ); } From e1bde24a83b348db6fccb098510ca3b85b4645c1 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 19:05:43 +0700 Subject: [PATCH 040/108] feat: login --- lib/presentation/pages/auth/login/login_page.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/presentation/pages/auth/login/login_page.dart b/lib/presentation/pages/auth/login/login_page.dart index 4046c24..76b5e2a 100644 --- a/lib/presentation/pages/auth/login/login_page.dart +++ b/lib/presentation/pages/auth/login/login_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'dart:math' as math; +import '../../../../application/auth/auth_bloc.dart'; import '../../../../application/auth/login_form/login_form_bloc.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; @@ -108,6 +109,7 @@ class _LoginPageState extends State with TickerProviderStateMixin { (f) => AppFlushbar.showAuthFailureToast(context, f), (user) { if (context.mounted) { + context.read().add(AuthEvent.fetchCurrentUser()); context.router.replace(const MainRoute()); } }, From f138e1dcc9b11998052e5e6845efd04c56d7fe34 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 19:29:21 +0700 Subject: [PATCH 041/108] feat: logout --- .../auth/logout_form/logout_form_bloc.dart | 36 ++ .../logout_form/logout_form_bloc.freezed.dart | 335 ++++++++++++++++++ .../auth/logout_form/logout_form_event.dart | 6 + .../auth/logout_form/logout_form_state.dart | 12 + lib/common/api/api_client.dart | 9 +- lib/common/url/api_path.dart | 2 + .../auth/repositories/i_auth_repository.dart | 1 + .../datasources/remote_data_provider.dart | 11 + .../auth/repositories/auth_repository.dart | 16 + lib/injection.config.dart | 15 +- .../pages/profile/profile_page.dart | 161 +++++---- .../pages/profile/widgets/danger_zone.dart | 6 +- 12 files changed, 532 insertions(+), 78 deletions(-) create mode 100644 lib/application/auth/logout_form/logout_form_bloc.dart create mode 100644 lib/application/auth/logout_form/logout_form_bloc.freezed.dart create mode 100644 lib/application/auth/logout_form/logout_form_event.dart create mode 100644 lib/application/auth/logout_form/logout_form_state.dart diff --git a/lib/application/auth/logout_form/logout_form_bloc.dart b/lib/application/auth/logout_form/logout_form_bloc.dart new file mode 100644 index 0000000..89a9959 --- /dev/null +++ b/lib/application/auth/logout_form/logout_form_bloc.dart @@ -0,0 +1,36 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/auth/auth.dart'; + +part 'logout_form_event.dart'; +part 'logout_form_state.dart'; +part 'logout_form_bloc.freezed.dart'; + +@injectable +class LogoutFormBloc extends Bloc { + final IAuthRepository _repository; + LogoutFormBloc(this._repository) : super(LogoutFormState.initial()) { + on(_onLogoutFormEvent); + } + + Future _onLogoutFormEvent( + LogoutFormEvent event, + Emitter emit, + ) { + return event.map( + submitted: (e) async { + emit(state.copyWith(isSubmitting: true, failureOrAuthOption: none())); + final failureOrAuth = await _repository.logout(); + emit( + state.copyWith( + isSubmitting: false, + failureOrAuthOption: optionOf(failureOrAuth), + ), + ); + }, + ); + } +} diff --git a/lib/application/auth/logout_form/logout_form_bloc.freezed.dart b/lib/application/auth/logout_form/logout_form_bloc.freezed.dart new file mode 100644 index 0000000..2bdad02 --- /dev/null +++ b/lib/application/auth/logout_form/logout_form_bloc.freezed.dart @@ -0,0 +1,335 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'logout_form_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$LogoutFormEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Submitted value) submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Submitted value)? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LogoutFormEventCopyWith<$Res> { + factory $LogoutFormEventCopyWith( + LogoutFormEvent value, + $Res Function(LogoutFormEvent) then, + ) = _$LogoutFormEventCopyWithImpl<$Res, LogoutFormEvent>; +} + +/// @nodoc +class _$LogoutFormEventCopyWithImpl<$Res, $Val extends LogoutFormEvent> + implements $LogoutFormEventCopyWith<$Res> { + _$LogoutFormEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of LogoutFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$SubmittedImplCopyWith<$Res> { + factory _$$SubmittedImplCopyWith( + _$SubmittedImpl value, + $Res Function(_$SubmittedImpl) then, + ) = __$$SubmittedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$SubmittedImplCopyWithImpl<$Res> + extends _$LogoutFormEventCopyWithImpl<$Res, _$SubmittedImpl> + implements _$$SubmittedImplCopyWith<$Res> { + __$$SubmittedImplCopyWithImpl( + _$SubmittedImpl _value, + $Res Function(_$SubmittedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LogoutFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$SubmittedImpl implements _Submitted { + const _$SubmittedImpl(); + + @override + String toString() { + return 'LogoutFormEvent.submitted()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$SubmittedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() submitted, + }) { + return submitted(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? submitted, + }) { + return submitted?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Submitted value) submitted, + }) { + return submitted(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Submitted value)? submitted, + }) { + return submitted?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(this); + } + return orElse(); + } +} + +abstract class _Submitted implements LogoutFormEvent { + const factory _Submitted() = _$SubmittedImpl; +} + +/// @nodoc +mixin _$LogoutFormState { + Option> get failureOrAuthOption => + throw _privateConstructorUsedError; + bool get isSubmitting => throw _privateConstructorUsedError; + + /// Create a copy of LogoutFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $LogoutFormStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LogoutFormStateCopyWith<$Res> { + factory $LogoutFormStateCopyWith( + LogoutFormState value, + $Res Function(LogoutFormState) then, + ) = _$LogoutFormStateCopyWithImpl<$Res, LogoutFormState>; + @useResult + $Res call({ + Option> failureOrAuthOption, + bool isSubmitting, + }); +} + +/// @nodoc +class _$LogoutFormStateCopyWithImpl<$Res, $Val extends LogoutFormState> + implements $LogoutFormStateCopyWith<$Res> { + _$LogoutFormStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of LogoutFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failureOrAuthOption = null, Object? isSubmitting = null}) { + return _then( + _value.copyWith( + failureOrAuthOption: null == failureOrAuthOption + ? _value.failureOrAuthOption + : failureOrAuthOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$LogoutFormStateImplCopyWith<$Res> + implements $LogoutFormStateCopyWith<$Res> { + factory _$$LogoutFormStateImplCopyWith( + _$LogoutFormStateImpl value, + $Res Function(_$LogoutFormStateImpl) then, + ) = __$$LogoutFormStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + Option> failureOrAuthOption, + bool isSubmitting, + }); +} + +/// @nodoc +class __$$LogoutFormStateImplCopyWithImpl<$Res> + extends _$LogoutFormStateCopyWithImpl<$Res, _$LogoutFormStateImpl> + implements _$$LogoutFormStateImplCopyWith<$Res> { + __$$LogoutFormStateImplCopyWithImpl( + _$LogoutFormStateImpl _value, + $Res Function(_$LogoutFormStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of LogoutFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failureOrAuthOption = null, Object? isSubmitting = null}) { + return _then( + _$LogoutFormStateImpl( + failureOrAuthOption: null == failureOrAuthOption + ? _value.failureOrAuthOption + : failureOrAuthOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$LogoutFormStateImpl implements _LogoutFormState { + const _$LogoutFormStateImpl({ + required this.failureOrAuthOption, + this.isSubmitting = false, + }); + + @override + final Option> failureOrAuthOption; + @override + @JsonKey() + final bool isSubmitting; + + @override + String toString() { + return 'LogoutFormState(failureOrAuthOption: $failureOrAuthOption, isSubmitting: $isSubmitting)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$LogoutFormStateImpl && + (identical(other.failureOrAuthOption, failureOrAuthOption) || + other.failureOrAuthOption == failureOrAuthOption) && + (identical(other.isSubmitting, isSubmitting) || + other.isSubmitting == isSubmitting)); + } + + @override + int get hashCode => + Object.hash(runtimeType, failureOrAuthOption, isSubmitting); + + /// Create a copy of LogoutFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$LogoutFormStateImplCopyWith<_$LogoutFormStateImpl> get copyWith => + __$$LogoutFormStateImplCopyWithImpl<_$LogoutFormStateImpl>( + this, + _$identity, + ); +} + +abstract class _LogoutFormState implements LogoutFormState { + const factory _LogoutFormState({ + required final Option> failureOrAuthOption, + final bool isSubmitting, + }) = _$LogoutFormStateImpl; + + @override + Option> get failureOrAuthOption; + @override + bool get isSubmitting; + + /// Create a copy of LogoutFormState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$LogoutFormStateImplCopyWith<_$LogoutFormStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/auth/logout_form/logout_form_event.dart b/lib/application/auth/logout_form/logout_form_event.dart new file mode 100644 index 0000000..606bf91 --- /dev/null +++ b/lib/application/auth/logout_form/logout_form_event.dart @@ -0,0 +1,6 @@ +part of 'logout_form_bloc.dart'; + +@freezed +class LogoutFormEvent with _$LogoutFormEvent { + const factory LogoutFormEvent.submitted() = _Submitted; +} diff --git a/lib/application/auth/logout_form/logout_form_state.dart b/lib/application/auth/logout_form/logout_form_state.dart new file mode 100644 index 0000000..613c5e1 --- /dev/null +++ b/lib/application/auth/logout_form/logout_form_state.dart @@ -0,0 +1,12 @@ +part of 'logout_form_bloc.dart'; + +@freezed +class LogoutFormState with _$LogoutFormState { + const factory LogoutFormState({ + required Option> failureOrAuthOption, + @Default(false) bool isSubmitting, + }) = _LogoutFormState; + + factory LogoutFormState.initial() => + LogoutFormState(failureOrAuthOption: none(), isSubmitting: false); +} diff --git a/lib/common/api/api_client.dart b/lib/common/api/api_client.dart index 95ab220..31f914a 100644 --- a/lib/common/api/api_client.dart +++ b/lib/common/api/api_client.dart @@ -2,8 +2,10 @@ import 'package:awesome_dio_interceptor/awesome_dio_interceptor.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:injectable/injectable.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import '../../env.dart'; +import '../constant/local_storage_key.dart'; import 'api_failure.dart'; import 'errors/bad_network_error.dart'; import 'errors/bad_request_error.dart'; @@ -22,11 +24,16 @@ import 'interceptors/unauthorized_interceptor.dart'; class ApiClient { final Dio _dio; final Env _env; + final SharedPreferences _preferences; - ApiClient(this._dio, this._env) { + ApiClient(this._dio, this._env, this._preferences) { _dio.options.baseUrl = _env.baseUrl; _dio.options.validateStatus = (status) => status! < 500; _dio.options.connectTimeout = const Duration(seconds: 20); + _dio.options.headers = { + 'authorization': + 'Bearer ${_preferences.getString(LocalStorageKey.token)}', + }; _dio.interceptors.add(BadNetworkErrorInterceptor()); _dio.interceptors.add(BadRequestErrorInterceptor()); _dio.interceptors.add(InternalServerErrorInterceptor()); diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 78543f2..e3ef4ea 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -1,3 +1,5 @@ class ApiPath { + // Auth static const String login = '/api/v1/auth/login'; + static const String logout = '/api/v1/auth/logout'; } diff --git a/lib/domain/auth/repositories/i_auth_repository.dart b/lib/domain/auth/repositories/i_auth_repository.dart index 22adf9d..4bb8594 100644 --- a/lib/domain/auth/repositories/i_auth_repository.dart +++ b/lib/domain/auth/repositories/i_auth_repository.dart @@ -7,4 +7,5 @@ abstract class IAuthRepository { }); Future hasToken(); Future> currentUser(); + Future> logout(); } diff --git a/lib/infrastructure/auth/datasources/remote_data_provider.dart b/lib/infrastructure/auth/datasources/remote_data_provider.dart index 41033f3..779f4ba 100644 --- a/lib/infrastructure/auth/datasources/remote_data_provider.dart +++ b/lib/infrastructure/auth/datasources/remote_data_provider.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:dartz/dartz.dart'; import 'package:injectable/injectable.dart'; import 'package:data_channel/data_channel.dart'; @@ -41,4 +42,14 @@ class AuthRemoteDataProvider { return DC.error(AuthFailure.serverError(e)); } } + + Future> logout() async { + try { + await _apiClient.post(ApiPath.logout); + return DC.data(unit); + } on ApiFailure catch (e, s) { + log('login', name: _logName, error: e, stackTrace: s); + return DC.error(AuthFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/auth/repositories/auth_repository.dart b/lib/infrastructure/auth/repositories/auth_repository.dart index 4682b67..c615114 100644 --- a/lib/infrastructure/auth/repositories/auth_repository.dart +++ b/lib/infrastructure/auth/repositories/auth_repository.dart @@ -58,4 +58,20 @@ class AuthRepository implements IAuthRepository { Future hasToken() async { return await _localDataProvider.hasToken(); } + + @override + Future> logout() async { + try { + final result = await _remoteDataProvider.logout(); + if (result.hasError) { + return left(result.error!); + } + + await _localDataProvider.deleteAllAuth(); + return right(unit); + } catch (e, s) { + log('logoutError', name: _logName, error: e, stackTrace: s); + return left(const AuthFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index c5bfd6f..7cd1c34 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -12,6 +12,8 @@ import 'package:apskel_owner_flutter/application/auth/auth_bloc.dart' as _i945; import 'package:apskel_owner_flutter/application/auth/login_form/login_form_bloc.dart' as _i775; +import 'package:apskel_owner_flutter/application/auth/logout_form/logout_form_bloc.dart' + as _i574; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; @@ -76,10 +78,14 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i991.AuthLocalDataProvider>( () => _i991.AuthLocalDataProvider(gh<_i460.SharedPreferences>()), ); - gh.lazySingleton<_i115.ApiClient>( - () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), - ); gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); + gh.lazySingleton<_i115.ApiClient>( + () => _i115.ApiClient( + gh<_i361.Dio>(), + gh<_i6.Env>(), + gh<_i460.SharedPreferences>(), + ), + ); gh.factory<_i17.AuthRemoteDataProvider>( () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), ); @@ -95,6 +101,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i945.AuthBloc>( () => _i945.AuthBloc(gh<_i49.IAuthRepository>()), ); + gh.factory<_i574.LogoutFormBloc>( + () => _i574.LogoutFormBloc(gh<_i49.IAuthRepository>()), + ); return this; } } diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 0949d45..3422a74 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -1,10 +1,15 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../application/auth/logout_form/logout_form_bloc.dart'; import '../../../common/theme/theme.dart'; +import '../../../injection.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; +import '../../components/toast/flushbar.dart'; +import '../../router/app_router.gr.dart'; import 'widgets/account_info.dart'; import 'widgets/app_setting.dart'; import 'widgets/business_setting.dart'; @@ -13,88 +18,98 @@ import 'widgets/header.dart'; import 'widgets/support.dart'; @RoutePage() -class ProfilePage extends StatefulWidget { +class ProfilePage extends StatelessWidget implements AutoRouteWrapper { const ProfilePage({super.key}); - @override - State createState() => _ProfilePageState(); -} - -class _ProfilePageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - SliverAppBar( - backgroundColor: AppColor.primary, - elevation: 0, - pinned: true, - expandedHeight: 264.0, - flexibleSpace: LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) { - // Calculate the collapse ratio - final double top = constraints.biggest.height; - final double collapsedHeight = - MediaQuery.of(context).padding.top + kToolbarHeight; - final double expandedHeight = 264.0; - final double shrinkRatio = - ((expandedHeight - top) / - (expandedHeight - collapsedHeight)) - .clamp(0.0, 1.0); + return BlocListener( + listener: (context, state) { + state.failureOrAuthOption.fold( + () => null, + (either) => either.fold( + (f) => AppFlushbar.showAuthFailureToast(context, f), + (_) => context.router.replace(const LoginRoute()), + ), + ); + }, + child: Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + SliverAppBar( + backgroundColor: AppColor.primary, + elevation: 0, + pinned: true, + expandedHeight: 264.0, + flexibleSpace: LayoutBuilder( + builder: (BuildContext context, BoxConstraints constraints) { + // Calculate the collapse ratio + final double top = constraints.biggest.height; + final double collapsedHeight = + MediaQuery.of(context).padding.top + kToolbarHeight; + final double expandedHeight = 264.0; + final double shrinkRatio = + ((expandedHeight - top) / + (expandedHeight - collapsedHeight)) + .clamp(0.0, 1.0); - return FlexibleSpaceBar( - background: ProfileHeader(), - titlePadding: const EdgeInsets.only( - left: 20, - right: 12, - bottom: 16, - ), - title: Opacity( - opacity: shrinkRatio, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Profile', - style: AppStyle.xl.copyWith( - fontWeight: FontWeight.w700, - fontSize: 18, - letterSpacing: -0.5, - color: AppColor.white, - ), - ), - ActionIconButton( - onTap: () {}, - icon: LineIcons.userEdit, - ), - ], + return FlexibleSpaceBar( + background: ProfileHeader(), + titlePadding: const EdgeInsets.only( + left: 20, + right: 12, + bottom: 16, ), - ), - ); - }, + title: Opacity( + opacity: shrinkRatio, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Profile', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.w700, + fontSize: 18, + letterSpacing: -0.5, + color: AppColor.white, + ), + ), + ActionIconButton( + onTap: () {}, + icon: LineIcons.userEdit, + ), + ], + ), + ), + ); + }, + ), ), - ), - SliverToBoxAdapter( - child: Column( - children: [ - const SpaceHeight(20), - ProfileAccountInfo(), - const SpaceHeight(12), - ProfileBusinessSetting(), - const SpaceHeight(12), - ProfileAppSetting(), - const SpaceHeight(12), - ProfileSupport(), - const SpaceHeight(12), - ProfileDangerZone(), - const SpaceHeight(30), - ], + SliverToBoxAdapter( + child: Column( + children: [ + const SpaceHeight(20), + ProfileAccountInfo(), + const SpaceHeight(12), + ProfileBusinessSetting(), + const SpaceHeight(12), + ProfileAppSetting(), + const SpaceHeight(12), + ProfileSupport(), + const SpaceHeight(12), + ProfileDangerZone(), + const SpaceHeight(30), + ], + ), ), - ), - ], + ], + ), ), ); } + + @override + Widget wrappedRoute(BuildContext context) => + BlocProvider(create: (_) => getIt(), child: this); } diff --git a/lib/presentation/pages/profile/widgets/danger_zone.dart b/lib/presentation/pages/profile/widgets/danger_zone.dart index 376247f..9d8c873 100644 --- a/lib/presentation/pages/profile/widgets/danger_zone.dart +++ b/lib/presentation/pages/profile/widgets/danger_zone.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../../application/auth/logout_form/logout_form_bloc.dart'; import '../../../../common/theme/theme.dart'; import '../../../components/spacer/spacer.dart'; import 'profile_tile.dart'; @@ -49,7 +51,9 @@ class ProfileDangerZone extends StatelessWidget { subtitle: 'Sign out from your account', iconColor: AppColor.error, textColor: AppColor.error, - onTap: () {}, + onTap: () { + context.read().add(LogoutFormEvent.submitted()); + }, ), ], ), From 5387d7b7a6ae12eefed1f57bb11961b50ab419f2 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 19:47:40 +0700 Subject: [PATCH 042/108] feat: global loading overlay --- lib/presentation/app_widget.dart | 37 ++++++++++++------- .../components/loading/loading_overlay.dart | 23 ++++++++++++ .../pages/profile/profile_page.dart | 36 +++++++++++++----- pubspec.lock | 16 ++++++++ pubspec.yaml | 1 + 5 files changed, 89 insertions(+), 24 deletions(-) create mode 100644 lib/presentation/components/loading/loading_overlay.dart diff --git a/lib/presentation/app_widget.dart b/lib/presentation/app_widget.dart index 9ff9ce6..b43f852 100644 --- a/lib/presentation/app_widget.dart +++ b/lib/presentation/app_widget.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:loader_overlay/loader_overlay.dart'; import '../application/auth/auth_bloc.dart'; import '../application/language/language_bloc.dart'; @@ -7,6 +8,7 @@ import '../common/theme/theme.dart'; import '../common/constant/app_constant.dart'; import '../injection.dart'; import '../l10n/app_localizations.dart'; +import 'components/loading/loading_overlay.dart'; import 'router/app_router.dart'; import 'router/app_router_observer.dart'; @@ -27,20 +29,27 @@ class _AppWidgetState extends State { BlocProvider(create: (context) => getIt()), BlocProvider(create: (context) => getIt()), ], - child: BlocBuilder( - builder: (context, state) { - return MaterialApp.router( - debugShowCheckedModeBanner: false, - title: AppConstant.appName, - locale: state.language.locale, - supportedLocales: AppLocalizations.supportedLocales, - localizationsDelegates: AppLocalizations.localizationsDelegates, - theme: ThemeApp.theme, - routerConfig: _appRouter.config( - navigatorObservers: () => [AppRouteObserver()], - ), - ); - }, + child: GlobalLoaderOverlay( + useDefaultLoading: false, + overlayWidgetBuilder: (progress) => LoadingOverlay(), + overlayColor: AppColor.black.withOpacity(0.35), + child: BlocBuilder( + builder: (context, state) { + return MaterialApp.router( + debugShowCheckedModeBanner: false, + title: AppConstant.appName, + locale: state.language.locale, + supportedLocales: AppLocalizations.supportedLocales, + localizationsDelegates: AppLocalizations.localizationsDelegates, + theme: ThemeApp.theme, + routerConfig: _appRouter.config( + navigatorObservers: () => [ + AppRouteObserver(), + ], + ), + ); + }, + ), ), ); } diff --git a/lib/presentation/components/loading/loading_overlay.dart b/lib/presentation/components/loading/loading_overlay.dart new file mode 100644 index 0000000..a711771 --- /dev/null +++ b/lib/presentation/components/loading/loading_overlay.dart @@ -0,0 +1,23 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; + +import '../../../common/theme/theme.dart'; + +class LoadingOverlay extends StatelessWidget { + const LoadingOverlay({super.key}); + + @override + Widget build(BuildContext context) { + return Center( + child: Container( + width: 64, + height: 64, + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(AppValue.radius), + ), + child: SpinKitCircle(color: AppColor.primary, size: 32.0), + ), + ); + } +} diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 3422a74..8d1a577 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import 'package:loader_overlay/loader_overlay.dart'; import '../../../application/auth/logout_form/logout_form_bloc.dart'; import '../../../common/theme/theme.dart'; @@ -23,16 +24,31 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { @override Widget build(BuildContext context) { - return BlocListener( - listener: (context, state) { - state.failureOrAuthOption.fold( - () => null, - (either) => either.fold( - (f) => AppFlushbar.showAuthFailureToast(context, f), - (_) => context.router.replace(const LoginRoute()), - ), - ); - }, + return MultiBlocListener( + listeners: [ + BlocListener( + listener: (context, state) { + state.failureOrAuthOption.fold( + () => null, + (either) => either.fold( + (f) => AppFlushbar.showAuthFailureToast(context, f), + (_) => context.router.replace(const LoginRoute()), + ), + ); + }, + ), + BlocListener( + listenWhen: (previous, current) => + previous.isSubmitting != current.isSubmitting, + listener: (context, state) { + if (state.isSubmitting) { + context.loaderOverlay.show(); + } else { + context.loaderOverlay.hide(); + } + }, + ), + ], child: Scaffold( backgroundColor: AppColor.background, body: CustomScrollView( diff --git a/pubspec.lock b/pubspec.lock index 2b762bf..c9f4571 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -73,6 +73,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" + back_button_interceptor: + dependency: transitive + description: + name: back_button_interceptor + sha256: b85977faabf4aeb95164b3b8bf81784bed4c54ea1aef90a036ab6927ecf80c5a + url: "https://pub.dev" + source: hosted + version: "8.0.4" bloc: dependency: transitive description: @@ -741,6 +749,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.1.1" + loader_overlay: + dependency: "direct main" + description: + name: loader_overlay + sha256: "285c9ccab9a42a392ba948bd0b14376fd0ee9ddd7b63e3018bcd54460fd3e021" + url: "https://pub.dev" + source: hosted + version: "5.0.0" logging: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 725ca40..c3e9f7f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,6 +39,7 @@ dependencies: image_picker: ^1.1.2 table_calendar: ^3.2.0 package_info_plus: ^8.3.1 + loader_overlay: ^5.0.0 dev_dependencies: flutter_test: From e7525238fe0b2e78c03e1b63d3ce4cb520bcb135 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sat, 16 Aug 2025 19:56:45 +0700 Subject: [PATCH 043/108] feat: current user --- .../pages/home/widgets/header.dart | 86 ++++++----- .../pages/profile/profile_page.dart | 146 +++++++++--------- .../pages/profile/widgets/account_info.dart | 36 ++--- .../pages/profile/widgets/header.dart | 9 +- 4 files changed, 139 insertions(+), 138 deletions(-) diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart index 2ba3973..dc74720 100644 --- a/lib/presentation/pages/home/widgets/header.dart +++ b/lib/presentation/pages/home/widgets/header.dart @@ -1,9 +1,13 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'dart:math' as math; +import '../../../../application/auth/auth_bloc.dart'; +import '../../../../common/constant/app_constant.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/painter/wave_painter.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/auth/auth.dart'; import '../../../components/spacer/spacer.dart'; class HomeHeader extends StatefulWidget { @@ -102,43 +106,47 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { - return AnimatedBuilder( - animation: Listenable.merge([ - _particleController, - _waveController, - _breathController, - ]), - builder: (context, child) { - return Container( - height: 280, - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.primary, - AppColor.primaryLight, - AppColor.primaryLight.withOpacity(0.8), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - stops: const [0.0, 0.7, 1.0], - ), - boxShadow: [ - BoxShadow( - color: AppColor.primary.withOpacity(0.3), - blurRadius: 20, - offset: const Offset(0, 10), + return BlocBuilder( + builder: (context, state) { + return AnimatedBuilder( + animation: Listenable.merge([ + _particleController, + _waveController, + _breathController, + ]), + builder: (context, child) { + return Container( + height: 280, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary, + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + stops: const [0.0, 0.7, 1.0], + ), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], ), - ], - ), - child: Stack( - children: [ - // Enhanced animated background - _buildAnimatedBackground(), + child: Stack( + children: [ + // Enhanced animated background + _buildAnimatedBackground(), - // Main content - SafeArea(child: _buildContent(context)), - ], - ), + // Main content + SafeArea(child: _buildContent(context, state.user)), + ], + ), + ); + }, ); }, ); @@ -255,7 +263,7 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ); } - Widget _buildContent(BuildContext context) { + Widget _buildContent(BuildContext context, User user) { String greeting(BuildContext context) { final hour = DateTime.now().hour; @@ -291,7 +299,7 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'AppSkel POS Owner', + AppConstant.appName, style: AppStyle.lg.copyWith( color: AppColor.white.withOpacity(0.9), fontWeight: FontWeight.w600, @@ -307,7 +315,7 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ), const SpaceHeight(2), Text( - 'Manager', + user.role.toTitleCase, style: AppStyle.sm.copyWith( color: AppColor.white.withOpacity(0.7), fontSize: 11, @@ -383,7 +391,7 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ), const SpaceHeight(2), Text( - 'Vira Vania! ๐Ÿ‘‹', + '${user.name}! ๐Ÿ‘‹', style: AppStyle.h4.copyWith( color: AppColor.white, fontWeight: FontWeight.w800, diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 8d1a577..066f418 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import 'package:loader_overlay/loader_overlay.dart'; +import '../../../application/auth/auth_bloc.dart'; import '../../../application/auth/logout_form/logout_form_bloc.dart'; import '../../../common/theme/theme.dart'; import '../../../injection.dart'; @@ -49,78 +50,85 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { }, ), ], - child: Scaffold( - backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - SliverAppBar( - backgroundColor: AppColor.primary, - elevation: 0, - pinned: true, - expandedHeight: 264.0, - flexibleSpace: LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) { - // Calculate the collapse ratio - final double top = constraints.biggest.height; - final double collapsedHeight = - MediaQuery.of(context).padding.top + kToolbarHeight; - final double expandedHeight = 264.0; - final double shrinkRatio = - ((expandedHeight - top) / - (expandedHeight - collapsedHeight)) - .clamp(0.0, 1.0); + child: BlocBuilder( + builder: (context, state) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + SliverAppBar( + backgroundColor: AppColor.primary, + elevation: 0, + pinned: true, + expandedHeight: 264.0, + flexibleSpace: LayoutBuilder( + builder: + (BuildContext context, BoxConstraints constraints) { + // Calculate the collapse ratio + final double top = constraints.biggest.height; + final double collapsedHeight = + MediaQuery.of(context).padding.top + + kToolbarHeight; + final double expandedHeight = 264.0; + final double shrinkRatio = + ((expandedHeight - top) / + (expandedHeight - collapsedHeight)) + .clamp(0.0, 1.0); - return FlexibleSpaceBar( - background: ProfileHeader(), - titlePadding: const EdgeInsets.only( - left: 20, - right: 12, - bottom: 16, - ), - title: Opacity( - opacity: shrinkRatio, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Profile', - style: AppStyle.xl.copyWith( - fontWeight: FontWeight.w700, - fontSize: 18, - letterSpacing: -0.5, - color: AppColor.white, + return FlexibleSpaceBar( + background: ProfileHeader(user: state.user), + titlePadding: const EdgeInsets.only( + left: 20, + right: 12, + bottom: 16, ), - ), - ActionIconButton( - onTap: () {}, - icon: LineIcons.userEdit, - ), - ], - ), - ), - ); - }, - ), + title: Opacity( + opacity: shrinkRatio, + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Profile', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.w700, + fontSize: 18, + letterSpacing: -0.5, + color: AppColor.white, + ), + ), + ActionIconButton( + onTap: () {}, + icon: LineIcons.userEdit, + ), + ], + ), + ), + ); + }, + ), + ), + SliverToBoxAdapter( + child: Column( + children: [ + const SpaceHeight(20), + ProfileAccountInfo(user: state.user), + const SpaceHeight(12), + ProfileBusinessSetting(), + const SpaceHeight(12), + ProfileAppSetting(), + const SpaceHeight(12), + ProfileSupport(), + const SpaceHeight(12), + ProfileDangerZone(), + const SpaceHeight(30), + ], + ), + ), + ], ), - SliverToBoxAdapter( - child: Column( - children: [ - const SpaceHeight(20), - ProfileAccountInfo(), - const SpaceHeight(12), - ProfileBusinessSetting(), - const SpaceHeight(12), - ProfileAppSetting(), - const SpaceHeight(12), - ProfileSupport(), - const SpaceHeight(12), - ProfileDangerZone(), - const SpaceHeight(30), - ], - ), - ), - ], - ), + ); + }, ), ); } diff --git a/lib/presentation/pages/profile/widgets/account_info.dart b/lib/presentation/pages/profile/widgets/account_info.dart index 710c325..778408c 100644 --- a/lib/presentation/pages/profile/widgets/account_info.dart +++ b/lib/presentation/pages/profile/widgets/account_info.dart @@ -1,11 +1,15 @@ import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/auth/auth.dart'; import 'divider.dart'; import 'profile_tile.dart'; class ProfileAccountInfo extends StatelessWidget { - const ProfileAccountInfo({super.key}); + final User user; + const ProfileAccountInfo({super.key, required this.user}); @override Widget build(BuildContext context) { @@ -38,9 +42,9 @@ class ProfileAccountInfo extends StatelessWidget { ), ProfileTile( - icon: Icons.email_outlined, + icon: LineIcons.envelope, title: 'Email', - subtitle: 'john.doe@business.com', + subtitle: user.email, onTap: () { // Edit email }, @@ -49,31 +53,9 @@ class ProfileAccountInfo extends StatelessWidget { ProfileDivider(), ProfileTile( - icon: Icons.phone_outlined, - title: 'Phone Number', - subtitle: '+62 812 3456 7890', - onTap: () { - // Edit phone - }, - ), - - ProfileDivider(), - - ProfileTile( - icon: Icons.location_on_outlined, - title: 'Address', - subtitle: 'Jl. Merdeka No. 123, Jakarta', - onTap: () { - // Edit address - }, - ), - - ProfileDivider(), - - ProfileTile( - icon: Icons.calendar_today_outlined, + icon: LineIcons.calendarAlt, title: 'Member Since', - subtitle: 'January 15, 2024', + subtitle: user.createdAt.toDate, showArrow: false, ), ], diff --git a/lib/presentation/pages/profile/widgets/header.dart b/lib/presentation/pages/profile/widgets/header.dart index 9377c8d..d83e70b 100644 --- a/lib/presentation/pages/profile/widgets/header.dart +++ b/lib/presentation/pages/profile/widgets/header.dart @@ -1,12 +1,15 @@ import 'package:flutter/material.dart'; import 'dart:math' as math; +import '../../../../common/extension/extension.dart'; import '../../../../common/painter/wave_painter.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/auth/auth.dart'; import '../../../components/spacer/spacer.dart'; class ProfileHeader extends StatefulWidget { - const ProfileHeader({super.key}); + final User user; + const ProfileHeader({super.key, required this.user}); @override State createState() => _ProfileHeaderState(); @@ -347,7 +350,7 @@ class _ProfileHeaderState extends State child: Column( children: [ Text( - 'John Doe', + widget.user.name, style: AppStyle.h5.copyWith( fontWeight: FontWeight.bold, color: AppColor.textWhite, @@ -408,7 +411,7 @@ class _ProfileHeaderState extends State ), const SpaceHeight(6), Text( - 'Business Owner', + widget.user.role.toTitleCase, style: AppStyle.md.copyWith( color: AppColor.textWhite, fontWeight: FontWeight.w600, From f84090c0e64861bca538ed33f6b13dce0adb4159 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 10:10:31 +0700 Subject: [PATCH 044/108] feat: sales analytic --- .../sales/sales_loader/sales_loader_bloc.dart | 39 + .../sales_loader_bloc.freezed.dart | 376 ++++ .../sales_loader/sales_loader_event.dart | 6 + .../sales_loader/sales_loader_state.dart | 15 + lib/common/url/api_path.dart | 3 + lib/domain/analytic/analytic.dart | 8 + lib/domain/analytic/analytic.freezed.dart | 1510 +++++++++++++++++ .../entities/sales_analytic_entity.dart | 70 + .../analytic/failures/analytic_failure.dart | 10 + .../repositories/i_analytic_repository.dart | 10 + .../analytic/analytic_dtos.dart | 8 + .../analytic/analytic_dtos.freezed.dart | 1019 +++++++++++ .../analytic/analytic_dtos.g.dart | 89 + .../datasource/remote_data_provider.dart | 45 + .../analytic/dto/sales_analytic_dto.dart | 85 + .../repositories/analytic_repository.dart | 40 + lib/injection.config.dart | 17 + lib/presentation/pages/sales/sales_page.dart | 747 ++++---- lib/presentation/router/app_router.gr.dart | 4 +- pubspec.lock | 8 + pubspec.yaml | 1 + 21 files changed, 3703 insertions(+), 407 deletions(-) create mode 100644 lib/application/sales/sales_loader/sales_loader_bloc.dart create mode 100644 lib/application/sales/sales_loader/sales_loader_bloc.freezed.dart create mode 100644 lib/application/sales/sales_loader/sales_loader_event.dart create mode 100644 lib/application/sales/sales_loader/sales_loader_state.dart create mode 100644 lib/domain/analytic/analytic.dart create mode 100644 lib/domain/analytic/analytic.freezed.dart create mode 100644 lib/domain/analytic/entities/sales_analytic_entity.dart create mode 100644 lib/domain/analytic/failures/analytic_failure.dart create mode 100644 lib/domain/analytic/repositories/i_analytic_repository.dart create mode 100644 lib/infrastructure/analytic/analytic_dtos.dart create mode 100644 lib/infrastructure/analytic/analytic_dtos.freezed.dart create mode 100644 lib/infrastructure/analytic/analytic_dtos.g.dart create mode 100644 lib/infrastructure/analytic/datasource/remote_data_provider.dart create mode 100644 lib/infrastructure/analytic/dto/sales_analytic_dto.dart create mode 100644 lib/infrastructure/analytic/repositories/analytic_repository.dart diff --git a/lib/application/sales/sales_loader/sales_loader_bloc.dart b/lib/application/sales/sales_loader/sales_loader_bloc.dart new file mode 100644 index 0000000..453002b --- /dev/null +++ b/lib/application/sales/sales_loader/sales_loader_bloc.dart @@ -0,0 +1,39 @@ +import 'package:bloc/bloc.dart'; +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'sales_loader_event.dart'; +part 'sales_loader_state.dart'; +part 'sales_loader_bloc.freezed.dart'; + +@injectable +class SalesLoaderBloc extends Bloc { + final IAnalyticRepository _analyticRepository; + SalesLoaderBloc(this._analyticRepository) + : super(SalesLoaderState.initial()) { + on(_onSalesLoaderEvent); + } + + Future _onSalesLoaderEvent( + SalesLoaderEvent event, + Emitter emit, + ) async { + emit(state.copyWith(isFetching: true, failureOptionSales: none())); + + final result = await _analyticRepository.getSales( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionSales: optionOf(f)), + (sales) => state.copyWith(sales: sales), + ); + + emit(data.copyWith(isFetching: false)); + } +} diff --git a/lib/application/sales/sales_loader/sales_loader_bloc.freezed.dart b/lib/application/sales/sales_loader/sales_loader_bloc.freezed.dart new file mode 100644 index 0000000..0f7b470 --- /dev/null +++ b/lib/application/sales/sales_loader/sales_loader_bloc.freezed.dart @@ -0,0 +1,376 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'sales_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$SalesLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fectched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fectched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fectched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fectched value) fectched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fectched value)? fectched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fectched value)? fectched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesLoaderEventCopyWith<$Res> { + factory $SalesLoaderEventCopyWith( + SalesLoaderEvent value, + $Res Function(SalesLoaderEvent) then, + ) = _$SalesLoaderEventCopyWithImpl<$Res, SalesLoaderEvent>; +} + +/// @nodoc +class _$SalesLoaderEventCopyWithImpl<$Res, $Val extends SalesLoaderEvent> + implements $SalesLoaderEventCopyWith<$Res> { + _$SalesLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FectchedImplCopyWith<$Res> { + factory _$$FectchedImplCopyWith( + _$FectchedImpl value, + $Res Function(_$FectchedImpl) then, + ) = __$$FectchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FectchedImplCopyWithImpl<$Res> + extends _$SalesLoaderEventCopyWithImpl<$Res, _$FectchedImpl> + implements _$$FectchedImplCopyWith<$Res> { + __$$FectchedImplCopyWithImpl( + _$FectchedImpl _value, + $Res Function(_$FectchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FectchedImpl implements _Fectched { + const _$FectchedImpl(); + + @override + String toString() { + return 'SalesLoaderEvent.fectched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FectchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() fectched, + }) { + return fectched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fectched, + }) { + return fectched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fectched, + required TResult orElse(), + }) { + if (fectched != null) { + return fectched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fectched value) fectched, + }) { + return fectched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fectched value)? fectched, + }) { + return fectched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fectched value)? fectched, + required TResult orElse(), + }) { + if (fectched != null) { + return fectched(this); + } + return orElse(); + } +} + +abstract class _Fectched implements SalesLoaderEvent { + const factory _Fectched() = _$FectchedImpl; +} + +/// @nodoc +mixin _$SalesLoaderState { + SalesAnalytic get sales => throw _privateConstructorUsedError; + Option get failureOptionSales => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of SalesLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SalesLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesLoaderStateCopyWith<$Res> { + factory $SalesLoaderStateCopyWith( + SalesLoaderState value, + $Res Function(SalesLoaderState) then, + ) = _$SalesLoaderStateCopyWithImpl<$Res, SalesLoaderState>; + @useResult + $Res call({ + SalesAnalytic sales, + Option failureOptionSales, + bool isFetching, + }); + + $SalesAnalyticCopyWith<$Res> get sales; +} + +/// @nodoc +class _$SalesLoaderStateCopyWithImpl<$Res, $Val extends SalesLoaderState> + implements $SalesLoaderStateCopyWith<$Res> { + _$SalesLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? sales = null, + Object? failureOptionSales = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + sales: null == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as SalesAnalytic, + failureOptionSales: null == failureOptionSales + ? _value.failureOptionSales + : failureOptionSales // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of SalesLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $SalesAnalyticCopyWith<$Res> get sales { + return $SalesAnalyticCopyWith<$Res>(_value.sales, (value) { + return _then(_value.copyWith(sales: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$SalesLoaderStateImplCopyWith<$Res> + implements $SalesLoaderStateCopyWith<$Res> { + factory _$$SalesLoaderStateImplCopyWith( + _$SalesLoaderStateImpl value, + $Res Function(_$SalesLoaderStateImpl) then, + ) = __$$SalesLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + SalesAnalytic sales, + Option failureOptionSales, + bool isFetching, + }); + + @override + $SalesAnalyticCopyWith<$Res> get sales; +} + +/// @nodoc +class __$$SalesLoaderStateImplCopyWithImpl<$Res> + extends _$SalesLoaderStateCopyWithImpl<$Res, _$SalesLoaderStateImpl> + implements _$$SalesLoaderStateImplCopyWith<$Res> { + __$$SalesLoaderStateImplCopyWithImpl( + _$SalesLoaderStateImpl _value, + $Res Function(_$SalesLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? sales = null, + Object? failureOptionSales = null, + Object? isFetching = null, + }) { + return _then( + _$SalesLoaderStateImpl( + sales: null == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as SalesAnalytic, + failureOptionSales: null == failureOptionSales + ? _value.failureOptionSales + : failureOptionSales // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$SalesLoaderStateImpl implements _SalesLoaderState { + const _$SalesLoaderStateImpl({ + required this.sales, + required this.failureOptionSales, + this.isFetching = false, + }); + + @override + final SalesAnalytic sales; + @override + final Option failureOptionSales; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'SalesLoaderState(sales: $sales, failureOptionSales: $failureOptionSales, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SalesLoaderStateImpl && + (identical(other.sales, sales) || other.sales == sales) && + (identical(other.failureOptionSales, failureOptionSales) || + other.failureOptionSales == failureOptionSales) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => + Object.hash(runtimeType, sales, failureOptionSales, isFetching); + + /// Create a copy of SalesLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SalesLoaderStateImplCopyWith<_$SalesLoaderStateImpl> get copyWith => + __$$SalesLoaderStateImplCopyWithImpl<_$SalesLoaderStateImpl>( + this, + _$identity, + ); +} + +abstract class _SalesLoaderState implements SalesLoaderState { + const factory _SalesLoaderState({ + required final SalesAnalytic sales, + required final Option failureOptionSales, + final bool isFetching, + }) = _$SalesLoaderStateImpl; + + @override + SalesAnalytic get sales; + @override + Option get failureOptionSales; + @override + bool get isFetching; + + /// Create a copy of SalesLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SalesLoaderStateImplCopyWith<_$SalesLoaderStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/sales/sales_loader/sales_loader_event.dart b/lib/application/sales/sales_loader/sales_loader_event.dart new file mode 100644 index 0000000..4838c2e --- /dev/null +++ b/lib/application/sales/sales_loader/sales_loader_event.dart @@ -0,0 +1,6 @@ +part of 'sales_loader_bloc.dart'; + +@freezed +class SalesLoaderEvent with _$SalesLoaderEvent { + const factory SalesLoaderEvent.fectched() = _Fectched; +} diff --git a/lib/application/sales/sales_loader/sales_loader_state.dart b/lib/application/sales/sales_loader/sales_loader_state.dart new file mode 100644 index 0000000..79cea6f --- /dev/null +++ b/lib/application/sales/sales_loader/sales_loader_state.dart @@ -0,0 +1,15 @@ +part of 'sales_loader_bloc.dart'; + +@freezed +class SalesLoaderState with _$SalesLoaderState { + const factory SalesLoaderState({ + required SalesAnalytic sales, + required Option failureOptionSales, + @Default(false) bool isFetching, + }) = _SalesLoaderState; + + factory SalesLoaderState.initial() => SalesLoaderState( + sales: SalesAnalytic.empty(), + failureOptionSales: none(), + ); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index e3ef4ea..114fcb1 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -2,4 +2,7 @@ class ApiPath { // Auth static const String login = '/api/v1/auth/login'; static const String logout = '/api/v1/auth/logout'; + + // Analytic + static const String salesAnalytic = '/api/v1/analytics/sales'; } diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart new file mode 100644 index 0000000..8190576 --- /dev/null +++ b/lib/domain/analytic/analytic.dart @@ -0,0 +1,8 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../common/api/api_failure.dart'; + +part 'analytic.freezed.dart'; + +part 'entities/sales_analytic_entity.dart'; +part 'failures/analytic_failure.dart'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart new file mode 100644 index 0000000..c2a75be --- /dev/null +++ b/lib/domain/analytic/analytic.freezed.dart @@ -0,0 +1,1510 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'analytic.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$SalesAnalytic { + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + DateTime get dateFrom => throw _privateConstructorUsedError; + DateTime get dateTo => throw _privateConstructorUsedError; + String get groupBy => throw _privateConstructorUsedError; + SalesAnalyticSummary get summary => throw _privateConstructorUsedError; + List get data => throw _privateConstructorUsedError; + + /// Create a copy of SalesAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SalesAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesAnalyticCopyWith<$Res> { + factory $SalesAnalyticCopyWith( + SalesAnalytic value, + $Res Function(SalesAnalytic) then, + ) = _$SalesAnalyticCopyWithImpl<$Res, SalesAnalytic>; + @useResult + $Res call({ + String organizationId, + String outletId, + DateTime dateFrom, + DateTime dateTo, + String groupBy, + SalesAnalyticSummary summary, + List data, + }); + + $SalesAnalyticSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class _$SalesAnalyticCopyWithImpl<$Res, $Val extends SalesAnalytic> + implements $SalesAnalyticCopyWith<$Res> { + _$SalesAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as SalesAnalyticSummary, + data: null == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } + + /// Create a copy of SalesAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $SalesAnalyticSummaryCopyWith<$Res> get summary { + return $SalesAnalyticSummaryCopyWith<$Res>(_value.summary, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$SalesAnalyticImplCopyWith<$Res> + implements $SalesAnalyticCopyWith<$Res> { + factory _$$SalesAnalyticImplCopyWith( + _$SalesAnalyticImpl value, + $Res Function(_$SalesAnalyticImpl) then, + ) = __$$SalesAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String organizationId, + String outletId, + DateTime dateFrom, + DateTime dateTo, + String groupBy, + SalesAnalyticSummary summary, + List data, + }); + + @override + $SalesAnalyticSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class __$$SalesAnalyticImplCopyWithImpl<$Res> + extends _$SalesAnalyticCopyWithImpl<$Res, _$SalesAnalyticImpl> + implements _$$SalesAnalyticImplCopyWith<$Res> { + __$$SalesAnalyticImplCopyWithImpl( + _$SalesAnalyticImpl _value, + $Res Function(_$SalesAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + }) { + return _then( + _$SalesAnalyticImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as SalesAnalyticSummary, + data: null == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$SalesAnalyticImpl implements _SalesAnalytic { + const _$SalesAnalyticImpl({ + required this.organizationId, + required this.outletId, + required this.dateFrom, + required this.dateTo, + required this.groupBy, + required this.summary, + required final List data, + }) : _data = data; + + @override + final String organizationId; + @override + final String outletId; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + @override + final String groupBy; + @override + final SalesAnalyticSummary summary; + final List _data; + @override + List get data { + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_data); + } + + @override + String toString() { + return 'SalesAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SalesAnalyticImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of SalesAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SalesAnalyticImplCopyWith<_$SalesAnalyticImpl> get copyWith => + __$$SalesAnalyticImplCopyWithImpl<_$SalesAnalyticImpl>(this, _$identity); +} + +abstract class _SalesAnalytic implements SalesAnalytic { + const factory _SalesAnalytic({ + required final String organizationId, + required final String outletId, + required final DateTime dateFrom, + required final DateTime dateTo, + required final String groupBy, + required final SalesAnalyticSummary summary, + required final List data, + }) = _$SalesAnalyticImpl; + + @override + String get organizationId; + @override + String get outletId; + @override + DateTime get dateFrom; + @override + DateTime get dateTo; + @override + String get groupBy; + @override + SalesAnalyticSummary get summary; + @override + List get data; + + /// Create a copy of SalesAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SalesAnalyticImplCopyWith<_$SalesAnalyticImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$SalesAnalyticSummary { + int get totalSales => throw _privateConstructorUsedError; + int get totalOrders => throw _privateConstructorUsedError; + int get totalItems => throw _privateConstructorUsedError; + double get averageOrderValue => throw _privateConstructorUsedError; + int get totalTax => throw _privateConstructorUsedError; + int get totalDiscount => throw _privateConstructorUsedError; + int get netSales => throw _privateConstructorUsedError; + + /// Create a copy of SalesAnalyticSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SalesAnalyticSummaryCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesAnalyticSummaryCopyWith<$Res> { + factory $SalesAnalyticSummaryCopyWith( + SalesAnalyticSummary value, + $Res Function(SalesAnalyticSummary) then, + ) = _$SalesAnalyticSummaryCopyWithImpl<$Res, SalesAnalyticSummary>; + @useResult + $Res call({ + int totalSales, + int totalOrders, + int totalItems, + double averageOrderValue, + int totalTax, + int totalDiscount, + int netSales, + }); +} + +/// @nodoc +class _$SalesAnalyticSummaryCopyWithImpl< + $Res, + $Val extends SalesAnalyticSummary +> + implements $SalesAnalyticSummaryCopyWith<$Res> { + _$SalesAnalyticSummaryCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesAnalyticSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = null, + Object? totalOrders = null, + Object? totalItems = null, + Object? averageOrderValue = null, + Object? totalTax = null, + Object? totalDiscount = null, + Object? netSales = null, + }) { + return _then( + _value.copyWith( + totalSales: null == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as int, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + totalItems: null == totalItems + ? _value.totalItems + : totalItems // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + totalTax: null == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as int, + totalDiscount: null == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as int, + netSales: null == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$SalesAnalyticSummaryImplCopyWith<$Res> + implements $SalesAnalyticSummaryCopyWith<$Res> { + factory _$$SalesAnalyticSummaryImplCopyWith( + _$SalesAnalyticSummaryImpl value, + $Res Function(_$SalesAnalyticSummaryImpl) then, + ) = __$$SalesAnalyticSummaryImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + int totalSales, + int totalOrders, + int totalItems, + double averageOrderValue, + int totalTax, + int totalDiscount, + int netSales, + }); +} + +/// @nodoc +class __$$SalesAnalyticSummaryImplCopyWithImpl<$Res> + extends _$SalesAnalyticSummaryCopyWithImpl<$Res, _$SalesAnalyticSummaryImpl> + implements _$$SalesAnalyticSummaryImplCopyWith<$Res> { + __$$SalesAnalyticSummaryImplCopyWithImpl( + _$SalesAnalyticSummaryImpl _value, + $Res Function(_$SalesAnalyticSummaryImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesAnalyticSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = null, + Object? totalOrders = null, + Object? totalItems = null, + Object? averageOrderValue = null, + Object? totalTax = null, + Object? totalDiscount = null, + Object? netSales = null, + }) { + return _then( + _$SalesAnalyticSummaryImpl( + totalSales: null == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as int, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + totalItems: null == totalItems + ? _value.totalItems + : totalItems // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + totalTax: null == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as int, + totalDiscount: null == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as int, + netSales: null == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$SalesAnalyticSummaryImpl implements _SalesAnalyticSummary { + const _$SalesAnalyticSummaryImpl({ + required this.totalSales, + required this.totalOrders, + required this.totalItems, + required this.averageOrderValue, + required this.totalTax, + required this.totalDiscount, + required this.netSales, + }); + + @override + final int totalSales; + @override + final int totalOrders; + @override + final int totalItems; + @override + final double averageOrderValue; + @override + final int totalTax; + @override + final int totalDiscount; + @override + final int netSales; + + @override + String toString() { + return 'SalesAnalyticSummary(totalSales: $totalSales, totalOrders: $totalOrders, totalItems: $totalItems, averageOrderValue: $averageOrderValue, totalTax: $totalTax, totalDiscount: $totalDiscount, netSales: $netSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SalesAnalyticSummaryImpl && + (identical(other.totalSales, totalSales) || + other.totalSales == totalSales) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.totalItems, totalItems) || + other.totalItems == totalItems) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue) && + (identical(other.totalTax, totalTax) || + other.totalTax == totalTax) && + (identical(other.totalDiscount, totalDiscount) || + other.totalDiscount == totalDiscount) && + (identical(other.netSales, netSales) || + other.netSales == netSales)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + totalSales, + totalOrders, + totalItems, + averageOrderValue, + totalTax, + totalDiscount, + netSales, + ); + + /// Create a copy of SalesAnalyticSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SalesAnalyticSummaryImplCopyWith<_$SalesAnalyticSummaryImpl> + get copyWith => + __$$SalesAnalyticSummaryImplCopyWithImpl<_$SalesAnalyticSummaryImpl>( + this, + _$identity, + ); +} + +abstract class _SalesAnalyticSummary implements SalesAnalyticSummary { + const factory _SalesAnalyticSummary({ + required final int totalSales, + required final int totalOrders, + required final int totalItems, + required final double averageOrderValue, + required final int totalTax, + required final int totalDiscount, + required final int netSales, + }) = _$SalesAnalyticSummaryImpl; + + @override + int get totalSales; + @override + int get totalOrders; + @override + int get totalItems; + @override + double get averageOrderValue; + @override + int get totalTax; + @override + int get totalDiscount; + @override + int get netSales; + + /// Create a copy of SalesAnalyticSummary + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SalesAnalyticSummaryImplCopyWith<_$SalesAnalyticSummaryImpl> + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$SalesAnalyticData { + DateTime get date => throw _privateConstructorUsedError; + int get sales => throw _privateConstructorUsedError; + int get orders => throw _privateConstructorUsedError; + int get items => throw _privateConstructorUsedError; + int get tax => throw _privateConstructorUsedError; + int get discount => throw _privateConstructorUsedError; + int get netSales => throw _privateConstructorUsedError; + + /// Create a copy of SalesAnalyticData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SalesAnalyticDataCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesAnalyticDataCopyWith<$Res> { + factory $SalesAnalyticDataCopyWith( + SalesAnalyticData value, + $Res Function(SalesAnalyticData) then, + ) = _$SalesAnalyticDataCopyWithImpl<$Res, SalesAnalyticData>; + @useResult + $Res call({ + DateTime date, + int sales, + int orders, + int items, + int tax, + int discount, + int netSales, + }); +} + +/// @nodoc +class _$SalesAnalyticDataCopyWithImpl<$Res, $Val extends SalesAnalyticData> + implements $SalesAnalyticDataCopyWith<$Res> { + _$SalesAnalyticDataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesAnalyticData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = null, + Object? sales = null, + Object? orders = null, + Object? items = null, + Object? tax = null, + Object? discount = null, + Object? netSales = null, + }) { + return _then( + _value.copyWith( + date: null == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as DateTime, + sales: null == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as int, + orders: null == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int, + items: null == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as int, + tax: null == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int, + discount: null == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int, + netSales: null == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$SalesAnalyticDataImplCopyWith<$Res> + implements $SalesAnalyticDataCopyWith<$Res> { + factory _$$SalesAnalyticDataImplCopyWith( + _$SalesAnalyticDataImpl value, + $Res Function(_$SalesAnalyticDataImpl) then, + ) = __$$SalesAnalyticDataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + DateTime date, + int sales, + int orders, + int items, + int tax, + int discount, + int netSales, + }); +} + +/// @nodoc +class __$$SalesAnalyticDataImplCopyWithImpl<$Res> + extends _$SalesAnalyticDataCopyWithImpl<$Res, _$SalesAnalyticDataImpl> + implements _$$SalesAnalyticDataImplCopyWith<$Res> { + __$$SalesAnalyticDataImplCopyWithImpl( + _$SalesAnalyticDataImpl _value, + $Res Function(_$SalesAnalyticDataImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesAnalyticData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = null, + Object? sales = null, + Object? orders = null, + Object? items = null, + Object? tax = null, + Object? discount = null, + Object? netSales = null, + }) { + return _then( + _$SalesAnalyticDataImpl( + date: null == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as DateTime, + sales: null == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as int, + orders: null == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int, + items: null == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as int, + tax: null == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int, + discount: null == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int, + netSales: null == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$SalesAnalyticDataImpl implements _SalesAnalyticData { + const _$SalesAnalyticDataImpl({ + required this.date, + required this.sales, + required this.orders, + required this.items, + required this.tax, + required this.discount, + required this.netSales, + }); + + @override + final DateTime date; + @override + final int sales; + @override + final int orders; + @override + final int items; + @override + final int tax; + @override + final int discount; + @override + final int netSales; + + @override + String toString() { + return 'SalesAnalyticData(date: $date, sales: $sales, orders: $orders, items: $items, tax: $tax, discount: $discount, netSales: $netSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SalesAnalyticDataImpl && + (identical(other.date, date) || other.date == date) && + (identical(other.sales, sales) || other.sales == sales) && + (identical(other.orders, orders) || other.orders == orders) && + (identical(other.items, items) || other.items == items) && + (identical(other.tax, tax) || other.tax == tax) && + (identical(other.discount, discount) || + other.discount == discount) && + (identical(other.netSales, netSales) || + other.netSales == netSales)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + date, + sales, + orders, + items, + tax, + discount, + netSales, + ); + + /// Create a copy of SalesAnalyticData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SalesAnalyticDataImplCopyWith<_$SalesAnalyticDataImpl> get copyWith => + __$$SalesAnalyticDataImplCopyWithImpl<_$SalesAnalyticDataImpl>( + this, + _$identity, + ); +} + +abstract class _SalesAnalyticData implements SalesAnalyticData { + const factory _SalesAnalyticData({ + required final DateTime date, + required final int sales, + required final int orders, + required final int items, + required final int tax, + required final int discount, + required final int netSales, + }) = _$SalesAnalyticDataImpl; + + @override + DateTime get date; + @override + int get sales; + @override + int get orders; + @override + int get items; + @override + int get tax; + @override + int get discount; + @override + int get netSales; + + /// Create a copy of SalesAnalyticData + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SalesAnalyticDataImplCopyWith<_$SalesAnalyticDataImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$AnalyticFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AnalyticFailureCopyWith<$Res> { + factory $AnalyticFailureCopyWith( + AnalyticFailure value, + $Res Function(AnalyticFailure) then, + ) = _$AnalyticFailureCopyWithImpl<$Res, AnalyticFailure>; +} + +/// @nodoc +class _$AnalyticFailureCopyWithImpl<$Res, $Val extends AnalyticFailure> + implements $AnalyticFailureCopyWith<$Res> { + _$AnalyticFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'AnalyticFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements AnalyticFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'AnalyticFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements AnalyticFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'AnalyticFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements AnalyticFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'AnalyticFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements AnalyticFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/analytic/entities/sales_analytic_entity.dart b/lib/domain/analytic/entities/sales_analytic_entity.dart new file mode 100644 index 0000000..e53d57f --- /dev/null +++ b/lib/domain/analytic/entities/sales_analytic_entity.dart @@ -0,0 +1,70 @@ +part of '../analytic.dart'; + +@freezed +class SalesAnalytic with _$SalesAnalytic { + const factory SalesAnalytic({ + required String organizationId, + required String outletId, + required DateTime dateFrom, + required DateTime dateTo, + required String groupBy, + required SalesAnalyticSummary summary, + required List data, + }) = _SalesAnalytic; + + factory SalesAnalytic.empty() => SalesAnalytic( + organizationId: '', + outletId: '', + dateFrom: DateTime.fromMillisecondsSinceEpoch(0), + dateTo: DateTime.fromMillisecondsSinceEpoch(0), + groupBy: '', + summary: SalesAnalyticSummary.empty(), + data: [], + ); +} + +@freezed +class SalesAnalyticSummary with _$SalesAnalyticSummary { + const factory SalesAnalyticSummary({ + required int totalSales, + required int totalOrders, + required int totalItems, + required double averageOrderValue, + required int totalTax, + required int totalDiscount, + required int netSales, + }) = _SalesAnalyticSummary; + + factory SalesAnalyticSummary.empty() => const SalesAnalyticSummary( + totalSales: 0, + totalOrders: 0, + totalItems: 0, + averageOrderValue: 0, + totalTax: 0, + totalDiscount: 0, + netSales: 0, + ); +} + +@freezed +class SalesAnalyticData with _$SalesAnalyticData { + const factory SalesAnalyticData({ + required DateTime date, + required int sales, + required int orders, + required int items, + required int tax, + required int discount, + required int netSales, + }) = _SalesAnalyticData; + + factory SalesAnalyticData.empty() => SalesAnalyticData( + date: DateTime.fromMillisecondsSinceEpoch(0), + sales: 0, + orders: 0, + items: 0, + tax: 0, + discount: 0, + netSales: 0, + ); +} diff --git a/lib/domain/analytic/failures/analytic_failure.dart b/lib/domain/analytic/failures/analytic_failure.dart new file mode 100644 index 0000000..d0b1a54 --- /dev/null +++ b/lib/domain/analytic/failures/analytic_failure.dart @@ -0,0 +1,10 @@ +part of '../analytic.dart'; + +@freezed +sealed class AnalyticFailure with _$AnalyticFailure { + const factory AnalyticFailure.serverError(ApiFailure failure) = _ServerError; + const factory AnalyticFailure.unexpectedError() = _UnexpectedError; + const factory AnalyticFailure.empty() = _Empty; + const factory AnalyticFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart new file mode 100644 index 0000000..6826dde --- /dev/null +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -0,0 +1,10 @@ +import 'package:dartz/dartz.dart'; + +import '../analytic.dart'; + +abstract class IAnalyticRepository { + Future> getSales({ + required DateTime dateFrom, + required DateTime dateTo, + }); +} diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart new file mode 100644 index 0000000..277bb65 --- /dev/null +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -0,0 +1,8 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/analytic/analytic.dart'; + +part 'analytic_dtos.freezed.dart'; +part 'analytic_dtos.g.dart'; + +part 'dto/sales_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart new file mode 100644 index 0000000..d2f58d4 --- /dev/null +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -0,0 +1,1019 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'analytic_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +SalesAnalyticDto _$SalesAnalyticDtoFromJson(Map json) { + return _SalesAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$SalesAnalyticDto { + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'date_from') + DateTime? get dateFrom => throw _privateConstructorUsedError; + @JsonKey(name: 'date_to') + DateTime? get dateTo => throw _privateConstructorUsedError; + @JsonKey(name: 'group_by') + String? get groupBy => throw _privateConstructorUsedError; + @JsonKey(name: 'summary') + SalesAnalyticSummaryDto? get summary => throw _privateConstructorUsedError; + @JsonKey(name: 'data') + List? get data => throw _privateConstructorUsedError; + + /// Serializes this SalesAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of SalesAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SalesAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesAnalyticDtoCopyWith<$Res> { + factory $SalesAnalyticDtoCopyWith( + SalesAnalyticDto value, + $Res Function(SalesAnalyticDto) then, + ) = _$SalesAnalyticDtoCopyWithImpl<$Res, SalesAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') DateTime? dateFrom, + @JsonKey(name: 'date_to') DateTime? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') SalesAnalyticSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }); + + $SalesAnalyticSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class _$SalesAnalyticDtoCopyWithImpl<$Res, $Val extends SalesAnalyticDto> + implements $SalesAnalyticDtoCopyWith<$Res> { + _$SalesAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + }) { + return _then( + _value.copyWith( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as SalesAnalyticSummaryDto?, + data: freezed == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } + + /// Create a copy of SalesAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $SalesAnalyticSummaryDtoCopyWith<$Res>? get summary { + if (_value.summary == null) { + return null; + } + + return $SalesAnalyticSummaryDtoCopyWith<$Res>(_value.summary!, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$SalesAnalyticDtoImplCopyWith<$Res> + implements $SalesAnalyticDtoCopyWith<$Res> { + factory _$$SalesAnalyticDtoImplCopyWith( + _$SalesAnalyticDtoImpl value, + $Res Function(_$SalesAnalyticDtoImpl) then, + ) = __$$SalesAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') DateTime? dateFrom, + @JsonKey(name: 'date_to') DateTime? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') SalesAnalyticSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }); + + @override + $SalesAnalyticSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class __$$SalesAnalyticDtoImplCopyWithImpl<$Res> + extends _$SalesAnalyticDtoCopyWithImpl<$Res, _$SalesAnalyticDtoImpl> + implements _$$SalesAnalyticDtoImplCopyWith<$Res> { + __$$SalesAnalyticDtoImplCopyWithImpl( + _$SalesAnalyticDtoImpl _value, + $Res Function(_$SalesAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + }) { + return _then( + _$SalesAnalyticDtoImpl( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as SalesAnalyticSummaryDto?, + data: freezed == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$SalesAnalyticDtoImpl extends _SalesAnalyticDto { + const _$SalesAnalyticDtoImpl({ + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'date_from') this.dateFrom, + @JsonKey(name: 'date_to') this.dateTo, + @JsonKey(name: 'group_by') this.groupBy, + @JsonKey(name: 'summary') this.summary, + @JsonKey(name: 'data') final List? data, + }) : _data = data, + super._(); + + factory _$SalesAnalyticDtoImpl.fromJson(Map json) => + _$$SalesAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'date_from') + final DateTime? dateFrom; + @override + @JsonKey(name: 'date_to') + final DateTime? dateTo; + @override + @JsonKey(name: 'group_by') + final String? groupBy; + @override + @JsonKey(name: 'summary') + final SalesAnalyticSummaryDto? summary; + final List? _data; + @override + @JsonKey(name: 'data') + List? get data { + final value = _data; + if (value == null) return null; + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'SalesAnalyticDto(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SalesAnalyticDtoImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of SalesAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SalesAnalyticDtoImplCopyWith<_$SalesAnalyticDtoImpl> get copyWith => + __$$SalesAnalyticDtoImplCopyWithImpl<_$SalesAnalyticDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$SalesAnalyticDtoImplToJson(this); + } +} + +abstract class _SalesAnalyticDto extends SalesAnalyticDto { + const factory _SalesAnalyticDto({ + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'date_from') final DateTime? dateFrom, + @JsonKey(name: 'date_to') final DateTime? dateTo, + @JsonKey(name: 'group_by') final String? groupBy, + @JsonKey(name: 'summary') final SalesAnalyticSummaryDto? summary, + @JsonKey(name: 'data') final List? data, + }) = _$SalesAnalyticDtoImpl; + const _SalesAnalyticDto._() : super._(); + + factory _SalesAnalyticDto.fromJson(Map json) = + _$SalesAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'date_from') + DateTime? get dateFrom; + @override + @JsonKey(name: 'date_to') + DateTime? get dateTo; + @override + @JsonKey(name: 'group_by') + String? get groupBy; + @override + @JsonKey(name: 'summary') + SalesAnalyticSummaryDto? get summary; + @override + @JsonKey(name: 'data') + List? get data; + + /// Create a copy of SalesAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SalesAnalyticDtoImplCopyWith<_$SalesAnalyticDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +SalesAnalyticSummaryDto _$SalesAnalyticSummaryDtoFromJson( + Map json, +) { + return _SalesAnalyticSummaryDto.fromJson(json); +} + +/// @nodoc +mixin _$SalesAnalyticSummaryDto { + @JsonKey(name: 'total_sales') + num? get totalSales => throw _privateConstructorUsedError; + @JsonKey(name: 'total_orders') + num? get totalOrders => throw _privateConstructorUsedError; + @JsonKey(name: 'total_items') + num? get totalItems => throw _privateConstructorUsedError; + @JsonKey(name: 'average_order_value') + num? get averageOrderValue => throw _privateConstructorUsedError; + @JsonKey(name: 'total_tax') + num? get totalTax => throw _privateConstructorUsedError; + @JsonKey(name: 'total_discount') + num? get totalDiscount => throw _privateConstructorUsedError; + @JsonKey(name: 'net_sales') + num? get netSales => throw _privateConstructorUsedError; + + /// Serializes this SalesAnalyticSummaryDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of SalesAnalyticSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SalesAnalyticSummaryDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesAnalyticSummaryDtoCopyWith<$Res> { + factory $SalesAnalyticSummaryDtoCopyWith( + SalesAnalyticSummaryDto value, + $Res Function(SalesAnalyticSummaryDto) then, + ) = _$SalesAnalyticSummaryDtoCopyWithImpl<$Res, SalesAnalyticSummaryDto>; + @useResult + $Res call({ + @JsonKey(name: 'total_sales') num? totalSales, + @JsonKey(name: 'total_orders') num? totalOrders, + @JsonKey(name: 'total_items') num? totalItems, + @JsonKey(name: 'average_order_value') num? averageOrderValue, + @JsonKey(name: 'total_tax') num? totalTax, + @JsonKey(name: 'total_discount') num? totalDiscount, + @JsonKey(name: 'net_sales') num? netSales, + }); +} + +/// @nodoc +class _$SalesAnalyticSummaryDtoCopyWithImpl< + $Res, + $Val extends SalesAnalyticSummaryDto +> + implements $SalesAnalyticSummaryDtoCopyWith<$Res> { + _$SalesAnalyticSummaryDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesAnalyticSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = freezed, + Object? totalOrders = freezed, + Object? totalItems = freezed, + Object? averageOrderValue = freezed, + Object? totalTax = freezed, + Object? totalDiscount = freezed, + Object? netSales = freezed, + }) { + return _then( + _value.copyWith( + totalSales: freezed == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as num?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as num?, + totalItems: freezed == totalItems + ? _value.totalItems + : totalItems // ignore: cast_nullable_to_non_nullable + as num?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as num?, + totalTax: freezed == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as num?, + totalDiscount: freezed == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as num?, + netSales: freezed == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as num?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$SalesAnalyticSummaryDtoImplCopyWith<$Res> + implements $SalesAnalyticSummaryDtoCopyWith<$Res> { + factory _$$SalesAnalyticSummaryDtoImplCopyWith( + _$SalesAnalyticSummaryDtoImpl value, + $Res Function(_$SalesAnalyticSummaryDtoImpl) then, + ) = __$$SalesAnalyticSummaryDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'total_sales') num? totalSales, + @JsonKey(name: 'total_orders') num? totalOrders, + @JsonKey(name: 'total_items') num? totalItems, + @JsonKey(name: 'average_order_value') num? averageOrderValue, + @JsonKey(name: 'total_tax') num? totalTax, + @JsonKey(name: 'total_discount') num? totalDiscount, + @JsonKey(name: 'net_sales') num? netSales, + }); +} + +/// @nodoc +class __$$SalesAnalyticSummaryDtoImplCopyWithImpl<$Res> + extends + _$SalesAnalyticSummaryDtoCopyWithImpl< + $Res, + _$SalesAnalyticSummaryDtoImpl + > + implements _$$SalesAnalyticSummaryDtoImplCopyWith<$Res> { + __$$SalesAnalyticSummaryDtoImplCopyWithImpl( + _$SalesAnalyticSummaryDtoImpl _value, + $Res Function(_$SalesAnalyticSummaryDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesAnalyticSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = freezed, + Object? totalOrders = freezed, + Object? totalItems = freezed, + Object? averageOrderValue = freezed, + Object? totalTax = freezed, + Object? totalDiscount = freezed, + Object? netSales = freezed, + }) { + return _then( + _$SalesAnalyticSummaryDtoImpl( + totalSales: freezed == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as num?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as num?, + totalItems: freezed == totalItems + ? _value.totalItems + : totalItems // ignore: cast_nullable_to_non_nullable + as num?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as num?, + totalTax: freezed == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as num?, + totalDiscount: freezed == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as num?, + netSales: freezed == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as num?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$SalesAnalyticSummaryDtoImpl extends _SalesAnalyticSummaryDto { + const _$SalesAnalyticSummaryDtoImpl({ + @JsonKey(name: 'total_sales') this.totalSales, + @JsonKey(name: 'total_orders') this.totalOrders, + @JsonKey(name: 'total_items') this.totalItems, + @JsonKey(name: 'average_order_value') this.averageOrderValue, + @JsonKey(name: 'total_tax') this.totalTax, + @JsonKey(name: 'total_discount') this.totalDiscount, + @JsonKey(name: 'net_sales') this.netSales, + }) : super._(); + + factory _$SalesAnalyticSummaryDtoImpl.fromJson(Map json) => + _$$SalesAnalyticSummaryDtoImplFromJson(json); + + @override + @JsonKey(name: 'total_sales') + final num? totalSales; + @override + @JsonKey(name: 'total_orders') + final num? totalOrders; + @override + @JsonKey(name: 'total_items') + final num? totalItems; + @override + @JsonKey(name: 'average_order_value') + final num? averageOrderValue; + @override + @JsonKey(name: 'total_tax') + final num? totalTax; + @override + @JsonKey(name: 'total_discount') + final num? totalDiscount; + @override + @JsonKey(name: 'net_sales') + final num? netSales; + + @override + String toString() { + return 'SalesAnalyticSummaryDto(totalSales: $totalSales, totalOrders: $totalOrders, totalItems: $totalItems, averageOrderValue: $averageOrderValue, totalTax: $totalTax, totalDiscount: $totalDiscount, netSales: $netSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SalesAnalyticSummaryDtoImpl && + (identical(other.totalSales, totalSales) || + other.totalSales == totalSales) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.totalItems, totalItems) || + other.totalItems == totalItems) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue) && + (identical(other.totalTax, totalTax) || + other.totalTax == totalTax) && + (identical(other.totalDiscount, totalDiscount) || + other.totalDiscount == totalDiscount) && + (identical(other.netSales, netSales) || + other.netSales == netSales)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + totalSales, + totalOrders, + totalItems, + averageOrderValue, + totalTax, + totalDiscount, + netSales, + ); + + /// Create a copy of SalesAnalyticSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SalesAnalyticSummaryDtoImplCopyWith<_$SalesAnalyticSummaryDtoImpl> + get copyWith => + __$$SalesAnalyticSummaryDtoImplCopyWithImpl< + _$SalesAnalyticSummaryDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$SalesAnalyticSummaryDtoImplToJson(this); + } +} + +abstract class _SalesAnalyticSummaryDto extends SalesAnalyticSummaryDto { + const factory _SalesAnalyticSummaryDto({ + @JsonKey(name: 'total_sales') final num? totalSales, + @JsonKey(name: 'total_orders') final num? totalOrders, + @JsonKey(name: 'total_items') final num? totalItems, + @JsonKey(name: 'average_order_value') final num? averageOrderValue, + @JsonKey(name: 'total_tax') final num? totalTax, + @JsonKey(name: 'total_discount') final num? totalDiscount, + @JsonKey(name: 'net_sales') final num? netSales, + }) = _$SalesAnalyticSummaryDtoImpl; + const _SalesAnalyticSummaryDto._() : super._(); + + factory _SalesAnalyticSummaryDto.fromJson(Map json) = + _$SalesAnalyticSummaryDtoImpl.fromJson; + + @override + @JsonKey(name: 'total_sales') + num? get totalSales; + @override + @JsonKey(name: 'total_orders') + num? get totalOrders; + @override + @JsonKey(name: 'total_items') + num? get totalItems; + @override + @JsonKey(name: 'average_order_value') + num? get averageOrderValue; + @override + @JsonKey(name: 'total_tax') + num? get totalTax; + @override + @JsonKey(name: 'total_discount') + num? get totalDiscount; + @override + @JsonKey(name: 'net_sales') + num? get netSales; + + /// Create a copy of SalesAnalyticSummaryDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SalesAnalyticSummaryDtoImplCopyWith<_$SalesAnalyticSummaryDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +SalesAnalyticDataDto _$SalesAnalyticDataDtoFromJson(Map json) { + return _SalesAnalyticDataDto.fromJson(json); +} + +/// @nodoc +mixin _$SalesAnalyticDataDto { + @JsonKey(name: 'date') + DateTime? get date => throw _privateConstructorUsedError; + @JsonKey(name: 'sales') + num? get sales => throw _privateConstructorUsedError; + @JsonKey(name: 'orders') + num? get orders => throw _privateConstructorUsedError; + @JsonKey(name: 'items') + num? get items => throw _privateConstructorUsedError; + @JsonKey(name: 'tax') + num? get tax => throw _privateConstructorUsedError; + @JsonKey(name: 'discount') + num? get discount => throw _privateConstructorUsedError; + @JsonKey(name: 'net_sales') + num? get netSales => throw _privateConstructorUsedError; + + /// Serializes this SalesAnalyticDataDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of SalesAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SalesAnalyticDataDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SalesAnalyticDataDtoCopyWith<$Res> { + factory $SalesAnalyticDataDtoCopyWith( + SalesAnalyticDataDto value, + $Res Function(SalesAnalyticDataDto) then, + ) = _$SalesAnalyticDataDtoCopyWithImpl<$Res, SalesAnalyticDataDto>; + @useResult + $Res call({ + @JsonKey(name: 'date') DateTime? date, + @JsonKey(name: 'sales') num? sales, + @JsonKey(name: 'orders') num? orders, + @JsonKey(name: 'items') num? items, + @JsonKey(name: 'tax') num? tax, + @JsonKey(name: 'discount') num? discount, + @JsonKey(name: 'net_sales') num? netSales, + }); +} + +/// @nodoc +class _$SalesAnalyticDataDtoCopyWithImpl< + $Res, + $Val extends SalesAnalyticDataDto +> + implements $SalesAnalyticDataDtoCopyWith<$Res> { + _$SalesAnalyticDataDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SalesAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = freezed, + Object? sales = freezed, + Object? orders = freezed, + Object? items = freezed, + Object? tax = freezed, + Object? discount = freezed, + Object? netSales = freezed, + }) { + return _then( + _value.copyWith( + date: freezed == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as DateTime?, + sales: freezed == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as num?, + orders: freezed == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as num?, + items: freezed == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as num?, + tax: freezed == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as num?, + discount: freezed == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as num?, + netSales: freezed == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as num?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$SalesAnalyticDataDtoImplCopyWith<$Res> + implements $SalesAnalyticDataDtoCopyWith<$Res> { + factory _$$SalesAnalyticDataDtoImplCopyWith( + _$SalesAnalyticDataDtoImpl value, + $Res Function(_$SalesAnalyticDataDtoImpl) then, + ) = __$$SalesAnalyticDataDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'date') DateTime? date, + @JsonKey(name: 'sales') num? sales, + @JsonKey(name: 'orders') num? orders, + @JsonKey(name: 'items') num? items, + @JsonKey(name: 'tax') num? tax, + @JsonKey(name: 'discount') num? discount, + @JsonKey(name: 'net_sales') num? netSales, + }); +} + +/// @nodoc +class __$$SalesAnalyticDataDtoImplCopyWithImpl<$Res> + extends _$SalesAnalyticDataDtoCopyWithImpl<$Res, _$SalesAnalyticDataDtoImpl> + implements _$$SalesAnalyticDataDtoImplCopyWith<$Res> { + __$$SalesAnalyticDataDtoImplCopyWithImpl( + _$SalesAnalyticDataDtoImpl _value, + $Res Function(_$SalesAnalyticDataDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = freezed, + Object? sales = freezed, + Object? orders = freezed, + Object? items = freezed, + Object? tax = freezed, + Object? discount = freezed, + Object? netSales = freezed, + }) { + return _then( + _$SalesAnalyticDataDtoImpl( + date: freezed == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as DateTime?, + sales: freezed == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as num?, + orders: freezed == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as num?, + items: freezed == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as num?, + tax: freezed == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as num?, + discount: freezed == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as num?, + netSales: freezed == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as num?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$SalesAnalyticDataDtoImpl extends _SalesAnalyticDataDto { + const _$SalesAnalyticDataDtoImpl({ + @JsonKey(name: 'date') this.date, + @JsonKey(name: 'sales') this.sales, + @JsonKey(name: 'orders') this.orders, + @JsonKey(name: 'items') this.items, + @JsonKey(name: 'tax') this.tax, + @JsonKey(name: 'discount') this.discount, + @JsonKey(name: 'net_sales') this.netSales, + }) : super._(); + + factory _$SalesAnalyticDataDtoImpl.fromJson(Map json) => + _$$SalesAnalyticDataDtoImplFromJson(json); + + @override + @JsonKey(name: 'date') + final DateTime? date; + @override + @JsonKey(name: 'sales') + final num? sales; + @override + @JsonKey(name: 'orders') + final num? orders; + @override + @JsonKey(name: 'items') + final num? items; + @override + @JsonKey(name: 'tax') + final num? tax; + @override + @JsonKey(name: 'discount') + final num? discount; + @override + @JsonKey(name: 'net_sales') + final num? netSales; + + @override + String toString() { + return 'SalesAnalyticDataDto(date: $date, sales: $sales, orders: $orders, items: $items, tax: $tax, discount: $discount, netSales: $netSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SalesAnalyticDataDtoImpl && + (identical(other.date, date) || other.date == date) && + (identical(other.sales, sales) || other.sales == sales) && + (identical(other.orders, orders) || other.orders == orders) && + (identical(other.items, items) || other.items == items) && + (identical(other.tax, tax) || other.tax == tax) && + (identical(other.discount, discount) || + other.discount == discount) && + (identical(other.netSales, netSales) || + other.netSales == netSales)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + date, + sales, + orders, + items, + tax, + discount, + netSales, + ); + + /// Create a copy of SalesAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SalesAnalyticDataDtoImplCopyWith<_$SalesAnalyticDataDtoImpl> + get copyWith => + __$$SalesAnalyticDataDtoImplCopyWithImpl<_$SalesAnalyticDataDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$SalesAnalyticDataDtoImplToJson(this); + } +} + +abstract class _SalesAnalyticDataDto extends SalesAnalyticDataDto { + const factory _SalesAnalyticDataDto({ + @JsonKey(name: 'date') final DateTime? date, + @JsonKey(name: 'sales') final num? sales, + @JsonKey(name: 'orders') final num? orders, + @JsonKey(name: 'items') final num? items, + @JsonKey(name: 'tax') final num? tax, + @JsonKey(name: 'discount') final num? discount, + @JsonKey(name: 'net_sales') final num? netSales, + }) = _$SalesAnalyticDataDtoImpl; + const _SalesAnalyticDataDto._() : super._(); + + factory _SalesAnalyticDataDto.fromJson(Map json) = + _$SalesAnalyticDataDtoImpl.fromJson; + + @override + @JsonKey(name: 'date') + DateTime? get date; + @override + @JsonKey(name: 'sales') + num? get sales; + @override + @JsonKey(name: 'orders') + num? get orders; + @override + @JsonKey(name: 'items') + num? get items; + @override + @JsonKey(name: 'tax') + num? get tax; + @override + @JsonKey(name: 'discount') + num? get discount; + @override + @JsonKey(name: 'net_sales') + num? get netSales; + + /// Create a copy of SalesAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SalesAnalyticDataDtoImplCopyWith<_$SalesAnalyticDataDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart new file mode 100644 index 0000000..ebd7a0a --- /dev/null +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -0,0 +1,89 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'analytic_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$SalesAnalyticDtoImpl _$$SalesAnalyticDtoImplFromJson( + Map json, +) => _$SalesAnalyticDtoImpl( + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + dateFrom: json['date_from'] == null + ? null + : DateTime.parse(json['date_from'] as String), + dateTo: json['date_to'] == null + ? null + : DateTime.parse(json['date_to'] as String), + groupBy: json['group_by'] as String?, + summary: json['summary'] == null + ? null + : SalesAnalyticSummaryDto.fromJson( + json['summary'] as Map, + ), + data: (json['data'] as List?) + ?.map((e) => SalesAnalyticDataDto.fromJson(e as Map)) + .toList(), +); + +Map _$$SalesAnalyticDtoImplToJson( + _$SalesAnalyticDtoImpl instance, +) => { + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'date_from': instance.dateFrom?.toIso8601String(), + 'date_to': instance.dateTo?.toIso8601String(), + 'group_by': instance.groupBy, + 'summary': instance.summary, + 'data': instance.data, +}; + +_$SalesAnalyticSummaryDtoImpl _$$SalesAnalyticSummaryDtoImplFromJson( + Map json, +) => _$SalesAnalyticSummaryDtoImpl( + totalSales: json['total_sales'] as num?, + totalOrders: json['total_orders'] as num?, + totalItems: json['total_items'] as num?, + averageOrderValue: json['average_order_value'] as num?, + totalTax: json['total_tax'] as num?, + totalDiscount: json['total_discount'] as num?, + netSales: json['net_sales'] as num?, +); + +Map _$$SalesAnalyticSummaryDtoImplToJson( + _$SalesAnalyticSummaryDtoImpl instance, +) => { + 'total_sales': instance.totalSales, + 'total_orders': instance.totalOrders, + 'total_items': instance.totalItems, + 'average_order_value': instance.averageOrderValue, + 'total_tax': instance.totalTax, + 'total_discount': instance.totalDiscount, + 'net_sales': instance.netSales, +}; + +_$SalesAnalyticDataDtoImpl _$$SalesAnalyticDataDtoImplFromJson( + Map json, +) => _$SalesAnalyticDataDtoImpl( + date: json['date'] == null ? null : DateTime.parse(json['date'] as String), + sales: json['sales'] as num?, + orders: json['orders'] as num?, + items: json['items'] as num?, + tax: json['tax'] as num?, + discount: json['discount'] as num?, + netSales: json['net_sales'] as num?, +); + +Map _$$SalesAnalyticDataDtoImplToJson( + _$SalesAnalyticDataDtoImpl instance, +) => { + 'date': instance.date?.toIso8601String(), + 'sales': instance.sales, + 'orders': instance.orders, + 'items': instance.items, + 'tax': instance.tax, + 'discount': instance.discount, + 'net_sales': instance.netSales, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart new file mode 100644 index 0000000..c5827b1 --- /dev/null +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -0,0 +1,45 @@ +import 'dart:developer'; + +import 'package:data_channel/data_channel.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/extension/extension.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/analytic/analytic.dart'; +import '../analytic_dtos.dart'; + +@injectable +class AnalyticRemoteDataProvider { + final ApiClient _apiClient; + final String _logName = "AnalyticRemoteDataProvider"; + + AnalyticRemoteDataProvider(this._apiClient); + + Future> fetchSales({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + ApiPath.salesAnalytic, + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = SalesAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchSalesError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/analytic/dto/sales_analytic_dto.dart b/lib/infrastructure/analytic/dto/sales_analytic_dto.dart new file mode 100644 index 0000000..c4453c9 --- /dev/null +++ b/lib/infrastructure/analytic/dto/sales_analytic_dto.dart @@ -0,0 +1,85 @@ +part of '../analytic_dtos.dart'; + +@freezed +class SalesAnalyticDto with _$SalesAnalyticDto { + const SalesAnalyticDto._(); + + const factory SalesAnalyticDto({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') DateTime? dateFrom, + @JsonKey(name: 'date_to') DateTime? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') SalesAnalyticSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }) = _SalesAnalyticDto; + + factory SalesAnalyticDto.fromJson(Map json) => + _$SalesAnalyticDtoFromJson(json); + + SalesAnalytic toDomain() => SalesAnalytic( + organizationId: organizationId ?? '', + outletId: outletId ?? '', + dateFrom: dateFrom ?? DateTime.fromMillisecondsSinceEpoch(0), + dateTo: dateTo ?? DateTime.fromMillisecondsSinceEpoch(0), + groupBy: groupBy ?? '', + summary: summary?.toDomain() ?? SalesAnalyticSummary.empty(), + data: data?.map((e) => e.toDomain()).toList() ?? [], + ); +} + +@freezed +class SalesAnalyticSummaryDto with _$SalesAnalyticSummaryDto { + const SalesAnalyticSummaryDto._(); + + const factory SalesAnalyticSummaryDto({ + @JsonKey(name: 'total_sales') num? totalSales, + @JsonKey(name: 'total_orders') num? totalOrders, + @JsonKey(name: 'total_items') num? totalItems, + @JsonKey(name: 'average_order_value') num? averageOrderValue, + @JsonKey(name: 'total_tax') num? totalTax, + @JsonKey(name: 'total_discount') num? totalDiscount, + @JsonKey(name: 'net_sales') num? netSales, + }) = _SalesAnalyticSummaryDto; + + factory SalesAnalyticSummaryDto.fromJson(Map json) => + _$SalesAnalyticSummaryDtoFromJson(json); + + SalesAnalyticSummary toDomain() => SalesAnalyticSummary( + totalSales: totalSales?.toInt() ?? 0, + totalOrders: totalOrders?.toInt() ?? 0, + totalItems: totalItems?.toInt() ?? 0, + averageOrderValue: averageOrderValue?.toDouble() ?? 0, + totalTax: totalTax?.toInt() ?? 0, + totalDiscount: totalDiscount?.toInt() ?? 0, + netSales: netSales?.toInt() ?? 0, + ); +} + +@freezed +class SalesAnalyticDataDto with _$SalesAnalyticDataDto { + const SalesAnalyticDataDto._(); + + const factory SalesAnalyticDataDto({ + @JsonKey(name: 'date') DateTime? date, + @JsonKey(name: 'sales') num? sales, + @JsonKey(name: 'orders') num? orders, + @JsonKey(name: 'items') num? items, + @JsonKey(name: 'tax') num? tax, + @JsonKey(name: 'discount') num? discount, + @JsonKey(name: 'net_sales') num? netSales, + }) = _SalesAnalyticDataDto; + + factory SalesAnalyticDataDto.fromJson(Map json) => + _$SalesAnalyticDataDtoFromJson(json); + + SalesAnalyticData toDomain() => SalesAnalyticData( + date: date ?? DateTime.fromMillisecondsSinceEpoch(0), + sales: sales?.toInt() ?? 0, + orders: orders?.toInt() ?? 0, + items: items?.toInt() ?? 0, + tax: tax?.toInt() ?? 0, + discount: discount?.toInt() ?? 0, + netSales: netSales?.toInt() ?? 0, + ); +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart new file mode 100644 index 0000000..a615956 --- /dev/null +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -0,0 +1,40 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; +import '../datasource/remote_data_provider.dart'; + +@Injectable(as: IAnalyticRepository) +class AnalyticRepository implements IAnalyticRepository { + final AnalyticRemoteDataProvider _dataProvider; + final String _logName = 'AnalyticRepository'; + + AnalyticRepository(this._dataProvider); + + @override + Future> getSales({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final result = await _dataProvider.fetchSales( + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getSalesError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 7cd1c34..88c9774 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -16,6 +16,8 @@ import 'package:apskel_owner_flutter/application/auth/logout_form/logout_form_bl as _i574; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; +import 'package:apskel_owner_flutter/application/sales/sales_loader/sales_loader_bloc.dart' + as _i882; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; import 'package:apskel_owner_flutter/common/di/di_auto_route.dart' as _i311; import 'package:apskel_owner_flutter/common/di/di_connectivity.dart' as _i586; @@ -25,8 +27,14 @@ import 'package:apskel_owner_flutter/common/di/di_shared_preferences.dart' as _i402; import 'package:apskel_owner_flutter/common/network/network_client.dart' as _i543; +import 'package:apskel_owner_flutter/domain/analytic/repositories/i_analytic_repository.dart' + as _i477; import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; import 'package:apskel_owner_flutter/env.dart' as _i6; +import 'package:apskel_owner_flutter/infrastructure/analytic/datasource/remote_data_provider.dart' + as _i866; +import 'package:apskel_owner_flutter/infrastructure/analytic/repositories/analytic_repository.dart' + as _i393; import 'package:apskel_owner_flutter/infrastructure/auth/datasources/local_data_provider.dart' as _i991; import 'package:apskel_owner_flutter/infrastructure/auth/datasources/remote_data_provider.dart' @@ -89,12 +97,21 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i17.AuthRemoteDataProvider>( () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i866.AnalyticRemoteDataProvider>( + () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), + ); + gh.factory<_i477.IAnalyticRepository>( + () => _i393.AnalyticRepository(gh<_i866.AnalyticRemoteDataProvider>()), + ); gh.factory<_i49.IAuthRepository>( () => _i1035.AuthRepository( gh<_i991.AuthLocalDataProvider>(), gh<_i17.AuthRemoteDataProvider>(), ), ); + gh.factory<_i882.SalesLoaderBloc>( + () => _i882.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart index 33d4368..71d4f3a 100644 --- a/lib/presentation/pages/sales/sales_page.dart +++ b/lib/presentation/pages/sales/sales_page.dart @@ -1,72 +1,29 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../application/sales/sales_loader/sales_loader_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; +import '../../../domain/analytic/analytic.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/summary_card.dart'; -// Data Models -class SalesData { - final String dateFrom; - final String dateTo; - final SalesSummary summary; - final List dailySales; - - SalesData({ - required this.dateFrom, - required this.dateTo, - required this.summary, - required this.dailySales, - }); -} - -class SalesSummary { - final double totalSales; - final int totalOrders; - final int totalItems; - final double averageOrderValue; - final double totalTax; - final double totalDiscount; - final double netSales; - - SalesSummary({ - required this.totalSales, - required this.totalOrders, - required this.totalItems, - required this.averageOrderValue, - required this.totalTax, - required this.totalDiscount, - required this.netSales, - }); -} - -class DailySales { - final DateTime date; - final double sales; - final int orders; - final int items; - final double tax; - final double discount; - final double netSales; - - DailySales({ - required this.date, - required this.sales, - required this.orders, - required this.items, - required this.tax, - required this.discount, - required this.netSales, - }); -} - @RoutePage() -class SalesPage extends StatefulWidget { +class SalesPage extends StatefulWidget implements AutoRouteWrapper { const SalesPage({super.key}); @override State createState() => _SalesPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => + getIt()..add(SalesLoaderEvent.fectched()), + child: this, + ); } class _SalesPageState extends State with TickerProviderStateMixin { @@ -115,379 +72,359 @@ class _SalesPageState extends State with TickerProviderStateMixin { super.dispose(); } - // Sample data based on your JSON - final SalesData salesData = SalesData( - dateFrom: "2025-08-01T00:00:00+07:00", - dateTo: "2025-08-15T23:59:59.999999999+07:00", - summary: SalesSummary( - totalSales: 4291000, - totalOrders: 62, - totalItems: 62, - averageOrderValue: 69209.67741935483, - totalTax: 0, - totalDiscount: 0, - netSales: 4291000, - ), - dailySales: [ - DailySales( - date: DateTime.parse("2025-08-13T00:00:00Z"), - sales: 3841000, - orders: 52, - items: 52, - tax: 0, - discount: 0, - netSales: 3841000, - ), - DailySales( - date: DateTime.parse("2025-08-14T00:00:00Z"), - sales: 450000, - orders: 10, - items: 10, - tax: 0, - discount: 0, - netSales: 450000, - ), - ], - ); - - String formatCurrency(double amount) { - return 'Rp ${amount.toStringAsFixed(0).replaceAllMapped(RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (Match m) => '${m[1]}.')}'; - } - @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - // App Bar - SliverAppBar( - expandedHeight: 120, - floating: false, - pinned: true, - backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Penjualan'), - ), + body: BlocBuilder( + builder: (context, state) { + return CustomScrollView( + slivers: [ + // App Bar + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + flexibleSpace: CustomAppBar(title: 'Penjualan'), + ), - // Date Range Header - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: Container( - margin: const EdgeInsets.all(16), - padding: const EdgeInsets.symmetric( - horizontal: 20, - vertical: 12, - ), - decoration: BoxDecoration( - color: AppColor.surface, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.05), - blurRadius: 10, - offset: const Offset(0, 2), + // Date Range Header + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.symmetric( + horizontal: 20, + vertical: 12, ), - ], - ), - child: Row( - children: [ - Icon(Icons.date_range, color: AppColor.primary, size: 20), - SpaceWidth(8), - Text( - 'Aug 1 - Aug 15, 2025', - style: AppStyle.md.copyWith( - color: AppColor.textPrimary, - fontWeight: FontWeight.w500, - ), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], ), - ], + child: Row( + children: [ + Icon( + Icons.date_range, + color: AppColor.primary, + size: 20, + ), + SpaceWidth(8), + Text( + 'Aug 1 - Aug 15, 2025', + style: AppStyle.md.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), ), ), ), - ), - ), - // Summary Cards - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Summary', - style: AppStyle.xxl.copyWith( + // Summary Cards + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Summary', + style: AppStyle.xxl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SpaceHeight(16), + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 800), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Row( + children: [ + Expanded( + child: _buildSummaryCard( + 'Total Sales', + state + .sales + .summary + .totalSales + .currencyFormatRp, + Icons.trending_up, + AppColor.success, + 0, + ), + ), + SpaceWidth(12), + Expanded( + child: _buildSummaryCard( + 'Total Orders', + state.sales.summary.totalOrders + .toString(), + Icons.shopping_cart, + AppColor.info, + 100, + ), + ), + ], + ), + ); + }, + ), + const SpaceHeight(12), + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1000), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Row( + children: [ + Expanded( + child: _buildSummaryCard( + 'Avg Order Value', + state.sales.summary.averageOrderValue + .round() + .currencyFormatRp, + Icons.attach_money, + AppColor.warning, + 200, + ), + ), + SpaceWidth(12), + Expanded( + child: _buildSummaryCard( + 'Total Items', + state.sales.summary.totalItems + .toString(), + Icons.inventory, + AppColor.primary, + 300, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ), + ), + ), + ), + + // Net Sales Card + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1200), + curve: Curves.bounceOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: AppColor.successGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.success.withOpacity(0.3), + blurRadius: 15, + offset: const Offset(0, 5), + ), + ], + ), + child: Row( + children: [ + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1500), + curve: Curves.elasticOut, + builder: (context, iconValue, child) { + return Transform.rotate( + angle: iconValue * 0.1, + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + borderRadius: BorderRadius.circular( + 12, + ), + ), + child: const Icon( + Icons.account_balance_wallet, + color: AppColor.textWhite, + size: 28, + ), + ), + ); + }, + ), + SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + 'Net Sales', + style: TextStyle( + color: AppColor.textWhite.withOpacity( + 0.9, + ), + fontSize: 14, + fontWeight: FontWeight.w500, + ), + ), + const SpaceHeight(4), + TweenAnimationBuilder( + tween: Tween( + begin: 0.0, + end: state.sales.summary.netSales + .toDouble(), + ), + duration: const Duration( + milliseconds: 2000, + ), + curve: Curves.easeOutCubic, + builder: (context, countValue, child) { + return Text( + state + .sales + .summary + .netSales + .currencyFormatRp, + style: const TextStyle( + color: AppColor.textWhite, + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ); + }, + ), + ], + ), + ), + ], + ), + ), + ); + }, + ), + ), + ), + ), + + // Daily Sales Section Header + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Padding( + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), + child: Text( + 'Daily Breakdown', + style: TextStyle( + fontSize: 20, fontWeight: FontWeight.bold, color: AppColor.textPrimary, ), ), - const SpaceHeight(16), - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 800), - curve: Curves.elasticOut, - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: Row( - children: [ - Expanded( - child: _buildSummaryCard( - 'Total Sales', - formatCurrency( - salesData.summary.totalSales, - ), - Icons.trending_up, - AppColor.success, - 0, - ), - ), - SpaceWidth(12), - Expanded( - child: _buildSummaryCard( - 'Total Orders', - '${salesData.summary.totalOrders}', - Icons.shopping_cart, - AppColor.info, - 100, - ), - ), - ], - ), - ); - }, - ), - const SpaceHeight(12), - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1000), - curve: Curves.elasticOut, - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: Row( - children: [ - Expanded( - child: _buildSummaryCard( - 'Avg Order Value', - formatCurrency( - salesData.summary.averageOrderValue, - ), - Icons.attach_money, - AppColor.warning, - 200, - ), - ), - SpaceWidth(12), - Expanded( - child: _buildSummaryCard( - 'Total Items', - '${salesData.summary.totalItems}', - Icons.inventory, - AppColor.primary, - 300, - ), - ), - ], - ), - ); - }, - ), - ], + ), ), ), ), - ), - ), - // Net Sales Card - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1200), - curve: Curves.bounceOut, - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: Container( - margin: const EdgeInsets.all(16), - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - gradient: const LinearGradient( - colors: AppColor.successGradient, - begin: Alignment.topLeft, - end: Alignment.bottomRight, + // Daily Sales List + SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + return SlideTransition( + position: + Tween( + begin: Offset(index.isEven ? -1.0 : 1.0, 0), + end: Offset.zero, + ).animate( + CurvedAnimation( + parent: slideAnimationController, + curve: Interval( + 0.2 + (index * 0.1), + 0.8 + (index * 0.1), + curve: Curves.easeOutBack, + ), ), - borderRadius: BorderRadius.circular(16), + ), + child: FadeTransition( + opacity: Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: fadeAnimationController, + curve: Interval( + 0.3 + (index * 0.1), + 0.9 + (index * 0.1), + curve: Curves.easeOut, + ), + ), + ), + child: Container( + margin: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), boxShadow: [ BoxShadow( - color: AppColor.success.withOpacity(0.3), - blurRadius: 15, - offset: const Offset(0, 5), - ), - ], - ), - child: Row( - children: [ - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1500), - curve: Curves.elasticOut, - builder: (context, iconValue, child) { - return Transform.rotate( - angle: iconValue * 0.1, - child: Container( - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(12), - ), - child: const Icon( - Icons.account_balance_wallet, - color: AppColor.textWhite, - size: 28, - ), - ), - ); - }, - ), - SpaceWidth(16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Net Sales', - style: TextStyle( - color: AppColor.textWhite.withOpacity( - 0.9, - ), - fontSize: 14, - fontWeight: FontWeight.w500, - ), - ), - const SpaceHeight(4), - TweenAnimationBuilder( - tween: Tween( - begin: 0.0, - end: salesData.summary.netSales, - ), - duration: const Duration( - milliseconds: 2000, - ), - curve: Curves.easeOutCubic, - builder: (context, countValue, child) { - return Text( - formatCurrency(countValue), - style: const TextStyle( - color: AppColor.textWhite, - fontSize: 24, - fontWeight: FontWeight.bold, - ), - ); - }, - ), - ], - ), + color: Colors.black.withOpacity(0.05), + blurRadius: 8, + offset: const Offset(0, 2), ), ], ), + child: _buildDailySalesItem(state.sales.data[index]), ), - ); - }, - ), + ), + ); + }, childCount: state.sales.data.length), ), - ), - ), - // Daily Sales Section Header - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: Padding( - padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), - child: Text( - 'Daily Breakdown', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), - ), - ), - ), - ), - ), - - // Daily Sales List - SliverList( - delegate: SliverChildBuilderDelegate((context, index) { - final dailySale = salesData.dailySales[index]; - return SlideTransition( - position: - Tween( - begin: Offset(index.isEven ? -1.0 : 1.0, 0), - end: Offset.zero, - ).animate( - CurvedAnimation( - parent: slideAnimationController, - curve: Interval( - 0.2 + (index * 0.1), - 0.8 + (index * 0.1), - curve: Curves.easeOutBack, - ), - ), - ), - child: FadeTransition( - opacity: Tween(begin: 0.0, end: 1.0).animate( - CurvedAnimation( - parent: fadeAnimationController, - curve: Interval( - 0.3 + (index * 0.1), - 0.9 + (index * 0.1), - curve: Curves.easeOut, - ), - ), - ), - child: Container( - margin: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 6, - ), - decoration: BoxDecoration( - color: AppColor.surface, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.05), - blurRadius: 8, - offset: const Offset(0, 2), - ), - ], - ), - child: _buildDailySalesItem(dailySale), - ), - ), - ); - }, childCount: salesData.dailySales.length), - ), - - // Bottom Padding - const SliverToBoxAdapter(child: SpaceHeight(32)), - ], + // Bottom Padding + const SliverToBoxAdapter(child: SpaceHeight(32)), + ], + ); + }, ), ); } @@ -509,7 +446,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { ); } - Widget _buildDailySalesItem(DailySales dailySale) { + Widget _buildDailySalesItem(SalesAnalyticData dailySale) { return ExpansionTile( leading: Container( padding: const EdgeInsets.all(10), @@ -527,7 +464,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { ), ), subtitle: Text( - formatCurrency(dailySale.sales), + dailySale.sales.currencyFormatRp, style: TextStyle( color: AppColor.success, fontWeight: FontWeight.w600, @@ -564,14 +501,14 @@ class _SalesPageState extends State with TickerProviderStateMixin { Expanded( child: _buildDetailItem( 'Tax', - formatCurrency(dailySale.tax), + dailySale.tax.currencyFormatRp, Icons.receipt, ), ), Expanded( child: _buildDetailItem( 'Discount', - formatCurrency(dailySale.discount), + dailySale.discount.currencyFormatRp, Icons.local_offer, ), ), diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index f7fd053..e33909a 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -198,7 +198,7 @@ class ProfileRoute extends _i17.PageRouteInfo { static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i10.ProfilePage(); + return _i17.WrappedRoute(child: const _i10.ProfilePage()); }, ); } @@ -246,7 +246,7 @@ class SalesRoute extends _i17.PageRouteInfo { static _i17.PageInfo page = _i17.PageInfo( name, builder: (data) { - return const _i13.SalesPage(); + return _i17.WrappedRoute(child: const _i13.SalesPage()); }, ); } diff --git a/pubspec.lock b/pubspec.lock index c9f4571..711d296 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1045,6 +1045,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + shimmer: + dependency: "direct main" + description: + name: shimmer + sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" + url: "https://pub.dev" + source: hosted + version: "3.0.0" simple_gesture_detector: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c3e9f7f..206a197 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -40,6 +40,7 @@ dependencies: table_calendar: ^3.2.0 package_info_plus: ^8.3.1 loader_overlay: ^5.0.0 + shimmer: ^3.0.0 dev_dependencies: flutter_test: From 4a4f6388d7a55c9f3a655b3878278f27c34380f3 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 12:50:10 +0700 Subject: [PATCH 045/108] feat: category --- .../category_loader/category_loader_bloc.dart | 55 + .../category_loader_bloc.freezed.dart | 370 +++++++ .../category_loader_event.dart | 6 + .../category_loader_state.dart | 13 + lib/common/url/api_path.dart | 3 + lib/domain/category/category.dart | 10 + lib/domain/category/category.freezed.dart | 952 ++++++++++++++++++ .../category/entities/category_entity.dart | 33 + .../category/failures/category_failure.dart | 10 + .../repositories/i_auth_repository.dart | 9 + .../category/category_dtos.dart | 8 + .../category/category_dtos.freezed.dart | 368 +++++++ .../category/category_dtos.g.dart | 35 + .../datasource/remote_data_provider.dart | 44 + .../category/dto/category_dto.dart | 31 + .../repositories/category_repository.dart | 41 + lib/injection.config.dart | 16 + .../pages/product/product_page.dart | 45 +- .../product/widgets/category_delegate.dart | 12 +- 19 files changed, 2041 insertions(+), 20 deletions(-) create mode 100644 lib/application/category/category_loader/category_loader_bloc.dart create mode 100644 lib/application/category/category_loader/category_loader_bloc.freezed.dart create mode 100644 lib/application/category/category_loader/category_loader_event.dart create mode 100644 lib/application/category/category_loader/category_loader_state.dart create mode 100644 lib/domain/category/category.dart create mode 100644 lib/domain/category/category.freezed.dart create mode 100644 lib/domain/category/entities/category_entity.dart create mode 100644 lib/domain/category/failures/category_failure.dart create mode 100644 lib/domain/category/repositories/i_auth_repository.dart create mode 100644 lib/infrastructure/category/category_dtos.dart create mode 100644 lib/infrastructure/category/category_dtos.freezed.dart create mode 100644 lib/infrastructure/category/category_dtos.g.dart create mode 100644 lib/infrastructure/category/datasource/remote_data_provider.dart create mode 100644 lib/infrastructure/category/dto/category_dto.dart create mode 100644 lib/infrastructure/category/repositories/category_repository.dart diff --git a/lib/application/category/category_loader/category_loader_bloc.dart b/lib/application/category/category_loader/category_loader_bloc.dart new file mode 100644 index 0000000..884f36c --- /dev/null +++ b/lib/application/category/category_loader/category_loader_bloc.dart @@ -0,0 +1,55 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/category/category.dart'; + +part 'category_loader_event.dart'; +part 'category_loader_state.dart'; +part 'category_loader_bloc.freezed.dart'; + +@injectable +class CategoryLoaderBloc + extends Bloc { + final ICategoryRepository _repository; + CategoryLoaderBloc(this._repository) : super(CategoryLoaderState.initial()) { + on(_onCategoryLoaderEvent); + } + + Future _onCategoryLoaderEvent( + CategoryLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit(state.copyWith(isFetching: true, failureOptionCategory: none())); + + final result = await _repository.get(); + + result.fold( + (f) { + emit( + state.copyWith( + isFetching: false, + failureOptionCategory: optionOf(f), + ), + ); + }, + (categories) { + // tambahkan "All Data" di awal list + final updatedCategories = [Category.addAllData(), ...categories]; + + emit( + state.copyWith( + isFetching: false, + categories: updatedCategories, + failureOptionCategory: none(), + ), + ); + }, + ); + }, + ); + } +} diff --git a/lib/application/category/category_loader/category_loader_bloc.freezed.dart b/lib/application/category/category_loader/category_loader_bloc.freezed.dart new file mode 100644 index 0000000..5599123 --- /dev/null +++ b/lib/application/category/category_loader/category_loader_bloc.freezed.dart @@ -0,0 +1,370 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'category_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$CategoryLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryLoaderEventCopyWith<$Res> { + factory $CategoryLoaderEventCopyWith( + CategoryLoaderEvent value, + $Res Function(CategoryLoaderEvent) then, + ) = _$CategoryLoaderEventCopyWithImpl<$Res, CategoryLoaderEvent>; +} + +/// @nodoc +class _$CategoryLoaderEventCopyWithImpl<$Res, $Val extends CategoryLoaderEvent> + implements $CategoryLoaderEventCopyWith<$Res> { + _$CategoryLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$CategoryLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'CategoryLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements CategoryLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$CategoryLoaderState { + List get categories => throw _privateConstructorUsedError; + Option get failureOptionCategory => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of CategoryLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryLoaderStateCopyWith<$Res> { + factory $CategoryLoaderStateCopyWith( + CategoryLoaderState value, + $Res Function(CategoryLoaderState) then, + ) = _$CategoryLoaderStateCopyWithImpl<$Res, CategoryLoaderState>; + @useResult + $Res call({ + List categories, + Option failureOptionCategory, + bool isFetching, + }); +} + +/// @nodoc +class _$CategoryLoaderStateCopyWithImpl<$Res, $Val extends CategoryLoaderState> + implements $CategoryLoaderStateCopyWith<$Res> { + _$CategoryLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categories = null, + Object? failureOptionCategory = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + categories: null == categories + ? _value.categories + : categories // ignore: cast_nullable_to_non_nullable + as List, + failureOptionCategory: null == failureOptionCategory + ? _value.failureOptionCategory + : failureOptionCategory // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CategoryLoaderStateImplCopyWith<$Res> + implements $CategoryLoaderStateCopyWith<$Res> { + factory _$$CategoryLoaderStateImplCopyWith( + _$CategoryLoaderStateImpl value, + $Res Function(_$CategoryLoaderStateImpl) then, + ) = __$$CategoryLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + List categories, + Option failureOptionCategory, + bool isFetching, + }); +} + +/// @nodoc +class __$$CategoryLoaderStateImplCopyWithImpl<$Res> + extends _$CategoryLoaderStateCopyWithImpl<$Res, _$CategoryLoaderStateImpl> + implements _$$CategoryLoaderStateImplCopyWith<$Res> { + __$$CategoryLoaderStateImplCopyWithImpl( + _$CategoryLoaderStateImpl _value, + $Res Function(_$CategoryLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categories = null, + Object? failureOptionCategory = null, + Object? isFetching = null, + }) { + return _then( + _$CategoryLoaderStateImpl( + categories: null == categories + ? _value._categories + : categories // ignore: cast_nullable_to_non_nullable + as List, + failureOptionCategory: null == failureOptionCategory + ? _value.failureOptionCategory + : failureOptionCategory // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$CategoryLoaderStateImpl implements _CategoryLoaderState { + const _$CategoryLoaderStateImpl({ + required final List categories, + required this.failureOptionCategory, + this.isFetching = false, + }) : _categories = categories; + + final List _categories; + @override + List get categories { + if (_categories is EqualUnmodifiableListView) return _categories; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_categories); + } + + @override + final Option failureOptionCategory; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'CategoryLoaderState(categories: $categories, failureOptionCategory: $failureOptionCategory, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryLoaderStateImpl && + const DeepCollectionEquality().equals( + other._categories, + _categories, + ) && + (identical(other.failureOptionCategory, failureOptionCategory) || + other.failureOptionCategory == failureOptionCategory) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(_categories), + failureOptionCategory, + isFetching, + ); + + /// Create a copy of CategoryLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryLoaderStateImplCopyWith<_$CategoryLoaderStateImpl> get copyWith => + __$$CategoryLoaderStateImplCopyWithImpl<_$CategoryLoaderStateImpl>( + this, + _$identity, + ); +} + +abstract class _CategoryLoaderState implements CategoryLoaderState { + const factory _CategoryLoaderState({ + required final List categories, + required final Option failureOptionCategory, + final bool isFetching, + }) = _$CategoryLoaderStateImpl; + + @override + List get categories; + @override + Option get failureOptionCategory; + @override + bool get isFetching; + + /// Create a copy of CategoryLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryLoaderStateImplCopyWith<_$CategoryLoaderStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/category/category_loader/category_loader_event.dart b/lib/application/category/category_loader/category_loader_event.dart new file mode 100644 index 0000000..2c154e1 --- /dev/null +++ b/lib/application/category/category_loader/category_loader_event.dart @@ -0,0 +1,6 @@ +part of 'category_loader_bloc.dart'; + +@freezed +class CategoryLoaderEvent with _$CategoryLoaderEvent { + const factory CategoryLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/category/category_loader/category_loader_state.dart b/lib/application/category/category_loader/category_loader_state.dart new file mode 100644 index 0000000..e3295ea --- /dev/null +++ b/lib/application/category/category_loader/category_loader_state.dart @@ -0,0 +1,13 @@ +part of 'category_loader_bloc.dart'; + +@freezed +class CategoryLoaderState with _$CategoryLoaderState { + const factory CategoryLoaderState({ + required List categories, + required Option failureOptionCategory, + @Default(false) bool isFetching, + }) = _CategoryLoaderState; + + factory CategoryLoaderState.initial() => + CategoryLoaderState(categories: [], failureOptionCategory: none()); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 114fcb1..17064a4 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -5,4 +5,7 @@ class ApiPath { // Analytic static const String salesAnalytic = '/api/v1/analytics/sales'; + + // Category + static const String category = '/api/v1/categories'; } diff --git a/lib/domain/category/category.dart b/lib/domain/category/category.dart new file mode 100644 index 0000000..0e50ce0 --- /dev/null +++ b/lib/domain/category/category.dart @@ -0,0 +1,10 @@ +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../common/api/api_failure.dart'; + +part 'category.freezed.dart'; + +part 'entities/category_entity.dart'; +part 'failures/category_failure.dart'; +part 'repositories/i_auth_repository.dart'; diff --git a/lib/domain/category/category.freezed.dart b/lib/domain/category/category.freezed.dart new file mode 100644 index 0000000..204a55c --- /dev/null +++ b/lib/domain/category/category.freezed.dart @@ -0,0 +1,952 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'category.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$Category { + String get id => throw _privateConstructorUsedError; + String get organizationId => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + String get description => throw _privateConstructorUsedError; + String get businessType => throw _privateConstructorUsedError; + Map get metadata => throw _privateConstructorUsedError; + DateTime? get createdAt => throw _privateConstructorUsedError; + DateTime? get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of Category + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryCopyWith<$Res> { + factory $CategoryCopyWith(Category value, $Res Function(Category) then) = + _$CategoryCopyWithImpl<$Res, Category>; + @useResult + $Res call({ + String id, + String organizationId, + String name, + String description, + String businessType, + Map metadata, + DateTime? createdAt, + DateTime? updatedAt, + }); +} + +/// @nodoc +class _$CategoryCopyWithImpl<$Res, $Val extends Category> + implements $CategoryCopyWith<$Res> { + _$CategoryCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Category + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? name = null, + Object? description = null, + Object? businessType = null, + Object? metadata = null, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + businessType: null == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String, + metadata: null == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CategoryImplCopyWith<$Res> + implements $CategoryCopyWith<$Res> { + factory _$$CategoryImplCopyWith( + _$CategoryImpl value, + $Res Function(_$CategoryImpl) then, + ) = __$$CategoryImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String organizationId, + String name, + String description, + String businessType, + Map metadata, + DateTime? createdAt, + DateTime? updatedAt, + }); +} + +/// @nodoc +class __$$CategoryImplCopyWithImpl<$Res> + extends _$CategoryCopyWithImpl<$Res, _$CategoryImpl> + implements _$$CategoryImplCopyWith<$Res> { + __$$CategoryImplCopyWithImpl( + _$CategoryImpl _value, + $Res Function(_$CategoryImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Category + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? name = null, + Object? description = null, + Object? businessType = null, + Object? metadata = null, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$CategoryImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + businessType: null == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String, + metadata: null == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + ), + ); + } +} + +/// @nodoc + +class _$CategoryImpl implements _Category { + const _$CategoryImpl({ + required this.id, + required this.organizationId, + required this.name, + required this.description, + required this.businessType, + required final Map metadata, + this.createdAt, + this.updatedAt, + }) : _metadata = metadata; + + @override + final String id; + @override + final String organizationId; + @override + final String name; + @override + final String description; + @override + final String businessType; + final Map _metadata; + @override + Map get metadata { + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_metadata); + } + + @override + final DateTime? createdAt; + @override + final DateTime? updatedAt; + + @override + String toString() { + return 'Category(id: $id, organizationId: $organizationId, name: $name, description: $description, businessType: $businessType, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.name, name) || other.name == name) && + (identical(other.description, description) || + other.description == description) && + (identical(other.businessType, businessType) || + other.businessType == businessType) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + name, + description, + businessType, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of Category + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryImplCopyWith<_$CategoryImpl> get copyWith => + __$$CategoryImplCopyWithImpl<_$CategoryImpl>(this, _$identity); +} + +abstract class _Category implements Category { + const factory _Category({ + required final String id, + required final String organizationId, + required final String name, + required final String description, + required final String businessType, + required final Map metadata, + final DateTime? createdAt, + final DateTime? updatedAt, + }) = _$CategoryImpl; + + @override + String get id; + @override + String get organizationId; + @override + String get name; + @override + String get description; + @override + String get businessType; + @override + Map get metadata; + @override + DateTime? get createdAt; + @override + DateTime? get updatedAt; + + /// Create a copy of Category + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryImplCopyWith<_$CategoryImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$CategoryFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryFailureCopyWith<$Res> { + factory $CategoryFailureCopyWith( + CategoryFailure value, + $Res Function(CategoryFailure) then, + ) = _$CategoryFailureCopyWithImpl<$Res, CategoryFailure>; +} + +/// @nodoc +class _$CategoryFailureCopyWithImpl<$Res, $Val extends CategoryFailure> + implements $CategoryFailureCopyWith<$Res> { + _$CategoryFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$CategoryFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'CategoryFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements CategoryFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$CategoryFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'CategoryFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements CategoryFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$CategoryFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'CategoryFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements CategoryFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$CategoryFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'CategoryFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements CategoryFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of CategoryFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/category/entities/category_entity.dart b/lib/domain/category/entities/category_entity.dart new file mode 100644 index 0000000..a6d351a --- /dev/null +++ b/lib/domain/category/entities/category_entity.dart @@ -0,0 +1,33 @@ +part of '../category.dart'; + +@freezed +class Category with _$Category { + const factory Category({ + required String id, + required String organizationId, + required String name, + required String description, + required String businessType, + required Map metadata, + DateTime? createdAt, + DateTime? updatedAt, + }) = _Category; + + factory Category.empty() => const Category( + id: '', + organizationId: '', + name: '', + description: '', + businessType: '', + metadata: {}, + ); + + factory Category.addAllData() => Category( + id: 'all', + organizationId: '', + name: 'Semua', + description: '', + businessType: '', + metadata: {}, + ); +} diff --git a/lib/domain/category/failures/category_failure.dart b/lib/domain/category/failures/category_failure.dart new file mode 100644 index 0000000..0df9feb --- /dev/null +++ b/lib/domain/category/failures/category_failure.dart @@ -0,0 +1,10 @@ +part of '../category.dart'; + +@freezed +sealed class CategoryFailure with _$CategoryFailure { + const factory CategoryFailure.serverError(ApiFailure failure) = _ServerError; + const factory CategoryFailure.unexpectedError() = _UnexpectedError; + const factory CategoryFailure.empty() = _Empty; + const factory CategoryFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/category/repositories/i_auth_repository.dart b/lib/domain/category/repositories/i_auth_repository.dart new file mode 100644 index 0000000..c41a494 --- /dev/null +++ b/lib/domain/category/repositories/i_auth_repository.dart @@ -0,0 +1,9 @@ +part of '../category.dart'; + +abstract class ICategoryRepository { + Future>> get({ + int page = 1, + int limit = 20, + bool isActive = true, + }); +} diff --git a/lib/infrastructure/category/category_dtos.dart b/lib/infrastructure/category/category_dtos.dart new file mode 100644 index 0000000..f07cffc --- /dev/null +++ b/lib/infrastructure/category/category_dtos.dart @@ -0,0 +1,8 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/category/category.dart'; + +part 'category_dtos.freezed.dart'; +part 'category_dtos.g.dart'; + +part 'dto/category_dto.dart'; diff --git a/lib/infrastructure/category/category_dtos.freezed.dart b/lib/infrastructure/category/category_dtos.freezed.dart new file mode 100644 index 0000000..fb9448a --- /dev/null +++ b/lib/infrastructure/category/category_dtos.freezed.dart @@ -0,0 +1,368 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'category_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +CategoryDto _$CategoryDtoFromJson(Map json) { + return _CategoryDto.fromJson(json); +} + +/// @nodoc +mixin _$CategoryDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'name') + String? get name => throw _privateConstructorUsedError; + @JsonKey(name: 'description') + String? get description => throw _privateConstructorUsedError; + @JsonKey(name: 'business_type') + String? get businessType => throw _privateConstructorUsedError; + @JsonKey(name: 'metadata') + Map? get metadata => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + DateTime? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + DateTime? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this CategoryDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of CategoryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryDtoCopyWith<$Res> { + factory $CategoryDtoCopyWith( + CategoryDto value, + $Res Function(CategoryDto) then, + ) = _$CategoryDtoCopyWithImpl<$Res, CategoryDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'description') String? description, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + }); +} + +/// @nodoc +class _$CategoryDtoCopyWithImpl<$Res, $Val extends CategoryDto> + implements $CategoryDtoCopyWith<$Res> { + _$CategoryDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? name = freezed, + Object? description = freezed, + Object? businessType = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + description: freezed == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String?, + businessType: freezed == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String?, + metadata: freezed == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CategoryDtoImplCopyWith<$Res> + implements $CategoryDtoCopyWith<$Res> { + factory _$$CategoryDtoImplCopyWith( + _$CategoryDtoImpl value, + $Res Function(_$CategoryDtoImpl) then, + ) = __$$CategoryDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'description') String? description, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + }); +} + +/// @nodoc +class __$$CategoryDtoImplCopyWithImpl<$Res> + extends _$CategoryDtoCopyWithImpl<$Res, _$CategoryDtoImpl> + implements _$$CategoryDtoImplCopyWith<$Res> { + __$$CategoryDtoImplCopyWithImpl( + _$CategoryDtoImpl _value, + $Res Function(_$CategoryDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? name = freezed, + Object? description = freezed, + Object? businessType = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$CategoryDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + description: freezed == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String?, + businessType: freezed == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String?, + metadata: freezed == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$CategoryDtoImpl extends _CategoryDto { + const _$CategoryDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'name') this.name, + @JsonKey(name: 'description') this.description, + @JsonKey(name: 'business_type') this.businessType, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + }) : _metadata = metadata, + super._(); + + factory _$CategoryDtoImpl.fromJson(Map json) => + _$$CategoryDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'name') + final String? name; + @override + @JsonKey(name: 'description') + final String? description; + @override + @JsonKey(name: 'business_type') + final String? businessType; + final Map? _metadata; + @override + @JsonKey(name: 'metadata') + Map? get metadata { + final value = _metadata; + if (value == null) return null; + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'created_at') + final DateTime? createdAt; + @override + @JsonKey(name: 'updated_at') + final DateTime? updatedAt; + + @override + String toString() { + return 'CategoryDto(id: $id, organizationId: $organizationId, name: $name, description: $description, businessType: $businessType, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.name, name) || other.name == name) && + (identical(other.description, description) || + other.description == description) && + (identical(other.businessType, businessType) || + other.businessType == businessType) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + name, + description, + businessType, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of CategoryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryDtoImplCopyWith<_$CategoryDtoImpl> get copyWith => + __$$CategoryDtoImplCopyWithImpl<_$CategoryDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$CategoryDtoImplToJson(this); + } +} + +abstract class _CategoryDto extends CategoryDto { + const factory _CategoryDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'name') final String? name, + @JsonKey(name: 'description') final String? description, + @JsonKey(name: 'business_type') final String? businessType, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') final DateTime? createdAt, + @JsonKey(name: 'updated_at') final DateTime? updatedAt, + }) = _$CategoryDtoImpl; + const _CategoryDto._() : super._(); + + factory _CategoryDto.fromJson(Map json) = + _$CategoryDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'name') + String? get name; + @override + @JsonKey(name: 'description') + String? get description; + @override + @JsonKey(name: 'business_type') + String? get businessType; + @override + @JsonKey(name: 'metadata') + Map? get metadata; + @override + @JsonKey(name: 'created_at') + DateTime? get createdAt; + @override + @JsonKey(name: 'updated_at') + DateTime? get updatedAt; + + /// Create a copy of CategoryDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryDtoImplCopyWith<_$CategoryDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/category/category_dtos.g.dart b/lib/infrastructure/category/category_dtos.g.dart new file mode 100644 index 0000000..d41549d --- /dev/null +++ b/lib/infrastructure/category/category_dtos.g.dart @@ -0,0 +1,35 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'category_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$CategoryDtoImpl _$$CategoryDtoImplFromJson(Map json) => + _$CategoryDtoImpl( + id: json['id'] as String?, + organizationId: json['organization_id'] as String?, + name: json['name'] as String?, + description: json['description'] as String?, + businessType: json['business_type'] as String?, + metadata: json['metadata'] as Map?, + createdAt: json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + updatedAt: json['updated_at'] == null + ? null + : DateTime.parse(json['updated_at'] as String), + ); + +Map _$$CategoryDtoImplToJson(_$CategoryDtoImpl instance) => + { + 'id': instance.id, + 'organization_id': instance.organizationId, + 'name': instance.name, + 'description': instance.description, + 'business_type': instance.businessType, + 'metadata': instance.metadata, + 'created_at': instance.createdAt?.toIso8601String(), + 'updated_at': instance.updatedAt?.toIso8601String(), + }; diff --git a/lib/infrastructure/category/datasource/remote_data_provider.dart b/lib/infrastructure/category/datasource/remote_data_provider.dart new file mode 100644 index 0000000..46e1ba9 --- /dev/null +++ b/lib/infrastructure/category/datasource/remote_data_provider.dart @@ -0,0 +1,44 @@ +import 'dart:developer'; + +import 'package:data_channel/data_channel.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/category/category.dart'; +import '../category_dtos.dart'; + +@injectable +class CategoryRemoteDataProvider { + final ApiClient _apiClient; + final String _logName = 'CategoryRemoteDataProvider'; + + CategoryRemoteDataProvider(this._apiClient); + + Future>> fetch({ + int page = 1, + int limit = 20, + bool isActive = true, + }) async { + try { + final response = await _apiClient.get( + ApiPath.category, + params: {'page': page, 'limit': limit, 'is_active': isActive}, + ); + + if (response.data['data'] == null) { + return DC.error(CategoryFailure.empty()); + } + + final dto = (response.data['data']['categories'] as List) + .map((item) => CategoryDto.fromJson(item)) + .toList(); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchCategoryError', name: _logName, error: e, stackTrace: s); + return DC.error(CategoryFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/category/dto/category_dto.dart b/lib/infrastructure/category/dto/category_dto.dart new file mode 100644 index 0000000..7894f0c --- /dev/null +++ b/lib/infrastructure/category/dto/category_dto.dart @@ -0,0 +1,31 @@ +part of '../category_dtos.dart'; + +@freezed +class CategoryDto with _$CategoryDto { + const CategoryDto._(); + + const factory CategoryDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'description') String? description, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + }) = _CategoryDto; + + factory CategoryDto.fromJson(Map json) => + _$CategoryDtoFromJson(json); + + Category toDomain() => Category( + id: id ?? '', + organizationId: organizationId ?? '', + name: name ?? '', + description: description ?? '', + businessType: businessType ?? '', + metadata: metadata ?? {}, + createdAt: createdAt, + updatedAt: updatedAt, + ); +} diff --git a/lib/infrastructure/category/repositories/category_repository.dart b/lib/infrastructure/category/repositories/category_repository.dart new file mode 100644 index 0000000..73e96fe --- /dev/null +++ b/lib/infrastructure/category/repositories/category_repository.dart @@ -0,0 +1,41 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/category/category.dart'; +import '../datasource/remote_data_provider.dart'; + +@Injectable(as: ICategoryRepository) +class CategoryRepository implements ICategoryRepository { + final CategoryRemoteDataProvider _dataProvider; + final String _logName = 'CategoryRepository'; + + CategoryRepository(this._dataProvider); + + @override + Future>> get({ + int page = 1, + int limit = 20, + bool isActive = true, + }) async { + try { + final result = await _dataProvider.fetch( + page: page, + limit: limit, + isActive: isActive, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.map((e) => e.toDomain()).toList(); + + return right(auth); + } catch (e, s) { + log('getCategoryError', name: _logName, error: e, stackTrace: s); + return left(const CategoryFailure.unexpectedError()); + } + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 88c9774..9836760 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -14,6 +14,8 @@ import 'package:apskel_owner_flutter/application/auth/login_form/login_form_bloc as _i775; import 'package:apskel_owner_flutter/application/auth/logout_form/logout_form_bloc.dart' as _i574; +import 'package:apskel_owner_flutter/application/category/category_loader/category_loader_bloc.dart' + as _i183; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/application/sales/sales_loader/sales_loader_bloc.dart' @@ -30,6 +32,7 @@ import 'package:apskel_owner_flutter/common/network/network_client.dart' import 'package:apskel_owner_flutter/domain/analytic/repositories/i_analytic_repository.dart' as _i477; import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; +import 'package:apskel_owner_flutter/domain/category/category.dart' as _i1020; import 'package:apskel_owner_flutter/env.dart' as _i6; import 'package:apskel_owner_flutter/infrastructure/analytic/datasource/remote_data_provider.dart' as _i866; @@ -41,6 +44,10 @@ import 'package:apskel_owner_flutter/infrastructure/auth/datasources/remote_data as _i17; import 'package:apskel_owner_flutter/infrastructure/auth/repositories/auth_repository.dart' as _i1035; +import 'package:apskel_owner_flutter/infrastructure/category/datasource/remote_data_provider.dart' + as _i333; +import 'package:apskel_owner_flutter/infrastructure/category/repositories/category_repository.dart' + as _i869; import 'package:apskel_owner_flutter/presentation/router/app_router.dart' as _i258; import 'package:connectivity_plus/connectivity_plus.dart' as _i895; @@ -100,6 +107,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i866.AnalyticRemoteDataProvider>( () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i333.CategoryRemoteDataProvider>( + () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i477.IAnalyticRepository>( () => _i393.AnalyticRepository(gh<_i866.AnalyticRemoteDataProvider>()), ); @@ -109,6 +119,12 @@ extension GetItInjectableX on _i174.GetIt { gh<_i17.AuthRemoteDataProvider>(), ), ); + gh.factory<_i1020.ICategoryRepository>( + () => _i869.CategoryRepository(gh<_i333.CategoryRemoteDataProvider>()), + ); + gh.factory<_i183.CategoryLoaderBloc>( + () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), + ); gh.factory<_i882.SalesLoaderBloc>( () => _i882.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_page.dart index 259d0ea..56a1f94 100644 --- a/lib/presentation/pages/product/product_page.dart +++ b/lib/presentation/pages/product/product_page.dart @@ -1,27 +1,37 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../application/category/category_loader/category_loader_bloc.dart'; import '../../../common/theme/theme.dart'; +import '../../../domain/category/category.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import 'widgets/category_delegate.dart'; import 'widgets/product_tile.dart'; @RoutePage() -class ProductPage extends StatefulWidget { +class ProductPage extends StatefulWidget implements AutoRouteWrapper { const ProductPage({super.key}); @override State createState() => _ProductPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => + getIt()..add(CategoryLoaderEvent.fetched()), + child: this, + ); } enum ViewType { grid, list } class _ProductPageState extends State with TickerProviderStateMixin { - String selectedCategory = 'Semua'; - List categories = ['Semua', 'Makanan', 'Minuman', 'Snack', 'Dessert']; + Category selectedCategory = Category.addAllData(); ViewType currentViewType = ViewType.grid; // Sample product data @@ -121,7 +131,8 @@ class _ProductPageState extends State List get filteredProducts { return products.where((product) { bool matchesCategory = - selectedCategory == 'Semua' || product.category == selectedCategory; + selectedCategory.name == 'Semua' || + product.category == selectedCategory.id; return matchesCategory; }).toList(); } @@ -173,17 +184,21 @@ class _ProductPageState extends State } Widget _buildCategoryFilter() { - return SliverPersistentHeader( - pinned: true, - delegate: ProductCategoryHeaderDelegate( - categories: categories, - selectedCategory: selectedCategory, - onCategoryChanged: (category) { - setState(() { - selectedCategory = category; - }); - }, - ), + return BlocBuilder( + builder: (context, state) { + return SliverPersistentHeader( + pinned: true, + delegate: ProductCategoryHeaderDelegate( + categories: state.categories, + selectedCategory: selectedCategory, + onCategoryChanged: (category) { + setState(() { + selectedCategory = category; + }); + }, + ), + ); + }, ); } diff --git a/lib/presentation/pages/product/widgets/category_delegate.dart b/lib/presentation/pages/product/widgets/category_delegate.dart index e0a851b..54c6a37 100644 --- a/lib/presentation/pages/product/widgets/category_delegate.dart +++ b/lib/presentation/pages/product/widgets/category_delegate.dart @@ -1,11 +1,12 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/category/category.dart'; class ProductCategoryHeaderDelegate extends SliverPersistentHeaderDelegate { - final List categories; - final String selectedCategory; - final ValueChanged onCategoryChanged; + final List categories; + final Category selectedCategory; + final ValueChanged onCategoryChanged; ProductCategoryHeaderDelegate({ required this.categories, @@ -35,7 +36,7 @@ class ProductCategoryHeaderDelegate extends SliverPersistentHeaderDelegate { return Container( margin: const EdgeInsets.only(right: 12.0), child: FilterChip( - label: Text(category), + label: Text(category.name), selected: isSelected, onSelected: (selected) => onCategoryChanged(category), backgroundColor: AppColor.surface, @@ -64,6 +65,7 @@ class ProductCategoryHeaderDelegate extends SliverPersistentHeaderDelegate { @override bool shouldRebuild(ProductCategoryHeaderDelegate oldDelegate) { - return oldDelegate.selectedCategory != selectedCategory; + return oldDelegate.categories != categories || + oldDelegate.selectedCategory != selectedCategory; } } From 6df5380aa3c8943f8acaa2f497c9677413fb859a Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 12:59:01 +0700 Subject: [PATCH 046/108] feat: update --- .../pages/product/product_page.dart | 72 ------------------- 1 file changed, 72 deletions(-) diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_page.dart index 56a1f94..b00989d 100644 --- a/lib/presentation/pages/product/product_page.dart +++ b/lib/presentation/pages/product/product_page.dart @@ -142,11 +142,6 @@ class _ProductPageState extends State super.initState(); } - @override - void dispose() { - super.dispose(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -171,14 +166,12 @@ class _ProductPageState extends State flexibleSpace: CustomAppBar(title: 'Produk'), actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.search), - ActionIconButton(onTap: _showAddProductDialog, icon: LineIcons.plus), ActionIconButton( onTap: _toggleViewType, icon: currentViewType == ViewType.grid ? LineIcons.list : LineIcons.thLarge, ), - ActionIconButton(onTap: _showOptionsMenu, icon: LineIcons.filter), ], ); } @@ -414,71 +407,6 @@ class _ProductPageState extends State ), ); } - - void _showAddProductDialog() { - showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('Tambah Produk'), - content: const Text( - 'Dialog tambah produk akan diimplementasikan di sini', - ), - actions: [ - TextButton( - onPressed: () => Navigator.pop(context), - child: const Text('Batal'), - ), - ElevatedButton( - onPressed: () => Navigator.pop(context), - child: const Text('Simpan'), - ), - ], - ), - ); - } - - void _showOptionsMenu() { - showModalBottomSheet( - context: context, - builder: (context) => Container( - padding: const EdgeInsets.all(16.0), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - ListTile( - leading: Icon( - currentViewType == ViewType.grid ? Icons.list : Icons.grid_view, - ), - title: Text( - currentViewType == ViewType.grid - ? 'Tampilan List' - : 'Tampilan Grid', - ), - onTap: () { - Navigator.pop(context); - _toggleViewType(); - }, - ), - ListTile( - leading: const Icon(Icons.sort), - title: const Text('Urutkan'), - onTap: () => Navigator.pop(context), - ), - ListTile( - leading: const Icon(Icons.filter_list), - title: const Text('Filter Lanjutan'), - onTap: () => Navigator.pop(context), - ), - ListTile( - leading: const Icon(Icons.download), - title: const Text('Export Data'), - onTap: () => Navigator.pop(context), - ), - ], - ), - ), - ); - } } // Product Model From 6cc2026f6f2bce6eff6c41c468d95be43697bcab Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 13:10:01 +0700 Subject: [PATCH 047/108] feat: error page --- lib/presentation/pages/error/error_page.dart | 509 +++++++++++++++++++ lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 257 ++++++---- 3 files changed, 678 insertions(+), 91 deletions(-) create mode 100644 lib/presentation/pages/error/error_page.dart diff --git a/lib/presentation/pages/error/error_page.dart b/lib/presentation/pages/error/error_page.dart new file mode 100644 index 0000000..0b648da --- /dev/null +++ b/lib/presentation/pages/error/error_page.dart @@ -0,0 +1,509 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; + +@RoutePage() +class ErrorPage extends StatefulWidget { + final String? title; + final String? message; + final VoidCallback? onRetry; + final VoidCallback? onBack; + final String? errorCode; + final IconData? errorIcon; + + const ErrorPage({ + Key? key, + this.title, + this.message, + this.onRetry, + this.onBack, + this.errorCode, + this.errorIcon, + }) : super(key: key); + + @override + State createState() => _ErrorPageState(); +} + +class _ErrorPageState extends State with TickerProviderStateMixin { + late AnimationController _bounceController; + late AnimationController _fadeController; + late AnimationController _slideController; + + late Animation _bounceAnimation; + late Animation _fadeAnimation; + late Animation _slideAnimation; + + @override + void initState() { + super.initState(); + + _bounceController = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + + _fadeController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 1000), + vsync: this, + ); + + _bounceAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _bounceController, curve: Curves.elasticOut), + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0.0, 0.5), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.easeOutCubic), + ); + + // Start animations + _bounceController.forward(); + Future.delayed(const Duration(milliseconds: 300), () { + _fadeController.forward(); + }); + Future.delayed(const Duration(milliseconds: 500), () { + _slideController.forward(); + }); + } + + @override + void dispose() { + _bounceController.dispose(); + _fadeController.dispose(); + _slideController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Container( + width: double.infinity, + height: double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + AppColor.primary.withOpacity(0.05), + AppColor.background, + AppColor.primaryLight.withOpacity(0.03), + ], + ), + ), + child: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.all(24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox(height: 60), + + // Animated Error Illustration + AnimatedBuilder( + animation: _bounceAnimation, + builder: (context, child) { + return Transform.scale( + scale: _bounceAnimation.value, + child: Stack( + alignment: Alignment.center, + children: [ + // Outer glow circle + Container( + width: 200, + height: 200, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: RadialGradient( + colors: [ + AppColor.error.withOpacity(0.1), + Colors.transparent, + ], + ), + ), + ), + + // Middle circle with gradient + Container( + width: 140, + height: 140, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + AppColor.error.withOpacity(0.15), + AppColor.warning.withOpacity(0.15), + AppColor.primary.withOpacity(0.1), + ], + ), + boxShadow: [ + BoxShadow( + color: AppColor.error.withOpacity(0.2), + blurRadius: 30, + offset: const Offset(0, 10), + ), + ], + ), + ), + + // Inner circle with icon + Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + colors: AppColor.primaryGradient, + ), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Icon( + widget.errorIcon ?? Icons.sentiment_dissatisfied, + size: 50, + color: AppColor.textWhite, + ), + ), + + // Decorative floating dots + ...List.generate(6, (index) { + final radius = 120.0; + return Positioned( + left: + 100 + + radius * + 0.8 * + (index.isEven ? 1 : -1) * + (index / 6), + top: + 100 + + radius * + 0.6 * + (index.isOdd ? 1 : -1) * + (index / 6), + child: Container( + width: 8 + (index % 3) * 4, + height: 8 + (index % 3) * 4, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: [ + AppColor.primary, + AppColor.error, + AppColor.warning, + ][index % 3].withOpacity(0.6), + ), + ), + ); + }), + ], + ), + ); + }, + ), + + const SizedBox(height: 40), + + // Animated Title + FadeTransition( + opacity: _fadeAnimation, + child: Text( + widget.title ?? 'Ups! Ada Yang Salah', + style: AppStyle.h2.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primary, // warna solid + ), + textAlign: TextAlign.center, + ), + ), + + const SizedBox(height: 16), + + // Animated Message + SlideTransition( + position: _slideAnimation, + child: FadeTransition( + opacity: _fadeAnimation, + child: Container( + padding: const EdgeInsets.all(20), + margin: const EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.08), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + border: Border.all( + color: AppColor.border.withOpacity(0.5), + ), + ), + child: Column( + children: [ + Text( + widget.message ?? + 'Sepertinya ada masalah teknis yang tidak terduga. Jangan khawatir, tim kami sedang bekerja keras untuk memperbaikinya!', + style: AppStyle.lg.copyWith( + color: AppColor.textSecondary, + height: 1.6, + ), + textAlign: TextAlign.center, + ), + + if (widget.errorCode != null) ...[ + const SizedBox(height: 16), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.error.withOpacity(0.1), + AppColor.warning.withOpacity(0.1), + ], + ), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColor.error.withOpacity(0.3), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.code, + size: 16, + color: AppColor.error, + ), + const SizedBox(width: 8), + Text( + 'Kode Error: ${widget.errorCode}', + style: AppStyle.sm.copyWith( + color: AppColor.error, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ], + ], + ), + ), + ), + ), + + const SizedBox(height: 50), + + // Animated Buttons + SlideTransition( + position: _slideAnimation, + child: FadeTransition( + opacity: _fadeAnimation, + child: Column( + children: [ + // Retry Button with gradient + if (widget.onRetry != null) + Container( + width: double.infinity, + height: 60, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.4), + blurRadius: 15, + offset: const Offset(0, 8), + ), + ], + ), + child: ElevatedButton.icon( + onPressed: widget.onRetry, + icon: const Icon( + Icons.refresh_rounded, + color: AppColor.textWhite, + size: 24, + ), + label: Text( + 'Coba Lagi', + style: AppStyle.xl.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.bold, + ), + ), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.transparent, + shadowColor: Colors.transparent, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + ), + ), + ), + + const SizedBox(height: 16), + + // Back Button with modern design + if (widget.onBack != null) + Container( + width: double.infinity, + height: 60, + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(16), + border: Border.all( + width: 2, + color: AppColor.primary.withOpacity(0.3), + ), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.1), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: OutlinedButton.icon( + onPressed: widget.onBack, + icon: Icon( + Icons.arrow_back_ios_rounded, + color: AppColor.primary, + size: 20, + ), + label: Text( + 'Kembali', + style: AppStyle.xl.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.bold, + ), + ), + style: OutlinedButton.styleFrom( + backgroundColor: Colors.transparent, + side: BorderSide.none, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + ), + ), + ), + ], + ), + ), + ), + + const SizedBox(height: 40), + + // Help text with icon + FadeTransition( + opacity: _fadeAnimation, + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.info.withOpacity(0.05), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.info.withOpacity(0.1)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.help_outline_rounded, + size: 18, + color: AppColor.info, + ), + const SizedBox(width: 8), + Flexible( + child: Text( + 'Butuh bantuan? Hubungi tim support kami', + style: AppStyle.sm.copyWith( + color: AppColor.info, + fontWeight: FontWeight.w500, + ), + textAlign: TextAlign.center, + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +// Usage Example dengan berbagai variasi +class ErrorPageExamples extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Column( + children: [ + // Network Error + ElevatedButton( + onPressed: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ErrorPage( + title: 'Koneksi Terputus', + message: + 'Sepertinya koneksi internet Anda bermasalah. Periksa jaringan dan coba lagi.', + errorCode: 'NET_404', + errorIcon: Icons.wifi_off_rounded, + onRetry: () => Navigator.pop(context), + onBack: () => Navigator.pop(context), + ), + ), + ), + child: Text('Network Error'), + ), + + // Server Error + ElevatedButton( + onPressed: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ErrorPage( + title: 'Server Sibuk', + message: + 'Server sedang mengalami gangguan. Tim kami sedang memperbaikinya.', + errorCode: 'SRV_500', + errorIcon: Icons.dns_rounded, + onRetry: () => Navigator.pop(context), + onBack: () => Navigator.pop(context), + ), + ), + ), + child: Text('Server Error'), + ), + ], + ); + } +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 8158193..4cdcb3c 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -48,5 +48,8 @@ class AppRouter extends RootStackRouter { // Finance page AutoRoute(page: FinanceRoute.page), + + // Error + AutoRoute(page: ErrorRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index e33909a..c5b3785 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -10,48 +10,51 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i7; + as _i8; import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' as _i1; -import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/error/error_page.dart' as _i3; +import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' + as _i4; import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' as _i2; import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' - as _i4; -import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' as _i5; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' as _i6; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i7; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' - as _i8; -import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i16; -import 'package:auto_route/auto_route.dart' as _i17; +import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' + as _i17; +import 'package:auto_route/auto_route.dart' as _i18; +import 'package:flutter/material.dart' as _i19; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i17.PageRouteInfo { - const CustomerRoute({List<_i17.PageRouteInfo>? children}) +class CustomerRoute extends _i18.PageRouteInfo { + const CustomerRoute({List<_i18.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { return const _i1.CustomerPage(); @@ -61,13 +64,13 @@ class CustomerRoute extends _i17.PageRouteInfo { /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i17.PageRouteInfo { - const DailyTasksFormRoute({List<_i17.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i18.PageRouteInfo { + const DailyTasksFormRoute({List<_i18.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -76,225 +79,297 @@ class DailyTasksFormRoute extends _i17.PageRouteInfo { } /// generated route for -/// [_i3.FinancePage] -class FinanceRoute extends _i17.PageRouteInfo { - const FinanceRoute({List<_i17.PageRouteInfo>? children}) +/// [_i3.ErrorPage] +class ErrorRoute extends _i18.PageRouteInfo { + ErrorRoute({ + _i19.Key? key, + String? title, + String? message, + _i19.VoidCallback? onRetry, + _i19.VoidCallback? onBack, + String? errorCode, + List<_i18.PageRouteInfo>? children, + }) : super( + ErrorRoute.name, + args: ErrorRouteArgs( + key: key, + title: title, + message: message, + onRetry: onRetry, + onBack: onBack, + errorCode: errorCode, + ), + initialChildren: children, + ); + + static const String name = 'ErrorRoute'; + + static _i18.PageInfo page = _i18.PageInfo( + name, + builder: (data) { + final args = data.argsAs( + orElse: () => const ErrorRouteArgs(), + ); + return _i3.ErrorPage( + key: args.key, + title: args.title, + message: args.message, + onRetry: args.onRetry, + onBack: args.onBack, + errorCode: args.errorCode, + ); + }, + ); +} + +class ErrorRouteArgs { + const ErrorRouteArgs({ + this.key, + this.title, + this.message, + this.onRetry, + this.onBack, + this.errorCode, + }); + + final _i19.Key? key; + + final String? title; + + final String? message; + + final _i19.VoidCallback? onRetry; + + final _i19.VoidCallback? onBack; + + final String? errorCode; + + @override + String toString() { + return 'ErrorRouteArgs{key: $key, title: $title, message: $message, onRetry: $onRetry, onBack: $onBack, errorCode: $errorCode}'; + } +} + +/// generated route for +/// [_i4.FinancePage] +class FinanceRoute extends _i18.PageRouteInfo { + const FinanceRoute({List<_i18.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i3.FinancePage(); + return const _i4.FinancePage(); }, ); } /// generated route for -/// [_i4.HomePage] -class HomeRoute extends _i17.PageRouteInfo { - const HomeRoute({List<_i17.PageRouteInfo>? children}) +/// [_i5.HomePage] +class HomeRoute extends _i18.PageRouteInfo { + const HomeRoute({List<_i18.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i4.HomePage(); + return const _i5.HomePage(); }, ); } /// generated route for -/// [_i5.InventoryPage] -class InventoryRoute extends _i17.PageRouteInfo { - const InventoryRoute({List<_i17.PageRouteInfo>? children}) +/// [_i6.InventoryPage] +class InventoryRoute extends _i18.PageRouteInfo { + const InventoryRoute({List<_i18.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i5.InventoryPage(); + return const _i6.InventoryPage(); }, ); } /// generated route for -/// [_i6.LanguagePage] -class LanguageRoute extends _i17.PageRouteInfo { - const LanguageRoute({List<_i17.PageRouteInfo>? children}) +/// [_i7.LanguagePage] +class LanguageRoute extends _i18.PageRouteInfo { + const LanguageRoute({List<_i18.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i6.LanguagePage(); + return const _i7.LanguagePage(); }, ); } /// generated route for -/// [_i7.LoginPage] -class LoginRoute extends _i17.PageRouteInfo { - const LoginRoute({List<_i17.PageRouteInfo>? children}) +/// [_i8.LoginPage] +class LoginRoute extends _i18.PageRouteInfo { + const LoginRoute({List<_i18.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return _i17.WrappedRoute(child: const _i7.LoginPage()); + return _i18.WrappedRoute(child: const _i8.LoginPage()); }, ); } /// generated route for -/// [_i8.MainPage] -class MainRoute extends _i17.PageRouteInfo { - const MainRoute({List<_i17.PageRouteInfo>? children}) +/// [_i9.MainPage] +class MainRoute extends _i18.PageRouteInfo { + const MainRoute({List<_i18.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i8.MainPage(); + return const _i9.MainPage(); }, ); } /// generated route for -/// [_i9.ProductPage] -class ProductRoute extends _i17.PageRouteInfo { - const ProductRoute({List<_i17.PageRouteInfo>? children}) +/// [_i10.ProductPage] +class ProductRoute extends _i18.PageRouteInfo { + const ProductRoute({List<_i18.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i9.ProductPage(); + return _i18.WrappedRoute(child: const _i10.ProductPage()); }, ); } /// generated route for -/// [_i10.ProfilePage] -class ProfileRoute extends _i17.PageRouteInfo { - const ProfileRoute({List<_i17.PageRouteInfo>? children}) +/// [_i11.ProfilePage] +class ProfileRoute extends _i18.PageRouteInfo { + const ProfileRoute({List<_i18.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return _i17.WrappedRoute(child: const _i10.ProfilePage()); + return _i18.WrappedRoute(child: const _i11.ProfilePage()); }, ); } /// generated route for -/// [_i11.PurchasePage] -class PurchaseRoute extends _i17.PageRouteInfo { - const PurchaseRoute({List<_i17.PageRouteInfo>? children}) +/// [_i12.PurchasePage] +class PurchaseRoute extends _i18.PageRouteInfo { + const PurchaseRoute({List<_i18.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i11.PurchasePage(); + return const _i12.PurchasePage(); }, ); } /// generated route for -/// [_i12.ReportPage] -class ReportRoute extends _i17.PageRouteInfo { - const ReportRoute({List<_i17.PageRouteInfo>? children}) +/// [_i13.ReportPage] +class ReportRoute extends _i18.PageRouteInfo { + const ReportRoute({List<_i18.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i12.ReportPage(); + return const _i13.ReportPage(); }, ); } /// generated route for -/// [_i13.SalesPage] -class SalesRoute extends _i17.PageRouteInfo { - const SalesRoute({List<_i17.PageRouteInfo>? children}) +/// [_i14.SalesPage] +class SalesRoute extends _i18.PageRouteInfo { + const SalesRoute({List<_i18.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return _i17.WrappedRoute(child: const _i13.SalesPage()); + return _i18.WrappedRoute(child: const _i14.SalesPage()); }, ); } /// generated route for -/// [_i14.SchedulePage] -class ScheduleRoute extends _i17.PageRouteInfo { - const ScheduleRoute({List<_i17.PageRouteInfo>? children}) +/// [_i15.SchedulePage] +class ScheduleRoute extends _i18.PageRouteInfo { + const ScheduleRoute({List<_i18.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i14.SchedulePage(); + return const _i15.SchedulePage(); }, ); } /// generated route for -/// [_i15.SplashPage] -class SplashRoute extends _i17.PageRouteInfo { - const SplashRoute({List<_i17.PageRouteInfo>? children}) +/// [_i16.SplashPage] +class SplashRoute extends _i18.PageRouteInfo { + const SplashRoute({List<_i18.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i15.SplashPage(); + return const _i16.SplashPage(); }, ); } /// generated route for -/// [_i16.TransactionPage] -class TransactionRoute extends _i17.PageRouteInfo { - const TransactionRoute({List<_i17.PageRouteInfo>? children}) +/// [_i17.TransactionPage] +class TransactionRoute extends _i18.PageRouteInfo { + const TransactionRoute({List<_i18.PageRouteInfo>? children}) : super(TransactionRoute.name, initialChildren: children); static const String name = 'TransactionRoute'; - static _i17.PageInfo page = _i17.PageInfo( + static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i16.TransactionPage(); + return const _i17.TransactionPage(); }, ); } From 82c0eaf5fe494d05e1b031b7f3fa1cad8c45c9bd Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 13:14:03 +0700 Subject: [PATCH 048/108] feat: empty and search widget --- .../widgets/empty_search_widget.dart | 27 +++ .../components/widgets/empty_widget.dart | 179 ++++++++++++++++++ .../components/widgets/error_widget.dart | 176 +++++++++++++++++ 3 files changed, 382 insertions(+) create mode 100644 lib/presentation/components/widgets/empty_search_widget.dart create mode 100644 lib/presentation/components/widgets/empty_widget.dart create mode 100644 lib/presentation/components/widgets/error_widget.dart diff --git a/lib/presentation/components/widgets/empty_search_widget.dart b/lib/presentation/components/widgets/empty_search_widget.dart new file mode 100644 index 0000000..298cc7b --- /dev/null +++ b/lib/presentation/components/widgets/empty_search_widget.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; +import 'empty_widget.dart'; + +class EmptySearchWidget extends StatelessWidget { + final String? searchQuery; + final VoidCallback? onClear; + + const EmptySearchWidget({Key? key, this.searchQuery, this.onClear}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return EmptyWidget( + title: 'Pencarian Tidak Ditemukan', + message: searchQuery != null + ? 'Tidak ada hasil untuk "$searchQuery"\nCoba kata kunci lain' + : 'Coba gunakan kata kunci yang berbeda', + emptyIcon: Icons.search_off_rounded, + iconColor: AppColor.warning, + buttonText: 'Hapus Filter', + onRefresh: onClear, + showButton: onClear != null, + ); + } +} diff --git a/lib/presentation/components/widgets/empty_widget.dart b/lib/presentation/components/widgets/empty_widget.dart new file mode 100644 index 0000000..6d9a997 --- /dev/null +++ b/lib/presentation/components/widgets/empty_widget.dart @@ -0,0 +1,179 @@ +// ==================== EMPTY WIDGET ==================== +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; + +class EmptyWidget extends StatefulWidget { + final String? title; + final String? message; + final VoidCallback? onRefresh; + final IconData? emptyIcon; + final String? buttonText; + final double? width; + final double? height; + final bool showButton; + final EdgeInsets? padding; + final Color? iconColor; + + const EmptyWidget({ + super.key, + this.title, + this.message, + this.onRefresh, + this.emptyIcon, + this.buttonText, + this.width, + this.height, + this.showButton = true, + this.padding, + this.iconColor, + }); + + @override + State createState() => _EmptyWidgetState(); +} + +class _EmptyWidgetState extends State + with SingleTickerProviderStateMixin { + late AnimationController _animationController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + + @override + void initState() { + super.initState(); + _animationController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _animationController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0.0, 0.3), end: Offset.zero).animate( + CurvedAnimation( + parent: _animationController, + curve: Curves.easeOutCubic, + ), + ); + + _animationController.forward(); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Container( + width: widget.width, + height: widget.height, + padding: widget.padding ?? const EdgeInsets.all(24), + child: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + // Empty Illustration + Stack( + alignment: Alignment.center, + children: [ + // Background Circle + Container( + width: 120, + height: 120, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.05), + AppColor.secondary.withOpacity(0.05), + ], + ), + ), + ), + + // Icon Container + Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.surface, + border: Border.all(color: AppColor.border, width: 2), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.08), + blurRadius: 20, + offset: const Offset(0, 4), + ), + ], + ), + child: Icon( + widget.emptyIcon ?? Icons.inbox_outlined, + size: 40, + color: widget.iconColor ?? AppColor.textLight, + ), + ), + ], + ), + + const SizedBox(height: 24), + + // Title + Text( + widget.title ?? 'Tidak Ada Data', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + textAlign: TextAlign.center, + ), + + const SizedBox(height: 8), + + // Message + Text( + widget.message ?? 'Belum ada data untuk ditampilkan', + style: AppStyle.md.copyWith( + color: AppColor.textSecondary, + height: 1.4, + ), + textAlign: TextAlign.center, + ), + + // Action Button + if (widget.showButton && widget.onRefresh != null) ...[ + const SizedBox(height: 24), + OutlinedButton.icon( + onPressed: widget.onRefresh, + icon: const Icon(Icons.refresh_rounded, size: 18), + label: Text(widget.buttonText ?? 'Muat Ulang'), + style: OutlinedButton.styleFrom( + foregroundColor: AppColor.primary, + side: BorderSide(color: AppColor.primary, width: 1.5), + padding: const EdgeInsets.symmetric( + horizontal: 20, + vertical: 12, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + ), + ], + ], + ), + ), + ), + ); + } +} diff --git a/lib/presentation/components/widgets/error_widget.dart b/lib/presentation/components/widgets/error_widget.dart new file mode 100644 index 0000000..8a2ee20 --- /dev/null +++ b/lib/presentation/components/widgets/error_widget.dart @@ -0,0 +1,176 @@ +import 'package:flutter/material.dart'; + +import '../../../common/theme/theme.dart'; + +class ErrorWidget extends StatefulWidget { + final String? title; + final String? message; + final VoidCallback? onRetry; + final String? errorCode; + final IconData? errorIcon; + final double? width; + final double? height; + final bool showRetryButton; + final EdgeInsets? padding; + + const ErrorWidget({ + super.key, + this.title, + this.message, + this.onRetry, + this.errorCode, + this.errorIcon, + this.width, + this.height, + this.showRetryButton = true, + this.padding, + }); + + @override + State createState() => _ErrorWidgetState(); +} + +class _ErrorWidgetState extends State + with SingleTickerProviderStateMixin { + late AnimationController _animationController; + late Animation _fadeAnimation; + late Animation _scaleAnimation; + + @override + void initState() { + super.initState(); + _animationController = AnimationController( + duration: const Duration(milliseconds: 600), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _animationController, curve: Curves.easeInOut), + ); + + _scaleAnimation = Tween(begin: 0.8, end: 1.0).animate( + CurvedAnimation(parent: _animationController, curve: Curves.elasticOut), + ); + + _animationController.forward(); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Container( + width: widget.width, + height: widget.height, + padding: widget.padding ?? const EdgeInsets.all(24), + child: FadeTransition( + opacity: _fadeAnimation, + child: ScaleTransition( + scale: _scaleAnimation, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + // Error Icon + Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + colors: [ + AppColor.error.withOpacity(0.1), + AppColor.warning.withOpacity(0.1), + ], + ), + border: Border.all( + color: AppColor.error.withOpacity(0.2), + width: 2, + ), + ), + child: Icon( + widget.errorIcon ?? Icons.error_outline_rounded, + size: 40, + color: AppColor.error, + ), + ), + + const SizedBox(height: 16), + + // Title + if (widget.title != null) + Text( + widget.title!, + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + textAlign: TextAlign.center, + ), + + const SizedBox(height: 8), + + // Message + Text( + widget.message ?? 'Terjadi kesalahan tidak terduga', + style: AppStyle.md.copyWith( + color: AppColor.textSecondary, + height: 1.4, + ), + textAlign: TextAlign.center, + ), + + // Error Code + if (widget.errorCode != null) ...[ + const SizedBox(height: 12), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.error.withOpacity(0.2)), + ), + child: Text( + 'Error: ${widget.errorCode}', + style: AppStyle.xs.copyWith( + color: AppColor.error, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + + // Retry Button + if (widget.showRetryButton && widget.onRetry != null) ...[ + const SizedBox(height: 20), + ElevatedButton.icon( + onPressed: widget.onRetry, + icon: const Icon(Icons.refresh_rounded, size: 18), + label: const Text('Coba Lagi'), + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.primary, + foregroundColor: AppColor.textWhite, + padding: const EdgeInsets.symmetric( + horizontal: 20, + vertical: 12, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + ), + ], + ], + ), + ), + ), + ); + } +} From 7d24b3296dbccc5da1a52e6ebd721c116dab0da6 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 14:18:10 +0700 Subject: [PATCH 049/108] feat: product --- .../product_loader/product_loader_bloc.dart | 92 ++ .../product_loader_bloc.freezed.dart | 821 ++++++++++ .../product_loader/product_loader_event.dart | 11 + .../product_loader/product_loader_state.dart | 17 + lib/common/url/api_path.dart | 3 + .../product/entities/product_entity.dart | 43 + .../entities/product_variant_entity.dart | 26 + .../product/failures/product_failure.dart | 10 + lib/domain/product/product.dart | 11 + lib/domain/product/product.freezed.dart | 1435 +++++++++++++++++ .../repositories/i_product_repository.dart | 10 + .../datasources/remote_data_provider.dart | 52 + .../product/dto/product_dto.dart | 70 + .../product/dto/product_variant_dto.dart | 45 + lib/infrastructure/product/product_dtos.dart | 9 + .../product/product_dtos.freezed.dart | 926 +++++++++++ .../product/product_dtos.g.dart | 83 + .../repositories/product_repository.dart | 43 + lib/injection.config.dart | 16 + .../pages/product/product_page.dart | 225 +-- .../pages/product/widgets/product_tile.dart | 6 +- lib/presentation/router/app_router.gr.dart | 8 +- 22 files changed, 3779 insertions(+), 183 deletions(-) create mode 100644 lib/application/product/product_loader/product_loader_bloc.dart create mode 100644 lib/application/product/product_loader/product_loader_bloc.freezed.dart create mode 100644 lib/application/product/product_loader/product_loader_event.dart create mode 100644 lib/application/product/product_loader/product_loader_state.dart create mode 100644 lib/domain/product/entities/product_entity.dart create mode 100644 lib/domain/product/entities/product_variant_entity.dart create mode 100644 lib/domain/product/failures/product_failure.dart create mode 100644 lib/domain/product/product.dart create mode 100644 lib/domain/product/product.freezed.dart create mode 100644 lib/domain/product/repositories/i_product_repository.dart create mode 100644 lib/infrastructure/product/datasources/remote_data_provider.dart create mode 100644 lib/infrastructure/product/dto/product_dto.dart create mode 100644 lib/infrastructure/product/dto/product_variant_dto.dart create mode 100644 lib/infrastructure/product/product_dtos.dart create mode 100644 lib/infrastructure/product/product_dtos.freezed.dart create mode 100644 lib/infrastructure/product/product_dtos.g.dart create mode 100644 lib/infrastructure/product/repositories/product_repository.dart diff --git a/lib/application/product/product_loader/product_loader_bloc.dart b/lib/application/product/product_loader/product_loader_bloc.dart new file mode 100644 index 0000000..b08b29c --- /dev/null +++ b/lib/application/product/product_loader/product_loader_bloc.dart @@ -0,0 +1,92 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/product/product.dart'; + +part 'product_loader_event.dart'; +part 'product_loader_state.dart'; +part 'product_loader_bloc.freezed.dart'; + +@injectable +class ProductLoaderBloc extends Bloc { + final IProductRepository _productRepository; + + ProductLoaderBloc(this._productRepository) + : super(ProductLoaderState.initial()) { + on(_onProductLoaderEvent); + } + + Future _onProductLoaderEvent( + ProductLoaderEvent event, + Emitter emit, + ) { + return event.map( + categoryIdChanged: (e) async { + emit(state.copyWith(categoryId: e.categoryId)); + }, + searchChanged: (e) async { + emit(state.copyWith(search: e.search)); + }, + fetched: (e) async { + var newState = state; + + if (e.isRefresh) { + newState = state.copyWith(isFetching: true); + + emit(newState); + } + + newState = await _mapFetchedToState(state, isRefresh: e.isRefresh); + + emit(newState); + }, + ); + } + + Future _mapFetchedToState( + ProductLoaderState state, { + bool isRefresh = false, + }) async { + state = state.copyWith(isFetching: false); + + if (state.hasReachedMax && state.products.isNotEmpty && !isRefresh) { + return state; + } + + if (isRefresh) { + state = state.copyWith( + page: 1, + failureOptionProduct: none(), + hasReachedMax: false, + products: [], + ); + } + + final failureOrProduct = await _productRepository.get( + categoryId: state.categoryId, + page: state.page, + search: state.search, + ); + + state = failureOrProduct.fold( + (f) { + if (state.products.isNotEmpty) { + return state.copyWith(hasReachedMax: true); + } + return state.copyWith(failureOptionProduct: optionOf(f)); + }, + (products) { + return state.copyWith( + products: List.from(state.products)..addAll(products), + failureOptionProduct: none(), + page: state.page + 1, + hasReachedMax: products.length < 10, + ); + }, + ); + + return state; + } +} diff --git a/lib/application/product/product_loader/product_loader_bloc.freezed.dart b/lib/application/product/product_loader/product_loader_bloc.freezed.dart new file mode 100644 index 0000000..73ea5b2 --- /dev/null +++ b/lib/application/product/product_loader/product_loader_bloc.freezed.dart @@ -0,0 +1,821 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'product_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$ProductLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(String categoryId) categoryIdChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String categoryId)? categoryIdChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String categoryId)? categoryIdChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_CategoryIdChanged value) categoryIdChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_CategoryIdChanged value)? categoryIdChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_CategoryIdChanged value)? categoryIdChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductLoaderEventCopyWith<$Res> { + factory $ProductLoaderEventCopyWith( + ProductLoaderEvent value, + $Res Function(ProductLoaderEvent) then, + ) = _$ProductLoaderEventCopyWithImpl<$Res, ProductLoaderEvent>; +} + +/// @nodoc +class _$ProductLoaderEventCopyWithImpl<$Res, $Val extends ProductLoaderEvent> + implements $ProductLoaderEventCopyWith<$Res> { + _$ProductLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$CategoryIdChangedImplCopyWith<$Res> { + factory _$$CategoryIdChangedImplCopyWith( + _$CategoryIdChangedImpl value, + $Res Function(_$CategoryIdChangedImpl) then, + ) = __$$CategoryIdChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String categoryId}); +} + +/// @nodoc +class __$$CategoryIdChangedImplCopyWithImpl<$Res> + extends _$ProductLoaderEventCopyWithImpl<$Res, _$CategoryIdChangedImpl> + implements _$$CategoryIdChangedImplCopyWith<$Res> { + __$$CategoryIdChangedImplCopyWithImpl( + _$CategoryIdChangedImpl _value, + $Res Function(_$CategoryIdChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? categoryId = null}) { + return _then( + _$CategoryIdChangedImpl( + null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$CategoryIdChangedImpl implements _CategoryIdChanged { + const _$CategoryIdChangedImpl(this.categoryId); + + @override + final String categoryId; + + @override + String toString() { + return 'ProductLoaderEvent.categoryIdChanged(categoryId: $categoryId)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryIdChangedImpl && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId)); + } + + @override + int get hashCode => Object.hash(runtimeType, categoryId); + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryIdChangedImplCopyWith<_$CategoryIdChangedImpl> get copyWith => + __$$CategoryIdChangedImplCopyWithImpl<_$CategoryIdChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String categoryId) categoryIdChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return categoryIdChanged(categoryId); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String categoryId)? categoryIdChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return categoryIdChanged?.call(categoryId); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String categoryId)? categoryIdChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (categoryIdChanged != null) { + return categoryIdChanged(categoryId); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_CategoryIdChanged value) categoryIdChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return categoryIdChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_CategoryIdChanged value)? categoryIdChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return categoryIdChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_CategoryIdChanged value)? categoryIdChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (categoryIdChanged != null) { + return categoryIdChanged(this); + } + return orElse(); + } +} + +abstract class _CategoryIdChanged implements ProductLoaderEvent { + const factory _CategoryIdChanged(final String categoryId) = + _$CategoryIdChangedImpl; + + String get categoryId; + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryIdChangedImplCopyWith<_$CategoryIdChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$SearchChangedImplCopyWith<$Res> { + factory _$$SearchChangedImplCopyWith( + _$SearchChangedImpl value, + $Res Function(_$SearchChangedImpl) then, + ) = __$$SearchChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String search}); +} + +/// @nodoc +class __$$SearchChangedImplCopyWithImpl<$Res> + extends _$ProductLoaderEventCopyWithImpl<$Res, _$SearchChangedImpl> + implements _$$SearchChangedImplCopyWith<$Res> { + __$$SearchChangedImplCopyWithImpl( + _$SearchChangedImpl _value, + $Res Function(_$SearchChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? search = null}) { + return _then( + _$SearchChangedImpl( + null == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$SearchChangedImpl implements _SearchChanged { + const _$SearchChangedImpl(this.search); + + @override + final String search; + + @override + String toString() { + return 'ProductLoaderEvent.searchChanged(search: $search)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SearchChangedImpl && + (identical(other.search, search) || other.search == search)); + } + + @override + int get hashCode => Object.hash(runtimeType, search); + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + __$$SearchChangedImplCopyWithImpl<_$SearchChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String categoryId) categoryIdChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return searchChanged(search); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String categoryId)? categoryIdChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return searchChanged?.call(search); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String categoryId)? categoryIdChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(search); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_CategoryIdChanged value) categoryIdChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return searchChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_CategoryIdChanged value)? categoryIdChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return searchChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_CategoryIdChanged value)? categoryIdChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(this); + } + return orElse(); + } +} + +abstract class _SearchChanged implements ProductLoaderEvent { + const factory _SearchChanged(final String search) = _$SearchChangedImpl; + + String get search; + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; + @useResult + $Res call({bool isRefresh}); +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$ProductLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? isRefresh = null}) { + return _then( + _$FetchedImpl( + isRefresh: null == isRefresh + ? _value.isRefresh + : isRefresh // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl({this.isRefresh = false}); + + @override + @JsonKey() + final bool isRefresh; + + @override + String toString() { + return 'ProductLoaderEvent.fetched(isRefresh: $isRefresh)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$FetchedImpl && + (identical(other.isRefresh, isRefresh) || + other.isRefresh == isRefresh)); + } + + @override + int get hashCode => Object.hash(runtimeType, isRefresh); + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + __$$FetchedImplCopyWithImpl<_$FetchedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String categoryId) categoryIdChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return fetched(isRefresh); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String categoryId)? categoryIdChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return fetched?.call(isRefresh); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String categoryId)? categoryIdChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(isRefresh); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_CategoryIdChanged value) categoryIdChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_CategoryIdChanged value)? categoryIdChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_CategoryIdChanged value)? categoryIdChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements ProductLoaderEvent { + const factory _Fetched({final bool isRefresh}) = _$FetchedImpl; + + bool get isRefresh; + + /// Create a copy of ProductLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$ProductLoaderState { + List get products => throw _privateConstructorUsedError; + Option get failureOptionProduct => + throw _privateConstructorUsedError; + String? get categoryId => throw _privateConstructorUsedError; + String? get search => throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + bool get hasReachedMax => throw _privateConstructorUsedError; + int get page => throw _privateConstructorUsedError; + + /// Create a copy of ProductLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductLoaderStateCopyWith<$Res> { + factory $ProductLoaderStateCopyWith( + ProductLoaderState value, + $Res Function(ProductLoaderState) then, + ) = _$ProductLoaderStateCopyWithImpl<$Res, ProductLoaderState>; + @useResult + $Res call({ + List products, + Option failureOptionProduct, + String? categoryId, + String? search, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class _$ProductLoaderStateCopyWithImpl<$Res, $Val extends ProductLoaderState> + implements $ProductLoaderStateCopyWith<$Res> { + _$ProductLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? products = null, + Object? failureOptionProduct = null, + Object? categoryId = freezed, + Object? search = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _value.copyWith( + products: null == products + ? _value.products + : products // ignore: cast_nullable_to_non_nullable + as List, + failureOptionProduct: null == failureOptionProduct + ? _value.failureOptionProduct + : failureOptionProduct // ignore: cast_nullable_to_non_nullable + as Option, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductLoaderStateImplCopyWith<$Res> + implements $ProductLoaderStateCopyWith<$Res> { + factory _$$ProductLoaderStateImplCopyWith( + _$ProductLoaderStateImpl value, + $Res Function(_$ProductLoaderStateImpl) then, + ) = __$$ProductLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + List products, + Option failureOptionProduct, + String? categoryId, + String? search, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class __$$ProductLoaderStateImplCopyWithImpl<$Res> + extends _$ProductLoaderStateCopyWithImpl<$Res, _$ProductLoaderStateImpl> + implements _$$ProductLoaderStateImplCopyWith<$Res> { + __$$ProductLoaderStateImplCopyWithImpl( + _$ProductLoaderStateImpl _value, + $Res Function(_$ProductLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? products = null, + Object? failureOptionProduct = null, + Object? categoryId = freezed, + Object? search = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _$ProductLoaderStateImpl( + products: null == products + ? _value._products + : products // ignore: cast_nullable_to_non_nullable + as List, + failureOptionProduct: null == failureOptionProduct + ? _value.failureOptionProduct + : failureOptionProduct // ignore: cast_nullable_to_non_nullable + as Option, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$ProductLoaderStateImpl implements _ProductLoaderState { + const _$ProductLoaderStateImpl({ + required final List products, + required this.failureOptionProduct, + this.categoryId, + this.search, + this.isFetching = false, + this.hasReachedMax = false, + this.page = 1, + }) : _products = products; + + final List _products; + @override + List get products { + if (_products is EqualUnmodifiableListView) return _products; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_products); + } + + @override + final Option failureOptionProduct; + @override + final String? categoryId; + @override + final String? search; + @override + @JsonKey() + final bool isFetching; + @override + @JsonKey() + final bool hasReachedMax; + @override + @JsonKey() + final int page; + + @override + String toString() { + return 'ProductLoaderState(products: $products, failureOptionProduct: $failureOptionProduct, categoryId: $categoryId, search: $search, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductLoaderStateImpl && + const DeepCollectionEquality().equals(other._products, _products) && + (identical(other.failureOptionProduct, failureOptionProduct) || + other.failureOptionProduct == failureOptionProduct) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.search, search) || other.search == search) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching) && + (identical(other.hasReachedMax, hasReachedMax) || + other.hasReachedMax == hasReachedMax) && + (identical(other.page, page) || other.page == page)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(_products), + failureOptionProduct, + categoryId, + search, + isFetching, + hasReachedMax, + page, + ); + + /// Create a copy of ProductLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductLoaderStateImplCopyWith<_$ProductLoaderStateImpl> get copyWith => + __$$ProductLoaderStateImplCopyWithImpl<_$ProductLoaderStateImpl>( + this, + _$identity, + ); +} + +abstract class _ProductLoaderState implements ProductLoaderState { + const factory _ProductLoaderState({ + required final List products, + required final Option failureOptionProduct, + final String? categoryId, + final String? search, + final bool isFetching, + final bool hasReachedMax, + final int page, + }) = _$ProductLoaderStateImpl; + + @override + List get products; + @override + Option get failureOptionProduct; + @override + String? get categoryId; + @override + String? get search; + @override + bool get isFetching; + @override + bool get hasReachedMax; + @override + int get page; + + /// Create a copy of ProductLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductLoaderStateImplCopyWith<_$ProductLoaderStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/product/product_loader/product_loader_event.dart b/lib/application/product/product_loader/product_loader_event.dart new file mode 100644 index 0000000..1c6838c --- /dev/null +++ b/lib/application/product/product_loader/product_loader_event.dart @@ -0,0 +1,11 @@ +part of 'product_loader_bloc.dart'; + +@freezed +class ProductLoaderEvent with _$ProductLoaderEvent { + const factory ProductLoaderEvent.categoryIdChanged(String categoryId) = + _CategoryIdChanged; + const factory ProductLoaderEvent.searchChanged(String search) = + _SearchChanged; + const factory ProductLoaderEvent.fetched({@Default(false) bool isRefresh}) = + _Fetched; +} diff --git a/lib/application/product/product_loader/product_loader_state.dart b/lib/application/product/product_loader/product_loader_state.dart new file mode 100644 index 0000000..4d8856a --- /dev/null +++ b/lib/application/product/product_loader/product_loader_state.dart @@ -0,0 +1,17 @@ +part of 'product_loader_bloc.dart'; + +@freezed +class ProductLoaderState with _$ProductLoaderState { + const factory ProductLoaderState({ + required List products, + required Option failureOptionProduct, + String? categoryId, + String? search, + @Default(false) bool isFetching, + @Default(false) bool hasReachedMax, + @Default(1) int page, + }) = _ProductLoaderState; + + factory ProductLoaderState.initial() => + ProductLoaderState(products: [], failureOptionProduct: none()); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 17064a4..d71dcfd 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -8,4 +8,7 @@ class ApiPath { // Category static const String category = '/api/v1/categories'; + + // Product + static const String product = '/api/v1/products'; } diff --git a/lib/domain/product/entities/product_entity.dart b/lib/domain/product/entities/product_entity.dart new file mode 100644 index 0000000..c461e5e --- /dev/null +++ b/lib/domain/product/entities/product_entity.dart @@ -0,0 +1,43 @@ +part of '../product.dart'; + +@freezed +class Product with _$Product { + const factory Product({ + required String id, + required String organizationId, + required String categoryId, + required String sku, + required String name, + required String description, + required int price, + required int cost, + required String businessType, + required String imageUrl, + required String printerType, + required Map metadata, + required bool isActive, + required DateTime createdAt, + required DateTime updatedAt, + required List variants, + }) = _Product; + + /// โœ… factory kosong untuk default state + factory Product.empty() => Product( + id: '', + organizationId: '', + categoryId: '', + sku: '', + name: '', + description: '', + price: 0, + cost: 0, + businessType: '', + imageUrl: '', + printerType: '', + metadata: {}, + isActive: false, + createdAt: DateTime.now(), + updatedAt: DateTime.now(), + variants: [], + ); +} diff --git a/lib/domain/product/entities/product_variant_entity.dart b/lib/domain/product/entities/product_variant_entity.dart new file mode 100644 index 0000000..d8cb985 --- /dev/null +++ b/lib/domain/product/entities/product_variant_entity.dart @@ -0,0 +1,26 @@ +part of '../product.dart'; + +@freezed +class ProductVariant with _$ProductVariant { + const factory ProductVariant({ + required String id, + required String productId, + required String name, + required int priceModifier, + required int cost, + required Map metadata, + required DateTime createdAt, + required DateTime updatedAt, + }) = _ProductVariant; + + factory ProductVariant.empty() => ProductVariant( + id: '', + productId: '', + name: '', + priceModifier: 0, + cost: 0, + metadata: {}, + createdAt: DateTime.now(), + updatedAt: DateTime.now(), + ); +} diff --git a/lib/domain/product/failures/product_failure.dart b/lib/domain/product/failures/product_failure.dart new file mode 100644 index 0000000..97612c1 --- /dev/null +++ b/lib/domain/product/failures/product_failure.dart @@ -0,0 +1,10 @@ +part of '../product.dart'; + +@freezed +sealed class ProductFailure with _$ProductFailure { + const factory ProductFailure.serverError(ApiFailure failure) = _ServerError; + const factory ProductFailure.unexpectedError() = _UnexpectedError; + const factory ProductFailure.empty() = _Empty; + const factory ProductFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/product/product.dart b/lib/domain/product/product.dart new file mode 100644 index 0000000..97aa7ee --- /dev/null +++ b/lib/domain/product/product.dart @@ -0,0 +1,11 @@ +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../common/api/api_failure.dart'; + +part 'product.freezed.dart'; + +part 'entities/product_entity.dart'; +part 'entities/product_variant_entity.dart'; +part 'failures/product_failure.dart'; +part 'repositories/i_product_repository.dart'; diff --git a/lib/domain/product/product.freezed.dart b/lib/domain/product/product.freezed.dart new file mode 100644 index 0000000..75b42f9 --- /dev/null +++ b/lib/domain/product/product.freezed.dart @@ -0,0 +1,1435 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'product.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$Product { + String get id => throw _privateConstructorUsedError; + String get organizationId => throw _privateConstructorUsedError; + String get categoryId => throw _privateConstructorUsedError; + String get sku => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + String get description => throw _privateConstructorUsedError; + int get price => throw _privateConstructorUsedError; + int get cost => throw _privateConstructorUsedError; + String get businessType => throw _privateConstructorUsedError; + String get imageUrl => throw _privateConstructorUsedError; + String get printerType => throw _privateConstructorUsedError; + Map get metadata => throw _privateConstructorUsedError; + bool get isActive => throw _privateConstructorUsedError; + DateTime get createdAt => throw _privateConstructorUsedError; + DateTime get updatedAt => throw _privateConstructorUsedError; + List get variants => throw _privateConstructorUsedError; + + /// Create a copy of Product + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductCopyWith<$Res> { + factory $ProductCopyWith(Product value, $Res Function(Product) then) = + _$ProductCopyWithImpl<$Res, Product>; + @useResult + $Res call({ + String id, + String organizationId, + String categoryId, + String sku, + String name, + String description, + int price, + int cost, + String businessType, + String imageUrl, + String printerType, + Map metadata, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + List variants, + }); +} + +/// @nodoc +class _$ProductCopyWithImpl<$Res, $Val extends Product> + implements $ProductCopyWith<$Res> { + _$ProductCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Product + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? categoryId = null, + Object? sku = null, + Object? name = null, + Object? description = null, + Object? price = null, + Object? cost = null, + Object? businessType = null, + Object? imageUrl = null, + Object? printerType = null, + Object? metadata = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + Object? variants = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + sku: null == sku + ? _value.sku + : sku // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + price: null == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + businessType: null == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String, + imageUrl: null == imageUrl + ? _value.imageUrl + : imageUrl // ignore: cast_nullable_to_non_nullable + as String, + printerType: null == printerType + ? _value.printerType + : printerType // ignore: cast_nullable_to_non_nullable + as String, + metadata: null == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + variants: null == variants + ? _value.variants + : variants // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductImplCopyWith<$Res> implements $ProductCopyWith<$Res> { + factory _$$ProductImplCopyWith( + _$ProductImpl value, + $Res Function(_$ProductImpl) then, + ) = __$$ProductImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String organizationId, + String categoryId, + String sku, + String name, + String description, + int price, + int cost, + String businessType, + String imageUrl, + String printerType, + Map metadata, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + List variants, + }); +} + +/// @nodoc +class __$$ProductImplCopyWithImpl<$Res> + extends _$ProductCopyWithImpl<$Res, _$ProductImpl> + implements _$$ProductImplCopyWith<$Res> { + __$$ProductImplCopyWithImpl( + _$ProductImpl _value, + $Res Function(_$ProductImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Product + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? categoryId = null, + Object? sku = null, + Object? name = null, + Object? description = null, + Object? price = null, + Object? cost = null, + Object? businessType = null, + Object? imageUrl = null, + Object? printerType = null, + Object? metadata = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + Object? variants = null, + }) { + return _then( + _$ProductImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + sku: null == sku + ? _value.sku + : sku // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + price: null == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + businessType: null == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String, + imageUrl: null == imageUrl + ? _value.imageUrl + : imageUrl // ignore: cast_nullable_to_non_nullable + as String, + printerType: null == printerType + ? _value.printerType + : printerType // ignore: cast_nullable_to_non_nullable + as String, + metadata: null == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + variants: null == variants + ? _value._variants + : variants // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$ProductImpl implements _Product { + const _$ProductImpl({ + required this.id, + required this.organizationId, + required this.categoryId, + required this.sku, + required this.name, + required this.description, + required this.price, + required this.cost, + required this.businessType, + required this.imageUrl, + required this.printerType, + required final Map metadata, + required this.isActive, + required this.createdAt, + required this.updatedAt, + required final List variants, + }) : _metadata = metadata, + _variants = variants; + + @override + final String id; + @override + final String organizationId; + @override + final String categoryId; + @override + final String sku; + @override + final String name; + @override + final String description; + @override + final int price; + @override + final int cost; + @override + final String businessType; + @override + final String imageUrl; + @override + final String printerType; + final Map _metadata; + @override + Map get metadata { + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_metadata); + } + + @override + final bool isActive; + @override + final DateTime createdAt; + @override + final DateTime updatedAt; + final List _variants; + @override + List get variants { + if (_variants is EqualUnmodifiableListView) return _variants; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_variants); + } + + @override + String toString() { + return 'Product(id: $id, organizationId: $organizationId, categoryId: $categoryId, sku: $sku, name: $name, description: $description, price: $price, cost: $cost, businessType: $businessType, imageUrl: $imageUrl, printerType: $printerType, metadata: $metadata, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt, variants: $variants)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.sku, sku) || other.sku == sku) && + (identical(other.name, name) || other.name == name) && + (identical(other.description, description) || + other.description == description) && + (identical(other.price, price) || other.price == price) && + (identical(other.cost, cost) || other.cost == cost) && + (identical(other.businessType, businessType) || + other.businessType == businessType) && + (identical(other.imageUrl, imageUrl) || + other.imageUrl == imageUrl) && + (identical(other.printerType, printerType) || + other.printerType == printerType) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt) && + const DeepCollectionEquality().equals(other._variants, _variants)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + categoryId, + sku, + name, + description, + price, + cost, + businessType, + imageUrl, + printerType, + const DeepCollectionEquality().hash(_metadata), + isActive, + createdAt, + updatedAt, + const DeepCollectionEquality().hash(_variants), + ); + + /// Create a copy of Product + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductImplCopyWith<_$ProductImpl> get copyWith => + __$$ProductImplCopyWithImpl<_$ProductImpl>(this, _$identity); +} + +abstract class _Product implements Product { + const factory _Product({ + required final String id, + required final String organizationId, + required final String categoryId, + required final String sku, + required final String name, + required final String description, + required final int price, + required final int cost, + required final String businessType, + required final String imageUrl, + required final String printerType, + required final Map metadata, + required final bool isActive, + required final DateTime createdAt, + required final DateTime updatedAt, + required final List variants, + }) = _$ProductImpl; + + @override + String get id; + @override + String get organizationId; + @override + String get categoryId; + @override + String get sku; + @override + String get name; + @override + String get description; + @override + int get price; + @override + int get cost; + @override + String get businessType; + @override + String get imageUrl; + @override + String get printerType; + @override + Map get metadata; + @override + bool get isActive; + @override + DateTime get createdAt; + @override + DateTime get updatedAt; + @override + List get variants; + + /// Create a copy of Product + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductImplCopyWith<_$ProductImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$ProductVariant { + String get id => throw _privateConstructorUsedError; + String get productId => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + int get priceModifier => throw _privateConstructorUsedError; + int get cost => throw _privateConstructorUsedError; + Map get metadata => throw _privateConstructorUsedError; + DateTime get createdAt => throw _privateConstructorUsedError; + DateTime get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of ProductVariant + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductVariantCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductVariantCopyWith<$Res> { + factory $ProductVariantCopyWith( + ProductVariant value, + $Res Function(ProductVariant) then, + ) = _$ProductVariantCopyWithImpl<$Res, ProductVariant>; + @useResult + $Res call({ + String id, + String productId, + String name, + int priceModifier, + int cost, + Map metadata, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class _$ProductVariantCopyWithImpl<$Res, $Val extends ProductVariant> + implements $ProductVariantCopyWith<$Res> { + _$ProductVariantCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductVariant + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? productId = null, + Object? name = null, + Object? priceModifier = null, + Object? cost = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + priceModifier: null == priceModifier + ? _value.priceModifier + : priceModifier // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + metadata: null == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductVariantImplCopyWith<$Res> + implements $ProductVariantCopyWith<$Res> { + factory _$$ProductVariantImplCopyWith( + _$ProductVariantImpl value, + $Res Function(_$ProductVariantImpl) then, + ) = __$$ProductVariantImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String productId, + String name, + int priceModifier, + int cost, + Map metadata, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class __$$ProductVariantImplCopyWithImpl<$Res> + extends _$ProductVariantCopyWithImpl<$Res, _$ProductVariantImpl> + implements _$$ProductVariantImplCopyWith<$Res> { + __$$ProductVariantImplCopyWithImpl( + _$ProductVariantImpl _value, + $Res Function(_$ProductVariantImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductVariant + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? productId = null, + Object? name = null, + Object? priceModifier = null, + Object? cost = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _$ProductVariantImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + priceModifier: null == priceModifier + ? _value.priceModifier + : priceModifier // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + metadata: null == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$ProductVariantImpl implements _ProductVariant { + const _$ProductVariantImpl({ + required this.id, + required this.productId, + required this.name, + required this.priceModifier, + required this.cost, + required final Map metadata, + required this.createdAt, + required this.updatedAt, + }) : _metadata = metadata; + + @override + final String id; + @override + final String productId; + @override + final String name; + @override + final int priceModifier; + @override + final int cost; + final Map _metadata; + @override + Map get metadata { + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_metadata); + } + + @override + final DateTime createdAt; + @override + final DateTime updatedAt; + + @override + String toString() { + return 'ProductVariant(id: $id, productId: $productId, name: $name, priceModifier: $priceModifier, cost: $cost, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductVariantImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.name, name) || other.name == name) && + (identical(other.priceModifier, priceModifier) || + other.priceModifier == priceModifier) && + (identical(other.cost, cost) || other.cost == cost) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + productId, + name, + priceModifier, + cost, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of ProductVariant + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductVariantImplCopyWith<_$ProductVariantImpl> get copyWith => + __$$ProductVariantImplCopyWithImpl<_$ProductVariantImpl>( + this, + _$identity, + ); +} + +abstract class _ProductVariant implements ProductVariant { + const factory _ProductVariant({ + required final String id, + required final String productId, + required final String name, + required final int priceModifier, + required final int cost, + required final Map metadata, + required final DateTime createdAt, + required final DateTime updatedAt, + }) = _$ProductVariantImpl; + + @override + String get id; + @override + String get productId; + @override + String get name; + @override + int get priceModifier; + @override + int get cost; + @override + Map get metadata; + @override + DateTime get createdAt; + @override + DateTime get updatedAt; + + /// Create a copy of ProductVariant + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductVariantImplCopyWith<_$ProductVariantImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$ProductFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductFailureCopyWith<$Res> { + factory $ProductFailureCopyWith( + ProductFailure value, + $Res Function(ProductFailure) then, + ) = _$ProductFailureCopyWithImpl<$Res, ProductFailure>; +} + +/// @nodoc +class _$ProductFailureCopyWithImpl<$Res, $Val extends ProductFailure> + implements $ProductFailureCopyWith<$Res> { + _$ProductFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$ProductFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'ProductFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements ProductFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$ProductFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'ProductFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements ProductFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$ProductFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'ProductFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements ProductFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$ProductFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'ProductFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements ProductFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of ProductFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/product/repositories/i_product_repository.dart b/lib/domain/product/repositories/i_product_repository.dart new file mode 100644 index 0000000..e357866 --- /dev/null +++ b/lib/domain/product/repositories/i_product_repository.dart @@ -0,0 +1,10 @@ +part of '../product.dart'; + +abstract class IProductRepository { + Future>> get({ + int page = 1, + int limit = 10, + String? categoryId, + String? search, + }); +} diff --git a/lib/infrastructure/product/datasources/remote_data_provider.dart b/lib/infrastructure/product/datasources/remote_data_provider.dart new file mode 100644 index 0000000..9d3db60 --- /dev/null +++ b/lib/infrastructure/product/datasources/remote_data_provider.dart @@ -0,0 +1,52 @@ +import 'dart:developer'; + +import 'package:data_channel/data_channel.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/product/product.dart'; +import '../product_dtos.dart'; + +@injectable +class ProductRemoteDataProvider { + final ApiClient _apiClient; + final String _logName = 'ProductRemoteDataProvider'; + + ProductRemoteDataProvider(this._apiClient); + + Future>> fetch({ + int page = 1, + int limit = 10, + String? categoryId, + String? search, + }) async { + try { + Map params = {'page': page, 'limit': limit}; + + if (categoryId != null) { + params['category_id'] = categoryId; + } + + if (search != null) { + params['search'] = search; + } + + final response = await _apiClient.get(ApiPath.product, params: params); + + if (response.data['data'] == null) { + return DC.error(ProductFailure.empty()); + } + + final dto = (response.data['data']['products'] as List) + .map((item) => ProductDto.fromJson(item)) + .toList(); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchProductError', name: _logName, error: e, stackTrace: s); + return DC.error(ProductFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/product/dto/product_dto.dart b/lib/infrastructure/product/dto/product_dto.dart new file mode 100644 index 0000000..03b0b39 --- /dev/null +++ b/lib/infrastructure/product/dto/product_dto.dart @@ -0,0 +1,70 @@ +part of '../product_dtos.dart'; + +@freezed +class ProductDto with _$ProductDto { + const ProductDto._(); + + const factory ProductDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'sku') String? sku, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'description') String? description, + @JsonKey(name: 'price') int? price, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'image_url') String? imageUrl, + @JsonKey(name: 'printer_type') String? printerType, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + @JsonKey(name: 'variants') List? variants, + }) = _ProductDto; + + factory ProductDto.fromJson(Map json) => + _$ProductDtoFromJson(json); + + /// DTO -> Domain (isi default kalau null) + Product toDomain() => Product( + id: id ?? '', + organizationId: organizationId ?? '', + categoryId: categoryId ?? '', + sku: sku ?? '', + name: name ?? '', + description: description ?? '', + price: price ?? 0, + cost: cost ?? 0, + businessType: businessType ?? '', + imageUrl: imageUrl ?? '', + printerType: printerType ?? '', + metadata: metadata ?? {}, + isActive: isActive ?? false, + createdAt: createdAt ?? DateTime.now(), + updatedAt: updatedAt ?? DateTime.now(), + variants: variants?.map((v) => v.toDomain()).toList() ?? [], + ); + + /// Domain -> DTO + factory ProductDto.fromDomain(Product product) => ProductDto( + id: product.id, + organizationId: product.organizationId, + categoryId: product.categoryId, + sku: product.sku, + name: product.name, + description: product.description, + price: product.price, + cost: product.cost, + businessType: product.businessType, + imageUrl: product.imageUrl, + printerType: product.printerType, + metadata: product.metadata, + isActive: product.isActive, + createdAt: product.createdAt, + updatedAt: product.updatedAt, + variants: product.variants + .map((v) => ProductVariantDto.fromDomain(v)) + .toList(), + ); +} diff --git a/lib/infrastructure/product/dto/product_variant_dto.dart b/lib/infrastructure/product/dto/product_variant_dto.dart new file mode 100644 index 0000000..10b94b4 --- /dev/null +++ b/lib/infrastructure/product/dto/product_variant_dto.dart @@ -0,0 +1,45 @@ +part of '../product_dtos.dart'; + +@freezed +class ProductVariantDto with _$ProductVariantDto { + const ProductVariantDto._(); + + const factory ProductVariantDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'price_modifier') int? priceModifier, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + }) = _ProductVariantDto; + + factory ProductVariantDto.fromJson(Map json) => + _$ProductVariantDtoFromJson(json); + + /// DTO -> Domain + ProductVariant toDomain() => ProductVariant( + id: id ?? '', + productId: productId ?? '', + name: name ?? '', + priceModifier: priceModifier ?? 0, + cost: cost ?? 0, + metadata: metadata ?? {}, + createdAt: createdAt ?? DateTime.now(), + updatedAt: updatedAt ?? DateTime.now(), + ); + + /// Domain -> DTO + factory ProductVariantDto.fromDomain(ProductVariant variant) => + ProductVariantDto( + id: variant.id, + productId: variant.productId, + name: variant.name, + priceModifier: variant.priceModifier, + cost: variant.cost, + metadata: variant.metadata, + createdAt: variant.createdAt, + updatedAt: variant.updatedAt, + ); +} diff --git a/lib/infrastructure/product/product_dtos.dart b/lib/infrastructure/product/product_dtos.dart new file mode 100644 index 0000000..1d606ca --- /dev/null +++ b/lib/infrastructure/product/product_dtos.dart @@ -0,0 +1,9 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/product/product.dart'; + +part 'product_dtos.freezed.dart'; +part 'product_dtos.g.dart'; + +part 'dto/product_dto.dart'; +part 'dto/product_variant_dto.dart'; diff --git a/lib/infrastructure/product/product_dtos.freezed.dart b/lib/infrastructure/product/product_dtos.freezed.dart new file mode 100644 index 0000000..61a3ed4 --- /dev/null +++ b/lib/infrastructure/product/product_dtos.freezed.dart @@ -0,0 +1,926 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'product_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +ProductDto _$ProductDtoFromJson(Map json) { + return _ProductDto.fromJson(json); +} + +/// @nodoc +mixin _$ProductDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'category_id') + String? get categoryId => throw _privateConstructorUsedError; + @JsonKey(name: 'sku') + String? get sku => throw _privateConstructorUsedError; + @JsonKey(name: 'name') + String? get name => throw _privateConstructorUsedError; + @JsonKey(name: 'description') + String? get description => throw _privateConstructorUsedError; + @JsonKey(name: 'price') + int? get price => throw _privateConstructorUsedError; + @JsonKey(name: 'cost') + int? get cost => throw _privateConstructorUsedError; + @JsonKey(name: 'business_type') + String? get businessType => throw _privateConstructorUsedError; + @JsonKey(name: 'image_url') + String? get imageUrl => throw _privateConstructorUsedError; + @JsonKey(name: 'printer_type') + String? get printerType => throw _privateConstructorUsedError; + @JsonKey(name: 'metadata') + Map? get metadata => throw _privateConstructorUsedError; + @JsonKey(name: 'is_active') + bool? get isActive => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + DateTime? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + DateTime? get updatedAt => throw _privateConstructorUsedError; + @JsonKey(name: 'variants') + List? get variants => throw _privateConstructorUsedError; + + /// Serializes this ProductDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProductDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductDtoCopyWith<$Res> { + factory $ProductDtoCopyWith( + ProductDto value, + $Res Function(ProductDto) then, + ) = _$ProductDtoCopyWithImpl<$Res, ProductDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'sku') String? sku, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'description') String? description, + @JsonKey(name: 'price') int? price, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'image_url') String? imageUrl, + @JsonKey(name: 'printer_type') String? printerType, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + @JsonKey(name: 'variants') List? variants, + }); +} + +/// @nodoc +class _$ProductDtoCopyWithImpl<$Res, $Val extends ProductDto> + implements $ProductDtoCopyWith<$Res> { + _$ProductDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? categoryId = freezed, + Object? sku = freezed, + Object? name = freezed, + Object? description = freezed, + Object? price = freezed, + Object? cost = freezed, + Object? businessType = freezed, + Object? imageUrl = freezed, + Object? printerType = freezed, + Object? metadata = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + Object? variants = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + sku: freezed == sku + ? _value.sku + : sku // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + description: freezed == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String?, + price: freezed == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + businessType: freezed == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String?, + imageUrl: freezed == imageUrl + ? _value.imageUrl + : imageUrl // ignore: cast_nullable_to_non_nullable + as String?, + printerType: freezed == printerType + ? _value.printerType + : printerType // ignore: cast_nullable_to_non_nullable + as String?, + metadata: freezed == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + variants: freezed == variants + ? _value.variants + : variants // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductDtoImplCopyWith<$Res> + implements $ProductDtoCopyWith<$Res> { + factory _$$ProductDtoImplCopyWith( + _$ProductDtoImpl value, + $Res Function(_$ProductDtoImpl) then, + ) = __$$ProductDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'sku') String? sku, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'description') String? description, + @JsonKey(name: 'price') int? price, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'image_url') String? imageUrl, + @JsonKey(name: 'printer_type') String? printerType, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + @JsonKey(name: 'variants') List? variants, + }); +} + +/// @nodoc +class __$$ProductDtoImplCopyWithImpl<$Res> + extends _$ProductDtoCopyWithImpl<$Res, _$ProductDtoImpl> + implements _$$ProductDtoImplCopyWith<$Res> { + __$$ProductDtoImplCopyWithImpl( + _$ProductDtoImpl _value, + $Res Function(_$ProductDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? categoryId = freezed, + Object? sku = freezed, + Object? name = freezed, + Object? description = freezed, + Object? price = freezed, + Object? cost = freezed, + Object? businessType = freezed, + Object? imageUrl = freezed, + Object? printerType = freezed, + Object? metadata = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + Object? variants = freezed, + }) { + return _then( + _$ProductDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + sku: freezed == sku + ? _value.sku + : sku // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + description: freezed == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String?, + price: freezed == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + businessType: freezed == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String?, + imageUrl: freezed == imageUrl + ? _value.imageUrl + : imageUrl // ignore: cast_nullable_to_non_nullable + as String?, + printerType: freezed == printerType + ? _value.printerType + : printerType // ignore: cast_nullable_to_non_nullable + as String?, + metadata: freezed == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + variants: freezed == variants + ? _value._variants + : variants // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProductDtoImpl extends _ProductDto { + const _$ProductDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'category_id') this.categoryId, + @JsonKey(name: 'sku') this.sku, + @JsonKey(name: 'name') this.name, + @JsonKey(name: 'description') this.description, + @JsonKey(name: 'price') this.price, + @JsonKey(name: 'cost') this.cost, + @JsonKey(name: 'business_type') this.businessType, + @JsonKey(name: 'image_url') this.imageUrl, + @JsonKey(name: 'printer_type') this.printerType, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'is_active') this.isActive, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + @JsonKey(name: 'variants') final List? variants, + }) : _metadata = metadata, + _variants = variants, + super._(); + + factory _$ProductDtoImpl.fromJson(Map json) => + _$$ProductDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'category_id') + final String? categoryId; + @override + @JsonKey(name: 'sku') + final String? sku; + @override + @JsonKey(name: 'name') + final String? name; + @override + @JsonKey(name: 'description') + final String? description; + @override + @JsonKey(name: 'price') + final int? price; + @override + @JsonKey(name: 'cost') + final int? cost; + @override + @JsonKey(name: 'business_type') + final String? businessType; + @override + @JsonKey(name: 'image_url') + final String? imageUrl; + @override + @JsonKey(name: 'printer_type') + final String? printerType; + final Map? _metadata; + @override + @JsonKey(name: 'metadata') + Map? get metadata { + final value = _metadata; + if (value == null) return null; + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'is_active') + final bool? isActive; + @override + @JsonKey(name: 'created_at') + final DateTime? createdAt; + @override + @JsonKey(name: 'updated_at') + final DateTime? updatedAt; + final List? _variants; + @override + @JsonKey(name: 'variants') + List? get variants { + final value = _variants; + if (value == null) return null; + if (_variants is EqualUnmodifiableListView) return _variants; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'ProductDto(id: $id, organizationId: $organizationId, categoryId: $categoryId, sku: $sku, name: $name, description: $description, price: $price, cost: $cost, businessType: $businessType, imageUrl: $imageUrl, printerType: $printerType, metadata: $metadata, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt, variants: $variants)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.sku, sku) || other.sku == sku) && + (identical(other.name, name) || other.name == name) && + (identical(other.description, description) || + other.description == description) && + (identical(other.price, price) || other.price == price) && + (identical(other.cost, cost) || other.cost == cost) && + (identical(other.businessType, businessType) || + other.businessType == businessType) && + (identical(other.imageUrl, imageUrl) || + other.imageUrl == imageUrl) && + (identical(other.printerType, printerType) || + other.printerType == printerType) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt) && + const DeepCollectionEquality().equals(other._variants, _variants)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + categoryId, + sku, + name, + description, + price, + cost, + businessType, + imageUrl, + printerType, + const DeepCollectionEquality().hash(_metadata), + isActive, + createdAt, + updatedAt, + const DeepCollectionEquality().hash(_variants), + ); + + /// Create a copy of ProductDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductDtoImplCopyWith<_$ProductDtoImpl> get copyWith => + __$$ProductDtoImplCopyWithImpl<_$ProductDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$ProductDtoImplToJson(this); + } +} + +abstract class _ProductDto extends ProductDto { + const factory _ProductDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'category_id') final String? categoryId, + @JsonKey(name: 'sku') final String? sku, + @JsonKey(name: 'name') final String? name, + @JsonKey(name: 'description') final String? description, + @JsonKey(name: 'price') final int? price, + @JsonKey(name: 'cost') final int? cost, + @JsonKey(name: 'business_type') final String? businessType, + @JsonKey(name: 'image_url') final String? imageUrl, + @JsonKey(name: 'printer_type') final String? printerType, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'is_active') final bool? isActive, + @JsonKey(name: 'created_at') final DateTime? createdAt, + @JsonKey(name: 'updated_at') final DateTime? updatedAt, + @JsonKey(name: 'variants') final List? variants, + }) = _$ProductDtoImpl; + const _ProductDto._() : super._(); + + factory _ProductDto.fromJson(Map json) = + _$ProductDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'category_id') + String? get categoryId; + @override + @JsonKey(name: 'sku') + String? get sku; + @override + @JsonKey(name: 'name') + String? get name; + @override + @JsonKey(name: 'description') + String? get description; + @override + @JsonKey(name: 'price') + int? get price; + @override + @JsonKey(name: 'cost') + int? get cost; + @override + @JsonKey(name: 'business_type') + String? get businessType; + @override + @JsonKey(name: 'image_url') + String? get imageUrl; + @override + @JsonKey(name: 'printer_type') + String? get printerType; + @override + @JsonKey(name: 'metadata') + Map? get metadata; + @override + @JsonKey(name: 'is_active') + bool? get isActive; + @override + @JsonKey(name: 'created_at') + DateTime? get createdAt; + @override + @JsonKey(name: 'updated_at') + DateTime? get updatedAt; + @override + @JsonKey(name: 'variants') + List? get variants; + + /// Create a copy of ProductDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductDtoImplCopyWith<_$ProductDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +ProductVariantDto _$ProductVariantDtoFromJson(Map json) { + return _ProductVariantDto.fromJson(json); +} + +/// @nodoc +mixin _$ProductVariantDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'product_id') + String? get productId => throw _privateConstructorUsedError; + @JsonKey(name: 'name') + String? get name => throw _privateConstructorUsedError; + @JsonKey(name: 'price_modifier') + int? get priceModifier => throw _privateConstructorUsedError; + @JsonKey(name: 'cost') + int? get cost => throw _privateConstructorUsedError; + @JsonKey(name: 'metadata') + Map? get metadata => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + DateTime? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + DateTime? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this ProductVariantDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProductVariantDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductVariantDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductVariantDtoCopyWith<$Res> { + factory $ProductVariantDtoCopyWith( + ProductVariantDto value, + $Res Function(ProductVariantDto) then, + ) = _$ProductVariantDtoCopyWithImpl<$Res, ProductVariantDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'price_modifier') int? priceModifier, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + }); +} + +/// @nodoc +class _$ProductVariantDtoCopyWithImpl<$Res, $Val extends ProductVariantDto> + implements $ProductVariantDtoCopyWith<$Res> { + _$ProductVariantDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductVariantDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? productId = freezed, + Object? name = freezed, + Object? priceModifier = freezed, + Object? cost = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + priceModifier: freezed == priceModifier + ? _value.priceModifier + : priceModifier // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + metadata: freezed == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductVariantDtoImplCopyWith<$Res> + implements $ProductVariantDtoCopyWith<$Res> { + factory _$$ProductVariantDtoImplCopyWith( + _$ProductVariantDtoImpl value, + $Res Function(_$ProductVariantDtoImpl) then, + ) = __$$ProductVariantDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'price_modifier') int? priceModifier, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') DateTime? createdAt, + @JsonKey(name: 'updated_at') DateTime? updatedAt, + }); +} + +/// @nodoc +class __$$ProductVariantDtoImplCopyWithImpl<$Res> + extends _$ProductVariantDtoCopyWithImpl<$Res, _$ProductVariantDtoImpl> + implements _$$ProductVariantDtoImplCopyWith<$Res> { + __$$ProductVariantDtoImplCopyWithImpl( + _$ProductVariantDtoImpl _value, + $Res Function(_$ProductVariantDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductVariantDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? productId = freezed, + Object? name = freezed, + Object? priceModifier = freezed, + Object? cost = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$ProductVariantDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + priceModifier: freezed == priceModifier + ? _value.priceModifier + : priceModifier // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + metadata: freezed == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProductVariantDtoImpl extends _ProductVariantDto { + const _$ProductVariantDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'product_id') this.productId, + @JsonKey(name: 'name') this.name, + @JsonKey(name: 'price_modifier') this.priceModifier, + @JsonKey(name: 'cost') this.cost, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + }) : _metadata = metadata, + super._(); + + factory _$ProductVariantDtoImpl.fromJson(Map json) => + _$$ProductVariantDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'product_id') + final String? productId; + @override + @JsonKey(name: 'name') + final String? name; + @override + @JsonKey(name: 'price_modifier') + final int? priceModifier; + @override + @JsonKey(name: 'cost') + final int? cost; + final Map? _metadata; + @override + @JsonKey(name: 'metadata') + Map? get metadata { + final value = _metadata; + if (value == null) return null; + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'created_at') + final DateTime? createdAt; + @override + @JsonKey(name: 'updated_at') + final DateTime? updatedAt; + + @override + String toString() { + return 'ProductVariantDto(id: $id, productId: $productId, name: $name, priceModifier: $priceModifier, cost: $cost, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductVariantDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.name, name) || other.name == name) && + (identical(other.priceModifier, priceModifier) || + other.priceModifier == priceModifier) && + (identical(other.cost, cost) || other.cost == cost) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + productId, + name, + priceModifier, + cost, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of ProductVariantDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductVariantDtoImplCopyWith<_$ProductVariantDtoImpl> get copyWith => + __$$ProductVariantDtoImplCopyWithImpl<_$ProductVariantDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$ProductVariantDtoImplToJson(this); + } +} + +abstract class _ProductVariantDto extends ProductVariantDto { + const factory _ProductVariantDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'product_id') final String? productId, + @JsonKey(name: 'name') final String? name, + @JsonKey(name: 'price_modifier') final int? priceModifier, + @JsonKey(name: 'cost') final int? cost, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') final DateTime? createdAt, + @JsonKey(name: 'updated_at') final DateTime? updatedAt, + }) = _$ProductVariantDtoImpl; + const _ProductVariantDto._() : super._(); + + factory _ProductVariantDto.fromJson(Map json) = + _$ProductVariantDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'product_id') + String? get productId; + @override + @JsonKey(name: 'name') + String? get name; + @override + @JsonKey(name: 'price_modifier') + int? get priceModifier; + @override + @JsonKey(name: 'cost') + int? get cost; + @override + @JsonKey(name: 'metadata') + Map? get metadata; + @override + @JsonKey(name: 'created_at') + DateTime? get createdAt; + @override + @JsonKey(name: 'updated_at') + DateTime? get updatedAt; + + /// Create a copy of ProductVariantDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductVariantDtoImplCopyWith<_$ProductVariantDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/product/product_dtos.g.dart b/lib/infrastructure/product/product_dtos.g.dart new file mode 100644 index 0000000..e15a390 --- /dev/null +++ b/lib/infrastructure/product/product_dtos.g.dart @@ -0,0 +1,83 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'product_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$ProductDtoImpl _$$ProductDtoImplFromJson(Map json) => + _$ProductDtoImpl( + id: json['id'] as String?, + organizationId: json['organization_id'] as String?, + categoryId: json['category_id'] as String?, + sku: json['sku'] as String?, + name: json['name'] as String?, + description: json['description'] as String?, + price: (json['price'] as num?)?.toInt(), + cost: (json['cost'] as num?)?.toInt(), + businessType: json['business_type'] as String?, + imageUrl: json['image_url'] as String?, + printerType: json['printer_type'] as String?, + metadata: json['metadata'] as Map?, + isActive: json['is_active'] as bool?, + createdAt: json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + updatedAt: json['updated_at'] == null + ? null + : DateTime.parse(json['updated_at'] as String), + variants: (json['variants'] as List?) + ?.map((e) => ProductVariantDto.fromJson(e as Map)) + .toList(), + ); + +Map _$$ProductDtoImplToJson(_$ProductDtoImpl instance) => + { + 'id': instance.id, + 'organization_id': instance.organizationId, + 'category_id': instance.categoryId, + 'sku': instance.sku, + 'name': instance.name, + 'description': instance.description, + 'price': instance.price, + 'cost': instance.cost, + 'business_type': instance.businessType, + 'image_url': instance.imageUrl, + 'printer_type': instance.printerType, + 'metadata': instance.metadata, + 'is_active': instance.isActive, + 'created_at': instance.createdAt?.toIso8601String(), + 'updated_at': instance.updatedAt?.toIso8601String(), + 'variants': instance.variants, + }; + +_$ProductVariantDtoImpl _$$ProductVariantDtoImplFromJson( + Map json, +) => _$ProductVariantDtoImpl( + id: json['id'] as String?, + productId: json['product_id'] as String?, + name: json['name'] as String?, + priceModifier: (json['price_modifier'] as num?)?.toInt(), + cost: (json['cost'] as num?)?.toInt(), + metadata: json['metadata'] as Map?, + createdAt: json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + updatedAt: json['updated_at'] == null + ? null + : DateTime.parse(json['updated_at'] as String), +); + +Map _$$ProductVariantDtoImplToJson( + _$ProductVariantDtoImpl instance, +) => { + 'id': instance.id, + 'product_id': instance.productId, + 'name': instance.name, + 'price_modifier': instance.priceModifier, + 'cost': instance.cost, + 'metadata': instance.metadata, + 'created_at': instance.createdAt?.toIso8601String(), + 'updated_at': instance.updatedAt?.toIso8601String(), +}; diff --git a/lib/infrastructure/product/repositories/product_repository.dart b/lib/infrastructure/product/repositories/product_repository.dart new file mode 100644 index 0000000..32bb7bc --- /dev/null +++ b/lib/infrastructure/product/repositories/product_repository.dart @@ -0,0 +1,43 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/product/product.dart'; +import '../datasources/remote_data_provider.dart'; + +@Injectable(as: IProductRepository) +class ProductRepository implements IProductRepository { + final ProductRemoteDataProvider _dataProvider; + final String _logName = 'ProductRepository'; + + ProductRepository(this._dataProvider); + + @override + Future>> get({ + int page = 1, + int limit = 10, + String? categoryId, + String? search, + }) async { + try { + final result = await _dataProvider.fetch( + page: page, + limit: limit, + categoryId: categoryId, + search: search, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.map((e) => e.toDomain()).toList(); + + return right(auth); + } catch (e, s) { + log('getProductError', name: _logName, error: e, stackTrace: s); + return left(const ProductFailure.unexpectedError()); + } + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 9836760..35d7433 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -18,6 +18,8 @@ import 'package:apskel_owner_flutter/application/category/category_loader/catego as _i183; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; +import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' + as _i458; import 'package:apskel_owner_flutter/application/sales/sales_loader/sales_loader_bloc.dart' as _i882; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; @@ -33,6 +35,7 @@ import 'package:apskel_owner_flutter/domain/analytic/repositories/i_analytic_rep as _i477; import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; import 'package:apskel_owner_flutter/domain/category/category.dart' as _i1020; +import 'package:apskel_owner_flutter/domain/product/product.dart' as _i419; import 'package:apskel_owner_flutter/env.dart' as _i6; import 'package:apskel_owner_flutter/infrastructure/analytic/datasource/remote_data_provider.dart' as _i866; @@ -48,6 +51,10 @@ import 'package:apskel_owner_flutter/infrastructure/category/datasource/remote_d as _i333; import 'package:apskel_owner_flutter/infrastructure/category/repositories/category_repository.dart' as _i869; +import 'package:apskel_owner_flutter/infrastructure/product/datasources/remote_data_provider.dart' + as _i823; +import 'package:apskel_owner_flutter/infrastructure/product/repositories/product_repository.dart' + as _i121; import 'package:apskel_owner_flutter/presentation/router/app_router.dart' as _i258; import 'package:connectivity_plus/connectivity_plus.dart' as _i895; @@ -110,6 +117,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i333.CategoryRemoteDataProvider>( () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i823.ProductRemoteDataProvider>( + () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i477.IAnalyticRepository>( () => _i393.AnalyticRepository(gh<_i866.AnalyticRemoteDataProvider>()), ); @@ -119,9 +129,15 @@ extension GetItInjectableX on _i174.GetIt { gh<_i17.AuthRemoteDataProvider>(), ), ); + gh.factory<_i419.IProductRepository>( + () => _i121.ProductRepository(gh<_i823.ProductRemoteDataProvider>()), + ); gh.factory<_i1020.ICategoryRepository>( () => _i869.CategoryRepository(gh<_i333.CategoryRemoteDataProvider>()), ); + gh.factory<_i458.ProductLoaderBloc>( + () => _i458.ProductLoaderBloc(gh<_i419.IProductRepository>()), + ); gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_page.dart index b00989d..d5d2636 100644 --- a/lib/presentation/pages/product/product_page.dart +++ b/lib/presentation/pages/product/product_page.dart @@ -4,11 +4,14 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import '../../../application/category/category_loader/category_loader_bloc.dart'; +import '../../../application/product/product_loader/product_loader_bloc.dart'; import '../../../common/theme/theme.dart'; import '../../../domain/category/category.dart'; +import '../../../domain/product/product.dart'; import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; +import '../../components/widgets/empty_widget.dart'; import 'widgets/category_delegate.dart'; import 'widgets/product_tile.dart'; @@ -20,9 +23,18 @@ class ProductPage extends StatefulWidget implements AutoRouteWrapper { State createState() => _ProductPageState(); @override - Widget wrappedRoute(BuildContext context) => BlocProvider( - create: (context) => - getIt()..add(CategoryLoaderEvent.fetched()), + Widget wrappedRoute(BuildContext context) => MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => + getIt()..add(CategoryLoaderEvent.fetched()), + ), + BlocProvider( + create: (context) => + getIt() + ..add(ProductLoaderEvent.fetched(isRefresh: true)), + ), + ], child: this, ); } @@ -34,109 +46,6 @@ class _ProductPageState extends State Category selectedCategory = Category.addAllData(); ViewType currentViewType = ViewType.grid; - // Sample product data - List products = [ - Product( - id: '1', - name: 'Nasi Goreng Special', - price: 25000, - category: 'Makanan', - stock: 50, - imageUrl: 'assets/images/nasi_goreng.jpg', - isActive: true, - ), - Product( - id: '8', - name: 'Nasi Goreng', - price: 15000, - category: 'Makanan', - stock: 50, - imageUrl: 'assets/images/nasi_goreng.jpg', - isActive: true, - ), - Product( - id: '9', - name: 'Nasi Goreng Telor', - price: 18000, - category: 'Makanan', - stock: 50, - imageUrl: 'assets/images/nasi_goreng.jpg', - isActive: true, - ), - Product( - id: '10', - name: 'Mie Goreng ', - price: 18000, - category: 'Makanan', - stock: 50, - imageUrl: 'assets/images/nasi_goreng.jpg', - isActive: true, - ), - Product( - id: '2', - name: 'Es Teh Manis', - price: 8000, - category: 'Minuman', - stock: 100, - imageUrl: 'assets/images/es_teh.jpg', - isActive: true, - ), - Product( - id: '6', - name: 'Es Jeruk', - price: 10000, - category: 'Minuman', - stock: 100, - imageUrl: 'assets/images/es_teh.jpg', - isActive: true, - ), - Product( - id: '7', - name: 'Es Kelapa', - price: 12000, - category: 'Minuman', - stock: 100, - imageUrl: 'assets/images/es_teh.jpg', - isActive: true, - ), - Product( - id: '3', - name: 'Keripik Singkong', - price: 15000, - category: 'Snack', - stock: 25, - imageUrl: 'assets/images/keripik.jpg', - isActive: true, - ), - Product( - id: '4', - name: 'Es Krim Vanilla', - price: 12000, - category: 'Dessert', - stock: 30, - imageUrl: 'assets/images/ice_cream.jpg', - isActive: false, - ), - Product( - id: '5', - name: 'Ayam Bakar', - price: 35000, - category: 'Makanan', - stock: 20, - imageUrl: 'assets/images/ayam_bakar.jpg', - isActive: true, - ), - ]; - - List get filteredProducts { - return products.where((product) { - bool matchesCategory = - selectedCategory.name == 'Semua' || - product.category == selectedCategory.id; - return matchesCategory; - }).toList(); - } - @override initState() { super.initState(); @@ -144,16 +53,20 @@ class _ProductPageState extends State @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - _buildSliverAppBar(), - _buildCategoryFilter(), - _buildProductContent(), - _buildEmptyState(), - ], - ), + return BlocBuilder( + builder: (context, state) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + _buildSliverAppBar(), + _buildCategoryFilter(), + _buildProductContent(state.products), + _buildEmptyState(state.products), + ], + ), + ); + }, ); } @@ -195,17 +108,17 @@ class _ProductPageState extends State ); } - Widget _buildProductContent() { - if (filteredProducts.isEmpty) { + Widget _buildProductContent(List products) { + if (products.isEmpty) { return const SliverToBoxAdapter(child: SizedBox.shrink()); } return currentViewType == ViewType.grid - ? _buildProductGrid() - : _buildProductList(); + ? _buildProductGrid(products) + : _buildProductList(products); } - Widget _buildProductGrid() { + Widget _buildProductGrid(List products) { return SliverPadding( padding: const EdgeInsets.all(16.0), sliver: SliverGrid( @@ -216,21 +129,21 @@ class _ProductPageState extends State mainAxisSpacing: 16.0, ), delegate: SliverChildBuilderDelegate((context, index) { - final product = filteredProducts[index]; + final product = products[index]; return ProductTile(product: product, onTap: () {}); - }, childCount: filteredProducts.length), + }, childCount: products.length), ), ); } - Widget _buildProductList() { + Widget _buildProductList(List products) { return SliverPadding( padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), sliver: SliverList( delegate: SliverChildBuilderDelegate((context, index) { - final product = filteredProducts[index]; + final product = products[index]; return _buildProductListItem(product); - }, childCount: filteredProducts.length), + }, childCount: products.length), ), ); } @@ -300,7 +213,7 @@ class _ProductPageState extends State ), const SizedBox(height: 4), Text( - product.category, + '', style: TextStyle(fontSize: 12, color: AppColor.textLight), ), const SizedBox(height: 8), @@ -327,7 +240,7 @@ class _ProductPageState extends State borderRadius: BorderRadius.circular(12), ), child: Text( - 'Stock: ${product.stock}', + 'Stock: ', style: TextStyle( fontSize: 12, color: product.isActive @@ -370,62 +283,16 @@ class _ProductPageState extends State }); } - Widget _buildEmptyState() { - if (filteredProducts.isNotEmpty) { + Widget _buildEmptyState(List products) { + if (products.isNotEmpty) { return const SliverToBoxAdapter(child: SizedBox.shrink()); } return SliverToBoxAdapter( - child: Container( - height: 300, - margin: const EdgeInsets.all(32.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.inventory_2_outlined, - size: 64, - color: AppColor.textLight, - ), - const SizedBox(height: 16), - Text( - 'Tidak ada produk ditemukan', - style: TextStyle( - color: AppColor.textSecondary, - fontSize: 16, - fontWeight: FontWeight.w500, - ), - ), - const SizedBox(height: 8), - Text( - 'Coba ubah filter atau tambah produk baru', - style: TextStyle(color: AppColor.textLight, fontSize: 14), - textAlign: TextAlign.center, - ), - ], - ), + child: EmptyWidget( + title: 'Tidak ada produk ditemukan', + message: 'Coba ubah filter atau tambah produk baru', ), ); } } - -// Product Model -class Product { - final String id; - final String name; - final int price; - final String category; - final int stock; - final String imageUrl; - bool isActive; - - Product({ - required this.id, - required this.name, - required this.price, - required this.category, - required this.stock, - required this.imageUrl, - required this.isActive, - }); -} diff --git a/lib/presentation/pages/product/widgets/product_tile.dart b/lib/presentation/pages/product/widgets/product_tile.dart index 7cc54c4..807df12 100644 --- a/lib/presentation/pages/product/widgets/product_tile.dart +++ b/lib/presentation/pages/product/widgets/product_tile.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/product/product.dart'; import '../../../components/spacer/spacer.dart'; -import '../product_page.dart'; class ProductTile extends StatelessWidget { final Product product; @@ -156,7 +156,7 @@ class ProductTile extends StatelessWidget { children: [ Flexible( child: Text( - 'Stok: ${product.stock}', + 'Stok: ', style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontSize: 9, @@ -171,7 +171,7 @@ class ProductTile extends StatelessWidget { borderRadius: BorderRadius.circular(3.0), ), child: Text( - product.category, + '', style: AppStyle.xs.copyWith( color: product.isActive ? AppColor.primary diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index c5b3785..b4e4d2a 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -88,6 +88,7 @@ class ErrorRoute extends _i18.PageRouteInfo { _i19.VoidCallback? onRetry, _i19.VoidCallback? onBack, String? errorCode, + _i19.IconData? errorIcon, List<_i18.PageRouteInfo>? children, }) : super( ErrorRoute.name, @@ -98,6 +99,7 @@ class ErrorRoute extends _i18.PageRouteInfo { onRetry: onRetry, onBack: onBack, errorCode: errorCode, + errorIcon: errorIcon, ), initialChildren: children, ); @@ -117,6 +119,7 @@ class ErrorRoute extends _i18.PageRouteInfo { onRetry: args.onRetry, onBack: args.onBack, errorCode: args.errorCode, + errorIcon: args.errorIcon, ); }, ); @@ -130,6 +133,7 @@ class ErrorRouteArgs { this.onRetry, this.onBack, this.errorCode, + this.errorIcon, }); final _i19.Key? key; @@ -144,9 +148,11 @@ class ErrorRouteArgs { final String? errorCode; + final _i19.IconData? errorIcon; + @override String toString() { - return 'ErrorRouteArgs{key: $key, title: $title, message: $message, onRetry: $onRetry, onBack: $onBack, errorCode: $errorCode}'; + return 'ErrorRouteArgs{key: $key, title: $title, message: $message, onRetry: $onRetry, onBack: $onBack, errorCode: $errorCode, errorIcon: $errorIcon}'; } } From d3543149f2ef846386cc5a94c1f7eaa37c2fd6a7 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 14:34:52 +0700 Subject: [PATCH 050/108] fix: token --- lib/common/api/api_client.dart | 9 +-------- lib/common/function/app_function.dart | 11 +++++++++++ .../analytic/datasource/remote_data_provider.dart | 2 ++ .../auth/datasources/local_data_provider.dart | 10 ++++++++-- .../auth/datasources/remote_data_provider.dart | 3 ++- .../category/datasource/remote_data_provider.dart | 2 ++ .../product/datasources/remote_data_provider.dart | 7 ++++++- lib/injection.config.dart | 8 ++------ 8 files changed, 34 insertions(+), 18 deletions(-) diff --git a/lib/common/api/api_client.dart b/lib/common/api/api_client.dart index 31f914a..95ab220 100644 --- a/lib/common/api/api_client.dart +++ b/lib/common/api/api_client.dart @@ -2,10 +2,8 @@ import 'package:awesome_dio_interceptor/awesome_dio_interceptor.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:injectable/injectable.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import '../../env.dart'; -import '../constant/local_storage_key.dart'; import 'api_failure.dart'; import 'errors/bad_network_error.dart'; import 'errors/bad_request_error.dart'; @@ -24,16 +22,11 @@ import 'interceptors/unauthorized_interceptor.dart'; class ApiClient { final Dio _dio; final Env _env; - final SharedPreferences _preferences; - ApiClient(this._dio, this._env, this._preferences) { + ApiClient(this._dio, this._env) { _dio.options.baseUrl = _env.baseUrl; _dio.options.validateStatus = (status) => status! < 500; _dio.options.connectTimeout = const Duration(seconds: 20); - _dio.options.headers = { - 'authorization': - 'Bearer ${_preferences.getString(LocalStorageKey.token)}', - }; _dio.interceptors.add(BadNetworkErrorInterceptor()); _dio.interceptors.add(BadRequestErrorInterceptor()); _dio.interceptors.add(InternalServerErrorInterceptor()); diff --git a/lib/common/function/app_function.dart b/lib/common/function/app_function.dart index ddffdda..617d7bf 100644 --- a/lib/common/function/app_function.dart +++ b/lib/common/function/app_function.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../../injection.dart'; +import '../constant/local_storage_key.dart'; void dismissKeyboard(BuildContext context) { final currentFocus = FocusScope.of(context); @@ -6,3 +10,10 @@ void dismissKeyboard(BuildContext context) { FocusManager.instance.primaryFocus?.unfocus(); } } + +Map getAuthorizationHeader() { + return { + 'Authorization': + 'Bearer ${getIt().getString(LocalStorageKey.token)}', + }; +} diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index c5827b1..4c55fa4 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -6,6 +6,7 @@ import 'package:injectable/injectable.dart'; import '../../../common/api/api_client.dart'; import '../../../common/api/api_failure.dart'; import '../../../common/extension/extension.dart'; +import '../../../common/function/app_function.dart'; import '../../../common/url/api_path.dart'; import '../../../domain/analytic/analytic.dart'; import '../analytic_dtos.dart'; @@ -28,6 +29,7 @@ class AnalyticRemoteDataProvider { 'date_from': dateFrom.toServerDate, 'date_to': dateTo.toServerDate, }, + headers: getAuthorizationHeader(), ); if (response.data['data'] == null) { diff --git a/lib/infrastructure/auth/datasources/local_data_provider.dart b/lib/infrastructure/auth/datasources/local_data_provider.dart index 0b146a6..26c460c 100644 --- a/lib/infrastructure/auth/datasources/local_data_provider.dart +++ b/lib/infrastructure/auth/datasources/local_data_provider.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:developer'; import 'package:injectable/injectable.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -10,6 +11,7 @@ import '../auth_dtos.dart'; @injectable class AuthLocalDataProvider { final SharedPreferences _sharedPreferences; + final String _logName = 'AuthLocalDataProvider'; AuthLocalDataProvider(this._sharedPreferences); @@ -48,7 +50,11 @@ class AuthLocalDataProvider { } Future deleteAllAuth() async { - await _sharedPreferences.remove(LocalStorageKey.token); - await _sharedPreferences.remove(LocalStorageKey.user); + try { + await _sharedPreferences.remove(LocalStorageKey.token); + await _sharedPreferences.remove(LocalStorageKey.user); + } catch (e) { + log('deleteAllAuthError', name: _logName, error: e); + } } } diff --git a/lib/infrastructure/auth/datasources/remote_data_provider.dart b/lib/infrastructure/auth/datasources/remote_data_provider.dart index 779f4ba..d81bd78 100644 --- a/lib/infrastructure/auth/datasources/remote_data_provider.dart +++ b/lib/infrastructure/auth/datasources/remote_data_provider.dart @@ -6,6 +6,7 @@ import 'package:data_channel/data_channel.dart'; import '../../../common/api/api_client.dart'; import '../../../common/api/api_failure.dart'; +import '../../../common/function/app_function.dart'; import '../../../common/url/api_path.dart'; import '../../../domain/auth/auth.dart'; import '../auth_dtos.dart'; @@ -45,7 +46,7 @@ class AuthRemoteDataProvider { Future> logout() async { try { - await _apiClient.post(ApiPath.logout); + await _apiClient.post(ApiPath.logout, headers: getAuthorizationHeader()); return DC.data(unit); } on ApiFailure catch (e, s) { log('login', name: _logName, error: e, stackTrace: s); diff --git a/lib/infrastructure/category/datasource/remote_data_provider.dart b/lib/infrastructure/category/datasource/remote_data_provider.dart index 46e1ba9..62d916c 100644 --- a/lib/infrastructure/category/datasource/remote_data_provider.dart +++ b/lib/infrastructure/category/datasource/remote_data_provider.dart @@ -5,6 +5,7 @@ import 'package:injectable/injectable.dart'; import '../../../common/api/api_client.dart'; import '../../../common/api/api_failure.dart'; +import '../../../common/function/app_function.dart'; import '../../../common/url/api_path.dart'; import '../../../domain/category/category.dart'; import '../category_dtos.dart'; @@ -25,6 +26,7 @@ class CategoryRemoteDataProvider { final response = await _apiClient.get( ApiPath.category, params: {'page': page, 'limit': limit, 'is_active': isActive}, + headers: getAuthorizationHeader(), ); if (response.data['data'] == null) { diff --git a/lib/infrastructure/product/datasources/remote_data_provider.dart b/lib/infrastructure/product/datasources/remote_data_provider.dart index 9d3db60..b105ce7 100644 --- a/lib/infrastructure/product/datasources/remote_data_provider.dart +++ b/lib/infrastructure/product/datasources/remote_data_provider.dart @@ -5,6 +5,7 @@ import 'package:injectable/injectable.dart'; import '../../../common/api/api_client.dart'; import '../../../common/api/api_failure.dart'; +import '../../../common/function/app_function.dart'; import '../../../common/url/api_path.dart'; import '../../../domain/product/product.dart'; import '../product_dtos.dart'; @@ -33,7 +34,11 @@ class ProductRemoteDataProvider { params['search'] = search; } - final response = await _apiClient.get(ApiPath.product, params: params); + final response = await _apiClient.get( + ApiPath.product, + params: params, + headers: getAuthorizationHeader(), + ); if (response.data['data'] == null) { return DC.error(ProductFailure.empty()); diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 35d7433..c80fd33 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -100,14 +100,10 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i991.AuthLocalDataProvider>( () => _i991.AuthLocalDataProvider(gh<_i460.SharedPreferences>()), ); - gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); gh.lazySingleton<_i115.ApiClient>( - () => _i115.ApiClient( - gh<_i361.Dio>(), - gh<_i6.Env>(), - gh<_i460.SharedPreferences>(), - ), + () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); + gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); gh.factory<_i17.AuthRemoteDataProvider>( () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), ); From 6b1e56a46b78a7f2f14e8c4051f3706c52e5a7fa Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 14:53:52 +0700 Subject: [PATCH 051/108] feat: sales loading --- lib/presentation/pages/sales/sales_page.dart | 763 ++++++++++++------- 1 file changed, 501 insertions(+), 262 deletions(-) diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart index 71d4f3a..4b58e05 100644 --- a/lib/presentation/pages/sales/sales_page.dart +++ b/lib/presentation/pages/sales/sales_page.dart @@ -1,6 +1,8 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:shimmer/shimmer.dart'; +import 'dart:math' as math; import '../../../application/sales/sales_loader/sales_loader_bloc.dart'; import '../../../common/extension/extension.dart'; @@ -32,6 +34,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { late AnimationController fadeAnimationController; late Animation fadeAnimation; + @override void initState() { super.initState(); @@ -95,41 +98,9 @@ class _SalesPageState extends State with TickerProviderStateMixin { position: slideAnimation, child: FadeTransition( opacity: fadeAnimation, - child: Container( - margin: const EdgeInsets.all(16), - padding: const EdgeInsets.symmetric( - horizontal: 20, - vertical: 12, - ), - decoration: BoxDecoration( - color: AppColor.surface, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.05), - blurRadius: 10, - offset: const Offset(0, 2), - ), - ], - ), - child: Row( - children: [ - Icon( - Icons.date_range, - color: AppColor.primary, - size: 20, - ), - SpaceWidth(8), - Text( - 'Aug 1 - Aug 15, 2025', - style: AppStyle.md.copyWith( - color: AppColor.textPrimary, - fontWeight: FontWeight.w500, - ), - ), - ], - ), - ), + child: state.isFetching + ? _buildDateRangeShimmer() + : _buildDateRangeHeader(), ), ), ), @@ -153,81 +124,9 @@ class _SalesPageState extends State with TickerProviderStateMixin { ), ), const SpaceHeight(16), - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 800), - curve: Curves.elasticOut, - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: Row( - children: [ - Expanded( - child: _buildSummaryCard( - 'Total Sales', - state - .sales - .summary - .totalSales - .currencyFormatRp, - Icons.trending_up, - AppColor.success, - 0, - ), - ), - SpaceWidth(12), - Expanded( - child: _buildSummaryCard( - 'Total Orders', - state.sales.summary.totalOrders - .toString(), - Icons.shopping_cart, - AppColor.info, - 100, - ), - ), - ], - ), - ); - }, - ), - const SpaceHeight(12), - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1000), - curve: Curves.elasticOut, - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: Row( - children: [ - Expanded( - child: _buildSummaryCard( - 'Avg Order Value', - state.sales.summary.averageOrderValue - .round() - .currencyFormatRp, - Icons.attach_money, - AppColor.warning, - 200, - ), - ), - SpaceWidth(12), - Expanded( - child: _buildSummaryCard( - 'Total Items', - state.sales.summary.totalItems - .toString(), - Icons.inventory, - AppColor.primary, - 300, - ), - ), - ], - ), - ); - }, - ), + state.isFetching + ? _buildSummaryShimmer() + : _buildSummaryCards(state), ], ), ), @@ -241,108 +140,9 @@ class _SalesPageState extends State with TickerProviderStateMixin { position: slideAnimation, child: FadeTransition( opacity: fadeAnimation, - child: TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1200), - curve: Curves.bounceOut, - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: Container( - margin: const EdgeInsets.all(16), - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - gradient: const LinearGradient( - colors: AppColor.successGradient, - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(16), - boxShadow: [ - BoxShadow( - color: AppColor.success.withOpacity(0.3), - blurRadius: 15, - offset: const Offset(0, 5), - ), - ], - ), - child: Row( - children: [ - TweenAnimationBuilder( - tween: Tween(begin: 0.0, end: 1.0), - duration: const Duration(milliseconds: 1500), - curve: Curves.elasticOut, - builder: (context, iconValue, child) { - return Transform.rotate( - angle: iconValue * 0.1, - child: Container( - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.2), - borderRadius: BorderRadius.circular( - 12, - ), - ), - child: const Icon( - Icons.account_balance_wallet, - color: AppColor.textWhite, - size: 28, - ), - ), - ); - }, - ), - SpaceWidth(16), - Expanded( - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Text( - 'Net Sales', - style: TextStyle( - color: AppColor.textWhite.withOpacity( - 0.9, - ), - fontSize: 14, - fontWeight: FontWeight.w500, - ), - ), - const SpaceHeight(4), - TweenAnimationBuilder( - tween: Tween( - begin: 0.0, - end: state.sales.summary.netSales - .toDouble(), - ), - duration: const Duration( - milliseconds: 2000, - ), - curve: Curves.easeOutCubic, - builder: (context, countValue, child) { - return Text( - state - .sales - .summary - .netSales - .currencyFormatRp, - style: const TextStyle( - color: AppColor.textWhite, - fontSize: 24, - fontWeight: FontWeight.bold, - ), - ); - }, - ), - ], - ), - ), - ], - ), - ), - ); - }, - ), + child: state.isFetching + ? _buildNetSalesShimmer() + : _buildNetSalesCard(state), ), ), ), @@ -369,56 +169,9 @@ class _SalesPageState extends State with TickerProviderStateMixin { ), // Daily Sales List - SliverList( - delegate: SliverChildBuilderDelegate((context, index) { - return SlideTransition( - position: - Tween( - begin: Offset(index.isEven ? -1.0 : 1.0, 0), - end: Offset.zero, - ).animate( - CurvedAnimation( - parent: slideAnimationController, - curve: Interval( - 0.2 + (index * 0.1), - 0.8 + (index * 0.1), - curve: Curves.easeOutBack, - ), - ), - ), - child: FadeTransition( - opacity: Tween(begin: 0.0, end: 1.0).animate( - CurvedAnimation( - parent: fadeAnimationController, - curve: Interval( - 0.3 + (index * 0.1), - 0.9 + (index * 0.1), - curve: Curves.easeOut, - ), - ), - ), - child: Container( - margin: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 6, - ), - decoration: BoxDecoration( - color: AppColor.surface, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.05), - blurRadius: 8, - offset: const Offset(0, 2), - ), - ], - ), - child: _buildDailySalesItem(state.sales.data[index]), - ), - ), - ); - }, childCount: state.sales.data.length), - ), + state.isFetching + ? _buildDailySalesShimmer() + : _buildDailySalesList(state), // Bottom Padding const SliverToBoxAdapter(child: SpaceHeight(32)), @@ -429,6 +182,492 @@ class _SalesPageState extends State with TickerProviderStateMixin { ); } + // Shimmer Components + Widget _buildDateRangeShimmer() { + return Container( + margin: const EdgeInsets.all(16), + child: Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + child: Row( + children: [ + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + SpaceWidth(8), + Container( + width: 150, + height: 16, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + ], + ), + ), + ), + ); + } + + Widget _buildSummaryShimmer() { + return Column( + children: [ + Row( + children: [ + Expanded(child: _buildSummaryCardShimmer()), + SpaceWidth(12), + Expanded(child: _buildSummaryCardShimmer()), + ], + ), + const SpaceHeight(12), + Row( + children: [ + Expanded(child: _buildSummaryCardShimmer()), + SpaceWidth(12), + Expanded(child: _buildSummaryCardShimmer()), + ], + ), + ], + ); + } + + Widget _buildSummaryCardShimmer() { + return Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 24, + height: 24, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(6), + ), + ), + SpaceWidth(8), + Container( + width: 60, + height: 14, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + ], + ), + const SpaceHeight(8), + Container( + width: double.infinity, + height: 20, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + ], + ), + ), + ); + } + + Widget _buildNetSalesShimmer() { + return Container( + margin: const EdgeInsets.all(16), + child: Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + ), + child: Row( + children: [ + Container( + width: 52, + height: 52, + decoration: BoxDecoration( + color: Colors.grey[400], + borderRadius: BorderRadius.circular(12), + ), + ), + SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 80, + height: 14, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + const SpaceHeight(8), + Container( + width: 150, + height: 24, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ); + } + + Widget _buildDailySalesShimmer() { + return SliverList( + delegate: SliverChildBuilderDelegate( + (context, index) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + child: Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + child: Row( + children: [ + Container( + width: 40, + height: 40, + decoration: BoxDecoration( + color: Colors.grey[400], + borderRadius: BorderRadius.circular(10), + ), + ), + SpaceWidth(12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 100, + height: 16, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + const SpaceHeight(4), + Container( + width: 80, + height: 14, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + ], + ), + ), + Container( + width: 60, + height: 24, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + ), + ], + ), + ), + ), + ); + }, + childCount: 8, // Show 8 shimmer items while loading + ), + ); + } + + // Original Components (preserved) + Widget _buildDateRangeHeader() { + return Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + children: [ + Icon(Icons.date_range, color: AppColor.primary, size: 20), + SpaceWidth(8), + Text( + 'Aug 1 - Aug 15, 2025', + style: AppStyle.md.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ); + } + + Widget _buildSummaryCards(SalesLoaderState state) { + return Column( + children: [ + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 800), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Row( + children: [ + Expanded( + child: _buildSummaryCard( + 'Total Sales', + state.sales.summary.totalSales.currencyFormatRp, + Icons.trending_up, + AppColor.success, + 0, + ), + ), + SpaceWidth(12), + Expanded( + child: _buildSummaryCard( + 'Total Orders', + state.sales.summary.totalOrders.toString(), + Icons.shopping_cart, + AppColor.info, + 100, + ), + ), + ], + ), + ); + }, + ), + const SpaceHeight(12), + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1000), + curve: Curves.elasticOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Row( + children: [ + Expanded( + child: _buildSummaryCard( + 'Avg Order Value', + state.sales.summary.averageOrderValue + .round() + .currencyFormatRp, + Icons.attach_money, + AppColor.warning, + 200, + ), + ), + SpaceWidth(12), + Expanded( + child: _buildSummaryCard( + 'Total Items', + state.sales.summary.totalItems.toString(), + Icons.inventory, + AppColor.primary, + 300, + ), + ), + ], + ), + ); + }, + ), + ], + ); + } + + Widget _buildNetSalesCard(SalesLoaderState state) { + return TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1200), + curve: Curves.bounceOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: AppColor.successGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.success.withOpacity(0.3), + blurRadius: 15, + offset: const Offset(0, 5), + ), + ], + ), + child: Row( + children: [ + TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 1500), + curve: Curves.elasticOut, + builder: (context, iconValue, child) { + return Transform.rotate( + angle: iconValue * 0.1, + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(12), + ), + child: const Icon( + Icons.account_balance_wallet, + color: AppColor.textWhite, + size: 28, + ), + ), + ); + }, + ), + SpaceWidth(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Net Sales', + style: TextStyle( + color: AppColor.textWhite.withOpacity(0.9), + fontSize: 14, + fontWeight: FontWeight.w500, + ), + ), + const SpaceHeight(4), + TweenAnimationBuilder( + tween: Tween( + begin: 0.0, + end: state.sales.summary.netSales.toDouble(), + ), + duration: const Duration(milliseconds: 2000), + curve: Curves.easeOutCubic, + builder: (context, countValue, child) { + return Text( + state.sales.summary.netSales.currencyFormatRp, + style: const TextStyle( + color: AppColor.textWhite, + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ); + }, + ), + ], + ), + ), + ], + ), + ), + ); + }, + ); + } + + Widget _buildDailySalesList(SalesLoaderState state) { + return SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + // Calculate intervals ensuring they don't exceed 1.0 + final slideStart = math.min(0.2 + (index * 0.05), 0.7); + final slideEnd = math.min(slideStart + 0.3, 1.0); + final fadeStart = math.min(0.3 + (index * 0.05), 0.8); + final fadeEnd = math.min(fadeStart + 0.2, 1.0); + + return SlideTransition( + position: + Tween( + begin: Offset(index.isEven ? -1.0 : 1.0, 0), + end: Offset.zero, + ).animate( + CurvedAnimation( + parent: slideAnimationController, + curve: Interval( + slideStart, + slideEnd, + curve: Curves.easeOutBack, + ), + ), + ), + child: FadeTransition( + opacity: Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: fadeAnimationController, + curve: Interval(fadeStart, fadeEnd, curve: Curves.easeOut), + ), + ), + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: _buildDailySalesItem(state.sales.data[index]), + ), + ), + ); + }, childCount: state.sales.data.length), + ); + } + Widget _buildSummaryCard( String title, String value, From beb9ead4da4229b7e0346a7e2e398df229f41081 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 19:29:46 +0700 Subject: [PATCH 052/108] feat: product scroll infinity and product category --- lib/presentation/components/image/image.dart | 5 + .../components/image/network_image.dart | 68 +++ .../pages/product/product_page.dart | 404 +++++++++++------- .../pages/product/widgets/product_card.dart | 117 +++++ .../pages/product/widgets/product_tile.dart | 49 +-- macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 112 +++++ pubspec.yaml | 1 + 8 files changed, 575 insertions(+), 183 deletions(-) create mode 100644 lib/presentation/components/image/image.dart create mode 100644 lib/presentation/components/image/network_image.dart create mode 100644 lib/presentation/pages/product/widgets/product_card.dart diff --git a/lib/presentation/components/image/image.dart b/lib/presentation/components/image/image.dart new file mode 100644 index 0000000..edfb521 --- /dev/null +++ b/lib/presentation/components/image/image.dart @@ -0,0 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:shimmer/shimmer.dart'; + +part 'network_image.dart'; diff --git a/lib/presentation/components/image/network_image.dart b/lib/presentation/components/image/network_image.dart new file mode 100644 index 0000000..3f5f65b --- /dev/null +++ b/lib/presentation/components/image/network_image.dart @@ -0,0 +1,68 @@ +part of 'image.dart'; + +class AppNetworkImage extends StatelessWidget { + final String? url; + final double? height; + final double? width; + final double? borderRadius; + final BoxFit? fit; + final bool? isCanZoom; + final VoidCallback? onTap; + + const AppNetworkImage({ + super.key, + this.url, + this.height, + this.width, + this.borderRadius = 0, + this.fit = BoxFit.cover, + this.isCanZoom = false, + this.onTap, + }); + + @override + Widget build(BuildContext context) { + Widget customPhoto( + double? heightx, + double? widthx, + BoxFit? fitx, + double? radius, + ) { + return CachedNetworkImage( + imageUrl: url.toString(), + placeholder: (context, url) => Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Container( + height: height, + width: width, + decoration: BoxDecoration( + color: Colors.grey.shade300, + borderRadius: BorderRadius.circular(radius ?? 0), + ), + ), + ), + errorWidget: (context, url, error) => Container( + height: height, + width: width, + decoration: BoxDecoration( + color: Colors.grey.shade200, + borderRadius: BorderRadius.circular(radius ?? 0), + ), + child: Icon(Icons.image_outlined, color: Colors.grey.shade400), + ), + height: heightx, + width: widthx, + fit: fitx, + ); + } + + return GestureDetector( + onTap: onTap, + child: ClipRRect( + borderRadius: BorderRadius.circular(borderRadius!), + child: customPhoto(height, width, BoxFit.fill, borderRadius), + ), + ); + } +} diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_page.dart index d5d2636..0d16a7a 100644 --- a/lib/presentation/pages/product/product_page.dart +++ b/lib/presentation/pages/product/product_page.dart @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import 'package:shimmer/shimmer.dart'; import '../../../application/category/category_loader/category_loader_bloc.dart'; import '../../../application/product/product_loader/product_loader_bloc.dart'; @@ -13,6 +14,7 @@ import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import '../../components/widgets/empty_widget.dart'; import 'widgets/category_delegate.dart'; +import 'widgets/product_card.dart'; import 'widgets/product_tile.dart'; @RoutePage() @@ -45,6 +47,7 @@ class _ProductPageState extends State with TickerProviderStateMixin { Category selectedCategory = Category.addAllData(); ViewType currentViewType = ViewType.grid; + ScrollController scrollController = ScrollController(); @override initState() { @@ -53,20 +56,42 @@ class _ProductPageState extends State @override Widget build(BuildContext context) { - return BlocBuilder( - builder: (context, state) { - return Scaffold( - backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - _buildSliverAppBar(), - _buildCategoryFilter(), - _buildProductContent(state.products), - _buildEmptyState(state.products), - ], - ), + return BlocListener( + listenWhen: (previous, current) => + previous.categoryId != current.categoryId, + listener: (context, state) { + context.read().add( + ProductLoaderEvent.fetched(isRefresh: true), ); }, + child: BlocBuilder( + builder: (context, state) { + return Scaffold( + backgroundColor: AppColor.background, + body: NotificationListener( + onNotification: (notification) { + if (notification is ScrollEndNotification && + scrollController.position.extentAfter == 0) { + context.read().add( + ProductLoaderEvent.fetched(), + ); + return true; + } + + return true; + }, + child: CustomScrollView( + controller: scrollController, + slivers: [ + _buildSliverAppBar(), + _buildCategoryFilter(), + _buildProductContent(state), + ], + ), + ), + ); + }, + ), ); } @@ -92,6 +117,10 @@ class _ProductPageState extends State Widget _buildCategoryFilter() { return BlocBuilder( builder: (context, state) { + if (state.isFetching && state.categories.isEmpty) { + return _buildCategoryShimmer(); + } + return SliverPersistentHeader( pinned: true, delegate: ProductCategoryHeaderDelegate( @@ -101,6 +130,15 @@ class _ProductPageState extends State setState(() { selectedCategory = category; }); + if (category.id == Category.addAllData().id) { + context.read().add( + ProductLoaderEvent.categoryIdChanged(''), + ); + } else { + context.read().add( + ProductLoaderEvent.categoryIdChanged(category.id), + ); + } }, ), ); @@ -108,14 +146,202 @@ class _ProductPageState extends State ); } - Widget _buildProductContent(List products) { - if (products.isEmpty) { - return const SliverToBoxAdapter(child: SizedBox.shrink()); + Widget _buildCategoryShimmer() { + return SliverToBoxAdapter( + child: Container( + height: 60, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Row( + children: List.generate( + 4, + (index) => Container( + margin: EdgeInsets.only(right: index < 3 ? 12 : 0), + width: 80, + height: 35, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + ), + ), + ), + ), + ), + ), + ); + } + + Widget _buildProductContent(ProductLoaderState state) { + if (state.isFetching && state.products.isEmpty) { + return currentViewType == ViewType.grid + ? _buildProductGridShimmer() + : _buildProductListShimmer(); + } + + if (state.products.isEmpty && !state.isFetching) { + return SliverToBoxAdapter( + child: EmptyWidget( + title: 'Tidak ada produk ditemukan', + message: 'Coba ubah filter atau tambah produk baru', + ), + ); } return currentViewType == ViewType.grid - ? _buildProductGrid(products) - : _buildProductList(products); + ? _buildProductGrid(state.products) + : _buildProductList(state.products); + } + + Widget _buildProductGridShimmer() { + return SliverPadding( + padding: const EdgeInsets.all(16.0), + sliver: SliverGrid( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + childAspectRatio: 0.85, + crossAxisSpacing: 16.0, + mainAxisSpacing: 16.0, + ), + delegate: SliverChildBuilderDelegate((context, index) { + return _buildProductTileShimmer(); + }, childCount: 6), // Show 6 shimmer items + ), + ); + } + + Widget _buildProductTileShimmer() { + return Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Image shimmer + Expanded( + flex: 3, + child: Container( + width: double.infinity, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + ), + ), + // Content shimmer + Expanded( + flex: 2, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + height: 16, + color: Colors.white, + ), + const SizedBox(height: 8), + Container(width: 100, height: 12, color: Colors.white), + const Spacer(), + Container(width: 80, height: 14, color: Colors.white), + ], + ), + ), + ), + ], + ), + ), + ); + } + + Widget _buildProductListShimmer() { + return SliverPadding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), + sliver: SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + return _buildProductListItemShimmer(); + }, childCount: 8), // Show 8 shimmer items + ), + ); + } + + Widget _buildProductListItemShimmer() { + return Container( + margin: const EdgeInsets.only(bottom: 12.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Row( + children: [ + // Image shimmer + Container( + width: 80, + height: 80, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + ), + ), + const SizedBox(width: 12), + // Content shimmer + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + height: 16, + color: Colors.white, + ), + const SizedBox(height: 8), + Container(width: 120, height: 12, color: Colors.white), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container(width: 100, height: 16, color: Colors.white), + Container( + width: 60, + height: 24, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + ), + ], + ), + ], + ), + ), + const SizedBox(width: 8), + // Action button shimmer + Container(width: 24, height: 24, color: Colors.white), + ], + ), + ), + ), + ); } Widget _buildProductGrid(List products) { @@ -124,7 +350,7 @@ class _ProductPageState extends State sliver: SliverGrid( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, - childAspectRatio: 0.85, + childAspectRatio: 0.75, crossAxisSpacing: 16.0, mainAxisSpacing: 16.0, ), @@ -142,139 +368,12 @@ class _ProductPageState extends State sliver: SliverList( delegate: SliverChildBuilderDelegate((context, index) { final product = products[index]; - return _buildProductListItem(product); + return ProductCard(product: product); }, childCount: products.length), ), ); } - Widget _buildProductListItem(Product product) { - return Container( - margin: const EdgeInsets.only(bottom: 12.0), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.1), - spreadRadius: 1, - blurRadius: 6, - offset: const Offset(0, 2), - ), - ], - ), - child: InkWell( - onTap: () {}, - borderRadius: BorderRadius.circular(12), - child: Padding( - padding: const EdgeInsets.all(12.0), - child: Row( - children: [ - // Product Image - Container( - width: 80, - height: 80, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: AppColor.background, - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.asset( - product.imageUrl, - fit: BoxFit.cover, - errorBuilder: (context, error, stackTrace) { - return Container( - color: AppColor.background, - child: Icon( - Icons.image_outlined, - color: AppColor.textLight, - size: 32, - ), - ); - }, - ), - ), - ), - const SizedBox(width: 12), - // Product Info - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - product.name, - style: const TextStyle( - fontSize: 16, - fontWeight: FontWeight.w600, - ), - maxLines: 2, - overflow: TextOverflow.ellipsis, - ), - const SizedBox(height: 4), - Text( - '', - style: TextStyle(fontSize: 12, color: AppColor.textLight), - ), - const SizedBox(height: 8), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Rp ${_formatPrice(product.price)}', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: AppColor.primary, - ), - ), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, - ), - decoration: BoxDecoration( - color: product.isActive - ? Colors.green.withOpacity(0.1) - : Colors.red.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - 'Stock: ', - style: TextStyle( - fontSize: 12, - color: product.isActive - ? Colors.green - : Colors.red, - fontWeight: FontWeight.w500, - ), - ), - ), - ], - ), - ], - ), - ), - // Action Button - IconButton( - onPressed: () {}, - icon: const Icon(Icons.more_vert), - color: AppColor.textLight, - ), - ], - ), - ), - ), - ); - } - - String _formatPrice(int price) { - return price.toString().replaceAllMapped( - RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), - (Match m) => '${m[1]}.', - ); - } - void _toggleViewType() { setState(() { currentViewType = currentViewType == ViewType.grid @@ -282,17 +381,4 @@ class _ProductPageState extends State : ViewType.grid; }); } - - Widget _buildEmptyState(List products) { - if (products.isNotEmpty) { - return const SliverToBoxAdapter(child: SizedBox.shrink()); - } - - return SliverToBoxAdapter( - child: EmptyWidget( - title: 'Tidak ada produk ditemukan', - message: 'Coba ubah filter atau tambah produk baru', - ), - ); - } } diff --git a/lib/presentation/pages/product/widgets/product_card.dart b/lib/presentation/pages/product/widgets/product_card.dart new file mode 100644 index 0000000..e3ad845 --- /dev/null +++ b/lib/presentation/pages/product/widgets/product_card.dart @@ -0,0 +1,117 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/extension/extension.dart'; +import '../../../../common/theme/theme.dart'; +import '../../../../domain/product/product.dart'; +import '../../../components/image/image.dart'; + +class ProductCard extends StatelessWidget { + const ProductCard({super.key, required this.product, this.onTap}); + + final Product product; + final VoidCallback? onTap; + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.only(bottom: 12.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.1), + spreadRadius: 1, + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(12), + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Row( + children: [ + // Product Image + _buildProductImage(), + const SizedBox(width: 12), + // Product Info + Expanded(child: _buildProductInfo()), + ], + ), + ), + ), + ); + } + + Widget _buildProductImage() { + return Container( + width: 80, + height: 80, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: AppColor.background, + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: AppNetworkImage(url: product.imageUrl, fit: BoxFit.cover), + ), + ); + } + + Widget _buildProductInfo() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + product.name, + style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Text( + product.description, + style: TextStyle(fontSize: 12, color: AppColor.textLight), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + product.price.currencyFormatRp, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: _getStatusColor().withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + product.isActive ? 'AKTIF' : 'NONAKTIF', + style: TextStyle( + fontSize: 12, + color: _getStatusColor(), + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ), + ], + ); + } + + Color _getStatusColor() { + return product.isActive ? Colors.green : Colors.red; + } +} diff --git a/lib/presentation/pages/product/widgets/product_tile.dart b/lib/presentation/pages/product/widgets/product_tile.dart index 807df12..4d151cb 100644 --- a/lib/presentation/pages/product/widgets/product_tile.dart +++ b/lib/presentation/pages/product/widgets/product_tile.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/product/product.dart'; +import '../../../components/image/image.dart'; import '../../../components/spacer/spacer.dart'; class ProductTile extends StatelessWidget { @@ -90,7 +92,7 @@ class ProductTile extends StatelessWidget { Widget _buildProductImage() { return Expanded( - flex: 2, + flex: 3, child: Container( width: double.infinity, decoration: const BoxDecoration( @@ -100,12 +102,12 @@ class ProductTile extends StatelessWidget { topRight: Radius.circular(12.0), ), ), - child: Stack( - children: [ - Center( - child: Icon(Icons.image, size: 32, color: AppColor.textLight), - ), - ], + child: ClipRRect( + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(12.0), + topRight: Radius.circular(12.0), + ), + child: AppNetworkImage(url: product.imageUrl, fit: BoxFit.cover), ), ), ); @@ -133,7 +135,7 @@ class ProductTile extends StatelessWidget { ), const SizedBox(height: 2), Text( - _formatPrice(product.price), + product.price.currencyFormatRp, style: AppStyle.xs.copyWith( color: product.isActive ? AppColor.primary @@ -151,30 +153,20 @@ class ProductTile extends StatelessWidget { Widget _buildBottomInfo() { return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end, children: [ - Flexible( - child: Text( - 'Stok: ', - style: AppStyle.xs.copyWith( - color: AppColor.textSecondary, - fontSize: 9, - ), - overflow: TextOverflow.ellipsis, - ), - ), Container( padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 1), decoration: BoxDecoration( - color: AppColor.primaryLight.withOpacity(0.1), + color: _getPrinterTypeColor().withOpacity(0.1), borderRadius: BorderRadius.circular(3.0), ), child: Text( - '', + product.printerType.toUpperCase(), style: AppStyle.xs.copyWith( color: product.isActive - ? AppColor.primary + ? _getPrinterTypeColor() : AppColor.textSecondary, fontSize: 8, fontWeight: FontWeight.w500, @@ -185,7 +177,16 @@ class ProductTile extends StatelessWidget { ); } - String _formatPrice(int price) { - return 'Rp ${price.toString().replaceAllMapped(RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (Match m) => '${m[1]}.')}'; + Color _getPrinterTypeColor() { + switch (product.printerType.toLowerCase()) { + case 'kitchen': + return Colors.orange; + case 'bar': + return Colors.blue; + case 'receipt': + return AppColor.primary; + default: + return AppColor.primary; + } } } diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index fb508ad..0483a55 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -10,6 +10,7 @@ import file_selector_macos import package_info_plus import path_provider_foundation import shared_preferences_foundation +import sqflite_darwin func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) @@ -17,4 +18,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 711d296..40534f0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -161,6 +161,30 @@ packages: url: "https://pub.dev" source: hosted version: "8.11.1" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" + url: "https://pub.dev" + source: hosted + version: "3.4.1" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" + url: "https://pub.dev" + source: hosted + version: "4.1.1" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" + url: "https://pub.dev" + source: hosted + version: "1.3.1" characters: dependency: transitive description: @@ -422,6 +446,14 @@ packages: url: "https://pub.dev" source: hosted version: "9.1.1" + flutter_cache_manager: + dependency: transitive + description: + name: flutter_cache_manager + sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" + url: "https://pub.dev" + source: hosted + version: "3.4.1" flutter_gen_core: dependency: transitive description: @@ -813,6 +845,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.0" + octo_image: + dependency: transitive + description: + name: octo_image + sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" package_config: dependency: transitive description: @@ -973,6 +1013,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.0" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" + url: "https://pub.dev" + source: hosted + version: "0.28.0" shared_preferences: dependency: "direct main" description: @@ -1090,6 +1138,54 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + sqflite: + dependency: transitive + description: + name: sqflite + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + sqflite_android: + dependency: transitive + description: + name: sqflite_android + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" + url: "https://pub.dev" + source: hosted + version: "2.5.6" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + url: "https://pub.dev" + source: hosted + version: "2.4.0" stack_trace: dependency: transitive description: @@ -1122,6 +1218,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + url: "https://pub.dev" + source: hosted + version: "3.4.0" table_calendar: dependency: "direct main" description: @@ -1170,6 +1274,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + uuid: + dependency: transitive + description: + name: uuid + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + url: "https://pub.dev" + source: hosted + version: "4.5.1" vector_graphics: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 206a197..33a7a21 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -41,6 +41,7 @@ dependencies: package_info_plus: ^8.3.1 loader_overlay: ^5.0.0 shimmer: ^3.0.0 + cached_network_image: ^3.4.1 dev_dependencies: flutter_test: From 50b06da62732292bb7910d42cdb7f2074a1e04b6 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 22:36:46 +0700 Subject: [PATCH 053/108] feat: profit loss --- .../profit_loss_loader_bloc.dart | 44 + .../profit_loss_loader_bloc.freezed.dart | 384 ++++ .../profit_loss_loader_event.dart | 6 + .../profit_loss_loader_state.dart | 15 + lib/common/url/api_path.dart | 1 + lib/domain/analytic/analytic.dart | 1 + lib/domain/analytic/analytic.freezed.dart | 1420 ++++++++++++++ .../entities/profit_loss_analytic_entity.dart | 117 ++ .../repositories/i_analytic_repository.dart | 4 + .../analytic/analytic_dtos.dart | 1 + .../analytic/analytic_dtos.freezed.dart | 1653 +++++++++++++++++ .../analytic/analytic_dtos.g.dart | 126 ++ .../datasource/remote_data_provider.dart | 27 + .../dto/profit_loss_analytic_dto.dart | 137 ++ .../repositories/analytic_repository.dart | 24 + lib/injection.config.dart | 17 +- .../pages/finance/finance_page.dart | 287 +-- .../pages/finance/widgets/cash_flow.dart | 490 +++-- .../pages/finance/widgets/product.dart | 148 ++ .../pages/finance/widgets/profit_loss.dart | 52 +- .../pages/finance/widgets/summary_card.dart | 18 - 21 files changed, 4548 insertions(+), 424 deletions(-) create mode 100644 lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart create mode 100644 lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.freezed.dart create mode 100644 lib/application/profit_loss/profit_loss_loader/profit_loss_loader_event.dart create mode 100644 lib/application/profit_loss/profit_loss_loader/profit_loss_loader_state.dart create mode 100644 lib/domain/analytic/entities/profit_loss_analytic_entity.dart create mode 100644 lib/infrastructure/analytic/dto/profit_loss_analytic_dto.dart create mode 100644 lib/presentation/pages/finance/widgets/product.dart diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart new file mode 100644 index 0000000..85758ce --- /dev/null +++ b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart @@ -0,0 +1,44 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'profit_loss_loader_event.dart'; +part 'profit_loss_loader_state.dart'; +part 'profit_loss_loader_bloc.freezed.dart'; + +@injectable +class ProfitLossLoaderBloc + extends Bloc { + final IAnalyticRepository _repository; + ProfitLossLoaderBloc(this._repository) + : super(ProfitLossLoaderState.initial()) { + on(_onProfitLossLoaderEvent); + } + + Future _onProfitLossLoaderEvent( + ProfitLossLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit(state.copyWith(isFetching: true, failureOptionProfitLoss: none())); + + final result = await _repository.getProfitLoss( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionProfitLoss: optionOf(f)), + (profitLoss) => state.copyWith(profitLoss: profitLoss), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.freezed.dart b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.freezed.dart new file mode 100644 index 0000000..2fb5db5 --- /dev/null +++ b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.freezed.dart @@ -0,0 +1,384 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'profit_loss_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$ProfitLossLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossLoaderEventCopyWith<$Res> { + factory $ProfitLossLoaderEventCopyWith( + ProfitLossLoaderEvent value, + $Res Function(ProfitLossLoaderEvent) then, + ) = _$ProfitLossLoaderEventCopyWithImpl<$Res, ProfitLossLoaderEvent>; +} + +/// @nodoc +class _$ProfitLossLoaderEventCopyWithImpl< + $Res, + $Val extends ProfitLossLoaderEvent +> + implements $ProfitLossLoaderEventCopyWith<$Res> { + _$ProfitLossLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$ProfitLossLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'ProfitLossLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements ProfitLossLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$ProfitLossLoaderState { + ProfitLossAnalytic get profitLoss => throw _privateConstructorUsedError; + Option get failureOptionProfitLoss => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossLoaderStateCopyWith<$Res> { + factory $ProfitLossLoaderStateCopyWith( + ProfitLossLoaderState value, + $Res Function(ProfitLossLoaderState) then, + ) = _$ProfitLossLoaderStateCopyWithImpl<$Res, ProfitLossLoaderState>; + @useResult + $Res call({ + ProfitLossAnalytic profitLoss, + Option failureOptionProfitLoss, + bool isFetching, + }); + + $ProfitLossAnalyticCopyWith<$Res> get profitLoss; +} + +/// @nodoc +class _$ProfitLossLoaderStateCopyWithImpl< + $Res, + $Val extends ProfitLossLoaderState +> + implements $ProfitLossLoaderStateCopyWith<$Res> { + _$ProfitLossLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? profitLoss = null, + Object? failureOptionProfitLoss = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + profitLoss: null == profitLoss + ? _value.profitLoss + : profitLoss // ignore: cast_nullable_to_non_nullable + as ProfitLossAnalytic, + failureOptionProfitLoss: null == failureOptionProfitLoss + ? _value.failureOptionProfitLoss + : failureOptionProfitLoss // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of ProfitLossLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ProfitLossAnalyticCopyWith<$Res> get profitLoss { + return $ProfitLossAnalyticCopyWith<$Res>(_value.profitLoss, (value) { + return _then(_value.copyWith(profitLoss: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$ProfitLossLoaderStateImplCopyWith<$Res> + implements $ProfitLossLoaderStateCopyWith<$Res> { + factory _$$ProfitLossLoaderStateImplCopyWith( + _$ProfitLossLoaderStateImpl value, + $Res Function(_$ProfitLossLoaderStateImpl) then, + ) = __$$ProfitLossLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + ProfitLossAnalytic profitLoss, + Option failureOptionProfitLoss, + bool isFetching, + }); + + @override + $ProfitLossAnalyticCopyWith<$Res> get profitLoss; +} + +/// @nodoc +class __$$ProfitLossLoaderStateImplCopyWithImpl<$Res> + extends + _$ProfitLossLoaderStateCopyWithImpl<$Res, _$ProfitLossLoaderStateImpl> + implements _$$ProfitLossLoaderStateImplCopyWith<$Res> { + __$$ProfitLossLoaderStateImplCopyWithImpl( + _$ProfitLossLoaderStateImpl _value, + $Res Function(_$ProfitLossLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? profitLoss = null, + Object? failureOptionProfitLoss = null, + Object? isFetching = null, + }) { + return _then( + _$ProfitLossLoaderStateImpl( + profitLoss: null == profitLoss + ? _value.profitLoss + : profitLoss // ignore: cast_nullable_to_non_nullable + as ProfitLossAnalytic, + failureOptionProfitLoss: null == failureOptionProfitLoss + ? _value.failureOptionProfitLoss + : failureOptionProfitLoss // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$ProfitLossLoaderStateImpl implements _ProfitLossLoaderState { + const _$ProfitLossLoaderStateImpl({ + required this.profitLoss, + required this.failureOptionProfitLoss, + this.isFetching = false, + }); + + @override + final ProfitLossAnalytic profitLoss; + @override + final Option failureOptionProfitLoss; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'ProfitLossLoaderState(profitLoss: $profitLoss, failureOptionProfitLoss: $failureOptionProfitLoss, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossLoaderStateImpl && + (identical(other.profitLoss, profitLoss) || + other.profitLoss == profitLoss) && + (identical( + other.failureOptionProfitLoss, + failureOptionProfitLoss, + ) || + other.failureOptionProfitLoss == failureOptionProfitLoss) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => + Object.hash(runtimeType, profitLoss, failureOptionProfitLoss, isFetching); + + /// Create a copy of ProfitLossLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossLoaderStateImplCopyWith<_$ProfitLossLoaderStateImpl> + get copyWith => + __$$ProfitLossLoaderStateImplCopyWithImpl<_$ProfitLossLoaderStateImpl>( + this, + _$identity, + ); +} + +abstract class _ProfitLossLoaderState implements ProfitLossLoaderState { + const factory _ProfitLossLoaderState({ + required final ProfitLossAnalytic profitLoss, + required final Option failureOptionProfitLoss, + final bool isFetching, + }) = _$ProfitLossLoaderStateImpl; + + @override + ProfitLossAnalytic get profitLoss; + @override + Option get failureOptionProfitLoss; + @override + bool get isFetching; + + /// Create a copy of ProfitLossLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossLoaderStateImplCopyWith<_$ProfitLossLoaderStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_event.dart b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_event.dart new file mode 100644 index 0000000..2a69fcc --- /dev/null +++ b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_event.dart @@ -0,0 +1,6 @@ +part of 'profit_loss_loader_bloc.dart'; + +@freezed +class ProfitLossLoaderEvent with _$ProfitLossLoaderEvent { + const factory ProfitLossLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_state.dart b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_state.dart new file mode 100644 index 0000000..783bfe4 --- /dev/null +++ b/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_state.dart @@ -0,0 +1,15 @@ +part of 'profit_loss_loader_bloc.dart'; + +@freezed +class ProfitLossLoaderState with _$ProfitLossLoaderState { + const factory ProfitLossLoaderState({ + required ProfitLossAnalytic profitLoss, + required Option failureOptionProfitLoss, + @Default(false) bool isFetching, + }) = _ProfitLossLoaderState; + + factory ProfitLossLoaderState.initial() => ProfitLossLoaderState( + profitLoss: ProfitLossAnalytic.empty(), + failureOptionProfitLoss: none(), + ); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index d71dcfd..9d510ac 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -5,6 +5,7 @@ class ApiPath { // Analytic static const String salesAnalytic = '/api/v1/analytics/sales'; + static const String profitLossAnalytic = '/api/v1/analytics/profit-loss'; // Category static const String category = '/api/v1/categories'; diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart index 8190576..0a045d0 100644 --- a/lib/domain/analytic/analytic.dart +++ b/lib/domain/analytic/analytic.dart @@ -6,3 +6,4 @@ part 'analytic.freezed.dart'; part 'entities/sales_analytic_entity.dart'; part 'failures/analytic_failure.dart'; +part 'entities/profit_loss_analytic_entity.dart'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index c2a75be..14c924b 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -1508,3 +1508,1423 @@ abstract class _DynamicErrorMessage implements AnalyticFailure { _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => throw _privateConstructorUsedError; } + +/// @nodoc +mixin _$ProfitLossAnalytic { + String get organizationId => throw _privateConstructorUsedError; + String get dateFrom => throw _privateConstructorUsedError; + String get dateTo => throw _privateConstructorUsedError; + String get groupBy => throw _privateConstructorUsedError; + ProfitLossSummary get summary => throw _privateConstructorUsedError; + List get data => throw _privateConstructorUsedError; + List get productData => + throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossAnalyticCopyWith<$Res> { + factory $ProfitLossAnalyticCopyWith( + ProfitLossAnalytic value, + $Res Function(ProfitLossAnalytic) then, + ) = _$ProfitLossAnalyticCopyWithImpl<$Res, ProfitLossAnalytic>; + @useResult + $Res call({ + String organizationId, + String dateFrom, + String dateTo, + String groupBy, + ProfitLossSummary summary, + List data, + List productData, + }); + + $ProfitLossSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class _$ProfitLossAnalyticCopyWithImpl<$Res, $Val extends ProfitLossAnalytic> + implements $ProfitLossAnalyticCopyWith<$Res> { + _$ProfitLossAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + Object? productData = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as ProfitLossSummary, + data: null == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List, + productData: null == productData + ? _value.productData + : productData // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } + + /// Create a copy of ProfitLossAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ProfitLossSummaryCopyWith<$Res> get summary { + return $ProfitLossSummaryCopyWith<$Res>(_value.summary, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$ProfitLossAnalyticImplCopyWith<$Res> + implements $ProfitLossAnalyticCopyWith<$Res> { + factory _$$ProfitLossAnalyticImplCopyWith( + _$ProfitLossAnalyticImpl value, + $Res Function(_$ProfitLossAnalyticImpl) then, + ) = __$$ProfitLossAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String organizationId, + String dateFrom, + String dateTo, + String groupBy, + ProfitLossSummary summary, + List data, + List productData, + }); + + @override + $ProfitLossSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class __$$ProfitLossAnalyticImplCopyWithImpl<$Res> + extends _$ProfitLossAnalyticCopyWithImpl<$Res, _$ProfitLossAnalyticImpl> + implements _$$ProfitLossAnalyticImplCopyWith<$Res> { + __$$ProfitLossAnalyticImplCopyWithImpl( + _$ProfitLossAnalyticImpl _value, + $Res Function(_$ProfitLossAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + Object? productData = null, + }) { + return _then( + _$ProfitLossAnalyticImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as ProfitLossSummary, + data: null == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List, + productData: null == productData + ? _value._productData + : productData // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$ProfitLossAnalyticImpl implements _ProfitLossAnalytic { + const _$ProfitLossAnalyticImpl({ + required this.organizationId, + required this.dateFrom, + required this.dateTo, + required this.groupBy, + required this.summary, + required final List data, + required final List productData, + }) : _data = data, + _productData = productData; + + @override + final String organizationId; + @override + final String dateFrom; + @override + final String dateTo; + @override + final String groupBy; + @override + final ProfitLossSummary summary; + final List _data; + @override + List get data { + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_data); + } + + final List _productData; + @override + List get productData { + if (_productData is EqualUnmodifiableListView) return _productData; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_productData); + } + + @override + String toString() { + return 'ProfitLossAnalytic(organizationId: $organizationId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data, productData: $productData)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossAnalyticImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data) && + const DeepCollectionEquality().equals( + other._productData, + _productData, + )); + } + + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + const DeepCollectionEquality().hash(_productData), + ); + + /// Create a copy of ProfitLossAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossAnalyticImplCopyWith<_$ProfitLossAnalyticImpl> get copyWith => + __$$ProfitLossAnalyticImplCopyWithImpl<_$ProfitLossAnalyticImpl>( + this, + _$identity, + ); +} + +abstract class _ProfitLossAnalytic implements ProfitLossAnalytic { + const factory _ProfitLossAnalytic({ + required final String organizationId, + required final String dateFrom, + required final String dateTo, + required final String groupBy, + required final ProfitLossSummary summary, + required final List data, + required final List productData, + }) = _$ProfitLossAnalyticImpl; + + @override + String get organizationId; + @override + String get dateFrom; + @override + String get dateTo; + @override + String get groupBy; + @override + ProfitLossSummary get summary; + @override + List get data; + @override + List get productData; + + /// Create a copy of ProfitLossAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossAnalyticImplCopyWith<_$ProfitLossAnalyticImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$ProfitLossSummary { + int get totalRevenue => throw _privateConstructorUsedError; + int get totalCost => throw _privateConstructorUsedError; + int get grossProfit => throw _privateConstructorUsedError; + double get grossProfitMargin => throw _privateConstructorUsedError; + int get totalTax => throw _privateConstructorUsedError; + int get totalDiscount => throw _privateConstructorUsedError; + int get netProfit => throw _privateConstructorUsedError; + double get netProfitMargin => throw _privateConstructorUsedError; + int get totalOrders => throw _privateConstructorUsedError; + double get averageProfit => throw _privateConstructorUsedError; + double get profitabilityRatio => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossSummaryCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossSummaryCopyWith<$Res> { + factory $ProfitLossSummaryCopyWith( + ProfitLossSummary value, + $Res Function(ProfitLossSummary) then, + ) = _$ProfitLossSummaryCopyWithImpl<$Res, ProfitLossSummary>; + @useResult + $Res call({ + int totalRevenue, + int totalCost, + int grossProfit, + double grossProfitMargin, + int totalTax, + int totalDiscount, + int netProfit, + double netProfitMargin, + int totalOrders, + double averageProfit, + double profitabilityRatio, + }); +} + +/// @nodoc +class _$ProfitLossSummaryCopyWithImpl<$Res, $Val extends ProfitLossSummary> + implements $ProfitLossSummaryCopyWith<$Res> { + _$ProfitLossSummaryCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalRevenue = null, + Object? totalCost = null, + Object? grossProfit = null, + Object? grossProfitMargin = null, + Object? totalTax = null, + Object? totalDiscount = null, + Object? netProfit = null, + Object? netProfitMargin = null, + Object? totalOrders = null, + Object? averageProfit = null, + Object? profitabilityRatio = null, + }) { + return _then( + _value.copyWith( + totalRevenue: null == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int, + totalCost: null == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int, + grossProfit: null == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int, + grossProfitMargin: null == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + totalTax: null == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as int, + totalDiscount: null == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as int, + netProfit: null == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int, + netProfitMargin: null == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + averageProfit: null == averageProfit + ? _value.averageProfit + : averageProfit // ignore: cast_nullable_to_non_nullable + as double, + profitabilityRatio: null == profitabilityRatio + ? _value.profitabilityRatio + : profitabilityRatio // ignore: cast_nullable_to_non_nullable + as double, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProfitLossSummaryImplCopyWith<$Res> + implements $ProfitLossSummaryCopyWith<$Res> { + factory _$$ProfitLossSummaryImplCopyWith( + _$ProfitLossSummaryImpl value, + $Res Function(_$ProfitLossSummaryImpl) then, + ) = __$$ProfitLossSummaryImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + int totalRevenue, + int totalCost, + int grossProfit, + double grossProfitMargin, + int totalTax, + int totalDiscount, + int netProfit, + double netProfitMargin, + int totalOrders, + double averageProfit, + double profitabilityRatio, + }); +} + +/// @nodoc +class __$$ProfitLossSummaryImplCopyWithImpl<$Res> + extends _$ProfitLossSummaryCopyWithImpl<$Res, _$ProfitLossSummaryImpl> + implements _$$ProfitLossSummaryImplCopyWith<$Res> { + __$$ProfitLossSummaryImplCopyWithImpl( + _$ProfitLossSummaryImpl _value, + $Res Function(_$ProfitLossSummaryImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalRevenue = null, + Object? totalCost = null, + Object? grossProfit = null, + Object? grossProfitMargin = null, + Object? totalTax = null, + Object? totalDiscount = null, + Object? netProfit = null, + Object? netProfitMargin = null, + Object? totalOrders = null, + Object? averageProfit = null, + Object? profitabilityRatio = null, + }) { + return _then( + _$ProfitLossSummaryImpl( + totalRevenue: null == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int, + totalCost: null == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int, + grossProfit: null == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int, + grossProfitMargin: null == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + totalTax: null == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as int, + totalDiscount: null == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as int, + netProfit: null == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int, + netProfitMargin: null == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + averageProfit: null == averageProfit + ? _value.averageProfit + : averageProfit // ignore: cast_nullable_to_non_nullable + as double, + profitabilityRatio: null == profitabilityRatio + ? _value.profitabilityRatio + : profitabilityRatio // ignore: cast_nullable_to_non_nullable + as double, + ), + ); + } +} + +/// @nodoc + +class _$ProfitLossSummaryImpl implements _ProfitLossSummary { + const _$ProfitLossSummaryImpl({ + required this.totalRevenue, + required this.totalCost, + required this.grossProfit, + required this.grossProfitMargin, + required this.totalTax, + required this.totalDiscount, + required this.netProfit, + required this.netProfitMargin, + required this.totalOrders, + required this.averageProfit, + required this.profitabilityRatio, + }); + + @override + final int totalRevenue; + @override + final int totalCost; + @override + final int grossProfit; + @override + final double grossProfitMargin; + @override + final int totalTax; + @override + final int totalDiscount; + @override + final int netProfit; + @override + final double netProfitMargin; + @override + final int totalOrders; + @override + final double averageProfit; + @override + final double profitabilityRatio; + + @override + String toString() { + return 'ProfitLossSummary(totalRevenue: $totalRevenue, totalCost: $totalCost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, totalTax: $totalTax, totalDiscount: $totalDiscount, netProfit: $netProfit, netProfitMargin: $netProfitMargin, totalOrders: $totalOrders, averageProfit: $averageProfit, profitabilityRatio: $profitabilityRatio)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossSummaryImpl && + (identical(other.totalRevenue, totalRevenue) || + other.totalRevenue == totalRevenue) && + (identical(other.totalCost, totalCost) || + other.totalCost == totalCost) && + (identical(other.grossProfit, grossProfit) || + other.grossProfit == grossProfit) && + (identical(other.grossProfitMargin, grossProfitMargin) || + other.grossProfitMargin == grossProfitMargin) && + (identical(other.totalTax, totalTax) || + other.totalTax == totalTax) && + (identical(other.totalDiscount, totalDiscount) || + other.totalDiscount == totalDiscount) && + (identical(other.netProfit, netProfit) || + other.netProfit == netProfit) && + (identical(other.netProfitMargin, netProfitMargin) || + other.netProfitMargin == netProfitMargin) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.averageProfit, averageProfit) || + other.averageProfit == averageProfit) && + (identical(other.profitabilityRatio, profitabilityRatio) || + other.profitabilityRatio == profitabilityRatio)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + totalRevenue, + totalCost, + grossProfit, + grossProfitMargin, + totalTax, + totalDiscount, + netProfit, + netProfitMargin, + totalOrders, + averageProfit, + profitabilityRatio, + ); + + /// Create a copy of ProfitLossSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossSummaryImplCopyWith<_$ProfitLossSummaryImpl> get copyWith => + __$$ProfitLossSummaryImplCopyWithImpl<_$ProfitLossSummaryImpl>( + this, + _$identity, + ); +} + +abstract class _ProfitLossSummary implements ProfitLossSummary { + const factory _ProfitLossSummary({ + required final int totalRevenue, + required final int totalCost, + required final int grossProfit, + required final double grossProfitMargin, + required final int totalTax, + required final int totalDiscount, + required final int netProfit, + required final double netProfitMargin, + required final int totalOrders, + required final double averageProfit, + required final double profitabilityRatio, + }) = _$ProfitLossSummaryImpl; + + @override + int get totalRevenue; + @override + int get totalCost; + @override + int get grossProfit; + @override + double get grossProfitMargin; + @override + int get totalTax; + @override + int get totalDiscount; + @override + int get netProfit; + @override + double get netProfitMargin; + @override + int get totalOrders; + @override + double get averageProfit; + @override + double get profitabilityRatio; + + /// Create a copy of ProfitLossSummary + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossSummaryImplCopyWith<_$ProfitLossSummaryImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$ProfitLossDailyData { + String get date => throw _privateConstructorUsedError; + int get revenue => throw _privateConstructorUsedError; + int get cost => throw _privateConstructorUsedError; + int get grossProfit => throw _privateConstructorUsedError; + double get grossProfitMargin => throw _privateConstructorUsedError; + int get tax => throw _privateConstructorUsedError; + int get discount => throw _privateConstructorUsedError; + int get netProfit => throw _privateConstructorUsedError; + double get netProfitMargin => throw _privateConstructorUsedError; + int get orders => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossDailyData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossDailyDataCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossDailyDataCopyWith<$Res> { + factory $ProfitLossDailyDataCopyWith( + ProfitLossDailyData value, + $Res Function(ProfitLossDailyData) then, + ) = _$ProfitLossDailyDataCopyWithImpl<$Res, ProfitLossDailyData>; + @useResult + $Res call({ + String date, + int revenue, + int cost, + int grossProfit, + double grossProfitMargin, + int tax, + int discount, + int netProfit, + double netProfitMargin, + int orders, + }); +} + +/// @nodoc +class _$ProfitLossDailyDataCopyWithImpl<$Res, $Val extends ProfitLossDailyData> + implements $ProfitLossDailyDataCopyWith<$Res> { + _$ProfitLossDailyDataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossDailyData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = null, + Object? revenue = null, + Object? cost = null, + Object? grossProfit = null, + Object? grossProfitMargin = null, + Object? tax = null, + Object? discount = null, + Object? netProfit = null, + Object? netProfitMargin = null, + Object? orders = null, + }) { + return _then( + _value.copyWith( + date: null == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + grossProfit: null == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int, + grossProfitMargin: null == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + tax: null == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int, + discount: null == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int, + netProfit: null == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int, + netProfitMargin: null == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + orders: null == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProfitLossDailyDataImplCopyWith<$Res> + implements $ProfitLossDailyDataCopyWith<$Res> { + factory _$$ProfitLossDailyDataImplCopyWith( + _$ProfitLossDailyDataImpl value, + $Res Function(_$ProfitLossDailyDataImpl) then, + ) = __$$ProfitLossDailyDataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String date, + int revenue, + int cost, + int grossProfit, + double grossProfitMargin, + int tax, + int discount, + int netProfit, + double netProfitMargin, + int orders, + }); +} + +/// @nodoc +class __$$ProfitLossDailyDataImplCopyWithImpl<$Res> + extends _$ProfitLossDailyDataCopyWithImpl<$Res, _$ProfitLossDailyDataImpl> + implements _$$ProfitLossDailyDataImplCopyWith<$Res> { + __$$ProfitLossDailyDataImplCopyWithImpl( + _$ProfitLossDailyDataImpl _value, + $Res Function(_$ProfitLossDailyDataImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossDailyData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = null, + Object? revenue = null, + Object? cost = null, + Object? grossProfit = null, + Object? grossProfitMargin = null, + Object? tax = null, + Object? discount = null, + Object? netProfit = null, + Object? netProfitMargin = null, + Object? orders = null, + }) { + return _then( + _$ProfitLossDailyDataImpl( + date: null == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + grossProfit: null == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int, + grossProfitMargin: null == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + tax: null == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int, + discount: null == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int, + netProfit: null == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int, + netProfitMargin: null == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + orders: null == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$ProfitLossDailyDataImpl implements _ProfitLossDailyData { + const _$ProfitLossDailyDataImpl({ + required this.date, + required this.revenue, + required this.cost, + required this.grossProfit, + required this.grossProfitMargin, + required this.tax, + required this.discount, + required this.netProfit, + required this.netProfitMargin, + required this.orders, + }); + + @override + final String date; + @override + final int revenue; + @override + final int cost; + @override + final int grossProfit; + @override + final double grossProfitMargin; + @override + final int tax; + @override + final int discount; + @override + final int netProfit; + @override + final double netProfitMargin; + @override + final int orders; + + @override + String toString() { + return 'ProfitLossDailyData(date: $date, revenue: $revenue, cost: $cost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, tax: $tax, discount: $discount, netProfit: $netProfit, netProfitMargin: $netProfitMargin, orders: $orders)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossDailyDataImpl && + (identical(other.date, date) || other.date == date) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.cost, cost) || other.cost == cost) && + (identical(other.grossProfit, grossProfit) || + other.grossProfit == grossProfit) && + (identical(other.grossProfitMargin, grossProfitMargin) || + other.grossProfitMargin == grossProfitMargin) && + (identical(other.tax, tax) || other.tax == tax) && + (identical(other.discount, discount) || + other.discount == discount) && + (identical(other.netProfit, netProfit) || + other.netProfit == netProfit) && + (identical(other.netProfitMargin, netProfitMargin) || + other.netProfitMargin == netProfitMargin) && + (identical(other.orders, orders) || other.orders == orders)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + date, + revenue, + cost, + grossProfit, + grossProfitMargin, + tax, + discount, + netProfit, + netProfitMargin, + orders, + ); + + /// Create a copy of ProfitLossDailyData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossDailyDataImplCopyWith<_$ProfitLossDailyDataImpl> get copyWith => + __$$ProfitLossDailyDataImplCopyWithImpl<_$ProfitLossDailyDataImpl>( + this, + _$identity, + ); +} + +abstract class _ProfitLossDailyData implements ProfitLossDailyData { + const factory _ProfitLossDailyData({ + required final String date, + required final int revenue, + required final int cost, + required final int grossProfit, + required final double grossProfitMargin, + required final int tax, + required final int discount, + required final int netProfit, + required final double netProfitMargin, + required final int orders, + }) = _$ProfitLossDailyDataImpl; + + @override + String get date; + @override + int get revenue; + @override + int get cost; + @override + int get grossProfit; + @override + double get grossProfitMargin; + @override + int get tax; + @override + int get discount; + @override + int get netProfit; + @override + double get netProfitMargin; + @override + int get orders; + + /// Create a copy of ProfitLossDailyData + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossDailyDataImplCopyWith<_$ProfitLossDailyDataImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$ProfitLossProductData { + String get productId => throw _privateConstructorUsedError; + String get productName => throw _privateConstructorUsedError; + String get categoryId => throw _privateConstructorUsedError; + String get categoryName => throw _privateConstructorUsedError; + int get quantitySold => throw _privateConstructorUsedError; + int get revenue => throw _privateConstructorUsedError; + int get cost => throw _privateConstructorUsedError; + int get grossProfit => throw _privateConstructorUsedError; + double get grossProfitMargin => throw _privateConstructorUsedError; + int get averagePrice => throw _privateConstructorUsedError; + int get averageCost => throw _privateConstructorUsedError; + int get profitPerUnit => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossProductData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossProductDataCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossProductDataCopyWith<$Res> { + factory $ProfitLossProductDataCopyWith( + ProfitLossProductData value, + $Res Function(ProfitLossProductData) then, + ) = _$ProfitLossProductDataCopyWithImpl<$Res, ProfitLossProductData>; + @useResult + $Res call({ + String productId, + String productName, + String categoryId, + String categoryName, + int quantitySold, + int revenue, + int cost, + int grossProfit, + double grossProfitMargin, + int averagePrice, + int averageCost, + int profitPerUnit, + }); +} + +/// @nodoc +class _$ProfitLossProductDataCopyWithImpl< + $Res, + $Val extends ProfitLossProductData +> + implements $ProfitLossProductDataCopyWith<$Res> { + _$ProfitLossProductDataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossProductData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? cost = null, + Object? grossProfit = null, + Object? grossProfitMargin = null, + Object? averagePrice = null, + Object? averageCost = null, + Object? profitPerUnit = null, + }) { + return _then( + _value.copyWith( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + grossProfit: null == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int, + grossProfitMargin: null == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as int, + averageCost: null == averageCost + ? _value.averageCost + : averageCost // ignore: cast_nullable_to_non_nullable + as int, + profitPerUnit: null == profitPerUnit + ? _value.profitPerUnit + : profitPerUnit // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProfitLossProductDataImplCopyWith<$Res> + implements $ProfitLossProductDataCopyWith<$Res> { + factory _$$ProfitLossProductDataImplCopyWith( + _$ProfitLossProductDataImpl value, + $Res Function(_$ProfitLossProductDataImpl) then, + ) = __$$ProfitLossProductDataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String productId, + String productName, + String categoryId, + String categoryName, + int quantitySold, + int revenue, + int cost, + int grossProfit, + double grossProfitMargin, + int averagePrice, + int averageCost, + int profitPerUnit, + }); +} + +/// @nodoc +class __$$ProfitLossProductDataImplCopyWithImpl<$Res> + extends + _$ProfitLossProductDataCopyWithImpl<$Res, _$ProfitLossProductDataImpl> + implements _$$ProfitLossProductDataImplCopyWith<$Res> { + __$$ProfitLossProductDataImplCopyWithImpl( + _$ProfitLossProductDataImpl _value, + $Res Function(_$ProfitLossProductDataImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossProductData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? cost = null, + Object? grossProfit = null, + Object? grossProfitMargin = null, + Object? averagePrice = null, + Object? averageCost = null, + Object? profitPerUnit = null, + }) { + return _then( + _$ProfitLossProductDataImpl( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + grossProfit: null == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int, + grossProfitMargin: null == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as int, + averageCost: null == averageCost + ? _value.averageCost + : averageCost // ignore: cast_nullable_to_non_nullable + as int, + profitPerUnit: null == profitPerUnit + ? _value.profitPerUnit + : profitPerUnit // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$ProfitLossProductDataImpl implements _ProfitLossProductData { + const _$ProfitLossProductDataImpl({ + required this.productId, + required this.productName, + required this.categoryId, + required this.categoryName, + required this.quantitySold, + required this.revenue, + required this.cost, + required this.grossProfit, + required this.grossProfitMargin, + required this.averagePrice, + required this.averageCost, + required this.profitPerUnit, + }); + + @override + final String productId; + @override + final String productName; + @override + final String categoryId; + @override + final String categoryName; + @override + final int quantitySold; + @override + final int revenue; + @override + final int cost; + @override + final int grossProfit; + @override + final double grossProfitMargin; + @override + final int averagePrice; + @override + final int averageCost; + @override + final int profitPerUnit; + + @override + String toString() { + return 'ProfitLossProductData(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, cost: $cost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, averagePrice: $averagePrice, averageCost: $averageCost, profitPerUnit: $profitPerUnit)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossProductDataImpl && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantitySold, quantitySold) || + other.quantitySold == quantitySold) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.cost, cost) || other.cost == cost) && + (identical(other.grossProfit, grossProfit) || + other.grossProfit == grossProfit) && + (identical(other.grossProfitMargin, grossProfitMargin) || + other.grossProfitMargin == grossProfitMargin) && + (identical(other.averagePrice, averagePrice) || + other.averagePrice == averagePrice) && + (identical(other.averageCost, averageCost) || + other.averageCost == averageCost) && + (identical(other.profitPerUnit, profitPerUnit) || + other.profitPerUnit == profitPerUnit)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + productId, + productName, + categoryId, + categoryName, + quantitySold, + revenue, + cost, + grossProfit, + grossProfitMargin, + averagePrice, + averageCost, + profitPerUnit, + ); + + /// Create a copy of ProfitLossProductData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossProductDataImplCopyWith<_$ProfitLossProductDataImpl> + get copyWith => + __$$ProfitLossProductDataImplCopyWithImpl<_$ProfitLossProductDataImpl>( + this, + _$identity, + ); +} + +abstract class _ProfitLossProductData implements ProfitLossProductData { + const factory _ProfitLossProductData({ + required final String productId, + required final String productName, + required final String categoryId, + required final String categoryName, + required final int quantitySold, + required final int revenue, + required final int cost, + required final int grossProfit, + required final double grossProfitMargin, + required final int averagePrice, + required final int averageCost, + required final int profitPerUnit, + }) = _$ProfitLossProductDataImpl; + + @override + String get productId; + @override + String get productName; + @override + String get categoryId; + @override + String get categoryName; + @override + int get quantitySold; + @override + int get revenue; + @override + int get cost; + @override + int get grossProfit; + @override + double get grossProfitMargin; + @override + int get averagePrice; + @override + int get averageCost; + @override + int get profitPerUnit; + + /// Create a copy of ProfitLossProductData + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossProductDataImplCopyWith<_$ProfitLossProductDataImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/domain/analytic/entities/profit_loss_analytic_entity.dart b/lib/domain/analytic/entities/profit_loss_analytic_entity.dart new file mode 100644 index 0000000..3828307 --- /dev/null +++ b/lib/domain/analytic/entities/profit_loss_analytic_entity.dart @@ -0,0 +1,117 @@ +part of '../analytic.dart'; + +@freezed +class ProfitLossAnalytic with _$ProfitLossAnalytic { + const factory ProfitLossAnalytic({ + required String organizationId, + required String dateFrom, + required String dateTo, + required String groupBy, + required ProfitLossSummary summary, + required List data, + required List productData, + }) = _ProfitLossAnalytic; + + factory ProfitLossAnalytic.empty() => ProfitLossAnalytic( + organizationId: '', + dateFrom: '', + dateTo: '', + groupBy: '', + summary: ProfitLossSummary.empty(), + data: [], + productData: [], + ); +} + +@freezed +class ProfitLossSummary with _$ProfitLossSummary { + const factory ProfitLossSummary({ + required int totalRevenue, + required int totalCost, + required int grossProfit, + required double grossProfitMargin, + required int totalTax, + required int totalDiscount, + required int netProfit, + required double netProfitMargin, + required int totalOrders, + required double averageProfit, + required double profitabilityRatio, + }) = _ProfitLossSummary; + + factory ProfitLossSummary.empty() => ProfitLossSummary( + totalRevenue: 0, + totalCost: 0, + grossProfit: 0, + grossProfitMargin: 0, + totalTax: 0, + totalDiscount: 0, + netProfit: 0, + netProfitMargin: 0, + totalOrders: 0, + averageProfit: 0, + profitabilityRatio: 0, + ); +} + +@freezed +class ProfitLossDailyData with _$ProfitLossDailyData { + const factory ProfitLossDailyData({ + required String date, + required int revenue, + required int cost, + required int grossProfit, + required double grossProfitMargin, + required int tax, + required int discount, + required int netProfit, + required double netProfitMargin, + required int orders, + }) = _ProfitLossDailyData; + + factory ProfitLossDailyData.empty() => ProfitLossDailyData( + date: '', + revenue: 0, + cost: 0, + grossProfit: 0, + grossProfitMargin: 0, + tax: 0, + discount: 0, + netProfit: 0, + netProfitMargin: 0, + orders: 0, + ); +} + +@freezed +class ProfitLossProductData with _$ProfitLossProductData { + const factory ProfitLossProductData({ + required String productId, + required String productName, + required String categoryId, + required String categoryName, + required int quantitySold, + required int revenue, + required int cost, + required int grossProfit, + required double grossProfitMargin, + required int averagePrice, + required int averageCost, + required int profitPerUnit, + }) = _ProfitLossProductData; + + factory ProfitLossProductData.empty() => ProfitLossProductData( + productId: '', + productName: '', + categoryId: '', + categoryName: '', + quantitySold: 0, + revenue: 0, + cost: 0, + grossProfit: 0, + grossProfitMargin: 0, + averagePrice: 0, + averageCost: 0, + profitPerUnit: 0, + ); +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index 6826dde..95dfd2b 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -7,4 +7,8 @@ abstract class IAnalyticRepository { required DateTime dateFrom, required DateTime dateTo, }); + Future> getProfitLoss({ + required DateTime dateFrom, + required DateTime dateTo, + }); } diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart index 277bb65..94a2ac3 100644 --- a/lib/infrastructure/analytic/analytic_dtos.dart +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -6,3 +6,4 @@ part 'analytic_dtos.freezed.dart'; part 'analytic_dtos.g.dart'; part 'dto/sales_analytic_dto.dart'; +part 'dto/profit_loss_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index d2f58d4..4d03fe3 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -1017,3 +1017,1656 @@ abstract class _SalesAnalyticDataDto extends SalesAnalyticDataDto { _$$SalesAnalyticDataDtoImplCopyWith<_$SalesAnalyticDataDtoImpl> get copyWith => throw _privateConstructorUsedError; } + +ProfitLossAnalyticDto _$ProfitLossAnalyticDtoFromJson( + Map json, +) { + return _ProfitLossAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$ProfitLossAnalyticDto { + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'date_from') + String? get dateFrom => throw _privateConstructorUsedError; + @JsonKey(name: 'date_to') + String? get dateTo => throw _privateConstructorUsedError; + @JsonKey(name: 'group_by') + String? get groupBy => throw _privateConstructorUsedError; + @JsonKey(name: 'summary') + ProfitLossSummaryDto? get summary => throw _privateConstructorUsedError; + @JsonKey(name: 'data') + List? get data => throw _privateConstructorUsedError; + @JsonKey(name: 'product_data') + List? get productData => + throw _privateConstructorUsedError; + + /// Serializes this ProfitLossAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossAnalyticDtoCopyWith<$Res> { + factory $ProfitLossAnalyticDtoCopyWith( + ProfitLossAnalyticDto value, + $Res Function(ProfitLossAnalyticDto) then, + ) = _$ProfitLossAnalyticDtoCopyWithImpl<$Res, ProfitLossAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') ProfitLossSummaryDto? summary, + @JsonKey(name: 'data') List? data, + @JsonKey(name: 'product_data') List? productData, + }); + + $ProfitLossSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class _$ProfitLossAnalyticDtoCopyWithImpl< + $Res, + $Val extends ProfitLossAnalyticDto +> + implements $ProfitLossAnalyticDtoCopyWith<$Res> { + _$ProfitLossAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + Object? productData = freezed, + }) { + return _then( + _value.copyWith( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as ProfitLossSummaryDto?, + data: freezed == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List?, + productData: freezed == productData + ? _value.productData + : productData // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } + + /// Create a copy of ProfitLossAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ProfitLossSummaryDtoCopyWith<$Res>? get summary { + if (_value.summary == null) { + return null; + } + + return $ProfitLossSummaryDtoCopyWith<$Res>(_value.summary!, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$ProfitLossAnalyticDtoImplCopyWith<$Res> + implements $ProfitLossAnalyticDtoCopyWith<$Res> { + factory _$$ProfitLossAnalyticDtoImplCopyWith( + _$ProfitLossAnalyticDtoImpl value, + $Res Function(_$ProfitLossAnalyticDtoImpl) then, + ) = __$$ProfitLossAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') ProfitLossSummaryDto? summary, + @JsonKey(name: 'data') List? data, + @JsonKey(name: 'product_data') List? productData, + }); + + @override + $ProfitLossSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class __$$ProfitLossAnalyticDtoImplCopyWithImpl<$Res> + extends + _$ProfitLossAnalyticDtoCopyWithImpl<$Res, _$ProfitLossAnalyticDtoImpl> + implements _$$ProfitLossAnalyticDtoImplCopyWith<$Res> { + __$$ProfitLossAnalyticDtoImplCopyWithImpl( + _$ProfitLossAnalyticDtoImpl _value, + $Res Function(_$ProfitLossAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + Object? productData = freezed, + }) { + return _then( + _$ProfitLossAnalyticDtoImpl( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as ProfitLossSummaryDto?, + data: freezed == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List?, + productData: freezed == productData + ? _value._productData + : productData // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProfitLossAnalyticDtoImpl extends _ProfitLossAnalyticDto { + const _$ProfitLossAnalyticDtoImpl({ + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'date_from') this.dateFrom, + @JsonKey(name: 'date_to') this.dateTo, + @JsonKey(name: 'group_by') this.groupBy, + @JsonKey(name: 'summary') this.summary, + @JsonKey(name: 'data') final List? data, + @JsonKey(name: 'product_data') + final List? productData, + }) : _data = data, + _productData = productData, + super._(); + + factory _$ProfitLossAnalyticDtoImpl.fromJson(Map json) => + _$$ProfitLossAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'date_from') + final String? dateFrom; + @override + @JsonKey(name: 'date_to') + final String? dateTo; + @override + @JsonKey(name: 'group_by') + final String? groupBy; + @override + @JsonKey(name: 'summary') + final ProfitLossSummaryDto? summary; + final List? _data; + @override + @JsonKey(name: 'data') + List? get data { + final value = _data; + if (value == null) return null; + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + final List? _productData; + @override + @JsonKey(name: 'product_data') + List? get productData { + final value = _productData; + if (value == null) return null; + if (_productData is EqualUnmodifiableListView) return _productData; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'ProfitLossAnalyticDto(organizationId: $organizationId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data, productData: $productData)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossAnalyticDtoImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data) && + const DeepCollectionEquality().equals( + other._productData, + _productData, + )); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + const DeepCollectionEquality().hash(_productData), + ); + + /// Create a copy of ProfitLossAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossAnalyticDtoImplCopyWith<_$ProfitLossAnalyticDtoImpl> + get copyWith => + __$$ProfitLossAnalyticDtoImplCopyWithImpl<_$ProfitLossAnalyticDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$ProfitLossAnalyticDtoImplToJson(this); + } +} + +abstract class _ProfitLossAnalyticDto extends ProfitLossAnalyticDto { + const factory _ProfitLossAnalyticDto({ + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'date_from') final String? dateFrom, + @JsonKey(name: 'date_to') final String? dateTo, + @JsonKey(name: 'group_by') final String? groupBy, + @JsonKey(name: 'summary') final ProfitLossSummaryDto? summary, + @JsonKey(name: 'data') final List? data, + @JsonKey(name: 'product_data') + final List? productData, + }) = _$ProfitLossAnalyticDtoImpl; + const _ProfitLossAnalyticDto._() : super._(); + + factory _ProfitLossAnalyticDto.fromJson(Map json) = + _$ProfitLossAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'date_from') + String? get dateFrom; + @override + @JsonKey(name: 'date_to') + String? get dateTo; + @override + @JsonKey(name: 'group_by') + String? get groupBy; + @override + @JsonKey(name: 'summary') + ProfitLossSummaryDto? get summary; + @override + @JsonKey(name: 'data') + List? get data; + @override + @JsonKey(name: 'product_data') + List? get productData; + + /// Create a copy of ProfitLossAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossAnalyticDtoImplCopyWith<_$ProfitLossAnalyticDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +ProfitLossSummaryDto _$ProfitLossSummaryDtoFromJson(Map json) { + return _ProfitLossSummaryDto.fromJson(json); +} + +/// @nodoc +mixin _$ProfitLossSummaryDto { + @JsonKey(name: 'total_revenue') + int? get totalRevenue => throw _privateConstructorUsedError; + @JsonKey(name: 'total_cost') + int? get totalCost => throw _privateConstructorUsedError; + @JsonKey(name: 'gross_profit') + int? get grossProfit => throw _privateConstructorUsedError; + @JsonKey(name: 'gross_profit_margin') + double? get grossProfitMargin => throw _privateConstructorUsedError; + @JsonKey(name: 'total_tax') + int? get totalTax => throw _privateConstructorUsedError; + @JsonKey(name: 'total_discount') + int? get totalDiscount => throw _privateConstructorUsedError; + @JsonKey(name: 'net_profit') + int? get netProfit => throw _privateConstructorUsedError; + @JsonKey(name: 'net_profit_margin') + double? get netProfitMargin => throw _privateConstructorUsedError; + @JsonKey(name: 'total_orders') + int? get totalOrders => throw _privateConstructorUsedError; + @JsonKey(name: 'average_profit') + double? get averageProfit => throw _privateConstructorUsedError; + @JsonKey(name: 'profitability_ratio') + double? get profitabilityRatio => throw _privateConstructorUsedError; + + /// Serializes this ProfitLossSummaryDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossSummaryDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossSummaryDtoCopyWith<$Res> { + factory $ProfitLossSummaryDtoCopyWith( + ProfitLossSummaryDto value, + $Res Function(ProfitLossSummaryDto) then, + ) = _$ProfitLossSummaryDtoCopyWithImpl<$Res, ProfitLossSummaryDto>; + @useResult + $Res call({ + @JsonKey(name: 'total_revenue') int? totalRevenue, + @JsonKey(name: 'total_cost') int? totalCost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'total_tax') int? totalTax, + @JsonKey(name: 'total_discount') int? totalDiscount, + @JsonKey(name: 'net_profit') int? netProfit, + @JsonKey(name: 'net_profit_margin') double? netProfitMargin, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'average_profit') double? averageProfit, + @JsonKey(name: 'profitability_ratio') double? profitabilityRatio, + }); +} + +/// @nodoc +class _$ProfitLossSummaryDtoCopyWithImpl< + $Res, + $Val extends ProfitLossSummaryDto +> + implements $ProfitLossSummaryDtoCopyWith<$Res> { + _$ProfitLossSummaryDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalRevenue = freezed, + Object? totalCost = freezed, + Object? grossProfit = freezed, + Object? grossProfitMargin = freezed, + Object? totalTax = freezed, + Object? totalDiscount = freezed, + Object? netProfit = freezed, + Object? netProfitMargin = freezed, + Object? totalOrders = freezed, + Object? averageProfit = freezed, + Object? profitabilityRatio = freezed, + }) { + return _then( + _value.copyWith( + totalRevenue: freezed == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int?, + totalCost: freezed == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int?, + grossProfit: freezed == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int?, + grossProfitMargin: freezed == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + totalTax: freezed == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as int?, + totalDiscount: freezed == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as int?, + netProfit: freezed == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int?, + netProfitMargin: freezed == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + averageProfit: freezed == averageProfit + ? _value.averageProfit + : averageProfit // ignore: cast_nullable_to_non_nullable + as double?, + profitabilityRatio: freezed == profitabilityRatio + ? _value.profitabilityRatio + : profitabilityRatio // ignore: cast_nullable_to_non_nullable + as double?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProfitLossSummaryDtoImplCopyWith<$Res> + implements $ProfitLossSummaryDtoCopyWith<$Res> { + factory _$$ProfitLossSummaryDtoImplCopyWith( + _$ProfitLossSummaryDtoImpl value, + $Res Function(_$ProfitLossSummaryDtoImpl) then, + ) = __$$ProfitLossSummaryDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'total_revenue') int? totalRevenue, + @JsonKey(name: 'total_cost') int? totalCost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'total_tax') int? totalTax, + @JsonKey(name: 'total_discount') int? totalDiscount, + @JsonKey(name: 'net_profit') int? netProfit, + @JsonKey(name: 'net_profit_margin') double? netProfitMargin, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'average_profit') double? averageProfit, + @JsonKey(name: 'profitability_ratio') double? profitabilityRatio, + }); +} + +/// @nodoc +class __$$ProfitLossSummaryDtoImplCopyWithImpl<$Res> + extends _$ProfitLossSummaryDtoCopyWithImpl<$Res, _$ProfitLossSummaryDtoImpl> + implements _$$ProfitLossSummaryDtoImplCopyWith<$Res> { + __$$ProfitLossSummaryDtoImplCopyWithImpl( + _$ProfitLossSummaryDtoImpl _value, + $Res Function(_$ProfitLossSummaryDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalRevenue = freezed, + Object? totalCost = freezed, + Object? grossProfit = freezed, + Object? grossProfitMargin = freezed, + Object? totalTax = freezed, + Object? totalDiscount = freezed, + Object? netProfit = freezed, + Object? netProfitMargin = freezed, + Object? totalOrders = freezed, + Object? averageProfit = freezed, + Object? profitabilityRatio = freezed, + }) { + return _then( + _$ProfitLossSummaryDtoImpl( + totalRevenue: freezed == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int?, + totalCost: freezed == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int?, + grossProfit: freezed == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int?, + grossProfitMargin: freezed == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + totalTax: freezed == totalTax + ? _value.totalTax + : totalTax // ignore: cast_nullable_to_non_nullable + as int?, + totalDiscount: freezed == totalDiscount + ? _value.totalDiscount + : totalDiscount // ignore: cast_nullable_to_non_nullable + as int?, + netProfit: freezed == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int?, + netProfitMargin: freezed == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + averageProfit: freezed == averageProfit + ? _value.averageProfit + : averageProfit // ignore: cast_nullable_to_non_nullable + as double?, + profitabilityRatio: freezed == profitabilityRatio + ? _value.profitabilityRatio + : profitabilityRatio // ignore: cast_nullable_to_non_nullable + as double?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProfitLossSummaryDtoImpl extends _ProfitLossSummaryDto { + const _$ProfitLossSummaryDtoImpl({ + @JsonKey(name: 'total_revenue') this.totalRevenue, + @JsonKey(name: 'total_cost') this.totalCost, + @JsonKey(name: 'gross_profit') this.grossProfit, + @JsonKey(name: 'gross_profit_margin') this.grossProfitMargin, + @JsonKey(name: 'total_tax') this.totalTax, + @JsonKey(name: 'total_discount') this.totalDiscount, + @JsonKey(name: 'net_profit') this.netProfit, + @JsonKey(name: 'net_profit_margin') this.netProfitMargin, + @JsonKey(name: 'total_orders') this.totalOrders, + @JsonKey(name: 'average_profit') this.averageProfit, + @JsonKey(name: 'profitability_ratio') this.profitabilityRatio, + }) : super._(); + + factory _$ProfitLossSummaryDtoImpl.fromJson(Map json) => + _$$ProfitLossSummaryDtoImplFromJson(json); + + @override + @JsonKey(name: 'total_revenue') + final int? totalRevenue; + @override + @JsonKey(name: 'total_cost') + final int? totalCost; + @override + @JsonKey(name: 'gross_profit') + final int? grossProfit; + @override + @JsonKey(name: 'gross_profit_margin') + final double? grossProfitMargin; + @override + @JsonKey(name: 'total_tax') + final int? totalTax; + @override + @JsonKey(name: 'total_discount') + final int? totalDiscount; + @override + @JsonKey(name: 'net_profit') + final int? netProfit; + @override + @JsonKey(name: 'net_profit_margin') + final double? netProfitMargin; + @override + @JsonKey(name: 'total_orders') + final int? totalOrders; + @override + @JsonKey(name: 'average_profit') + final double? averageProfit; + @override + @JsonKey(name: 'profitability_ratio') + final double? profitabilityRatio; + + @override + String toString() { + return 'ProfitLossSummaryDto(totalRevenue: $totalRevenue, totalCost: $totalCost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, totalTax: $totalTax, totalDiscount: $totalDiscount, netProfit: $netProfit, netProfitMargin: $netProfitMargin, totalOrders: $totalOrders, averageProfit: $averageProfit, profitabilityRatio: $profitabilityRatio)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossSummaryDtoImpl && + (identical(other.totalRevenue, totalRevenue) || + other.totalRevenue == totalRevenue) && + (identical(other.totalCost, totalCost) || + other.totalCost == totalCost) && + (identical(other.grossProfit, grossProfit) || + other.grossProfit == grossProfit) && + (identical(other.grossProfitMargin, grossProfitMargin) || + other.grossProfitMargin == grossProfitMargin) && + (identical(other.totalTax, totalTax) || + other.totalTax == totalTax) && + (identical(other.totalDiscount, totalDiscount) || + other.totalDiscount == totalDiscount) && + (identical(other.netProfit, netProfit) || + other.netProfit == netProfit) && + (identical(other.netProfitMargin, netProfitMargin) || + other.netProfitMargin == netProfitMargin) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.averageProfit, averageProfit) || + other.averageProfit == averageProfit) && + (identical(other.profitabilityRatio, profitabilityRatio) || + other.profitabilityRatio == profitabilityRatio)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + totalRevenue, + totalCost, + grossProfit, + grossProfitMargin, + totalTax, + totalDiscount, + netProfit, + netProfitMargin, + totalOrders, + averageProfit, + profitabilityRatio, + ); + + /// Create a copy of ProfitLossSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossSummaryDtoImplCopyWith<_$ProfitLossSummaryDtoImpl> + get copyWith => + __$$ProfitLossSummaryDtoImplCopyWithImpl<_$ProfitLossSummaryDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$ProfitLossSummaryDtoImplToJson(this); + } +} + +abstract class _ProfitLossSummaryDto extends ProfitLossSummaryDto { + const factory _ProfitLossSummaryDto({ + @JsonKey(name: 'total_revenue') final int? totalRevenue, + @JsonKey(name: 'total_cost') final int? totalCost, + @JsonKey(name: 'gross_profit') final int? grossProfit, + @JsonKey(name: 'gross_profit_margin') final double? grossProfitMargin, + @JsonKey(name: 'total_tax') final int? totalTax, + @JsonKey(name: 'total_discount') final int? totalDiscount, + @JsonKey(name: 'net_profit') final int? netProfit, + @JsonKey(name: 'net_profit_margin') final double? netProfitMargin, + @JsonKey(name: 'total_orders') final int? totalOrders, + @JsonKey(name: 'average_profit') final double? averageProfit, + @JsonKey(name: 'profitability_ratio') final double? profitabilityRatio, + }) = _$ProfitLossSummaryDtoImpl; + const _ProfitLossSummaryDto._() : super._(); + + factory _ProfitLossSummaryDto.fromJson(Map json) = + _$ProfitLossSummaryDtoImpl.fromJson; + + @override + @JsonKey(name: 'total_revenue') + int? get totalRevenue; + @override + @JsonKey(name: 'total_cost') + int? get totalCost; + @override + @JsonKey(name: 'gross_profit') + int? get grossProfit; + @override + @JsonKey(name: 'gross_profit_margin') + double? get grossProfitMargin; + @override + @JsonKey(name: 'total_tax') + int? get totalTax; + @override + @JsonKey(name: 'total_discount') + int? get totalDiscount; + @override + @JsonKey(name: 'net_profit') + int? get netProfit; + @override + @JsonKey(name: 'net_profit_margin') + double? get netProfitMargin; + @override + @JsonKey(name: 'total_orders') + int? get totalOrders; + @override + @JsonKey(name: 'average_profit') + double? get averageProfit; + @override + @JsonKey(name: 'profitability_ratio') + double? get profitabilityRatio; + + /// Create a copy of ProfitLossSummaryDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossSummaryDtoImplCopyWith<_$ProfitLossSummaryDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +ProfitLossDailyDataDto _$ProfitLossDailyDataDtoFromJson( + Map json, +) { + return _ProfitLossDailyDataDto.fromJson(json); +} + +/// @nodoc +mixin _$ProfitLossDailyDataDto { + @JsonKey(name: 'date') + String? get date => throw _privateConstructorUsedError; + @JsonKey(name: 'revenue') + int? get revenue => throw _privateConstructorUsedError; + @JsonKey(name: 'cost') + int? get cost => throw _privateConstructorUsedError; + @JsonKey(name: 'gross_profit') + int? get grossProfit => throw _privateConstructorUsedError; + @JsonKey(name: 'gross_profit_margin') + double? get grossProfitMargin => throw _privateConstructorUsedError; + @JsonKey(name: 'tax') + int? get tax => throw _privateConstructorUsedError; + @JsonKey(name: 'discount') + int? get discount => throw _privateConstructorUsedError; + @JsonKey(name: 'net_profit') + int? get netProfit => throw _privateConstructorUsedError; + @JsonKey(name: 'net_profit_margin') + double? get netProfitMargin => throw _privateConstructorUsedError; + @JsonKey(name: 'orders') + int? get orders => throw _privateConstructorUsedError; + + /// Serializes this ProfitLossDailyDataDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossDailyDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossDailyDataDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossDailyDataDtoCopyWith<$Res> { + factory $ProfitLossDailyDataDtoCopyWith( + ProfitLossDailyDataDto value, + $Res Function(ProfitLossDailyDataDto) then, + ) = _$ProfitLossDailyDataDtoCopyWithImpl<$Res, ProfitLossDailyDataDto>; + @useResult + $Res call({ + @JsonKey(name: 'date') String? date, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'tax') int? tax, + @JsonKey(name: 'discount') int? discount, + @JsonKey(name: 'net_profit') int? netProfit, + @JsonKey(name: 'net_profit_margin') double? netProfitMargin, + @JsonKey(name: 'orders') int? orders, + }); +} + +/// @nodoc +class _$ProfitLossDailyDataDtoCopyWithImpl< + $Res, + $Val extends ProfitLossDailyDataDto +> + implements $ProfitLossDailyDataDtoCopyWith<$Res> { + _$ProfitLossDailyDataDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossDailyDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = freezed, + Object? revenue = freezed, + Object? cost = freezed, + Object? grossProfit = freezed, + Object? grossProfitMargin = freezed, + Object? tax = freezed, + Object? discount = freezed, + Object? netProfit = freezed, + Object? netProfitMargin = freezed, + Object? orders = freezed, + }) { + return _then( + _value.copyWith( + date: freezed == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String?, + revenue: freezed == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + grossProfit: freezed == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int?, + grossProfitMargin: freezed == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + tax: freezed == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int?, + discount: freezed == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int?, + netProfit: freezed == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int?, + netProfitMargin: freezed == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + orders: freezed == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProfitLossDailyDataDtoImplCopyWith<$Res> + implements $ProfitLossDailyDataDtoCopyWith<$Res> { + factory _$$ProfitLossDailyDataDtoImplCopyWith( + _$ProfitLossDailyDataDtoImpl value, + $Res Function(_$ProfitLossDailyDataDtoImpl) then, + ) = __$$ProfitLossDailyDataDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'date') String? date, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'tax') int? tax, + @JsonKey(name: 'discount') int? discount, + @JsonKey(name: 'net_profit') int? netProfit, + @JsonKey(name: 'net_profit_margin') double? netProfitMargin, + @JsonKey(name: 'orders') int? orders, + }); +} + +/// @nodoc +class __$$ProfitLossDailyDataDtoImplCopyWithImpl<$Res> + extends + _$ProfitLossDailyDataDtoCopyWithImpl<$Res, _$ProfitLossDailyDataDtoImpl> + implements _$$ProfitLossDailyDataDtoImplCopyWith<$Res> { + __$$ProfitLossDailyDataDtoImplCopyWithImpl( + _$ProfitLossDailyDataDtoImpl _value, + $Res Function(_$ProfitLossDailyDataDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossDailyDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = freezed, + Object? revenue = freezed, + Object? cost = freezed, + Object? grossProfit = freezed, + Object? grossProfitMargin = freezed, + Object? tax = freezed, + Object? discount = freezed, + Object? netProfit = freezed, + Object? netProfitMargin = freezed, + Object? orders = freezed, + }) { + return _then( + _$ProfitLossDailyDataDtoImpl( + date: freezed == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String?, + revenue: freezed == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + grossProfit: freezed == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int?, + grossProfitMargin: freezed == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + tax: freezed == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int?, + discount: freezed == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int?, + netProfit: freezed == netProfit + ? _value.netProfit + : netProfit // ignore: cast_nullable_to_non_nullable + as int?, + netProfitMargin: freezed == netProfitMargin + ? _value.netProfitMargin + : netProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + orders: freezed == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProfitLossDailyDataDtoImpl extends _ProfitLossDailyDataDto { + const _$ProfitLossDailyDataDtoImpl({ + @JsonKey(name: 'date') this.date, + @JsonKey(name: 'revenue') this.revenue, + @JsonKey(name: 'cost') this.cost, + @JsonKey(name: 'gross_profit') this.grossProfit, + @JsonKey(name: 'gross_profit_margin') this.grossProfitMargin, + @JsonKey(name: 'tax') this.tax, + @JsonKey(name: 'discount') this.discount, + @JsonKey(name: 'net_profit') this.netProfit, + @JsonKey(name: 'net_profit_margin') this.netProfitMargin, + @JsonKey(name: 'orders') this.orders, + }) : super._(); + + factory _$ProfitLossDailyDataDtoImpl.fromJson(Map json) => + _$$ProfitLossDailyDataDtoImplFromJson(json); + + @override + @JsonKey(name: 'date') + final String? date; + @override + @JsonKey(name: 'revenue') + final int? revenue; + @override + @JsonKey(name: 'cost') + final int? cost; + @override + @JsonKey(name: 'gross_profit') + final int? grossProfit; + @override + @JsonKey(name: 'gross_profit_margin') + final double? grossProfitMargin; + @override + @JsonKey(name: 'tax') + final int? tax; + @override + @JsonKey(name: 'discount') + final int? discount; + @override + @JsonKey(name: 'net_profit') + final int? netProfit; + @override + @JsonKey(name: 'net_profit_margin') + final double? netProfitMargin; + @override + @JsonKey(name: 'orders') + final int? orders; + + @override + String toString() { + return 'ProfitLossDailyDataDto(date: $date, revenue: $revenue, cost: $cost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, tax: $tax, discount: $discount, netProfit: $netProfit, netProfitMargin: $netProfitMargin, orders: $orders)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossDailyDataDtoImpl && + (identical(other.date, date) || other.date == date) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.cost, cost) || other.cost == cost) && + (identical(other.grossProfit, grossProfit) || + other.grossProfit == grossProfit) && + (identical(other.grossProfitMargin, grossProfitMargin) || + other.grossProfitMargin == grossProfitMargin) && + (identical(other.tax, tax) || other.tax == tax) && + (identical(other.discount, discount) || + other.discount == discount) && + (identical(other.netProfit, netProfit) || + other.netProfit == netProfit) && + (identical(other.netProfitMargin, netProfitMargin) || + other.netProfitMargin == netProfitMargin) && + (identical(other.orders, orders) || other.orders == orders)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + date, + revenue, + cost, + grossProfit, + grossProfitMargin, + tax, + discount, + netProfit, + netProfitMargin, + orders, + ); + + /// Create a copy of ProfitLossDailyDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossDailyDataDtoImplCopyWith<_$ProfitLossDailyDataDtoImpl> + get copyWith => + __$$ProfitLossDailyDataDtoImplCopyWithImpl<_$ProfitLossDailyDataDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$ProfitLossDailyDataDtoImplToJson(this); + } +} + +abstract class _ProfitLossDailyDataDto extends ProfitLossDailyDataDto { + const factory _ProfitLossDailyDataDto({ + @JsonKey(name: 'date') final String? date, + @JsonKey(name: 'revenue') final int? revenue, + @JsonKey(name: 'cost') final int? cost, + @JsonKey(name: 'gross_profit') final int? grossProfit, + @JsonKey(name: 'gross_profit_margin') final double? grossProfitMargin, + @JsonKey(name: 'tax') final int? tax, + @JsonKey(name: 'discount') final int? discount, + @JsonKey(name: 'net_profit') final int? netProfit, + @JsonKey(name: 'net_profit_margin') final double? netProfitMargin, + @JsonKey(name: 'orders') final int? orders, + }) = _$ProfitLossDailyDataDtoImpl; + const _ProfitLossDailyDataDto._() : super._(); + + factory _ProfitLossDailyDataDto.fromJson(Map json) = + _$ProfitLossDailyDataDtoImpl.fromJson; + + @override + @JsonKey(name: 'date') + String? get date; + @override + @JsonKey(name: 'revenue') + int? get revenue; + @override + @JsonKey(name: 'cost') + int? get cost; + @override + @JsonKey(name: 'gross_profit') + int? get grossProfit; + @override + @JsonKey(name: 'gross_profit_margin') + double? get grossProfitMargin; + @override + @JsonKey(name: 'tax') + int? get tax; + @override + @JsonKey(name: 'discount') + int? get discount; + @override + @JsonKey(name: 'net_profit') + int? get netProfit; + @override + @JsonKey(name: 'net_profit_margin') + double? get netProfitMargin; + @override + @JsonKey(name: 'orders') + int? get orders; + + /// Create a copy of ProfitLossDailyDataDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossDailyDataDtoImplCopyWith<_$ProfitLossDailyDataDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +ProfitLossProductDataDto _$ProfitLossProductDataDtoFromJson( + Map json, +) { + return _ProfitLossProductDataDto.fromJson(json); +} + +/// @nodoc +mixin _$ProfitLossProductDataDto { + @JsonKey(name: 'product_id') + String? get productId => throw _privateConstructorUsedError; + @JsonKey(name: 'product_name') + String? get productName => throw _privateConstructorUsedError; + @JsonKey(name: 'category_id') + String? get categoryId => throw _privateConstructorUsedError; + @JsonKey(name: 'category_name') + String? get categoryName => throw _privateConstructorUsedError; + @JsonKey(name: 'quantity_sold') + int? get quantitySold => throw _privateConstructorUsedError; + @JsonKey(name: 'revenue') + int? get revenue => throw _privateConstructorUsedError; + @JsonKey(name: 'cost') + int? get cost => throw _privateConstructorUsedError; + @JsonKey(name: 'gross_profit') + int? get grossProfit => throw _privateConstructorUsedError; + @JsonKey(name: 'gross_profit_margin') + double? get grossProfitMargin => throw _privateConstructorUsedError; + @JsonKey(name: 'average_price') + int? get averagePrice => throw _privateConstructorUsedError; + @JsonKey(name: 'average_cost') + int? get averageCost => throw _privateConstructorUsedError; + @JsonKey(name: 'profit_per_unit') + int? get profitPerUnit => throw _privateConstructorUsedError; + + /// Serializes this ProfitLossProductDataDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProfitLossProductDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProfitLossProductDataDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProfitLossProductDataDtoCopyWith<$Res> { + factory $ProfitLossProductDataDtoCopyWith( + ProfitLossProductDataDto value, + $Res Function(ProfitLossProductDataDto) then, + ) = _$ProfitLossProductDataDtoCopyWithImpl<$Res, ProfitLossProductDataDto>; + @useResult + $Res call({ + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'average_price') int? averagePrice, + @JsonKey(name: 'average_cost') int? averageCost, + @JsonKey(name: 'profit_per_unit') int? profitPerUnit, + }); +} + +/// @nodoc +class _$ProfitLossProductDataDtoCopyWithImpl< + $Res, + $Val extends ProfitLossProductDataDto +> + implements $ProfitLossProductDataDtoCopyWith<$Res> { + _$ProfitLossProductDataDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProfitLossProductDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = freezed, + Object? productName = freezed, + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? quantitySold = freezed, + Object? revenue = freezed, + Object? cost = freezed, + Object? grossProfit = freezed, + Object? grossProfitMargin = freezed, + Object? averagePrice = freezed, + Object? averageCost = freezed, + Object? profitPerUnit = freezed, + }) { + return _then( + _value.copyWith( + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + quantitySold: freezed == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int?, + revenue: freezed == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + grossProfit: freezed == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int?, + grossProfitMargin: freezed == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + averagePrice: freezed == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as int?, + averageCost: freezed == averageCost + ? _value.averageCost + : averageCost // ignore: cast_nullable_to_non_nullable + as int?, + profitPerUnit: freezed == profitPerUnit + ? _value.profitPerUnit + : profitPerUnit // ignore: cast_nullable_to_non_nullable + as int?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProfitLossProductDataDtoImplCopyWith<$Res> + implements $ProfitLossProductDataDtoCopyWith<$Res> { + factory _$$ProfitLossProductDataDtoImplCopyWith( + _$ProfitLossProductDataDtoImpl value, + $Res Function(_$ProfitLossProductDataDtoImpl) then, + ) = __$$ProfitLossProductDataDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'average_price') int? averagePrice, + @JsonKey(name: 'average_cost') int? averageCost, + @JsonKey(name: 'profit_per_unit') int? profitPerUnit, + }); +} + +/// @nodoc +class __$$ProfitLossProductDataDtoImplCopyWithImpl<$Res> + extends + _$ProfitLossProductDataDtoCopyWithImpl< + $Res, + _$ProfitLossProductDataDtoImpl + > + implements _$$ProfitLossProductDataDtoImplCopyWith<$Res> { + __$$ProfitLossProductDataDtoImplCopyWithImpl( + _$ProfitLossProductDataDtoImpl _value, + $Res Function(_$ProfitLossProductDataDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossProductDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = freezed, + Object? productName = freezed, + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? quantitySold = freezed, + Object? revenue = freezed, + Object? cost = freezed, + Object? grossProfit = freezed, + Object? grossProfitMargin = freezed, + Object? averagePrice = freezed, + Object? averageCost = freezed, + Object? profitPerUnit = freezed, + }) { + return _then( + _$ProfitLossProductDataDtoImpl( + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + quantitySold: freezed == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int?, + revenue: freezed == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + grossProfit: freezed == grossProfit + ? _value.grossProfit + : grossProfit // ignore: cast_nullable_to_non_nullable + as int?, + grossProfitMargin: freezed == grossProfitMargin + ? _value.grossProfitMargin + : grossProfitMargin // ignore: cast_nullable_to_non_nullable + as double?, + averagePrice: freezed == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as int?, + averageCost: freezed == averageCost + ? _value.averageCost + : averageCost // ignore: cast_nullable_to_non_nullable + as int?, + profitPerUnit: freezed == profitPerUnit + ? _value.profitPerUnit + : profitPerUnit // ignore: cast_nullable_to_non_nullable + as int?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProfitLossProductDataDtoImpl extends _ProfitLossProductDataDto { + const _$ProfitLossProductDataDtoImpl({ + @JsonKey(name: 'product_id') this.productId, + @JsonKey(name: 'product_name') this.productName, + @JsonKey(name: 'category_id') this.categoryId, + @JsonKey(name: 'category_name') this.categoryName, + @JsonKey(name: 'quantity_sold') this.quantitySold, + @JsonKey(name: 'revenue') this.revenue, + @JsonKey(name: 'cost') this.cost, + @JsonKey(name: 'gross_profit') this.grossProfit, + @JsonKey(name: 'gross_profit_margin') this.grossProfitMargin, + @JsonKey(name: 'average_price') this.averagePrice, + @JsonKey(name: 'average_cost') this.averageCost, + @JsonKey(name: 'profit_per_unit') this.profitPerUnit, + }) : super._(); + + factory _$ProfitLossProductDataDtoImpl.fromJson(Map json) => + _$$ProfitLossProductDataDtoImplFromJson(json); + + @override + @JsonKey(name: 'product_id') + final String? productId; + @override + @JsonKey(name: 'product_name') + final String? productName; + @override + @JsonKey(name: 'category_id') + final String? categoryId; + @override + @JsonKey(name: 'category_name') + final String? categoryName; + @override + @JsonKey(name: 'quantity_sold') + final int? quantitySold; + @override + @JsonKey(name: 'revenue') + final int? revenue; + @override + @JsonKey(name: 'cost') + final int? cost; + @override + @JsonKey(name: 'gross_profit') + final int? grossProfit; + @override + @JsonKey(name: 'gross_profit_margin') + final double? grossProfitMargin; + @override + @JsonKey(name: 'average_price') + final int? averagePrice; + @override + @JsonKey(name: 'average_cost') + final int? averageCost; + @override + @JsonKey(name: 'profit_per_unit') + final int? profitPerUnit; + + @override + String toString() { + return 'ProfitLossProductDataDto(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, cost: $cost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, averagePrice: $averagePrice, averageCost: $averageCost, profitPerUnit: $profitPerUnit)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProfitLossProductDataDtoImpl && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantitySold, quantitySold) || + other.quantitySold == quantitySold) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.cost, cost) || other.cost == cost) && + (identical(other.grossProfit, grossProfit) || + other.grossProfit == grossProfit) && + (identical(other.grossProfitMargin, grossProfitMargin) || + other.grossProfitMargin == grossProfitMargin) && + (identical(other.averagePrice, averagePrice) || + other.averagePrice == averagePrice) && + (identical(other.averageCost, averageCost) || + other.averageCost == averageCost) && + (identical(other.profitPerUnit, profitPerUnit) || + other.profitPerUnit == profitPerUnit)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + productId, + productName, + categoryId, + categoryName, + quantitySold, + revenue, + cost, + grossProfit, + grossProfitMargin, + averagePrice, + averageCost, + profitPerUnit, + ); + + /// Create a copy of ProfitLossProductDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProfitLossProductDataDtoImplCopyWith<_$ProfitLossProductDataDtoImpl> + get copyWith => + __$$ProfitLossProductDataDtoImplCopyWithImpl< + _$ProfitLossProductDataDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$ProfitLossProductDataDtoImplToJson(this); + } +} + +abstract class _ProfitLossProductDataDto extends ProfitLossProductDataDto { + const factory _ProfitLossProductDataDto({ + @JsonKey(name: 'product_id') final String? productId, + @JsonKey(name: 'product_name') final String? productName, + @JsonKey(name: 'category_id') final String? categoryId, + @JsonKey(name: 'category_name') final String? categoryName, + @JsonKey(name: 'quantity_sold') final int? quantitySold, + @JsonKey(name: 'revenue') final int? revenue, + @JsonKey(name: 'cost') final int? cost, + @JsonKey(name: 'gross_profit') final int? grossProfit, + @JsonKey(name: 'gross_profit_margin') final double? grossProfitMargin, + @JsonKey(name: 'average_price') final int? averagePrice, + @JsonKey(name: 'average_cost') final int? averageCost, + @JsonKey(name: 'profit_per_unit') final int? profitPerUnit, + }) = _$ProfitLossProductDataDtoImpl; + const _ProfitLossProductDataDto._() : super._(); + + factory _ProfitLossProductDataDto.fromJson(Map json) = + _$ProfitLossProductDataDtoImpl.fromJson; + + @override + @JsonKey(name: 'product_id') + String? get productId; + @override + @JsonKey(name: 'product_name') + String? get productName; + @override + @JsonKey(name: 'category_id') + String? get categoryId; + @override + @JsonKey(name: 'category_name') + String? get categoryName; + @override + @JsonKey(name: 'quantity_sold') + int? get quantitySold; + @override + @JsonKey(name: 'revenue') + int? get revenue; + @override + @JsonKey(name: 'cost') + int? get cost; + @override + @JsonKey(name: 'gross_profit') + int? get grossProfit; + @override + @JsonKey(name: 'gross_profit_margin') + double? get grossProfitMargin; + @override + @JsonKey(name: 'average_price') + int? get averagePrice; + @override + @JsonKey(name: 'average_cost') + int? get averageCost; + @override + @JsonKey(name: 'profit_per_unit') + int? get profitPerUnit; + + /// Create a copy of ProfitLossProductDataDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProfitLossProductDataDtoImplCopyWith<_$ProfitLossProductDataDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index ebd7a0a..2ffcf80 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -87,3 +87,129 @@ Map _$$SalesAnalyticDataDtoImplToJson( 'discount': instance.discount, 'net_sales': instance.netSales, }; + +_$ProfitLossAnalyticDtoImpl _$$ProfitLossAnalyticDtoImplFromJson( + Map json, +) => _$ProfitLossAnalyticDtoImpl( + organizationId: json['organization_id'] as String?, + dateFrom: json['date_from'] as String?, + dateTo: json['date_to'] as String?, + groupBy: json['group_by'] as String?, + summary: json['summary'] == null + ? null + : ProfitLossSummaryDto.fromJson(json['summary'] as Map), + data: (json['data'] as List?) + ?.map((e) => ProfitLossDailyDataDto.fromJson(e as Map)) + .toList(), + productData: (json['product_data'] as List?) + ?.map((e) => ProfitLossProductDataDto.fromJson(e as Map)) + .toList(), +); + +Map _$$ProfitLossAnalyticDtoImplToJson( + _$ProfitLossAnalyticDtoImpl instance, +) => { + 'organization_id': instance.organizationId, + 'date_from': instance.dateFrom, + 'date_to': instance.dateTo, + 'group_by': instance.groupBy, + 'summary': instance.summary, + 'data': instance.data, + 'product_data': instance.productData, +}; + +_$ProfitLossSummaryDtoImpl _$$ProfitLossSummaryDtoImplFromJson( + Map json, +) => _$ProfitLossSummaryDtoImpl( + totalRevenue: (json['total_revenue'] as num?)?.toInt(), + totalCost: (json['total_cost'] as num?)?.toInt(), + grossProfit: (json['gross_profit'] as num?)?.toInt(), + grossProfitMargin: (json['gross_profit_margin'] as num?)?.toDouble(), + totalTax: (json['total_tax'] as num?)?.toInt(), + totalDiscount: (json['total_discount'] as num?)?.toInt(), + netProfit: (json['net_profit'] as num?)?.toInt(), + netProfitMargin: (json['net_profit_margin'] as num?)?.toDouble(), + totalOrders: (json['total_orders'] as num?)?.toInt(), + averageProfit: (json['average_profit'] as num?)?.toDouble(), + profitabilityRatio: (json['profitability_ratio'] as num?)?.toDouble(), +); + +Map _$$ProfitLossSummaryDtoImplToJson( + _$ProfitLossSummaryDtoImpl instance, +) => { + 'total_revenue': instance.totalRevenue, + 'total_cost': instance.totalCost, + 'gross_profit': instance.grossProfit, + 'gross_profit_margin': instance.grossProfitMargin, + 'total_tax': instance.totalTax, + 'total_discount': instance.totalDiscount, + 'net_profit': instance.netProfit, + 'net_profit_margin': instance.netProfitMargin, + 'total_orders': instance.totalOrders, + 'average_profit': instance.averageProfit, + 'profitability_ratio': instance.profitabilityRatio, +}; + +_$ProfitLossDailyDataDtoImpl _$$ProfitLossDailyDataDtoImplFromJson( + Map json, +) => _$ProfitLossDailyDataDtoImpl( + date: json['date'] as String?, + revenue: (json['revenue'] as num?)?.toInt(), + cost: (json['cost'] as num?)?.toInt(), + grossProfit: (json['gross_profit'] as num?)?.toInt(), + grossProfitMargin: (json['gross_profit_margin'] as num?)?.toDouble(), + tax: (json['tax'] as num?)?.toInt(), + discount: (json['discount'] as num?)?.toInt(), + netProfit: (json['net_profit'] as num?)?.toInt(), + netProfitMargin: (json['net_profit_margin'] as num?)?.toDouble(), + orders: (json['orders'] as num?)?.toInt(), +); + +Map _$$ProfitLossDailyDataDtoImplToJson( + _$ProfitLossDailyDataDtoImpl instance, +) => { + 'date': instance.date, + 'revenue': instance.revenue, + 'cost': instance.cost, + 'gross_profit': instance.grossProfit, + 'gross_profit_margin': instance.grossProfitMargin, + 'tax': instance.tax, + 'discount': instance.discount, + 'net_profit': instance.netProfit, + 'net_profit_margin': instance.netProfitMargin, + 'orders': instance.orders, +}; + +_$ProfitLossProductDataDtoImpl _$$ProfitLossProductDataDtoImplFromJson( + Map json, +) => _$ProfitLossProductDataDtoImpl( + productId: json['product_id'] as String?, + productName: json['product_name'] as String?, + categoryId: json['category_id'] as String?, + categoryName: json['category_name'] as String?, + quantitySold: (json['quantity_sold'] as num?)?.toInt(), + revenue: (json['revenue'] as num?)?.toInt(), + cost: (json['cost'] as num?)?.toInt(), + grossProfit: (json['gross_profit'] as num?)?.toInt(), + grossProfitMargin: (json['gross_profit_margin'] as num?)?.toDouble(), + averagePrice: (json['average_price'] as num?)?.toInt(), + averageCost: (json['average_cost'] as num?)?.toInt(), + profitPerUnit: (json['profit_per_unit'] as num?)?.toInt(), +); + +Map _$$ProfitLossProductDataDtoImplToJson( + _$ProfitLossProductDataDtoImpl instance, +) => { + 'product_id': instance.productId, + 'product_name': instance.productName, + 'category_id': instance.categoryId, + 'category_name': instance.categoryName, + 'quantity_sold': instance.quantitySold, + 'revenue': instance.revenue, + 'cost': instance.cost, + 'gross_profit': instance.grossProfit, + 'gross_profit_margin': instance.grossProfitMargin, + 'average_price': instance.averagePrice, + 'average_cost': instance.averageCost, + 'profit_per_unit': instance.profitPerUnit, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index 4c55fa4..91c1d26 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -44,4 +44,31 @@ class AnalyticRemoteDataProvider { return DC.error(AnalyticFailure.serverError(e)); } } + + Future> fetchProfitLoss({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + ApiPath.profitLossAnalytic, + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = ProfitLossAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchProfitLossError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/analytic/dto/profit_loss_analytic_dto.dart b/lib/infrastructure/analytic/dto/profit_loss_analytic_dto.dart new file mode 100644 index 0000000..2741495 --- /dev/null +++ b/lib/infrastructure/analytic/dto/profit_loss_analytic_dto.dart @@ -0,0 +1,137 @@ +part of '../analytic_dtos.dart'; + +@freezed +class ProfitLossAnalyticDto with _$ProfitLossAnalyticDto { + const ProfitLossAnalyticDto._(); + + const factory ProfitLossAnalyticDto({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') ProfitLossSummaryDto? summary, + @JsonKey(name: 'data') List? data, + @JsonKey(name: 'product_data') List? productData, + }) = _ProfitLossAnalyticDto; + + factory ProfitLossAnalyticDto.fromJson(Map json) => + _$ProfitLossAnalyticDtoFromJson(json); + + ProfitLossAnalytic toDomain() => ProfitLossAnalytic( + organizationId: organizationId ?? '', + dateFrom: dateFrom ?? '', + dateTo: dateTo ?? '', + groupBy: groupBy ?? '', + summary: summary?.toDomain() ?? ProfitLossSummary.empty(), + data: (data ?? []).map((e) => e.toDomain()).toList(), + productData: (productData ?? []).map((e) => e.toDomain()).toList(), + ); +} + +@freezed +class ProfitLossSummaryDto with _$ProfitLossSummaryDto { + const ProfitLossSummaryDto._(); + + const factory ProfitLossSummaryDto({ + @JsonKey(name: 'total_revenue') int? totalRevenue, + @JsonKey(name: 'total_cost') int? totalCost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'total_tax') int? totalTax, + @JsonKey(name: 'total_discount') int? totalDiscount, + @JsonKey(name: 'net_profit') int? netProfit, + @JsonKey(name: 'net_profit_margin') double? netProfitMargin, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'average_profit') double? averageProfit, + @JsonKey(name: 'profitability_ratio') double? profitabilityRatio, + }) = _ProfitLossSummaryDto; + + factory ProfitLossSummaryDto.fromJson(Map json) => + _$ProfitLossSummaryDtoFromJson(json); + + ProfitLossSummary toDomain() => ProfitLossSummary( + totalRevenue: totalRevenue ?? 0, + totalCost: totalCost ?? 0, + grossProfit: grossProfit ?? 0, + grossProfitMargin: grossProfitMargin ?? 0.0, + totalTax: totalTax ?? 0, + totalDiscount: totalDiscount ?? 0, + netProfit: netProfit ?? 0, + netProfitMargin: netProfitMargin ?? 0.0, + totalOrders: totalOrders ?? 0, + averageProfit: averageProfit ?? 0.0, + profitabilityRatio: profitabilityRatio ?? 0.0, + ); +} + +@freezed +class ProfitLossDailyDataDto with _$ProfitLossDailyDataDto { + const ProfitLossDailyDataDto._(); + + const factory ProfitLossDailyDataDto({ + @JsonKey(name: 'date') String? date, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'tax') int? tax, + @JsonKey(name: 'discount') int? discount, + @JsonKey(name: 'net_profit') int? netProfit, + @JsonKey(name: 'net_profit_margin') double? netProfitMargin, + @JsonKey(name: 'orders') int? orders, + }) = _ProfitLossDailyDataDto; + + factory ProfitLossDailyDataDto.fromJson(Map json) => + _$ProfitLossDailyDataDtoFromJson(json); + + ProfitLossDailyData toDomain() => ProfitLossDailyData( + date: date ?? '', + revenue: revenue ?? 0, + cost: cost ?? 0, + grossProfit: grossProfit ?? 0, + grossProfitMargin: grossProfitMargin ?? 0.0, + tax: tax ?? 0, + discount: discount ?? 0, + netProfit: netProfit ?? 0, + netProfitMargin: netProfitMargin ?? 0.0, + orders: orders ?? 0, + ); +} + +@freezed +class ProfitLossProductDataDto with _$ProfitLossProductDataDto { + const ProfitLossProductDataDto._(); + + const factory ProfitLossProductDataDto({ + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'gross_profit') int? grossProfit, + @JsonKey(name: 'gross_profit_margin') double? grossProfitMargin, + @JsonKey(name: 'average_price') int? averagePrice, + @JsonKey(name: 'average_cost') int? averageCost, + @JsonKey(name: 'profit_per_unit') int? profitPerUnit, + }) = _ProfitLossProductDataDto; + + factory ProfitLossProductDataDto.fromJson(Map json) => + _$ProfitLossProductDataDtoFromJson(json); + + ProfitLossProductData toDomain() => ProfitLossProductData( + productId: productId ?? '', + productName: productName ?? '', + categoryId: categoryId ?? '', + categoryName: categoryName ?? '', + quantitySold: quantitySold ?? 0, + revenue: revenue ?? 0, + cost: cost ?? 0, + grossProfit: grossProfit ?? 0, + grossProfitMargin: grossProfitMargin ?? 0.0, + averagePrice: averagePrice ?? 0, + averageCost: averageCost ?? 0, + profitPerUnit: profitPerUnit ?? 0, + ); +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index a615956..5cd3412 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -37,4 +37,28 @@ class AnalyticRepository implements IAnalyticRepository { return left(const AnalyticFailure.unexpectedError()); } } + + @override + Future> getProfitLoss({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final result = await _dataProvider.fetchProfitLoss( + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getProfitLossError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index c80fd33..aec6edc 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -20,6 +20,8 @@ import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; +import 'package:apskel_owner_flutter/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart' + as _i608; import 'package:apskel_owner_flutter/application/sales/sales_loader/sales_loader_bloc.dart' as _i882; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; @@ -104,18 +106,18 @@ extension GetItInjectableX on _i174.GetIt { () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); - gh.factory<_i17.AuthRemoteDataProvider>( - () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), - ); - gh.factory<_i866.AnalyticRemoteDataProvider>( - () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), - ); gh.factory<_i333.CategoryRemoteDataProvider>( () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i17.AuthRemoteDataProvider>( + () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i823.ProductRemoteDataProvider>( () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i866.AnalyticRemoteDataProvider>( + () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i477.IAnalyticRepository>( () => _i393.AnalyticRepository(gh<_i866.AnalyticRemoteDataProvider>()), ); @@ -134,6 +136,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i458.ProductLoaderBloc>( () => _i458.ProductLoaderBloc(gh<_i419.IProductRepository>()), ); + gh.factory<_i608.ProfitLossLoaderBloc>( + () => _i608.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index b38a86d..e77e0a7 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -1,20 +1,33 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; +import '../../../domain/analytic/analytic.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import 'widgets/cash_flow.dart'; import 'widgets/category.dart'; +import 'widgets/product.dart'; import 'widgets/profit_loss.dart'; import 'widgets/summary_card.dart'; @RoutePage() -class FinancePage extends StatefulWidget { +class FinancePage extends StatefulWidget implements AutoRouteWrapper { const FinancePage({super.key}); @override State createState() => _FinancePageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (_) => + getIt()..add(ProfitLossLoaderEvent.fetched()), + child: this, + ); } class _FinancePageState extends State @@ -90,69 +103,74 @@ class _FinancePageState extends State Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - // SliverAppBar with animated background - SliverAppBar( - expandedHeight: 120, - floating: false, - pinned: true, - backgroundColor: AppColor.primary, - elevation: 0, - flexibleSpace: CustomAppBar(title: 'Keuangan'), - ), + body: BlocBuilder( + builder: (context, state) { + return CustomScrollView( + slivers: [ + // SliverAppBar with animated background + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + elevation: 0, + flexibleSpace: CustomAppBar(title: 'Keuangan'), + ), - // Header dengan filter periode - SliverToBoxAdapter( - child: FadeTransition( - opacity: _fadeAnimation, - child: _buildPeriodSelector(), - ), - ), + // Header dengan filter periode + SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: _buildPeriodSelector(), + ), + ), - // Summary Cards - SliverToBoxAdapter( - child: SlideTransition( - position: _slideAnimation, - child: _buildSummaryCards(), - ), - ), + // Summary Cards + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: _buildSummaryCards(state.profitLoss.summary), + ), + ), - // Cash Flow Analysis - SliverToBoxAdapter( - child: ScaleTransition( - scale: _scaleAnimation, - child: FinanceCashFlow(), - ), - ), + // Cash Flow Analysis + SliverToBoxAdapter( + child: ScaleTransition( + scale: _scaleAnimation, + child: FinanceCashFlow(dailyData: state.profitLoss.data), + ), + ), - // Profit Loss Detail - SliverToBoxAdapter( - child: FadeTransition( - opacity: _fadeAnimation, - child: FinanceProfitLoss(), - ), - ), + // Profit Loss Detail + SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: FinanceProfitLoss(data: state.profitLoss.summary), + ), + ), - // Transaction Categories - SliverToBoxAdapter( - child: SlideTransition( - position: _slideAnimation, - child: FinanceCategory(), - ), - ), + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: FinanceCategory(), + ), + ), - // Monthly Comparison - SliverToBoxAdapter( - child: ScaleTransition( - scale: _scaleAnimation, - child: _buildMonthlyComparison(), - ), - ), + // Product Analysis Section + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: _buildProductAnalysis(state.profitLoss.productData), + ), + ), - // Bottom spacing - const SliverToBoxAdapter(child: SizedBox(height: 100)), - ], + // Transaction Categories + + // Bottom spacing + const SliverToBoxAdapter(child: SizedBox(height: 100)), + ], + ); + }, ), ); } @@ -210,7 +228,7 @@ class _FinancePageState extends State ); } - Widget _buildSummaryCards() { + Widget _buildSummaryCards(ProfitLossSummary summary) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Column( @@ -220,10 +238,9 @@ class _FinancePageState extends State Expanded( child: FinanceSummaryCard( title: 'Total Pendapatan', - amount: 'Rp 25.840.000', + amount: summary.totalRevenue.currencyFormatRp, icon: LineIcons.arrowUp, color: AppColor.success, - change: '+12.5%', isPositive: true, ), ), @@ -231,10 +248,9 @@ class _FinancePageState extends State Expanded( child: FinanceSummaryCard( title: 'Total Pengeluaran', - amount: 'Rp 18.320.000', + amount: summary.totalCost.currencyFormatRp, icon: LineIcons.arrowDown, color: AppColor.error, - change: '+8.2%', isPositive: false, ), ), @@ -246,10 +262,9 @@ class _FinancePageState extends State Expanded( child: FinanceSummaryCard( title: 'Keuntungan Bersih', - amount: 'Rp 7.520.000', + amount: summary.netProfit.currencyFormatRp, icon: LineIcons.lineChart, color: AppColor.info, - change: '+15.3%', isPositive: true, ), ), @@ -257,10 +272,9 @@ class _FinancePageState extends State Expanded( child: FinanceSummaryCard( title: 'Margin Profit', - amount: '29.1%', + amount: '${summary.profitabilityRatio.round()}%', icon: LineIcons.percent, color: AppColor.warning, - change: '+2.1%', isPositive: true, ), ), @@ -271,7 +285,7 @@ class _FinancePageState extends State ); } - Widget _buildMonthlyComparison() { + Widget _buildProductAnalysis(List products) { return Container( margin: const EdgeInsets.all(16), padding: const EdgeInsets.all(20), @@ -295,138 +309,41 @@ class _FinancePageState extends State Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: AppColor.warning.withOpacity(0.1), + color: AppColor.info.withOpacity(0.1), borderRadius: BorderRadius.circular(8), ), child: const Icon( - LineIcons.calendarCheck, - color: AppColor.warning, + LineIcons.shoppingBag, + color: AppColor.info, size: 20, ), ), const SizedBox(width: 12), Text( - 'Perbandingan Bulanan', + 'Analisis Produk', style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), ), - ], - ), - const SizedBox(height: 20), - - Row( - children: [ - Expanded( - child: _buildComparisonCard( - 'Bulan Ini', - 'Rp 7.52M', - '+15.3%', - true, - AppColor.primary, - ), - ), - const SizedBox(width: 12), - Expanded( - child: _buildComparisonCard( - 'Bulan Lalu', - 'Rp 6.53M', - '-2.1%', - false, - AppColor.textSecondary, + const Spacer(), + TextButton( + onPressed: () {}, + child: Text( + 'Lihat Semua', + style: AppStyle.sm.copyWith(color: AppColor.primary), ), ), ], ), - const SizedBox(height: 16), - - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: AppColor.success.withOpacity(0.05), - borderRadius: BorderRadius.circular(12), - border: Border.all(color: AppColor.success.withOpacity(0.2)), - ), - child: Row( - children: [ - const Icon( - LineIcons.thumbsUp, - color: AppColor.success, - size: 20, - ), - const SizedBox(width: 12), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Performa Bagus!', - style: AppStyle.md.copyWith( - fontWeight: FontWeight.bold, - color: AppColor.success, - ), - ), - Text( - 'Keuntungan meningkat 15.3% dari bulan lalu', - style: AppStyle.sm.copyWith( - color: AppColor.textSecondary, - ), - ), - ], - ), - ), - ], - ), - ), - ], - ), - ); - } - - Widget _buildComparisonCard( - String period, - String amount, - String change, - bool isPositive, - Color color, - ) { - return Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: color.withOpacity(0.05), - borderRadius: BorderRadius.circular(12), - border: Border.all(color: color.withOpacity(0.2)), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - period, - style: AppStyle.sm.copyWith(color: AppColor.textSecondary), - ), - const SizedBox(height: 8), - Text( - amount, - style: AppStyle.lg.copyWith( - fontWeight: FontWeight.bold, - color: color, - ), - ), - const SizedBox(height: 4), - Row( - children: [ - Icon( - isPositive ? LineIcons.arrowUp : LineIcons.arrowDown, - size: 14, - color: isPositive ? AppColor.success : AppColor.error, - ), - const SizedBox(width: 4), - Text( - change, - style: AppStyle.xs.copyWith( - color: isPositive ? AppColor.success : AppColor.error, - fontWeight: FontWeight.w600, - ), - ), - ], + // Product list + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.only(top: 12), + itemCount: products.length, + separatorBuilder: (context, index) => const SizedBox(height: 12), + itemBuilder: (context, index) { + final product = products[index]; + return ProfitLossProduct(product: product); + }, ), ], ), diff --git a/lib/presentation/pages/finance/widgets/cash_flow.dart b/lib/presentation/pages/finance/widgets/cash_flow.dart index 5c45492..fa11cbb 100644 --- a/lib/presentation/pages/finance/widgets/cash_flow.dart +++ b/lib/presentation/pages/finance/widgets/cash_flow.dart @@ -1,14 +1,23 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import 'package:intl/intl.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; class FinanceCashFlow extends StatelessWidget { - const FinanceCashFlow({super.key}); + final List dailyData; + + const FinanceCashFlow({super.key, required this.dailyData}); @override Widget build(BuildContext context) { + // Calculate totals from daily data + final totalCashIn = _calculateTotalCashIn(); + final totalCashOut = _calculateTotalCashOut(); + final netFlow = totalCashIn - totalCashOut; + return Container( margin: const EdgeInsets.all(16), padding: const EdgeInsets.all(20), @@ -70,7 +79,7 @@ class FinanceCashFlow extends StatelessWidget { Expanded( child: _buildCashFlowIndicator( 'Cash In', - 'Rp 28.5M', + _formatCurrency(totalCashIn), LineIcons.arrowUp, AppColor.success, ), @@ -79,7 +88,7 @@ class FinanceCashFlow extends StatelessWidget { Expanded( child: _buildCashFlowIndicator( 'Cash Out', - 'Rp 21.2M', + _formatCurrency(totalCashOut), LineIcons.arrowDown, AppColor.error, ), @@ -88,7 +97,7 @@ class FinanceCashFlow extends StatelessWidget { Expanded( child: _buildCashFlowIndicator( 'Net Flow', - 'Rp 7.3M', + _formatCurrency(netFlow), LineIcons.equals, AppColor.info, ), @@ -110,7 +119,7 @@ class FinanceCashFlow extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Grafik Cash Flow 7 Hari Terakhir', + 'Grafik Cash Flow ${dailyData.length} Hari Terakhir', style: AppStyle.sm.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w600, @@ -118,207 +127,9 @@ class FinanceCashFlow extends StatelessWidget { ), const SizedBox(height: 16), Expanded( - child: LineChart( - LineChartData( - gridData: FlGridData( - show: true, - drawVerticalLine: false, - horizontalInterval: 5000000, // 5M interval - getDrawingHorizontalLine: (value) { - return FlLine( - color: AppColor.borderLight, - strokeWidth: 1, - ); - }, - ), - titlesData: FlTitlesData( - show: true, - rightTitles: AxisTitles( - sideTitles: SideTitles(showTitles: false), - ), - topTitles: AxisTitles( - sideTitles: SideTitles(showTitles: false), - ), - bottomTitles: AxisTitles( - sideTitles: SideTitles( - showTitles: true, - reservedSize: 30, - interval: 1, - getTitlesWidget: (double value, TitleMeta meta) { - const style = TextStyle( - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - fontSize: 10, - ); - Widget text; - switch (value.toInt()) { - case 0: - text = const Text('Sen', style: style); - break; - case 1: - text = const Text('Sel', style: style); - break; - case 2: - text = const Text('Rab', style: style); - break; - case 3: - text = const Text('Kam', style: style); - break; - case 4: - text = const Text('Jum', style: style); - break; - case 5: - text = const Text('Sab', style: style); - break; - case 6: - text = const Text('Min', style: style); - break; - default: - text = const Text('', style: style); - break; - } - return SideTitleWidget(meta: meta, child: text); - }, - ), - ), - leftTitles: AxisTitles( - sideTitles: SideTitles( - showTitles: true, - interval: 10000000, // 10M interval - reservedSize: 42, - getTitlesWidget: (double value, TitleMeta meta) { - return Text( - '${(value / 1000000).toInt()}M', - style: const TextStyle( - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - fontSize: 10, - ), - textAlign: TextAlign.left, - ); - }, - ), - ), - ), - borderData: FlBorderData( - show: true, - border: Border.all(color: AppColor.borderLight), - ), - minX: 0, - maxX: 6, - minY: -5000000, - maxY: 30000000, - lineBarsData: [ - // Cash In Line - LineChartBarData( - spots: const [ - FlSpot(0, 25000000), // Monday - FlSpot(1, 22000000), // Tuesday - FlSpot(2, 28000000), // Wednesday - FlSpot(3, 24000000), // Thursday - FlSpot(4, 30000000), // Friday - FlSpot(5, 18000000), // Saturday - FlSpot(6, 26000000), // Sunday - ], - isCurved: true, - gradient: LinearGradient( - colors: [ - AppColor.success.withOpacity(0.8), - AppColor.success, - ], - ), - barWidth: 3, - isStrokeCapRound: true, - dotData: FlDotData( - show: true, - getDotPainter: (spot, percent, barData, index) { - return FlDotCirclePainter( - radius: 4, - color: AppColor.success, - strokeWidth: 2, - strokeColor: AppColor.white, - ); - }, - ), - belowBarData: BarAreaData( - show: true, - gradient: LinearGradient( - colors: [ - AppColor.success.withOpacity(0.1), - AppColor.success.withOpacity(0.0), - ], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - ), - // Cash Out Line - LineChartBarData( - spots: const [ - FlSpot(0, 20000000), // Monday - FlSpot(1, 18000000), // Tuesday - FlSpot(2, 23000000), // Wednesday - FlSpot(3, 19000000), // Thursday - FlSpot(4, 25000000), // Friday - FlSpot(5, 15000000), // Saturday - FlSpot(6, 21000000), // Sunday - ], - isCurved: true, - gradient: LinearGradient( - colors: [ - AppColor.error.withOpacity(0.8), - AppColor.error, - ], - ), - barWidth: 3, - isStrokeCapRound: true, - dotData: FlDotData( - show: true, - getDotPainter: (spot, percent, barData, index) { - return FlDotCirclePainter( - radius: 4, - color: AppColor.error, - strokeWidth: 2, - strokeColor: AppColor.white, - ); - }, - ), - ), - // Net Flow Line - LineChartBarData( - spots: const [ - FlSpot(0, 5000000), // Monday - FlSpot(1, 4000000), // Tuesday - FlSpot(2, 5000000), // Wednesday - FlSpot(3, 5000000), // Thursday - FlSpot(4, 5000000), // Friday - FlSpot(5, 3000000), // Saturday - FlSpot(6, 5000000), // Sunday - ], - isCurved: true, - gradient: LinearGradient( - colors: [ - AppColor.info.withOpacity(0.8), - AppColor.info, - ], - ), - barWidth: 3, - isStrokeCapRound: true, - dotData: FlDotData( - show: true, - getDotPainter: (spot, percent, barData, index) { - return FlDotCirclePainter( - radius: 4, - color: AppColor.info, - strokeWidth: 2, - strokeColor: AppColor.white, - ); - }, - ), - ), - ], - ), - ), + child: dailyData.isEmpty + ? _buildEmptyChart() + : LineChart(_buildLineChartData()), ), const SizedBox(height: 12), // Legend @@ -340,6 +151,273 @@ class FinanceCashFlow extends StatelessWidget { ); } + LineChartData _buildLineChartData() { + final maxValue = _getMaxChartValue(); + final minValue = _getMinChartValue(); + + return LineChartData( + gridData: FlGridData( + show: true, + drawVerticalLine: false, + horizontalInterval: (maxValue / 5).roundToDouble(), + getDrawingHorizontalLine: (value) { + return FlLine(color: AppColor.borderLight, strokeWidth: 1); + }, + ), + titlesData: FlTitlesData( + show: true, + rightTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)), + topTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)), + bottomTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + reservedSize: 30, + interval: 1, + getTitlesWidget: (double value, TitleMeta meta) { + final index = value.toInt(); + if (index >= 0 && index < dailyData.length) { + final date = DateTime.parse(dailyData[index].date); + final dayName = _getDayName(date.weekday); + return SideTitleWidget( + meta: meta, + child: Text( + dayName, + style: const TextStyle( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 10, + ), + ), + ); + } + return SideTitleWidget(meta: meta, child: Text('')); + }, + ), + ), + leftTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + interval: (maxValue / 3).roundToDouble(), + reservedSize: 42, + getTitlesWidget: (double value, TitleMeta meta) { + return Text( + _formatChartValue(value), + style: const TextStyle( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 10, + ), + textAlign: TextAlign.left, + ); + }, + ), + ), + ), + borderData: FlBorderData( + show: true, + border: Border.all(color: AppColor.borderLight), + ), + minX: 0, + maxX: (dailyData.length - 1).toDouble(), + minY: minValue, + maxY: maxValue, + lineBarsData: [ + // Cash In Line (Revenue) + LineChartBarData( + spots: _buildCashInSpots(), + isCurved: true, + gradient: LinearGradient( + colors: [AppColor.success.withOpacity(0.8), AppColor.success], + ), + barWidth: 3, + isStrokeCapRound: true, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 4, + color: AppColor.success, + strokeWidth: 2, + strokeColor: AppColor.white, + ); + }, + ), + belowBarData: BarAreaData( + show: true, + gradient: LinearGradient( + colors: [ + AppColor.success.withOpacity(0.1), + AppColor.success.withOpacity(0.0), + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + ), + // Cash Out Line (Total Cost) + LineChartBarData( + spots: _buildCashOutSpots(), + isCurved: true, + gradient: LinearGradient( + colors: [AppColor.error.withOpacity(0.8), AppColor.error], + ), + barWidth: 3, + isStrokeCapRound: true, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 4, + color: AppColor.error, + strokeWidth: 2, + strokeColor: AppColor.white, + ); + }, + ), + ), + // Net Flow Line (Net Profit) + LineChartBarData( + spots: _buildNetFlowSpots(), + isCurved: true, + gradient: LinearGradient( + colors: [AppColor.info.withOpacity(0.8), AppColor.info], + ), + barWidth: 3, + isStrokeCapRound: true, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 4, + color: AppColor.info, + strokeWidth: 2, + strokeColor: AppColor.white, + ); + }, + ), + ), + ], + ); + } + + Widget _buildEmptyChart() { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + LineIcons.lineChart, + size: 48, + color: AppColor.textSecondary.withOpacity(0.3), + ), + const SizedBox(height: 12), + Text( + 'Tidak ada data untuk ditampilkan', + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + ], + ), + ); + } + + // Helper methods for calculating data + int _calculateTotalCashIn() { + return dailyData.fold(0, (sum, data) => sum + data.revenue); + } + + int _calculateTotalCashOut() { + return dailyData.fold( + 0, + (sum, data) => sum + data.cost + data.tax + data.discount, + ); + } + + double _getMaxChartValue() { + if (dailyData.isEmpty) return 30000000; + + final maxRevenue = dailyData + .map((e) => e.revenue) + .reduce((a, b) => a > b ? a : b); + final maxCost = dailyData + .map((e) => e.cost + e.tax + e.discount) + .reduce((a, b) => a > b ? a : b); + final maxValue = maxRevenue > maxCost ? maxRevenue : maxCost; + + return (maxValue * 1.2).toDouble(); // Add 20% padding + } + + double _getMinChartValue() { + if (dailyData.isEmpty) return -5000000; + + final minNetProfit = dailyData + .map((e) => e.netProfit) + .reduce((a, b) => a < b ? a : b); + return minNetProfit < 0 ? (minNetProfit * 1.2).toDouble() : 0; + } + + List _buildCashInSpots() { + return dailyData.asMap().entries.map((entry) { + return FlSpot(entry.key.toDouble(), entry.value.revenue.toDouble()); + }).toList(); + } + + List _buildCashOutSpots() { + return dailyData.asMap().entries.map((entry) { + final totalCost = + entry.value.cost + entry.value.tax + entry.value.discount; + return FlSpot(entry.key.toDouble(), totalCost.toDouble()); + }).toList(); + } + + List _buildNetFlowSpots() { + return dailyData.asMap().entries.map((entry) { + return FlSpot(entry.key.toDouble(), entry.value.netProfit.toDouble()); + }).toList(); + } + + String _getDayName(int weekday) { + switch (weekday) { + case 1: + return 'Sen'; + case 2: + return 'Sel'; + case 3: + return 'Rab'; + case 4: + return 'Kam'; + case 5: + return 'Jum'; + case 6: + return 'Sab'; + case 7: + return 'Min'; + default: + return ''; + } + } + + String _formatChartValue(double value) { + if (value.abs() >= 1000000) { + return '${(value / 1000000).toStringAsFixed(0)}M'; + } else if (value.abs() >= 1000) { + return '${(value / 1000).toStringAsFixed(0)}K'; + } else { + return value.toStringAsFixed(0); + } + } + + String _formatCurrency(int amount) { + if (amount.abs() >= 1000000000) { + return 'Rp ${(amount / 1000000000).toStringAsFixed(1)}B'; + } else if (amount.abs() >= 1000000) { + return 'Rp ${(amount / 1000000).toStringAsFixed(1)}M'; + } else if (amount.abs() >= 1000) { + return 'Rp ${(amount / 1000).toStringAsFixed(1)}K'; + } else { + return 'Rp ${NumberFormat('#,###', 'id_ID').format(amount)}'; + } + } + Widget _buildChartLegend(String label, Color color) { return Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/presentation/pages/finance/widgets/product.dart b/lib/presentation/pages/finance/widgets/product.dart new file mode 100644 index 0000000..d545d82 --- /dev/null +++ b/lib/presentation/pages/finance/widgets/product.dart @@ -0,0 +1,148 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/extension/extension.dart'; +import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; + +class ProfitLossProduct extends StatelessWidget { + final ProfitLossProductData product; + const ProfitLossProduct({super.key, required this.product}); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.border.withOpacity(0.5)), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Product header + Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + product.productName, + style: AppStyle.md.copyWith(fontWeight: FontWeight.bold), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 2), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 2, + ), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Text( + product.categoryName, + style: AppStyle.xs.copyWith(color: AppColor.primary), + ), + ), + ], + ), + ), + const SizedBox(width: 12), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + '${product.quantitySold} terjual', + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + Text( + '${product.grossProfitMargin.toStringAsFixed(1)}%', + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: product.grossProfitMargin > 25 + ? AppColor.success + : product.grossProfitMargin > 15 + ? AppColor.warning + : AppColor.error, + ), + ), + ], + ), + ], + ), + const SizedBox(height: 16), + + // Financial metrics + Row( + children: [ + Expanded( + child: _buildMetricColumn( + 'Pendapatan', + product.revenue.currencyFormatRp, + AppColor.success, + ), + ), + Expanded( + child: _buildMetricColumn( + 'Biaya', + product.cost.currencyFormatRp, + AppColor.error, + ), + ), + Expanded( + child: _buildMetricColumn( + 'Laba Kotor', + product.grossProfit.currencyFormatRp, + AppColor.info, + ), + ), + ], + ), + const SizedBox(height: 12), + + // Average metrics + Row( + children: [ + Expanded( + child: _buildMetricColumn( + 'Harga Rata-rata', + product.averagePrice.currencyFormatRp, + AppColor.textSecondary, + ), + ), + Expanded( + child: _buildMetricColumn( + 'Laba per Unit', + product.profitPerUnit.currencyFormatRp, + AppColor.primary, + ), + ), + const Expanded(child: SizedBox()), + ], + ), + ], + ), + ); + } + + Widget _buildMetricColumn(String label, String value, Color color) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(label, style: AppStyle.xs.copyWith(color: AppColor.textSecondary)), + const SizedBox(height: 2), + Text( + value, + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.w600, + color: color, + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/finance/widgets/profit_loss.dart b/lib/presentation/pages/finance/widgets/profit_loss.dart index a3fa885..8692aba 100644 --- a/lib/presentation/pages/finance/widgets/profit_loss.dart +++ b/lib/presentation/pages/finance/widgets/profit_loss.dart @@ -1,10 +1,14 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; class FinanceProfitLoss extends StatelessWidget { - const FinanceProfitLoss({super.key}); + final ProfitLossSummary data; + + const FinanceProfitLoss({super.key, required this.data}); @override Widget build(BuildContext context) { @@ -49,52 +53,77 @@ class FinanceProfitLoss extends StatelessWidget { ), const SizedBox(height: 20), + // Total Revenue (Penjualan Kotor) _buildPLItem( 'Penjualan Kotor', - 'Rp 25.840.000', + data.totalRevenue.currencyFormatRp, AppColor.success, true, ), - _buildPLItem('Diskon & Retur', '- Rp 560.000', AppColor.error, false), + + // Discount (Diskon & Retur) + _buildPLItem( + 'Diskon & Retur', + '- ${data.totalDiscount.currencyFormatRp}', + AppColor.error, + false, + ), + const Divider(height: 24), + + // Net Sales (Penjualan Bersih = Total Revenue - Discount) _buildPLItem( 'Penjualan Bersih', - 'Rp 25.280.000', + (data.totalRevenue - data.totalDiscount).currencyFormatRp, AppColor.textPrimary, true, isHeader: true, ), + const SizedBox(height: 12), + + // Cost of Goods Sold (HPP) _buildPLItem( 'HPP (Harga Pokok Penjualan)', - '- Rp 15.120.000', + '- ${data.totalCost.currencyFormatRp}', AppColor.error, false, ), + const Divider(height: 24), + + // Gross Profit (Laba Kotor) _buildPLItem( 'Laba Kotor', - 'Rp 10.160.000', + data.grossProfit.currencyFormatRp, AppColor.success, true, isHeader: true, + showPercentage: true, + percentage: '${data.grossProfitMargin.toStringAsFixed(1)}%', ), + const SizedBox(height: 12), + + // Operational Cost (Biaya Operasional) - calculated as difference _buildPLItem( 'Biaya Operasional', - '- Rp 2.640.000', + '- ${_calculateOperationalCost().currencyFormatRp}', AppColor.error, false, ), + const Divider(height: 24), + + // Net Profit (Laba Bersih) _buildPLItem( 'Laba Bersih', - 'Rp 7.520.000', + data.netProfit.currencyFormatRp, AppColor.primary, true, isHeader: true, showPercentage: true, - percentage: '29.8%', + percentage: '${data.netProfitMargin.round()}%', ), ], ), @@ -155,4 +184,9 @@ class FinanceProfitLoss extends StatelessWidget { ), ); } + + // Calculate operational cost as the difference between gross profit and net profit + int _calculateOperationalCost() { + return data.grossProfit - data.netProfit - data.totalTax; + } } diff --git a/lib/presentation/pages/finance/widgets/summary_card.dart b/lib/presentation/pages/finance/widgets/summary_card.dart index 94689d3..26daaf6 100644 --- a/lib/presentation/pages/finance/widgets/summary_card.dart +++ b/lib/presentation/pages/finance/widgets/summary_card.dart @@ -9,7 +9,6 @@ class FinanceSummaryCard extends StatelessWidget { required this.amount, required this.icon, required this.color, - required this.change, required this.isPositive, }); @@ -17,7 +16,6 @@ class FinanceSummaryCard extends StatelessWidget { final String amount; final IconData icon; final Color color; - final String change; final bool isPositive; @override @@ -50,22 +48,6 @@ class FinanceSummaryCard extends StatelessWidget { ), child: Icon(icon, color: color, size: 20), ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: isPositive - ? AppColor.success.withOpacity(0.1) - : AppColor.error.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - change, - style: AppStyle.xs.copyWith( - color: isPositive ? AppColor.success : AppColor.error, - fontWeight: FontWeight.w600, - ), - ), - ), ], ), const SizedBox(height: 12), From 8eef620c160972786b4983b5c90c534514b8a3aa Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 22:46:25 +0700 Subject: [PATCH 054/108] feat: category analytic source --- lib/common/url/api_path.dart | 1 + lib/domain/analytic/analytic.dart | 3 +- lib/domain/analytic/analytic.freezed.dart | 1773 +++++++++++------ .../entities/category_analytic_entity.dart | 41 + .../repositories/i_analytic_repository.dart | 6 + .../analytic/analytic_dtos.dart | 1 + .../analytic/analytic_dtos.freezed.dart | 588 ++++++ .../analytic/analytic_dtos.g.dart | 44 + .../datasource/remote_data_provider.dart | 27 + .../analytic/dto/category_analytic_dto.dart | 51 + .../repositories/analytic_repository.dart | 24 + lib/injection.config.dart | 6 +- lib/presentation/router/app_router.gr.dart | 2 +- 13 files changed, 1929 insertions(+), 638 deletions(-) create mode 100644 lib/domain/analytic/entities/category_analytic_entity.dart create mode 100644 lib/infrastructure/analytic/dto/category_analytic_dto.dart diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 9d510ac..dc970fb 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -6,6 +6,7 @@ class ApiPath { // Analytic static const String salesAnalytic = '/api/v1/analytics/sales'; static const String profitLossAnalytic = '/api/v1/analytics/profit-loss'; + static const String categoryAnalytic = '/api/v1/analytics/categories'; // Category static const String category = '/api/v1/categories'; diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart index 0a045d0..8933596 100644 --- a/lib/domain/analytic/analytic.dart +++ b/lib/domain/analytic/analytic.dart @@ -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'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index 14c924b..0291711 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -876,639 +876,6 @@ abstract class _SalesAnalyticData implements SalesAnalyticData { throw _privateConstructorUsedError; } -/// @nodoc -mixin _$AnalyticFailure { - @optionalTypeArgs - TResult when({ - required TResult Function(ApiFailure failure) serverError, - required TResult Function() unexpectedError, - required TResult Function() empty, - required TResult Function(String erroMessage) dynamicErrorMessage, - }) => throw _privateConstructorUsedError; - @optionalTypeArgs - TResult? whenOrNull({ - TResult? Function(ApiFailure failure)? serverError, - TResult? Function()? unexpectedError, - TResult? Function()? empty, - TResult? Function(String erroMessage)? dynamicErrorMessage, - }) => throw _privateConstructorUsedError; - @optionalTypeArgs - TResult maybeWhen({ - TResult Function(ApiFailure failure)? serverError, - TResult Function()? unexpectedError, - TResult Function()? empty, - TResult Function(String erroMessage)? dynamicErrorMessage, - required TResult orElse(), - }) => throw _privateConstructorUsedError; - @optionalTypeArgs - TResult map({ - required TResult Function(_ServerError value) serverError, - required TResult Function(_UnexpectedError value) unexpectedError, - required TResult Function(_Empty value) empty, - required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, - }) => throw _privateConstructorUsedError; - @optionalTypeArgs - TResult? mapOrNull({ - TResult? Function(_ServerError value)? serverError, - TResult? Function(_UnexpectedError value)? unexpectedError, - TResult? Function(_Empty value)? empty, - TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, - }) => throw _privateConstructorUsedError; - @optionalTypeArgs - TResult maybeMap({ - TResult Function(_ServerError value)? serverError, - TResult Function(_UnexpectedError value)? unexpectedError, - TResult Function(_Empty value)? empty, - TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, - required TResult orElse(), - }) => throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $AnalyticFailureCopyWith<$Res> { - factory $AnalyticFailureCopyWith( - AnalyticFailure value, - $Res Function(AnalyticFailure) then, - ) = _$AnalyticFailureCopyWithImpl<$Res, AnalyticFailure>; -} - -/// @nodoc -class _$AnalyticFailureCopyWithImpl<$Res, $Val extends AnalyticFailure> - implements $AnalyticFailureCopyWith<$Res> { - _$AnalyticFailureCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. -} - -/// @nodoc -abstract class _$$ServerErrorImplCopyWith<$Res> { - factory _$$ServerErrorImplCopyWith( - _$ServerErrorImpl value, - $Res Function(_$ServerErrorImpl) then, - ) = __$$ServerErrorImplCopyWithImpl<$Res>; - @useResult - $Res call({ApiFailure failure}); - - $ApiFailureCopyWith<$Res> get failure; -} - -/// @nodoc -class __$$ServerErrorImplCopyWithImpl<$Res> - extends _$AnalyticFailureCopyWithImpl<$Res, _$ServerErrorImpl> - implements _$$ServerErrorImplCopyWith<$Res> { - __$$ServerErrorImplCopyWithImpl( - _$ServerErrorImpl _value, - $Res Function(_$ServerErrorImpl) _then, - ) : super(_value, _then); - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({Object? failure = null}) { - return _then( - _$ServerErrorImpl( - null == failure - ? _value.failure - : failure // ignore: cast_nullable_to_non_nullable - as ApiFailure, - ), - ); - } - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. - @override - @pragma('vm:prefer-inline') - $ApiFailureCopyWith<$Res> get failure { - return $ApiFailureCopyWith<$Res>(_value.failure, (value) { - return _then(_value.copyWith(failure: value)); - }); - } -} - -/// @nodoc - -class _$ServerErrorImpl implements _ServerError { - const _$ServerErrorImpl(this.failure); - - @override - final ApiFailure failure; - - @override - String toString() { - return 'AnalyticFailure.serverError(failure: $failure)'; - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$ServerErrorImpl && - (identical(other.failure, failure) || other.failure == failure)); - } - - @override - int get hashCode => Object.hash(runtimeType, failure); - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - @override - @pragma('vm:prefer-inline') - _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => - __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); - - @override - @optionalTypeArgs - TResult when({ - required TResult Function(ApiFailure failure) serverError, - required TResult Function() unexpectedError, - required TResult Function() empty, - required TResult Function(String erroMessage) dynamicErrorMessage, - }) { - return serverError(failure); - } - - @override - @optionalTypeArgs - TResult? whenOrNull({ - TResult? Function(ApiFailure failure)? serverError, - TResult? Function()? unexpectedError, - TResult? Function()? empty, - TResult? Function(String erroMessage)? dynamicErrorMessage, - }) { - return serverError?.call(failure); - } - - @override - @optionalTypeArgs - TResult maybeWhen({ - TResult Function(ApiFailure failure)? serverError, - TResult Function()? unexpectedError, - TResult Function()? empty, - TResult Function(String erroMessage)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (serverError != null) { - return serverError(failure); - } - return orElse(); - } - - @override - @optionalTypeArgs - TResult map({ - required TResult Function(_ServerError value) serverError, - required TResult Function(_UnexpectedError value) unexpectedError, - required TResult Function(_Empty value) empty, - required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, - }) { - return serverError(this); - } - - @override - @optionalTypeArgs - TResult? mapOrNull({ - TResult? Function(_ServerError value)? serverError, - TResult? Function(_UnexpectedError value)? unexpectedError, - TResult? Function(_Empty value)? empty, - TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, - }) { - return serverError?.call(this); - } - - @override - @optionalTypeArgs - TResult maybeMap({ - TResult Function(_ServerError value)? serverError, - TResult Function(_UnexpectedError value)? unexpectedError, - TResult Function(_Empty value)? empty, - TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (serverError != null) { - return serverError(this); - } - return orElse(); - } -} - -abstract class _ServerError implements AnalyticFailure { - const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; - - ApiFailure get failure; - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => - throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class _$$UnexpectedErrorImplCopyWith<$Res> { - factory _$$UnexpectedErrorImplCopyWith( - _$UnexpectedErrorImpl value, - $Res Function(_$UnexpectedErrorImpl) then, - ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; -} - -/// @nodoc -class __$$UnexpectedErrorImplCopyWithImpl<$Res> - extends _$AnalyticFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> - implements _$$UnexpectedErrorImplCopyWith<$Res> { - __$$UnexpectedErrorImplCopyWithImpl( - _$UnexpectedErrorImpl _value, - $Res Function(_$UnexpectedErrorImpl) _then, - ) : super(_value, _then); - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. -} - -/// @nodoc - -class _$UnexpectedErrorImpl implements _UnexpectedError { - const _$UnexpectedErrorImpl(); - - @override - String toString() { - return 'AnalyticFailure.unexpectedError()'; - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); - } - - @override - int get hashCode => runtimeType.hashCode; - - @override - @optionalTypeArgs - TResult when({ - required TResult Function(ApiFailure failure) serverError, - required TResult Function() unexpectedError, - required TResult Function() empty, - required TResult Function(String erroMessage) dynamicErrorMessage, - }) { - return unexpectedError(); - } - - @override - @optionalTypeArgs - TResult? whenOrNull({ - TResult? Function(ApiFailure failure)? serverError, - TResult? Function()? unexpectedError, - TResult? Function()? empty, - TResult? Function(String erroMessage)? dynamicErrorMessage, - }) { - return unexpectedError?.call(); - } - - @override - @optionalTypeArgs - TResult maybeWhen({ - TResult Function(ApiFailure failure)? serverError, - TResult Function()? unexpectedError, - TResult Function()? empty, - TResult Function(String erroMessage)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (unexpectedError != null) { - return unexpectedError(); - } - return orElse(); - } - - @override - @optionalTypeArgs - TResult map({ - required TResult Function(_ServerError value) serverError, - required TResult Function(_UnexpectedError value) unexpectedError, - required TResult Function(_Empty value) empty, - required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, - }) { - return unexpectedError(this); - } - - @override - @optionalTypeArgs - TResult? mapOrNull({ - TResult? Function(_ServerError value)? serverError, - TResult? Function(_UnexpectedError value)? unexpectedError, - TResult? Function(_Empty value)? empty, - TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, - }) { - return unexpectedError?.call(this); - } - - @override - @optionalTypeArgs - TResult maybeMap({ - TResult Function(_ServerError value)? serverError, - TResult Function(_UnexpectedError value)? unexpectedError, - TResult Function(_Empty value)? empty, - TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (unexpectedError != null) { - return unexpectedError(this); - } - return orElse(); - } -} - -abstract class _UnexpectedError implements AnalyticFailure { - const factory _UnexpectedError() = _$UnexpectedErrorImpl; -} - -/// @nodoc -abstract class _$$EmptyImplCopyWith<$Res> { - factory _$$EmptyImplCopyWith( - _$EmptyImpl value, - $Res Function(_$EmptyImpl) then, - ) = __$$EmptyImplCopyWithImpl<$Res>; -} - -/// @nodoc -class __$$EmptyImplCopyWithImpl<$Res> - extends _$AnalyticFailureCopyWithImpl<$Res, _$EmptyImpl> - implements _$$EmptyImplCopyWith<$Res> { - __$$EmptyImplCopyWithImpl( - _$EmptyImpl _value, - $Res Function(_$EmptyImpl) _then, - ) : super(_value, _then); - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. -} - -/// @nodoc - -class _$EmptyImpl implements _Empty { - const _$EmptyImpl(); - - @override - String toString() { - return 'AnalyticFailure.empty()'; - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && other is _$EmptyImpl); - } - - @override - int get hashCode => runtimeType.hashCode; - - @override - @optionalTypeArgs - TResult when({ - required TResult Function(ApiFailure failure) serverError, - required TResult Function() unexpectedError, - required TResult Function() empty, - required TResult Function(String erroMessage) dynamicErrorMessage, - }) { - return empty(); - } - - @override - @optionalTypeArgs - TResult? whenOrNull({ - TResult? Function(ApiFailure failure)? serverError, - TResult? Function()? unexpectedError, - TResult? Function()? empty, - TResult? Function(String erroMessage)? dynamicErrorMessage, - }) { - return empty?.call(); - } - - @override - @optionalTypeArgs - TResult maybeWhen({ - TResult Function(ApiFailure failure)? serverError, - TResult Function()? unexpectedError, - TResult Function()? empty, - TResult Function(String erroMessage)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (empty != null) { - return empty(); - } - return orElse(); - } - - @override - @optionalTypeArgs - TResult map({ - required TResult Function(_ServerError value) serverError, - required TResult Function(_UnexpectedError value) unexpectedError, - required TResult Function(_Empty value) empty, - required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, - }) { - return empty(this); - } - - @override - @optionalTypeArgs - TResult? mapOrNull({ - TResult? Function(_ServerError value)? serverError, - TResult? Function(_UnexpectedError value)? unexpectedError, - TResult? Function(_Empty value)? empty, - TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, - }) { - return empty?.call(this); - } - - @override - @optionalTypeArgs - TResult maybeMap({ - TResult Function(_ServerError value)? serverError, - TResult Function(_UnexpectedError value)? unexpectedError, - TResult Function(_Empty value)? empty, - TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (empty != null) { - return empty(this); - } - return orElse(); - } -} - -abstract class _Empty implements AnalyticFailure { - const factory _Empty() = _$EmptyImpl; -} - -/// @nodoc -abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { - factory _$$DynamicErrorMessageImplCopyWith( - _$DynamicErrorMessageImpl value, - $Res Function(_$DynamicErrorMessageImpl) then, - ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; - @useResult - $Res call({String erroMessage}); -} - -/// @nodoc -class __$$DynamicErrorMessageImplCopyWithImpl<$Res> - extends _$AnalyticFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> - implements _$$DynamicErrorMessageImplCopyWith<$Res> { - __$$DynamicErrorMessageImplCopyWithImpl( - _$DynamicErrorMessageImpl _value, - $Res Function(_$DynamicErrorMessageImpl) _then, - ) : super(_value, _then); - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({Object? erroMessage = null}) { - return _then( - _$DynamicErrorMessageImpl( - null == erroMessage - ? _value.erroMessage - : erroMessage // ignore: cast_nullable_to_non_nullable - as String, - ), - ); - } -} - -/// @nodoc - -class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { - const _$DynamicErrorMessageImpl(this.erroMessage); - - @override - final String erroMessage; - - @override - String toString() { - return 'AnalyticFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$DynamicErrorMessageImpl && - (identical(other.erroMessage, erroMessage) || - other.erroMessage == erroMessage)); - } - - @override - int get hashCode => Object.hash(runtimeType, erroMessage); - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - @override - @pragma('vm:prefer-inline') - _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => - __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( - this, - _$identity, - ); - - @override - @optionalTypeArgs - TResult when({ - required TResult Function(ApiFailure failure) serverError, - required TResult Function() unexpectedError, - required TResult Function() empty, - required TResult Function(String erroMessage) dynamicErrorMessage, - }) { - return dynamicErrorMessage(erroMessage); - } - - @override - @optionalTypeArgs - TResult? whenOrNull({ - TResult? Function(ApiFailure failure)? serverError, - TResult? Function()? unexpectedError, - TResult? Function()? empty, - TResult? Function(String erroMessage)? dynamicErrorMessage, - }) { - return dynamicErrorMessage?.call(erroMessage); - } - - @override - @optionalTypeArgs - TResult maybeWhen({ - TResult Function(ApiFailure failure)? serverError, - TResult Function()? unexpectedError, - TResult Function()? empty, - TResult Function(String erroMessage)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (dynamicErrorMessage != null) { - return dynamicErrorMessage(erroMessage); - } - return orElse(); - } - - @override - @optionalTypeArgs - TResult map({ - required TResult Function(_ServerError value) serverError, - required TResult Function(_UnexpectedError value) unexpectedError, - required TResult Function(_Empty value) empty, - required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, - }) { - return dynamicErrorMessage(this); - } - - @override - @optionalTypeArgs - TResult? mapOrNull({ - TResult? Function(_ServerError value)? serverError, - TResult? Function(_UnexpectedError value)? unexpectedError, - TResult? Function(_Empty value)? empty, - TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, - }) { - return dynamicErrorMessage?.call(this); - } - - @override - @optionalTypeArgs - TResult maybeMap({ - TResult Function(_ServerError value)? serverError, - TResult Function(_UnexpectedError value)? unexpectedError, - TResult Function(_Empty value)? empty, - TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, - required TResult orElse(), - }) { - if (dynamicErrorMessage != null) { - return dynamicErrorMessage(this); - } - return orElse(); - } -} - -abstract class _DynamicErrorMessage implements AnalyticFailure { - const factory _DynamicErrorMessage(final String erroMessage) = - _$DynamicErrorMessageImpl; - - String get erroMessage; - - /// Create a copy of AnalyticFailure - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => - throw _privateConstructorUsedError; -} - /// @nodoc mixin _$ProfitLossAnalytic { String get organizationId => throw _privateConstructorUsedError; @@ -2928,3 +2295,1143 @@ abstract class _ProfitLossProductData implements ProfitLossProductData { _$$ProfitLossProductDataImplCopyWith<_$ProfitLossProductDataImpl> get copyWith => throw _privateConstructorUsedError; } + +/// @nodoc +mixin _$CategoryAnalytic { + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get dateFrom => throw _privateConstructorUsedError; + String get dateTo => throw _privateConstructorUsedError; + List get data => throw _privateConstructorUsedError; + + /// Create a copy of CategoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryAnalyticCopyWith<$Res> { + factory $CategoryAnalyticCopyWith( + CategoryAnalytic value, + $Res Function(CategoryAnalytic) then, + ) = _$CategoryAnalyticCopyWithImpl<$Res, CategoryAnalytic>; + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + List data, + }); +} + +/// @nodoc +class _$CategoryAnalyticCopyWithImpl<$Res, $Val extends CategoryAnalytic> + implements $CategoryAnalyticCopyWith<$Res> { + _$CategoryAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? data = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + data: null == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CategoryAnalyticImplCopyWith<$Res> + implements $CategoryAnalyticCopyWith<$Res> { + factory _$$CategoryAnalyticImplCopyWith( + _$CategoryAnalyticImpl value, + $Res Function(_$CategoryAnalyticImpl) then, + ) = __$$CategoryAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + List data, + }); +} + +/// @nodoc +class __$$CategoryAnalyticImplCopyWithImpl<$Res> + extends _$CategoryAnalyticCopyWithImpl<$Res, _$CategoryAnalyticImpl> + implements _$$CategoryAnalyticImplCopyWith<$Res> { + __$$CategoryAnalyticImplCopyWithImpl( + _$CategoryAnalyticImpl _value, + $Res Function(_$CategoryAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? data = null, + }) { + return _then( + _$CategoryAnalyticImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + data: null == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$CategoryAnalyticImpl implements _CategoryAnalytic { + const _$CategoryAnalyticImpl({ + required this.organizationId, + required this.outletId, + required this.dateFrom, + required this.dateTo, + required final List data, + }) : _data = data; + + @override + final String organizationId; + @override + final String outletId; + @override + final String dateFrom; + @override + final String dateTo; + final List _data; + @override + List get data { + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_data); + } + + @override + String toString() { + return 'CategoryAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryAnalyticImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of CategoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryAnalyticImplCopyWith<_$CategoryAnalyticImpl> get copyWith => + __$$CategoryAnalyticImplCopyWithImpl<_$CategoryAnalyticImpl>( + this, + _$identity, + ); +} + +abstract class _CategoryAnalytic implements CategoryAnalytic { + const factory _CategoryAnalytic({ + required final String organizationId, + required final String outletId, + required final String dateFrom, + required final String dateTo, + required final List data, + }) = _$CategoryAnalyticImpl; + + @override + String get organizationId; + @override + String get outletId; + @override + String get dateFrom; + @override + String get dateTo; + @override + List get data; + + /// Create a copy of CategoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryAnalyticImplCopyWith<_$CategoryAnalyticImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$CategoryAnalyticItem { + String get categoryId => throw _privateConstructorUsedError; + String get categoryName => throw _privateConstructorUsedError; + int get totalRevenue => throw _privateConstructorUsedError; + int get totalQuantity => throw _privateConstructorUsedError; + int get productCount => throw _privateConstructorUsedError; + int get orderCount => throw _privateConstructorUsedError; + + /// Create a copy of CategoryAnalyticItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryAnalyticItemCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryAnalyticItemCopyWith<$Res> { + factory $CategoryAnalyticItemCopyWith( + CategoryAnalyticItem value, + $Res Function(CategoryAnalyticItem) then, + ) = _$CategoryAnalyticItemCopyWithImpl<$Res, CategoryAnalyticItem>; + @useResult + $Res call({ + String categoryId, + String categoryName, + int totalRevenue, + int totalQuantity, + int productCount, + int orderCount, + }); +} + +/// @nodoc +class _$CategoryAnalyticItemCopyWithImpl< + $Res, + $Val extends CategoryAnalyticItem +> + implements $CategoryAnalyticItemCopyWith<$Res> { + _$CategoryAnalyticItemCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryAnalyticItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryId = null, + Object? categoryName = null, + Object? totalRevenue = null, + Object? totalQuantity = null, + Object? productCount = null, + Object? orderCount = null, + }) { + return _then( + _value.copyWith( + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + totalRevenue: null == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int, + totalQuantity: null == totalQuantity + ? _value.totalQuantity + : totalQuantity // ignore: cast_nullable_to_non_nullable + as int, + productCount: null == productCount + ? _value.productCount + : productCount // ignore: cast_nullable_to_non_nullable + as int, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CategoryAnalyticItemImplCopyWith<$Res> + implements $CategoryAnalyticItemCopyWith<$Res> { + factory _$$CategoryAnalyticItemImplCopyWith( + _$CategoryAnalyticItemImpl value, + $Res Function(_$CategoryAnalyticItemImpl) then, + ) = __$$CategoryAnalyticItemImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String categoryId, + String categoryName, + int totalRevenue, + int totalQuantity, + int productCount, + int orderCount, + }); +} + +/// @nodoc +class __$$CategoryAnalyticItemImplCopyWithImpl<$Res> + extends _$CategoryAnalyticItemCopyWithImpl<$Res, _$CategoryAnalyticItemImpl> + implements _$$CategoryAnalyticItemImplCopyWith<$Res> { + __$$CategoryAnalyticItemImplCopyWithImpl( + _$CategoryAnalyticItemImpl _value, + $Res Function(_$CategoryAnalyticItemImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryAnalyticItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryId = null, + Object? categoryName = null, + Object? totalRevenue = null, + Object? totalQuantity = null, + Object? productCount = null, + Object? orderCount = null, + }) { + return _then( + _$CategoryAnalyticItemImpl( + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + totalRevenue: null == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int, + totalQuantity: null == totalQuantity + ? _value.totalQuantity + : totalQuantity // ignore: cast_nullable_to_non_nullable + as int, + productCount: null == productCount + ? _value.productCount + : productCount // ignore: cast_nullable_to_non_nullable + as int, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$CategoryAnalyticItemImpl implements _CategoryAnalyticItem { + const _$CategoryAnalyticItemImpl({ + required this.categoryId, + required this.categoryName, + required this.totalRevenue, + required this.totalQuantity, + required this.productCount, + required this.orderCount, + }); + + @override + final String categoryId; + @override + final String categoryName; + @override + final int totalRevenue; + @override + final int totalQuantity; + @override + final int productCount; + @override + final int orderCount; + + @override + String toString() { + return 'CategoryAnalyticItem(categoryId: $categoryId, categoryName: $categoryName, totalRevenue: $totalRevenue, totalQuantity: $totalQuantity, productCount: $productCount, orderCount: $orderCount)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryAnalyticItemImpl && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.totalRevenue, totalRevenue) || + other.totalRevenue == totalRevenue) && + (identical(other.totalQuantity, totalQuantity) || + other.totalQuantity == totalQuantity) && + (identical(other.productCount, productCount) || + other.productCount == productCount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + categoryId, + categoryName, + totalRevenue, + totalQuantity, + productCount, + orderCount, + ); + + /// Create a copy of CategoryAnalyticItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryAnalyticItemImplCopyWith<_$CategoryAnalyticItemImpl> + get copyWith => + __$$CategoryAnalyticItemImplCopyWithImpl<_$CategoryAnalyticItemImpl>( + this, + _$identity, + ); +} + +abstract class _CategoryAnalyticItem implements CategoryAnalyticItem { + const factory _CategoryAnalyticItem({ + required final String categoryId, + required final String categoryName, + required final int totalRevenue, + required final int totalQuantity, + required final int productCount, + required final int orderCount, + }) = _$CategoryAnalyticItemImpl; + + @override + String get categoryId; + @override + String get categoryName; + @override + int get totalRevenue; + @override + int get totalQuantity; + @override + int get productCount; + @override + int get orderCount; + + /// Create a copy of CategoryAnalyticItem + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryAnalyticItemImplCopyWith<_$CategoryAnalyticItemImpl> + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$AnalyticFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AnalyticFailureCopyWith<$Res> { + factory $AnalyticFailureCopyWith( + AnalyticFailure value, + $Res Function(AnalyticFailure) then, + ) = _$AnalyticFailureCopyWithImpl<$Res, AnalyticFailure>; +} + +/// @nodoc +class _$AnalyticFailureCopyWithImpl<$Res, $Val extends AnalyticFailure> + implements $AnalyticFailureCopyWith<$Res> { + _$AnalyticFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'AnalyticFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements AnalyticFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'AnalyticFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements AnalyticFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'AnalyticFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements AnalyticFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$AnalyticFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'AnalyticFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements AnalyticFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of AnalyticFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/analytic/entities/category_analytic_entity.dart b/lib/domain/analytic/entities/category_analytic_entity.dart new file mode 100644 index 0000000..56d8f29 --- /dev/null +++ b/lib/domain/analytic/entities/category_analytic_entity.dart @@ -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 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, + ); +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index 95dfd2b..cb7826a 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -7,8 +7,14 @@ abstract class IAnalyticRepository { required DateTime dateFrom, required DateTime dateTo, }); + Future> getProfitLoss({ required DateTime dateFrom, required DateTime dateTo, }); + + Future> getCategory({ + required DateTime dateFrom, + required DateTime dateTo, + }); } diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart index 94a2ac3..a812a02 100644 --- a/lib/infrastructure/analytic/analytic_dtos.dart +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -7,3 +7,4 @@ part 'analytic_dtos.g.dart'; part 'dto/sales_analytic_dto.dart'; part 'dto/profit_loss_analytic_dto.dart'; +part 'dto/category_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index 4d03fe3..eee2978 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -2670,3 +2670,591 @@ abstract class _ProfitLossProductDataDto extends ProfitLossProductDataDto { _$$ProfitLossProductDataDtoImplCopyWith<_$ProfitLossProductDataDtoImpl> get copyWith => throw _privateConstructorUsedError; } + +CategoryAnalyticDto _$CategoryAnalyticDtoFromJson(Map json) { + return _CategoryAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$CategoryAnalyticDto { + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'date_from') + String? get dateFrom => throw _privateConstructorUsedError; + @JsonKey(name: 'date_to') + String? get dateTo => throw _privateConstructorUsedError; + @JsonKey(name: 'data') + List? get data => throw _privateConstructorUsedError; + + /// Serializes this CategoryAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of CategoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryAnalyticDtoCopyWith<$Res> { + factory $CategoryAnalyticDtoCopyWith( + CategoryAnalyticDto value, + $Res Function(CategoryAnalyticDto) then, + ) = _$CategoryAnalyticDtoCopyWithImpl<$Res, CategoryAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'data') List? data, + }); +} + +/// @nodoc +class _$CategoryAnalyticDtoCopyWithImpl<$Res, $Val extends CategoryAnalyticDto> + implements $CategoryAnalyticDtoCopyWith<$Res> { + _$CategoryAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? data = freezed, + }) { + return _then( + _value.copyWith( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + data: freezed == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CategoryAnalyticDtoImplCopyWith<$Res> + implements $CategoryAnalyticDtoCopyWith<$Res> { + factory _$$CategoryAnalyticDtoImplCopyWith( + _$CategoryAnalyticDtoImpl value, + $Res Function(_$CategoryAnalyticDtoImpl) then, + ) = __$$CategoryAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'data') List? data, + }); +} + +/// @nodoc +class __$$CategoryAnalyticDtoImplCopyWithImpl<$Res> + extends _$CategoryAnalyticDtoCopyWithImpl<$Res, _$CategoryAnalyticDtoImpl> + implements _$$CategoryAnalyticDtoImplCopyWith<$Res> { + __$$CategoryAnalyticDtoImplCopyWithImpl( + _$CategoryAnalyticDtoImpl _value, + $Res Function(_$CategoryAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? data = freezed, + }) { + return _then( + _$CategoryAnalyticDtoImpl( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + data: freezed == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$CategoryAnalyticDtoImpl extends _CategoryAnalyticDto { + const _$CategoryAnalyticDtoImpl({ + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'date_from') this.dateFrom, + @JsonKey(name: 'date_to') this.dateTo, + @JsonKey(name: 'data') final List? data, + }) : _data = data, + super._(); + + factory _$CategoryAnalyticDtoImpl.fromJson(Map json) => + _$$CategoryAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'date_from') + final String? dateFrom; + @override + @JsonKey(name: 'date_to') + final String? dateTo; + final List? _data; + @override + @JsonKey(name: 'data') + List? get data { + final value = _data; + if (value == null) return null; + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'CategoryAnalyticDto(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryAnalyticDtoImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of CategoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryAnalyticDtoImplCopyWith<_$CategoryAnalyticDtoImpl> get copyWith => + __$$CategoryAnalyticDtoImplCopyWithImpl<_$CategoryAnalyticDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$CategoryAnalyticDtoImplToJson(this); + } +} + +abstract class _CategoryAnalyticDto extends CategoryAnalyticDto { + const factory _CategoryAnalyticDto({ + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'date_from') final String? dateFrom, + @JsonKey(name: 'date_to') final String? dateTo, + @JsonKey(name: 'data') final List? data, + }) = _$CategoryAnalyticDtoImpl; + const _CategoryAnalyticDto._() : super._(); + + factory _CategoryAnalyticDto.fromJson(Map json) = + _$CategoryAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'date_from') + String? get dateFrom; + @override + @JsonKey(name: 'date_to') + String? get dateTo; + @override + @JsonKey(name: 'data') + List? get data; + + /// Create a copy of CategoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryAnalyticDtoImplCopyWith<_$CategoryAnalyticDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +CategoryAnalyticItemDto _$CategoryAnalyticItemDtoFromJson( + Map json, +) { + return _CategoryAnalyticItemDto.fromJson(json); +} + +/// @nodoc +mixin _$CategoryAnalyticItemDto { + @JsonKey(name: 'category_id') + String? get categoryId => throw _privateConstructorUsedError; + @JsonKey(name: 'category_name') + String? get categoryName => throw _privateConstructorUsedError; + @JsonKey(name: 'total_revenue') + int? get totalRevenue => throw _privateConstructorUsedError; + @JsonKey(name: 'total_quantity') + int? get totalQuantity => throw _privateConstructorUsedError; + @JsonKey(name: 'product_count') + int? get productCount => throw _privateConstructorUsedError; + @JsonKey(name: 'order_count') + int? get orderCount => throw _privateConstructorUsedError; + + /// Serializes this CategoryAnalyticItemDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of CategoryAnalyticItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryAnalyticItemDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryAnalyticItemDtoCopyWith<$Res> { + factory $CategoryAnalyticItemDtoCopyWith( + CategoryAnalyticItemDto value, + $Res Function(CategoryAnalyticItemDto) then, + ) = _$CategoryAnalyticItemDtoCopyWithImpl<$Res, CategoryAnalyticItemDto>; + @useResult + $Res call({ + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'total_revenue') int? totalRevenue, + @JsonKey(name: 'total_quantity') int? totalQuantity, + @JsonKey(name: 'product_count') int? productCount, + @JsonKey(name: 'order_count') int? orderCount, + }); +} + +/// @nodoc +class _$CategoryAnalyticItemDtoCopyWithImpl< + $Res, + $Val extends CategoryAnalyticItemDto +> + implements $CategoryAnalyticItemDtoCopyWith<$Res> { + _$CategoryAnalyticItemDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryAnalyticItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? totalRevenue = freezed, + Object? totalQuantity = freezed, + Object? productCount = freezed, + Object? orderCount = freezed, + }) { + return _then( + _value.copyWith( + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + totalRevenue: freezed == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int?, + totalQuantity: freezed == totalQuantity + ? _value.totalQuantity + : totalQuantity // ignore: cast_nullable_to_non_nullable + as int?, + productCount: freezed == productCount + ? _value.productCount + : productCount // ignore: cast_nullable_to_non_nullable + as int?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CategoryAnalyticItemDtoImplCopyWith<$Res> + implements $CategoryAnalyticItemDtoCopyWith<$Res> { + factory _$$CategoryAnalyticItemDtoImplCopyWith( + _$CategoryAnalyticItemDtoImpl value, + $Res Function(_$CategoryAnalyticItemDtoImpl) then, + ) = __$$CategoryAnalyticItemDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'total_revenue') int? totalRevenue, + @JsonKey(name: 'total_quantity') int? totalQuantity, + @JsonKey(name: 'product_count') int? productCount, + @JsonKey(name: 'order_count') int? orderCount, + }); +} + +/// @nodoc +class __$$CategoryAnalyticItemDtoImplCopyWithImpl<$Res> + extends + _$CategoryAnalyticItemDtoCopyWithImpl< + $Res, + _$CategoryAnalyticItemDtoImpl + > + implements _$$CategoryAnalyticItemDtoImplCopyWith<$Res> { + __$$CategoryAnalyticItemDtoImplCopyWithImpl( + _$CategoryAnalyticItemDtoImpl _value, + $Res Function(_$CategoryAnalyticItemDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryAnalyticItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? totalRevenue = freezed, + Object? totalQuantity = freezed, + Object? productCount = freezed, + Object? orderCount = freezed, + }) { + return _then( + _$CategoryAnalyticItemDtoImpl( + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + totalRevenue: freezed == totalRevenue + ? _value.totalRevenue + : totalRevenue // ignore: cast_nullable_to_non_nullable + as int?, + totalQuantity: freezed == totalQuantity + ? _value.totalQuantity + : totalQuantity // ignore: cast_nullable_to_non_nullable + as int?, + productCount: freezed == productCount + ? _value.productCount + : productCount // ignore: cast_nullable_to_non_nullable + as int?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$CategoryAnalyticItemDtoImpl extends _CategoryAnalyticItemDto { + const _$CategoryAnalyticItemDtoImpl({ + @JsonKey(name: 'category_id') this.categoryId, + @JsonKey(name: 'category_name') this.categoryName, + @JsonKey(name: 'total_revenue') this.totalRevenue, + @JsonKey(name: 'total_quantity') this.totalQuantity, + @JsonKey(name: 'product_count') this.productCount, + @JsonKey(name: 'order_count') this.orderCount, + }) : super._(); + + factory _$CategoryAnalyticItemDtoImpl.fromJson(Map json) => + _$$CategoryAnalyticItemDtoImplFromJson(json); + + @override + @JsonKey(name: 'category_id') + final String? categoryId; + @override + @JsonKey(name: 'category_name') + final String? categoryName; + @override + @JsonKey(name: 'total_revenue') + final int? totalRevenue; + @override + @JsonKey(name: 'total_quantity') + final int? totalQuantity; + @override + @JsonKey(name: 'product_count') + final int? productCount; + @override + @JsonKey(name: 'order_count') + final int? orderCount; + + @override + String toString() { + return 'CategoryAnalyticItemDto(categoryId: $categoryId, categoryName: $categoryName, totalRevenue: $totalRevenue, totalQuantity: $totalQuantity, productCount: $productCount, orderCount: $orderCount)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryAnalyticItemDtoImpl && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.totalRevenue, totalRevenue) || + other.totalRevenue == totalRevenue) && + (identical(other.totalQuantity, totalQuantity) || + other.totalQuantity == totalQuantity) && + (identical(other.productCount, productCount) || + other.productCount == productCount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + categoryId, + categoryName, + totalRevenue, + totalQuantity, + productCount, + orderCount, + ); + + /// Create a copy of CategoryAnalyticItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryAnalyticItemDtoImplCopyWith<_$CategoryAnalyticItemDtoImpl> + get copyWith => + __$$CategoryAnalyticItemDtoImplCopyWithImpl< + _$CategoryAnalyticItemDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$CategoryAnalyticItemDtoImplToJson(this); + } +} + +abstract class _CategoryAnalyticItemDto extends CategoryAnalyticItemDto { + const factory _CategoryAnalyticItemDto({ + @JsonKey(name: 'category_id') final String? categoryId, + @JsonKey(name: 'category_name') final String? categoryName, + @JsonKey(name: 'total_revenue') final int? totalRevenue, + @JsonKey(name: 'total_quantity') final int? totalQuantity, + @JsonKey(name: 'product_count') final int? productCount, + @JsonKey(name: 'order_count') final int? orderCount, + }) = _$CategoryAnalyticItemDtoImpl; + const _CategoryAnalyticItemDto._() : super._(); + + factory _CategoryAnalyticItemDto.fromJson(Map json) = + _$CategoryAnalyticItemDtoImpl.fromJson; + + @override + @JsonKey(name: 'category_id') + String? get categoryId; + @override + @JsonKey(name: 'category_name') + String? get categoryName; + @override + @JsonKey(name: 'total_revenue') + int? get totalRevenue; + @override + @JsonKey(name: 'total_quantity') + int? get totalQuantity; + @override + @JsonKey(name: 'product_count') + int? get productCount; + @override + @JsonKey(name: 'order_count') + int? get orderCount; + + /// Create a copy of CategoryAnalyticItemDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryAnalyticItemDtoImplCopyWith<_$CategoryAnalyticItemDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index 2ffcf80..044d525 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -213,3 +213,47 @@ Map _$$ProfitLossProductDataDtoImplToJson( 'average_cost': instance.averageCost, 'profit_per_unit': instance.profitPerUnit, }; + +_$CategoryAnalyticDtoImpl _$$CategoryAnalyticDtoImplFromJson( + Map json, +) => _$CategoryAnalyticDtoImpl( + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + dateFrom: json['date_from'] as String?, + dateTo: json['date_to'] as String?, + data: (json['data'] as List?) + ?.map((e) => CategoryAnalyticItemDto.fromJson(e as Map)) + .toList(), +); + +Map _$$CategoryAnalyticDtoImplToJson( + _$CategoryAnalyticDtoImpl instance, +) => { + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'date_from': instance.dateFrom, + 'date_to': instance.dateTo, + 'data': instance.data, +}; + +_$CategoryAnalyticItemDtoImpl _$$CategoryAnalyticItemDtoImplFromJson( + Map json, +) => _$CategoryAnalyticItemDtoImpl( + categoryId: json['category_id'] as String?, + categoryName: json['category_name'] as String?, + totalRevenue: (json['total_revenue'] as num?)?.toInt(), + totalQuantity: (json['total_quantity'] as num?)?.toInt(), + productCount: (json['product_count'] as num?)?.toInt(), + orderCount: (json['order_count'] as num?)?.toInt(), +); + +Map _$$CategoryAnalyticItemDtoImplToJson( + _$CategoryAnalyticItemDtoImpl instance, +) => { + 'category_id': instance.categoryId, + 'category_name': instance.categoryName, + 'total_revenue': instance.totalRevenue, + 'total_quantity': instance.totalQuantity, + 'product_count': instance.productCount, + 'order_count': instance.orderCount, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index 91c1d26..ec9253b 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -71,4 +71,31 @@ class AnalyticRemoteDataProvider { return DC.error(AnalyticFailure.serverError(e)); } } + + Future> fetchCategory({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + ApiPath.category, + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = CategoryAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchCategoryError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/analytic/dto/category_analytic_dto.dart b/lib/infrastructure/analytic/dto/category_analytic_dto.dart new file mode 100644 index 0000000..55c43ce --- /dev/null +++ b/lib/infrastructure/analytic/dto/category_analytic_dto.dart @@ -0,0 +1,51 @@ +part of '../analytic_dtos.dart'; + +@freezed +class CategoryAnalyticDto with _$CategoryAnalyticDto { + const CategoryAnalyticDto._(); + + const factory CategoryAnalyticDto({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'data') List? data, + }) = _CategoryAnalyticDto; + + factory CategoryAnalyticDto.fromJson(Map json) => + _$CategoryAnalyticDtoFromJson(json); + + CategoryAnalytic toDomain() => CategoryAnalytic( + organizationId: organizationId ?? "", + outletId: outletId ?? "", + dateFrom: dateFrom ?? "", + dateTo: dateTo ?? "", + data: data?.map((e) => e.toDomain()).toList() ?? [], + ); +} + +@freezed +class CategoryAnalyticItemDto with _$CategoryAnalyticItemDto { + const CategoryAnalyticItemDto._(); + + const factory CategoryAnalyticItemDto({ + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'total_revenue') int? totalRevenue, + @JsonKey(name: 'total_quantity') int? totalQuantity, + @JsonKey(name: 'product_count') int? productCount, + @JsonKey(name: 'order_count') int? orderCount, + }) = _CategoryAnalyticItemDto; + + factory CategoryAnalyticItemDto.fromJson(Map json) => + _$CategoryAnalyticItemDtoFromJson(json); + + CategoryAnalyticItem toDomain() => CategoryAnalyticItem( + categoryId: categoryId ?? "", + categoryName: categoryName ?? "", + totalRevenue: totalRevenue ?? 0, + totalQuantity: totalQuantity ?? 0, + productCount: productCount ?? 0, + orderCount: orderCount ?? 0, + ); +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 5cd3412..3acc60a 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -61,4 +61,28 @@ class AnalyticRepository implements IAnalyticRepository { return left(const AnalyticFailure.unexpectedError()); } } + + @override + Future> getCategory({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final result = await _dataProvider.fetchCategory( + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getCategoryError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index aec6edc..912a8d1 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -136,15 +136,15 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i458.ProductLoaderBloc>( () => _i458.ProductLoaderBloc(gh<_i419.IProductRepository>()), ); - gh.factory<_i608.ProfitLossLoaderBloc>( - () => _i608.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); gh.factory<_i882.SalesLoaderBloc>( () => _i882.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i608.ProfitLossLoaderBloc>( + () => _i608.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index b4e4d2a..877fd96 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -167,7 +167,7 @@ class FinanceRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i4.FinancePage(); + return _i18.WrappedRoute(child: const _i4.FinancePage()); }, ); } From b3c72cbbc0286bd0c967fd0cafeaa2ba83020f0c Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 22:49:28 +0700 Subject: [PATCH 055/108] feat: change structure --- .../profit_loss_loader_bloc.dart | 0 .../profit_loss_loader_bloc.freezed.dart | 0 .../profit_loss_loader_event.dart | 0 .../profit_loss_loader_state.dart | 0 .../sales_loader/sales_loader_bloc.dart | 0 .../sales_loader/sales_loader_bloc.freezed.dart | 0 .../sales_loader/sales_loader_event.dart | 0 .../sales_loader/sales_loader_state.dart | 0 lib/injection.config.dart | 16 ++++++++-------- lib/presentation/pages/finance/finance_page.dart | 2 +- lib/presentation/pages/sales/sales_page.dart | 2 +- 11 files changed, 10 insertions(+), 10 deletions(-) rename lib/application/{profit_loss => analytic}/profit_loss_loader/profit_loss_loader_bloc.dart (100%) rename lib/application/{profit_loss => analytic}/profit_loss_loader/profit_loss_loader_bloc.freezed.dart (100%) rename lib/application/{profit_loss => analytic}/profit_loss_loader/profit_loss_loader_event.dart (100%) rename lib/application/{profit_loss => analytic}/profit_loss_loader/profit_loss_loader_state.dart (100%) rename lib/application/{sales => analytic}/sales_loader/sales_loader_bloc.dart (100%) rename lib/application/{sales => analytic}/sales_loader/sales_loader_bloc.freezed.dart (100%) rename lib/application/{sales => analytic}/sales_loader/sales_loader_event.dart (100%) rename lib/application/{sales => analytic}/sales_loader/sales_loader_state.dart (100%) diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart similarity index 100% rename from lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart rename to lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.freezed.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.freezed.dart similarity index 100% rename from lib/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.freezed.dart rename to lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.freezed.dart diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_event.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_event.dart similarity index 100% rename from lib/application/profit_loss/profit_loss_loader/profit_loss_loader_event.dart rename to lib/application/analytic/profit_loss_loader/profit_loss_loader_event.dart diff --git a/lib/application/profit_loss/profit_loss_loader/profit_loss_loader_state.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_state.dart similarity index 100% rename from lib/application/profit_loss/profit_loss_loader/profit_loss_loader_state.dart rename to lib/application/analytic/profit_loss_loader/profit_loss_loader_state.dart diff --git a/lib/application/sales/sales_loader/sales_loader_bloc.dart b/lib/application/analytic/sales_loader/sales_loader_bloc.dart similarity index 100% rename from lib/application/sales/sales_loader/sales_loader_bloc.dart rename to lib/application/analytic/sales_loader/sales_loader_bloc.dart diff --git a/lib/application/sales/sales_loader/sales_loader_bloc.freezed.dart b/lib/application/analytic/sales_loader/sales_loader_bloc.freezed.dart similarity index 100% rename from lib/application/sales/sales_loader/sales_loader_bloc.freezed.dart rename to lib/application/analytic/sales_loader/sales_loader_bloc.freezed.dart diff --git a/lib/application/sales/sales_loader/sales_loader_event.dart b/lib/application/analytic/sales_loader/sales_loader_event.dart similarity index 100% rename from lib/application/sales/sales_loader/sales_loader_event.dart rename to lib/application/analytic/sales_loader/sales_loader_event.dart diff --git a/lib/application/sales/sales_loader/sales_loader_state.dart b/lib/application/analytic/sales_loader/sales_loader_state.dart similarity index 100% rename from lib/application/sales/sales_loader/sales_loader_state.dart rename to lib/application/analytic/sales_loader/sales_loader_state.dart diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 912a8d1..043f9a2 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -9,6 +9,10 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' + as _i11; +import 'package:apskel_owner_flutter/application/analytic/sales_loader/sales_loader_bloc.dart' + as _i889; import 'package:apskel_owner_flutter/application/auth/auth_bloc.dart' as _i945; import 'package:apskel_owner_flutter/application/auth/login_form/login_form_bloc.dart' as _i775; @@ -20,10 +24,6 @@ import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; -import 'package:apskel_owner_flutter/application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart' - as _i608; -import 'package:apskel_owner_flutter/application/sales/sales_loader/sales_loader_bloc.dart' - as _i882; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; import 'package:apskel_owner_flutter/common/di/di_auto_route.dart' as _i311; import 'package:apskel_owner_flutter/common/di/di_connectivity.dart' as _i586; @@ -139,11 +139,11 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); - gh.factory<_i882.SalesLoaderBloc>( - () => _i882.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i889.SalesLoaderBloc>( + () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); - gh.factory<_i608.ProfitLossLoaderBloc>( - () => _i608.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i11.ProfitLossLoaderBloc>( + () => _i11.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index e77e0a7..9389098 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; -import '../../../application/profit_loss/profit_loss_loader/profit_loss_loader_bloc.dart'; +import '../../../application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart'; import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../domain/analytic/analytic.dart'; diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart index 4b58e05..2b70f1f 100644 --- a/lib/presentation/pages/sales/sales_page.dart +++ b/lib/presentation/pages/sales/sales_page.dart @@ -4,7 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:shimmer/shimmer.dart'; import 'dart:math' as math; -import '../../../application/sales/sales_loader/sales_loader_bloc.dart'; +import '../../../application/analytic/sales_loader/sales_loader_bloc.dart'; import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../domain/analytic/analytic.dart'; From 577adb7964bdc7f22c87ef130cd7dbdb8ad4d502 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 23:11:31 +0700 Subject: [PATCH 056/108] feat: category analytic --- .../category_analytic_loader_bloc.dart | 51 +++ ...category_analytic_loader_bloc.freezed.dart | 401 ++++++++++++++++++ .../category_analytic_loader_event.dart | 6 + .../category_analytic_loader_state.dart | 15 + .../datasource/remote_data_provider.dart | 2 +- lib/injection.config.dart | 5 + .../pages/finance/finance_page.dart | 35 +- .../pages/finance/widgets/category.dart | 163 ++++--- 8 files changed, 618 insertions(+), 60 deletions(-) create mode 100644 lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart create mode 100644 lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.freezed.dart create mode 100644 lib/application/analytic/category_analytic_loader/category_analytic_loader_event.dart create mode 100644 lib/application/analytic/category_analytic_loader/category_analytic_loader_state.dart diff --git a/lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart b/lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart new file mode 100644 index 0000000..eb99bfd --- /dev/null +++ b/lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart @@ -0,0 +1,51 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'category_analytic_loader_event.dart'; +part 'category_analytic_loader_state.dart'; +part 'category_analytic_loader_bloc.freezed.dart'; + +@injectable +class CategoryAnalyticLoaderBloc + extends Bloc { + final IAnalyticRepository _repository; + + CategoryAnalyticLoaderBloc(this._repository) + : super(CategoryAnalyticLoaderState.initial()) { + on(_onCategoryAnalyticLoaderEvent); + } + + Future _onCategoryAnalyticLoaderEvent( + CategoryAnalyticLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit( + state.copyWith( + isFetching: true, + failureOptionCategoryAnalytic: none(), + ), + ); + + final result = await _repository.getCategory( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionCategoryAnalytic: optionOf(f)), + (categoryAnalytic) => + state.copyWith(categoryAnalytic: categoryAnalytic), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.freezed.dart b/lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.freezed.dart new file mode 100644 index 0000000..41a5c79 --- /dev/null +++ b/lib/application/analytic/category_analytic_loader/category_analytic_loader_bloc.freezed.dart @@ -0,0 +1,401 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'category_analytic_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$CategoryAnalyticLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryAnalyticLoaderEventCopyWith<$Res> { + factory $CategoryAnalyticLoaderEventCopyWith( + CategoryAnalyticLoaderEvent value, + $Res Function(CategoryAnalyticLoaderEvent) then, + ) = + _$CategoryAnalyticLoaderEventCopyWithImpl< + $Res, + CategoryAnalyticLoaderEvent + >; +} + +/// @nodoc +class _$CategoryAnalyticLoaderEventCopyWithImpl< + $Res, + $Val extends CategoryAnalyticLoaderEvent +> + implements $CategoryAnalyticLoaderEventCopyWith<$Res> { + _$CategoryAnalyticLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$CategoryAnalyticLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'CategoryAnalyticLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements CategoryAnalyticLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$CategoryAnalyticLoaderState { + CategoryAnalytic get categoryAnalytic => throw _privateConstructorUsedError; + Option get failureOptionCategoryAnalytic => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of CategoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CategoryAnalyticLoaderStateCopyWith + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CategoryAnalyticLoaderStateCopyWith<$Res> { + factory $CategoryAnalyticLoaderStateCopyWith( + CategoryAnalyticLoaderState value, + $Res Function(CategoryAnalyticLoaderState) then, + ) = + _$CategoryAnalyticLoaderStateCopyWithImpl< + $Res, + CategoryAnalyticLoaderState + >; + @useResult + $Res call({ + CategoryAnalytic categoryAnalytic, + Option failureOptionCategoryAnalytic, + bool isFetching, + }); + + $CategoryAnalyticCopyWith<$Res> get categoryAnalytic; +} + +/// @nodoc +class _$CategoryAnalyticLoaderStateCopyWithImpl< + $Res, + $Val extends CategoryAnalyticLoaderState +> + implements $CategoryAnalyticLoaderStateCopyWith<$Res> { + _$CategoryAnalyticLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CategoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryAnalytic = null, + Object? failureOptionCategoryAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + categoryAnalytic: null == categoryAnalytic + ? _value.categoryAnalytic + : categoryAnalytic // ignore: cast_nullable_to_non_nullable + as CategoryAnalytic, + failureOptionCategoryAnalytic: null == failureOptionCategoryAnalytic + ? _value.failureOptionCategoryAnalytic + : failureOptionCategoryAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of CategoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $CategoryAnalyticCopyWith<$Res> get categoryAnalytic { + return $CategoryAnalyticCopyWith<$Res>(_value.categoryAnalytic, (value) { + return _then(_value.copyWith(categoryAnalytic: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$CategoryAnalyticLoaderStateImplCopyWith<$Res> + implements $CategoryAnalyticLoaderStateCopyWith<$Res> { + factory _$$CategoryAnalyticLoaderStateImplCopyWith( + _$CategoryAnalyticLoaderStateImpl value, + $Res Function(_$CategoryAnalyticLoaderStateImpl) then, + ) = __$$CategoryAnalyticLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + CategoryAnalytic categoryAnalytic, + Option failureOptionCategoryAnalytic, + bool isFetching, + }); + + @override + $CategoryAnalyticCopyWith<$Res> get categoryAnalytic; +} + +/// @nodoc +class __$$CategoryAnalyticLoaderStateImplCopyWithImpl<$Res> + extends + _$CategoryAnalyticLoaderStateCopyWithImpl< + $Res, + _$CategoryAnalyticLoaderStateImpl + > + implements _$$CategoryAnalyticLoaderStateImplCopyWith<$Res> { + __$$CategoryAnalyticLoaderStateImplCopyWithImpl( + _$CategoryAnalyticLoaderStateImpl _value, + $Res Function(_$CategoryAnalyticLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CategoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryAnalytic = null, + Object? failureOptionCategoryAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _$CategoryAnalyticLoaderStateImpl( + categoryAnalytic: null == categoryAnalytic + ? _value.categoryAnalytic + : categoryAnalytic // ignore: cast_nullable_to_non_nullable + as CategoryAnalytic, + failureOptionCategoryAnalytic: null == failureOptionCategoryAnalytic + ? _value.failureOptionCategoryAnalytic + : failureOptionCategoryAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$CategoryAnalyticLoaderStateImpl + implements _CategoryAnalyticLoaderState { + const _$CategoryAnalyticLoaderStateImpl({ + required this.categoryAnalytic, + required this.failureOptionCategoryAnalytic, + this.isFetching = false, + }); + + @override + final CategoryAnalytic categoryAnalytic; + @override + final Option failureOptionCategoryAnalytic; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'CategoryAnalyticLoaderState(categoryAnalytic: $categoryAnalytic, failureOptionCategoryAnalytic: $failureOptionCategoryAnalytic, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CategoryAnalyticLoaderStateImpl && + (identical(other.categoryAnalytic, categoryAnalytic) || + other.categoryAnalytic == categoryAnalytic) && + (identical( + other.failureOptionCategoryAnalytic, + failureOptionCategoryAnalytic, + ) || + other.failureOptionCategoryAnalytic == + failureOptionCategoryAnalytic) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + categoryAnalytic, + failureOptionCategoryAnalytic, + isFetching, + ); + + /// Create a copy of CategoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CategoryAnalyticLoaderStateImplCopyWith<_$CategoryAnalyticLoaderStateImpl> + get copyWith => + __$$CategoryAnalyticLoaderStateImplCopyWithImpl< + _$CategoryAnalyticLoaderStateImpl + >(this, _$identity); +} + +abstract class _CategoryAnalyticLoaderState + implements CategoryAnalyticLoaderState { + const factory _CategoryAnalyticLoaderState({ + required final CategoryAnalytic categoryAnalytic, + required final Option failureOptionCategoryAnalytic, + final bool isFetching, + }) = _$CategoryAnalyticLoaderStateImpl; + + @override + CategoryAnalytic get categoryAnalytic; + @override + Option get failureOptionCategoryAnalytic; + @override + bool get isFetching; + + /// Create a copy of CategoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CategoryAnalyticLoaderStateImplCopyWith<_$CategoryAnalyticLoaderStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/analytic/category_analytic_loader/category_analytic_loader_event.dart b/lib/application/analytic/category_analytic_loader/category_analytic_loader_event.dart new file mode 100644 index 0000000..87c2994 --- /dev/null +++ b/lib/application/analytic/category_analytic_loader/category_analytic_loader_event.dart @@ -0,0 +1,6 @@ +part of 'category_analytic_loader_bloc.dart'; + +@freezed +class CategoryAnalyticLoaderEvent with _$CategoryAnalyticLoaderEvent { + const factory CategoryAnalyticLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/analytic/category_analytic_loader/category_analytic_loader_state.dart b/lib/application/analytic/category_analytic_loader/category_analytic_loader_state.dart new file mode 100644 index 0000000..0754233 --- /dev/null +++ b/lib/application/analytic/category_analytic_loader/category_analytic_loader_state.dart @@ -0,0 +1,15 @@ +part of 'category_analytic_loader_bloc.dart'; + +@freezed +class CategoryAnalyticLoaderState with _$CategoryAnalyticLoaderState { + const factory CategoryAnalyticLoaderState({ + required CategoryAnalytic categoryAnalytic, + required Option failureOptionCategoryAnalytic, + @Default(false) bool isFetching, + }) = _CategoryAnalyticLoaderState; + + factory CategoryAnalyticLoaderState.initial() => CategoryAnalyticLoaderState( + categoryAnalytic: CategoryAnalytic.empty(), + failureOptionCategoryAnalytic: none(), + ); +} diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index ec9253b..9fd53eb 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -78,7 +78,7 @@ class AnalyticRemoteDataProvider { }) async { try { final response = await _apiClient.get( - ApiPath.category, + ApiPath.categoryAnalytic, params: { 'date_from': dateFrom.toServerDate, 'date_to': dateTo.toServerDate, diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 043f9a2..e2ca7f3 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -9,6 +9,8 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:apskel_owner_flutter/application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart' + as _i1038; import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' as _i11; import 'package:apskel_owner_flutter/application/analytic/sales_loader/sales_loader_bloc.dart' @@ -145,6 +147,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i11.ProfitLossLoaderBloc>( () => _i11.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i1038.CategoryAnalyticLoaderBloc>( + () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index 9389098..b165172 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart'; import '../../../application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart'; import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; @@ -23,9 +24,18 @@ class FinancePage extends StatefulWidget implements AutoRouteWrapper { State createState() => _FinancePageState(); @override - Widget wrappedRoute(BuildContext context) => BlocProvider( - create: (_) => - getIt()..add(ProfitLossLoaderEvent.fetched()), + Widget wrappedRoute(BuildContext context) => MultiBlocProvider( + providers: [ + BlocProvider( + create: (_) => + getIt()..add(ProfitLossLoaderEvent.fetched()), + ), + BlocProvider( + create: (context) => + getIt() + ..add(CategoryAnalyticLoaderEvent.fetched()), + ), + ], child: this, ); } @@ -149,11 +159,20 @@ class _FinancePageState extends State ), ), - SliverToBoxAdapter( - child: SlideTransition( - position: _slideAnimation, - child: FinanceCategory(), - ), + BlocBuilder< + CategoryAnalyticLoaderBloc, + CategoryAnalyticLoaderState + >( + builder: (context, stateCategory) { + return SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: FinanceCategory( + categories: stateCategory.categoryAnalytic.data, + ), + ), + ); + }, ), // Product Analysis Section diff --git a/lib/presentation/pages/finance/widgets/category.dart b/lib/presentation/pages/finance/widgets/category.dart index 7c18f38..747ffba 100644 --- a/lib/presentation/pages/finance/widgets/category.dart +++ b/lib/presentation/pages/finance/widgets/category.dart @@ -1,33 +1,21 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import 'package:intl/intl.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; +import '../../../components/widgets/empty_widget.dart'; class FinanceCategory extends StatelessWidget { - const FinanceCategory({super.key}); + final List categories; + + const FinanceCategory({super.key, required this.categories}); @override Widget build(BuildContext context) { - final categories = [ - { - 'name': 'Makanan & Minuman', - 'amount': 'Rp 18.5M', - 'percentage': 72, - 'color': AppColor.primary, - }, - { - 'name': 'Produk Retail', - 'amount': 'Rp 4.2M', - 'percentage': 16, - 'color': AppColor.secondary, - }, - { - 'name': 'Jasa & Lainnya', - 'amount': 'Rp 3.1M', - 'percentage': 12, - 'color': AppColor.info, - }, - ]; + final totalRevenue = _calculateTotalRevenue(); + final sortedCategories = _sortCategoriesByRevenue(); return Container( margin: const EdgeInsets.all(16), @@ -70,25 +58,25 @@ class FinanceCategory extends StatelessWidget { ), const SizedBox(height: 20), - ...categories - .map( - (category) => _buildCategoryItem( - category['name'] as String, - category['amount'] as String, - category['percentage'] as int, - category['color'] as Color, - ), - ) - .toList(), + // Show empty state if no categories + if (categories.isEmpty) + _buildEmptyState() + else + ...sortedCategories.asMap().entries.map( + (entry) => _buildCategoryItem( + entry.value, + _calculatePercentage(entry.value.totalRevenue, totalRevenue), + _getCategoryColor(entry.key), + ), + ), ], ), ); } Widget _buildCategoryItem( - String name, - String amount, - int percentage, + CategoryAnalyticItem category, + double percentage, Color color, ) { return Container( @@ -98,30 +86,59 @@ class FinanceCategory extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( + Expanded( + child: Row( + children: [ + Container( + width: 12, + height: 12, + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(6), + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + category.categoryName, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w600, + ), + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 2), + Text( + '${category.productCount} produk โ€ข ${category.orderCount} pesanan', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + ), + ), + ], + ), + ), + ], + ), + ), + const SizedBox(width: 12), + Column( + crossAxisAlignment: CrossAxisAlignment.end, children: [ - Container( - width: 12, - height: 12, - decoration: BoxDecoration( + Text( + category.totalRevenue.currencyFormatRp, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, color: color, - borderRadius: BorderRadius.circular(6), ), ), - const SizedBox(width: 12), Text( - name, - style: AppStyle.md.copyWith(fontWeight: FontWeight.w600), + '${NumberFormat('#,###', 'id_ID').format(category.totalQuantity)} unit', + style: AppStyle.xs.copyWith(color: AppColor.textSecondary), ), ], ), - Text( - amount, - style: AppStyle.md.copyWith( - fontWeight: FontWeight.bold, - color: color, - ), - ), ], ), const SizedBox(height: 8), @@ -135,7 +152,7 @@ class FinanceCategory extends StatelessWidget { Align( alignment: Alignment.centerRight, child: Text( - '$percentage%', + '${percentage.toStringAsFixed(1)}%', style: AppStyle.xs.copyWith(color: AppColor.textSecondary), ), ), @@ -143,4 +160,48 @@ class FinanceCategory extends StatelessWidget { ), ); } + + Widget _buildEmptyState() { + return EmptyWidget( + title: 'Belum ada data kategori', + message: 'Data kategori penjualan akan muncul di sini', + ); + } + + // Helper methods + int _calculateTotalRevenue() { + return categories.fold(0, (sum, category) => sum + category.totalRevenue); + } + + List _sortCategoriesByRevenue() { + final sorted = List.from(categories); + sorted.sort((a, b) => b.totalRevenue.compareTo(a.totalRevenue)); + return sorted; + } + + double _calculatePercentage(int categoryRevenue, int totalRevenue) { + if (totalRevenue == 0) return 0; + return (categoryRevenue / totalRevenue) * 100; + } + + Color _getCategoryColor(int index) { + // Predefined color palette for categories + const colors = [ + AppColor.primary, + AppColor.secondary, + AppColor.success, + AppColor.warning, + AppColor.error, + AppColor.info, + ]; + + // Generate additional colors if needed + if (index < colors.length) { + return colors[index]; + } else { + // Generate colors based on index for unlimited categories + final hue = (index * 137.5) % 360; // Golden angle approximation + return HSLColor.fromAHSL(1.0, hue, 0.7, 0.5).toColor(); + } + } } From d22ffdd6d041e92daaa57db8b969e5ad62c52327 Mon Sep 17 00:00:00 2001 From: efrilm Date: Sun, 17 Aug 2025 23:54:28 +0700 Subject: [PATCH 057/108] feat: inventory --- .../inventory_analytic_loader_bloc.dart | 50 + ...nventory_analytic_loader_bloc.freezed.dart | 406 ++++ .../inventory_analytic_loader_event.dart | 6 + .../inventory_analytic_loader_state.dart | 16 + lib/common/url/api_path.dart | 4 + lib/domain/analytic/analytic.dart | 1 + lib/domain/analytic/analytic.freezed.dart | 1442 ++++++++++++++ .../entities/inventory_analytic_entity.dart | 119 ++ .../repositories/i_analytic_repository.dart | 5 + .../analytic/analytic_dtos.dart | 1 + .../analytic/analytic_dtos.freezed.dart | 1664 +++++++++++++++++ .../analytic/analytic_dtos.g.dart | 128 ++ .../datasource/remote_data_provider.dart | 28 + .../analytic/dto/inventory_analytic_dto.dart | 139 ++ .../repositories/analytic_repository.dart | 32 +- lib/injection.config.dart | 14 +- .../pages/inventory/inventory_page.dart | 456 ++--- .../inventory/widgets/ingredient_tile.dart | 505 ++++- .../pages/inventory/widgets/product_tile.dart | 582 ++++-- .../pages/inventory/widgets/stat_card.dart | 26 - 20 files changed, 5118 insertions(+), 506 deletions(-) create mode 100644 lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart create mode 100644 lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart create mode 100644 lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart create mode 100644 lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart create mode 100644 lib/domain/analytic/entities/inventory_analytic_entity.dart create mode 100644 lib/infrastructure/analytic/dto/inventory_analytic_dto.dart diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart new file mode 100644 index 0000000..3848d7e --- /dev/null +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart @@ -0,0 +1,50 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'inventory_analytic_loader_event.dart'; +part 'inventory_analytic_loader_state.dart'; +part 'inventory_analytic_loader_bloc.freezed.dart'; + +@injectable +class InventoryAnalyticLoaderBloc + extends Bloc { + final IAnalyticRepository _repository; + InventoryAnalyticLoaderBloc(this._repository) + : super(InventoryAnalyticLoaderState.initial()) { + on(_onInventoryAnalyticLoaderEvent); + } + + Future _onInventoryAnalyticLoaderEvent( + InventoryAnalyticLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit( + state.copyWith( + isFetching: true, + failureOptionInventoryAnalytic: none(), + ), + ); + + final result = await _repository.getInventory( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionInventoryAnalytic: optionOf(f)), + (inventoryAnalytic) => + state.copyWith(inventoryAnalytic: inventoryAnalytic), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart new file mode 100644 index 0000000..a069165 --- /dev/null +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart @@ -0,0 +1,406 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'inventory_analytic_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$InventoryAnalyticLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryAnalyticLoaderEventCopyWith<$Res> { + factory $InventoryAnalyticLoaderEventCopyWith( + InventoryAnalyticLoaderEvent value, + $Res Function(InventoryAnalyticLoaderEvent) then, + ) = + _$InventoryAnalyticLoaderEventCopyWithImpl< + $Res, + InventoryAnalyticLoaderEvent + >; +} + +/// @nodoc +class _$InventoryAnalyticLoaderEventCopyWithImpl< + $Res, + $Val extends InventoryAnalyticLoaderEvent +> + implements $InventoryAnalyticLoaderEventCopyWith<$Res> { + _$InventoryAnalyticLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$InventoryAnalyticLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'InventoryAnalyticLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements InventoryAnalyticLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$InventoryAnalyticLoaderState { + InventoryAnalytic get inventoryAnalytic => throw _privateConstructorUsedError; + Option get failureOptionInventoryAnalytic => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of InventoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryAnalyticLoaderStateCopyWith + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryAnalyticLoaderStateCopyWith<$Res> { + factory $InventoryAnalyticLoaderStateCopyWith( + InventoryAnalyticLoaderState value, + $Res Function(InventoryAnalyticLoaderState) then, + ) = + _$InventoryAnalyticLoaderStateCopyWithImpl< + $Res, + InventoryAnalyticLoaderState + >; + @useResult + $Res call({ + InventoryAnalytic inventoryAnalytic, + Option failureOptionInventoryAnalytic, + bool isFetching, + }); + + $InventoryAnalyticCopyWith<$Res> get inventoryAnalytic; +} + +/// @nodoc +class _$InventoryAnalyticLoaderStateCopyWithImpl< + $Res, + $Val extends InventoryAnalyticLoaderState +> + implements $InventoryAnalyticLoaderStateCopyWith<$Res> { + _$InventoryAnalyticLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? inventoryAnalytic = null, + Object? failureOptionInventoryAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + inventoryAnalytic: null == inventoryAnalytic + ? _value.inventoryAnalytic + : inventoryAnalytic // ignore: cast_nullable_to_non_nullable + as InventoryAnalytic, + failureOptionInventoryAnalytic: + null == failureOptionInventoryAnalytic + ? _value.failureOptionInventoryAnalytic + : failureOptionInventoryAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of InventoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $InventoryAnalyticCopyWith<$Res> get inventoryAnalytic { + return $InventoryAnalyticCopyWith<$Res>(_value.inventoryAnalytic, (value) { + return _then(_value.copyWith(inventoryAnalytic: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$InventoryAnalyticLoaderStateImplCopyWith<$Res> + implements $InventoryAnalyticLoaderStateCopyWith<$Res> { + factory _$$InventoryAnalyticLoaderStateImplCopyWith( + _$InventoryAnalyticLoaderStateImpl value, + $Res Function(_$InventoryAnalyticLoaderStateImpl) then, + ) = __$$InventoryAnalyticLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + InventoryAnalytic inventoryAnalytic, + Option failureOptionInventoryAnalytic, + bool isFetching, + }); + + @override + $InventoryAnalyticCopyWith<$Res> get inventoryAnalytic; +} + +/// @nodoc +class __$$InventoryAnalyticLoaderStateImplCopyWithImpl<$Res> + extends + _$InventoryAnalyticLoaderStateCopyWithImpl< + $Res, + _$InventoryAnalyticLoaderStateImpl + > + implements _$$InventoryAnalyticLoaderStateImplCopyWith<$Res> { + __$$InventoryAnalyticLoaderStateImplCopyWithImpl( + _$InventoryAnalyticLoaderStateImpl _value, + $Res Function(_$InventoryAnalyticLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? inventoryAnalytic = null, + Object? failureOptionInventoryAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _$InventoryAnalyticLoaderStateImpl( + inventoryAnalytic: null == inventoryAnalytic + ? _value.inventoryAnalytic + : inventoryAnalytic // ignore: cast_nullable_to_non_nullable + as InventoryAnalytic, + failureOptionInventoryAnalytic: null == failureOptionInventoryAnalytic + ? _value.failureOptionInventoryAnalytic + : failureOptionInventoryAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$InventoryAnalyticLoaderStateImpl + implements _InventoryAnalyticLoaderState { + const _$InventoryAnalyticLoaderStateImpl({ + required this.inventoryAnalytic, + required this.failureOptionInventoryAnalytic, + this.isFetching = false, + }); + + @override + final InventoryAnalytic inventoryAnalytic; + @override + final Option failureOptionInventoryAnalytic; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'InventoryAnalyticLoaderState(inventoryAnalytic: $inventoryAnalytic, failureOptionInventoryAnalytic: $failureOptionInventoryAnalytic, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryAnalyticLoaderStateImpl && + (identical(other.inventoryAnalytic, inventoryAnalytic) || + other.inventoryAnalytic == inventoryAnalytic) && + (identical( + other.failureOptionInventoryAnalytic, + failureOptionInventoryAnalytic, + ) || + other.failureOptionInventoryAnalytic == + failureOptionInventoryAnalytic) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + inventoryAnalytic, + failureOptionInventoryAnalytic, + isFetching, + ); + + /// Create a copy of InventoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryAnalyticLoaderStateImplCopyWith< + _$InventoryAnalyticLoaderStateImpl + > + get copyWith => + __$$InventoryAnalyticLoaderStateImplCopyWithImpl< + _$InventoryAnalyticLoaderStateImpl + >(this, _$identity); +} + +abstract class _InventoryAnalyticLoaderState + implements InventoryAnalyticLoaderState { + const factory _InventoryAnalyticLoaderState({ + required final InventoryAnalytic inventoryAnalytic, + required final Option failureOptionInventoryAnalytic, + final bool isFetching, + }) = _$InventoryAnalyticLoaderStateImpl; + + @override + InventoryAnalytic get inventoryAnalytic; + @override + Option get failureOptionInventoryAnalytic; + @override + bool get isFetching; + + /// Create a copy of InventoryAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryAnalyticLoaderStateImplCopyWith< + _$InventoryAnalyticLoaderStateImpl + > + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart new file mode 100644 index 0000000..121d123 --- /dev/null +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart @@ -0,0 +1,6 @@ +part of 'inventory_analytic_loader_bloc.dart'; + +@freezed +class InventoryAnalyticLoaderEvent with _$InventoryAnalyticLoaderEvent { + const factory InventoryAnalyticLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart new file mode 100644 index 0000000..2cdd303 --- /dev/null +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart @@ -0,0 +1,16 @@ +part of 'inventory_analytic_loader_bloc.dart'; + +@freezed +class InventoryAnalyticLoaderState with _$InventoryAnalyticLoaderState { + const factory InventoryAnalyticLoaderState({ + required InventoryAnalytic inventoryAnalytic, + required Option failureOptionInventoryAnalytic, + @Default(false) bool isFetching, + }) = _InventoryAnalyticLoaderState; + + factory InventoryAnalyticLoaderState.initial() => + InventoryAnalyticLoaderState( + inventoryAnalytic: InventoryAnalytic.empty(), + failureOptionInventoryAnalytic: None(), + ); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index dc970fb..ad89d04 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -8,6 +8,10 @@ class ApiPath { static const String profitLossAnalytic = '/api/v1/analytics/profit-loss'; static const String categoryAnalytic = '/api/v1/analytics/categories'; + // Inventory + static const String inventoryReportDetail = + '/api/v1/inventory/report/details'; + // Category static const String category = '/api/v1/categories'; diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart index 8933596..13925fe 100644 --- a/lib/domain/analytic/analytic.dart +++ b/lib/domain/analytic/analytic.dart @@ -7,4 +7,5 @@ part 'analytic.freezed.dart'; part 'entities/sales_analytic_entity.dart'; part 'entities/profit_loss_analytic_entity.dart'; part 'entities/category_analytic_entity.dart'; +part 'entities/inventory_analytic_entity.dart'; part 'failures/analytic_failure.dart'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index 0291711..6e221e6 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -2803,6 +2803,1448 @@ abstract class _CategoryAnalyticItem implements CategoryAnalyticItem { get copyWith => throw _privateConstructorUsedError; } +/// @nodoc +mixin _$InventoryAnalytic { + InventorySummary get summary => throw _privateConstructorUsedError; + List get products => throw _privateConstructorUsedError; + List get ingredients => + throw _privateConstructorUsedError; + + /// Create a copy of InventoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryAnalyticCopyWith<$Res> { + factory $InventoryAnalyticCopyWith( + InventoryAnalytic value, + $Res Function(InventoryAnalytic) then, + ) = _$InventoryAnalyticCopyWithImpl<$Res, InventoryAnalytic>; + @useResult + $Res call({ + InventorySummary summary, + List products, + List ingredients, + }); + + $InventorySummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class _$InventoryAnalyticCopyWithImpl<$Res, $Val extends InventoryAnalytic> + implements $InventoryAnalyticCopyWith<$Res> { + _$InventoryAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? summary = null, + Object? products = null, + Object? ingredients = null, + }) { + return _then( + _value.copyWith( + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as InventorySummary, + products: null == products + ? _value.products + : products // ignore: cast_nullable_to_non_nullable + as List, + ingredients: null == ingredients + ? _value.ingredients + : ingredients // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } + + /// Create a copy of InventoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $InventorySummaryCopyWith<$Res> get summary { + return $InventorySummaryCopyWith<$Res>(_value.summary, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$InventoryAnalyticImplCopyWith<$Res> + implements $InventoryAnalyticCopyWith<$Res> { + factory _$$InventoryAnalyticImplCopyWith( + _$InventoryAnalyticImpl value, + $Res Function(_$InventoryAnalyticImpl) then, + ) = __$$InventoryAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + InventorySummary summary, + List products, + List ingredients, + }); + + @override + $InventorySummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class __$$InventoryAnalyticImplCopyWithImpl<$Res> + extends _$InventoryAnalyticCopyWithImpl<$Res, _$InventoryAnalyticImpl> + implements _$$InventoryAnalyticImplCopyWith<$Res> { + __$$InventoryAnalyticImplCopyWithImpl( + _$InventoryAnalyticImpl _value, + $Res Function(_$InventoryAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? summary = null, + Object? products = null, + Object? ingredients = null, + }) { + return _then( + _$InventoryAnalyticImpl( + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as InventorySummary, + products: null == products + ? _value._products + : products // ignore: cast_nullable_to_non_nullable + as List, + ingredients: null == ingredients + ? _value._ingredients + : ingredients // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$InventoryAnalyticImpl implements _InventoryAnalytic { + const _$InventoryAnalyticImpl({ + required this.summary, + required final List products, + required final List ingredients, + }) : _products = products, + _ingredients = ingredients; + + @override + final InventorySummary summary; + final List _products; + @override + List get products { + if (_products is EqualUnmodifiableListView) return _products; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_products); + } + + final List _ingredients; + @override + List get ingredients { + if (_ingredients is EqualUnmodifiableListView) return _ingredients; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_ingredients); + } + + @override + String toString() { + return 'InventoryAnalytic(summary: $summary, products: $products, ingredients: $ingredients)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryAnalyticImpl && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._products, _products) && + const DeepCollectionEquality().equals( + other._ingredients, + _ingredients, + )); + } + + @override + int get hashCode => Object.hash( + runtimeType, + summary, + const DeepCollectionEquality().hash(_products), + const DeepCollectionEquality().hash(_ingredients), + ); + + /// Create a copy of InventoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryAnalyticImplCopyWith<_$InventoryAnalyticImpl> get copyWith => + __$$InventoryAnalyticImplCopyWithImpl<_$InventoryAnalyticImpl>( + this, + _$identity, + ); +} + +abstract class _InventoryAnalytic implements InventoryAnalytic { + const factory _InventoryAnalytic({ + required final InventorySummary summary, + required final List products, + required final List ingredients, + }) = _$InventoryAnalyticImpl; + + @override + InventorySummary get summary; + @override + List get products; + @override + List get ingredients; + + /// Create a copy of InventoryAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryAnalyticImplCopyWith<_$InventoryAnalyticImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$InventorySummary { + int get totalProducts => throw _privateConstructorUsedError; + int get totalIngredients => throw _privateConstructorUsedError; + int get totalValue => throw _privateConstructorUsedError; + int get lowStockProducts => throw _privateConstructorUsedError; + int get lowStockIngredients => throw _privateConstructorUsedError; + int get zeroStockProducts => throw _privateConstructorUsedError; + int get zeroStockIngredients => throw _privateConstructorUsedError; + int get totalSoldProducts => throw _privateConstructorUsedError; + int get totalSoldIngredients => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get outletName => throw _privateConstructorUsedError; + String get generatedAt => throw _privateConstructorUsedError; + + /// Create a copy of InventorySummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventorySummaryCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventorySummaryCopyWith<$Res> { + factory $InventorySummaryCopyWith( + InventorySummary value, + $Res Function(InventorySummary) then, + ) = _$InventorySummaryCopyWithImpl<$Res, InventorySummary>; + @useResult + $Res call({ + int totalProducts, + int totalIngredients, + int totalValue, + int lowStockProducts, + int lowStockIngredients, + int zeroStockProducts, + int zeroStockIngredients, + int totalSoldProducts, + int totalSoldIngredients, + String outletId, + String outletName, + String generatedAt, + }); +} + +/// @nodoc +class _$InventorySummaryCopyWithImpl<$Res, $Val extends InventorySummary> + implements $InventorySummaryCopyWith<$Res> { + _$InventorySummaryCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventorySummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalProducts = null, + Object? totalIngredients = null, + Object? totalValue = null, + Object? lowStockProducts = null, + Object? lowStockIngredients = null, + Object? zeroStockProducts = null, + Object? zeroStockIngredients = null, + Object? totalSoldProducts = null, + Object? totalSoldIngredients = null, + Object? outletId = null, + Object? outletName = null, + Object? generatedAt = null, + }) { + return _then( + _value.copyWith( + totalProducts: null == totalProducts + ? _value.totalProducts + : totalProducts // ignore: cast_nullable_to_non_nullable + as int, + totalIngredients: null == totalIngredients + ? _value.totalIngredients + : totalIngredients // ignore: cast_nullable_to_non_nullable + as int, + totalValue: null == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int, + lowStockProducts: null == lowStockProducts + ? _value.lowStockProducts + : lowStockProducts // ignore: cast_nullable_to_non_nullable + as int, + lowStockIngredients: null == lowStockIngredients + ? _value.lowStockIngredients + : lowStockIngredients // ignore: cast_nullable_to_non_nullable + as int, + zeroStockProducts: null == zeroStockProducts + ? _value.zeroStockProducts + : zeroStockProducts // ignore: cast_nullable_to_non_nullable + as int, + zeroStockIngredients: null == zeroStockIngredients + ? _value.zeroStockIngredients + : zeroStockIngredients // ignore: cast_nullable_to_non_nullable + as int, + totalSoldProducts: null == totalSoldProducts + ? _value.totalSoldProducts + : totalSoldProducts // ignore: cast_nullable_to_non_nullable + as int, + totalSoldIngredients: null == totalSoldIngredients + ? _value.totalSoldIngredients + : totalSoldIngredients // ignore: cast_nullable_to_non_nullable + as int, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + outletName: null == outletName + ? _value.outletName + : outletName // ignore: cast_nullable_to_non_nullable + as String, + generatedAt: null == generatedAt + ? _value.generatedAt + : generatedAt // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$InventorySummaryImplCopyWith<$Res> + implements $InventorySummaryCopyWith<$Res> { + factory _$$InventorySummaryImplCopyWith( + _$InventorySummaryImpl value, + $Res Function(_$InventorySummaryImpl) then, + ) = __$$InventorySummaryImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + int totalProducts, + int totalIngredients, + int totalValue, + int lowStockProducts, + int lowStockIngredients, + int zeroStockProducts, + int zeroStockIngredients, + int totalSoldProducts, + int totalSoldIngredients, + String outletId, + String outletName, + String generatedAt, + }); +} + +/// @nodoc +class __$$InventorySummaryImplCopyWithImpl<$Res> + extends _$InventorySummaryCopyWithImpl<$Res, _$InventorySummaryImpl> + implements _$$InventorySummaryImplCopyWith<$Res> { + __$$InventorySummaryImplCopyWithImpl( + _$InventorySummaryImpl _value, + $Res Function(_$InventorySummaryImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventorySummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalProducts = null, + Object? totalIngredients = null, + Object? totalValue = null, + Object? lowStockProducts = null, + Object? lowStockIngredients = null, + Object? zeroStockProducts = null, + Object? zeroStockIngredients = null, + Object? totalSoldProducts = null, + Object? totalSoldIngredients = null, + Object? outletId = null, + Object? outletName = null, + Object? generatedAt = null, + }) { + return _then( + _$InventorySummaryImpl( + totalProducts: null == totalProducts + ? _value.totalProducts + : totalProducts // ignore: cast_nullable_to_non_nullable + as int, + totalIngredients: null == totalIngredients + ? _value.totalIngredients + : totalIngredients // ignore: cast_nullable_to_non_nullable + as int, + totalValue: null == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int, + lowStockProducts: null == lowStockProducts + ? _value.lowStockProducts + : lowStockProducts // ignore: cast_nullable_to_non_nullable + as int, + lowStockIngredients: null == lowStockIngredients + ? _value.lowStockIngredients + : lowStockIngredients // ignore: cast_nullable_to_non_nullable + as int, + zeroStockProducts: null == zeroStockProducts + ? _value.zeroStockProducts + : zeroStockProducts // ignore: cast_nullable_to_non_nullable + as int, + zeroStockIngredients: null == zeroStockIngredients + ? _value.zeroStockIngredients + : zeroStockIngredients // ignore: cast_nullable_to_non_nullable + as int, + totalSoldProducts: null == totalSoldProducts + ? _value.totalSoldProducts + : totalSoldProducts // ignore: cast_nullable_to_non_nullable + as int, + totalSoldIngredients: null == totalSoldIngredients + ? _value.totalSoldIngredients + : totalSoldIngredients // ignore: cast_nullable_to_non_nullable + as int, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + outletName: null == outletName + ? _value.outletName + : outletName // ignore: cast_nullable_to_non_nullable + as String, + generatedAt: null == generatedAt + ? _value.generatedAt + : generatedAt // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$InventorySummaryImpl implements _InventorySummary { + const _$InventorySummaryImpl({ + required this.totalProducts, + required this.totalIngredients, + required this.totalValue, + required this.lowStockProducts, + required this.lowStockIngredients, + required this.zeroStockProducts, + required this.zeroStockIngredients, + required this.totalSoldProducts, + required this.totalSoldIngredients, + required this.outletId, + required this.outletName, + required this.generatedAt, + }); + + @override + final int totalProducts; + @override + final int totalIngredients; + @override + final int totalValue; + @override + final int lowStockProducts; + @override + final int lowStockIngredients; + @override + final int zeroStockProducts; + @override + final int zeroStockIngredients; + @override + final int totalSoldProducts; + @override + final int totalSoldIngredients; + @override + final String outletId; + @override + final String outletName; + @override + final String generatedAt; + + @override + String toString() { + return 'InventorySummary(totalProducts: $totalProducts, totalIngredients: $totalIngredients, totalValue: $totalValue, lowStockProducts: $lowStockProducts, lowStockIngredients: $lowStockIngredients, zeroStockProducts: $zeroStockProducts, zeroStockIngredients: $zeroStockIngredients, totalSoldProducts: $totalSoldProducts, totalSoldIngredients: $totalSoldIngredients, outletId: $outletId, outletName: $outletName, generatedAt: $generatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventorySummaryImpl && + (identical(other.totalProducts, totalProducts) || + other.totalProducts == totalProducts) && + (identical(other.totalIngredients, totalIngredients) || + other.totalIngredients == totalIngredients) && + (identical(other.totalValue, totalValue) || + other.totalValue == totalValue) && + (identical(other.lowStockProducts, lowStockProducts) || + other.lowStockProducts == lowStockProducts) && + (identical(other.lowStockIngredients, lowStockIngredients) || + other.lowStockIngredients == lowStockIngredients) && + (identical(other.zeroStockProducts, zeroStockProducts) || + other.zeroStockProducts == zeroStockProducts) && + (identical(other.zeroStockIngredients, zeroStockIngredients) || + other.zeroStockIngredients == zeroStockIngredients) && + (identical(other.totalSoldProducts, totalSoldProducts) || + other.totalSoldProducts == totalSoldProducts) && + (identical(other.totalSoldIngredients, totalSoldIngredients) || + other.totalSoldIngredients == totalSoldIngredients) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.outletName, outletName) || + other.outletName == outletName) && + (identical(other.generatedAt, generatedAt) || + other.generatedAt == generatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + totalProducts, + totalIngredients, + totalValue, + lowStockProducts, + lowStockIngredients, + zeroStockProducts, + zeroStockIngredients, + totalSoldProducts, + totalSoldIngredients, + outletId, + outletName, + generatedAt, + ); + + /// Create a copy of InventorySummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventorySummaryImplCopyWith<_$InventorySummaryImpl> get copyWith => + __$$InventorySummaryImplCopyWithImpl<_$InventorySummaryImpl>( + this, + _$identity, + ); +} + +abstract class _InventorySummary implements InventorySummary { + const factory _InventorySummary({ + required final int totalProducts, + required final int totalIngredients, + required final int totalValue, + required final int lowStockProducts, + required final int lowStockIngredients, + required final int zeroStockProducts, + required final int zeroStockIngredients, + required final int totalSoldProducts, + required final int totalSoldIngredients, + required final String outletId, + required final String outletName, + required final String generatedAt, + }) = _$InventorySummaryImpl; + + @override + int get totalProducts; + @override + int get totalIngredients; + @override + int get totalValue; + @override + int get lowStockProducts; + @override + int get lowStockIngredients; + @override + int get zeroStockProducts; + @override + int get zeroStockIngredients; + @override + int get totalSoldProducts; + @override + int get totalSoldIngredients; + @override + String get outletId; + @override + String get outletName; + @override + String get generatedAt; + + /// Create a copy of InventorySummary + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventorySummaryImplCopyWith<_$InventorySummaryImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$InventoryProduct { + String get id => throw _privateConstructorUsedError; + String get productId => throw _privateConstructorUsedError; + String get productName => throw _privateConstructorUsedError; + String get categoryName => throw _privateConstructorUsedError; + int get quantity => throw _privateConstructorUsedError; + int get reorderLevel => throw _privateConstructorUsedError; + int get unitCost => throw _privateConstructorUsedError; + int get totalValue => throw _privateConstructorUsedError; + int get totalIn => throw _privateConstructorUsedError; + int get totalOut => throw _privateConstructorUsedError; + bool get isLowStock => throw _privateConstructorUsedError; + bool get isZeroStock => throw _privateConstructorUsedError; + String get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of InventoryProduct + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryProductCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryProductCopyWith<$Res> { + factory $InventoryProductCopyWith( + InventoryProduct value, + $Res Function(InventoryProduct) then, + ) = _$InventoryProductCopyWithImpl<$Res, InventoryProduct>; + @useResult + $Res call({ + String id, + String productId, + String productName, + String categoryName, + int quantity, + int reorderLevel, + int unitCost, + int totalValue, + int totalIn, + int totalOut, + bool isLowStock, + bool isZeroStock, + String updatedAt, + }); +} + +/// @nodoc +class _$InventoryProductCopyWithImpl<$Res, $Val extends InventoryProduct> + implements $InventoryProductCopyWith<$Res> { + _$InventoryProductCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryProduct + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? productId = null, + Object? productName = null, + Object? categoryName = null, + Object? quantity = null, + Object? reorderLevel = null, + Object? unitCost = null, + Object? totalValue = null, + Object? totalIn = null, + Object? totalOut = null, + Object? isLowStock = null, + Object? isZeroStock = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantity: null == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int, + reorderLevel: null == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int, + unitCost: null == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int, + totalValue: null == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int, + totalIn: null == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int, + totalOut: null == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int, + isLowStock: null == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool, + isZeroStock: null == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$InventoryProductImplCopyWith<$Res> + implements $InventoryProductCopyWith<$Res> { + factory _$$InventoryProductImplCopyWith( + _$InventoryProductImpl value, + $Res Function(_$InventoryProductImpl) then, + ) = __$$InventoryProductImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String productId, + String productName, + String categoryName, + int quantity, + int reorderLevel, + int unitCost, + int totalValue, + int totalIn, + int totalOut, + bool isLowStock, + bool isZeroStock, + String updatedAt, + }); +} + +/// @nodoc +class __$$InventoryProductImplCopyWithImpl<$Res> + extends _$InventoryProductCopyWithImpl<$Res, _$InventoryProductImpl> + implements _$$InventoryProductImplCopyWith<$Res> { + __$$InventoryProductImplCopyWithImpl( + _$InventoryProductImpl _value, + $Res Function(_$InventoryProductImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryProduct + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? productId = null, + Object? productName = null, + Object? categoryName = null, + Object? quantity = null, + Object? reorderLevel = null, + Object? unitCost = null, + Object? totalValue = null, + Object? totalIn = null, + Object? totalOut = null, + Object? isLowStock = null, + Object? isZeroStock = null, + Object? updatedAt = null, + }) { + return _then( + _$InventoryProductImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantity: null == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int, + reorderLevel: null == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int, + unitCost: null == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int, + totalValue: null == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int, + totalIn: null == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int, + totalOut: null == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int, + isLowStock: null == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool, + isZeroStock: null == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$InventoryProductImpl implements _InventoryProduct { + const _$InventoryProductImpl({ + required this.id, + required this.productId, + required this.productName, + required this.categoryName, + required this.quantity, + required this.reorderLevel, + required this.unitCost, + required this.totalValue, + required this.totalIn, + required this.totalOut, + required this.isLowStock, + required this.isZeroStock, + required this.updatedAt, + }); + + @override + final String id; + @override + final String productId; + @override + final String productName; + @override + final String categoryName; + @override + final int quantity; + @override + final int reorderLevel; + @override + final int unitCost; + @override + final int totalValue; + @override + final int totalIn; + @override + final int totalOut; + @override + final bool isLowStock; + @override + final bool isZeroStock; + @override + final String updatedAt; + + @override + String toString() { + return 'InventoryProduct(id: $id, productId: $productId, productName: $productName, categoryName: $categoryName, quantity: $quantity, reorderLevel: $reorderLevel, unitCost: $unitCost, totalValue: $totalValue, totalIn: $totalIn, totalOut: $totalOut, isLowStock: $isLowStock, isZeroStock: $isZeroStock, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryProductImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantity, quantity) || + other.quantity == quantity) && + (identical(other.reorderLevel, reorderLevel) || + other.reorderLevel == reorderLevel) && + (identical(other.unitCost, unitCost) || + other.unitCost == unitCost) && + (identical(other.totalValue, totalValue) || + other.totalValue == totalValue) && + (identical(other.totalIn, totalIn) || other.totalIn == totalIn) && + (identical(other.totalOut, totalOut) || + other.totalOut == totalOut) && + (identical(other.isLowStock, isLowStock) || + other.isLowStock == isLowStock) && + (identical(other.isZeroStock, isZeroStock) || + other.isZeroStock == isZeroStock) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + productId, + productName, + categoryName, + quantity, + reorderLevel, + unitCost, + totalValue, + totalIn, + totalOut, + isLowStock, + isZeroStock, + updatedAt, + ); + + /// Create a copy of InventoryProduct + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryProductImplCopyWith<_$InventoryProductImpl> get copyWith => + __$$InventoryProductImplCopyWithImpl<_$InventoryProductImpl>( + this, + _$identity, + ); +} + +abstract class _InventoryProduct implements InventoryProduct { + const factory _InventoryProduct({ + required final String id, + required final String productId, + required final String productName, + required final String categoryName, + required final int quantity, + required final int reorderLevel, + required final int unitCost, + required final int totalValue, + required final int totalIn, + required final int totalOut, + required final bool isLowStock, + required final bool isZeroStock, + required final String updatedAt, + }) = _$InventoryProductImpl; + + @override + String get id; + @override + String get productId; + @override + String get productName; + @override + String get categoryName; + @override + int get quantity; + @override + int get reorderLevel; + @override + int get unitCost; + @override + int get totalValue; + @override + int get totalIn; + @override + int get totalOut; + @override + bool get isLowStock; + @override + bool get isZeroStock; + @override + String get updatedAt; + + /// Create a copy of InventoryProduct + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryProductImplCopyWith<_$InventoryProductImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$InventoryIngredient { + String get id => throw _privateConstructorUsedError; + String get ingredientId => throw _privateConstructorUsedError; + String get ingredientName => throw _privateConstructorUsedError; + String get unitName => throw _privateConstructorUsedError; + int get quantity => throw _privateConstructorUsedError; + int get reorderLevel => throw _privateConstructorUsedError; + int get unitCost => throw _privateConstructorUsedError; + int get totalValue => throw _privateConstructorUsedError; + int get totalIn => throw _privateConstructorUsedError; + int get totalOut => throw _privateConstructorUsedError; + bool get isLowStock => throw _privateConstructorUsedError; + bool get isZeroStock => throw _privateConstructorUsedError; + String get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of InventoryIngredient + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryIngredientCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryIngredientCopyWith<$Res> { + factory $InventoryIngredientCopyWith( + InventoryIngredient value, + $Res Function(InventoryIngredient) then, + ) = _$InventoryIngredientCopyWithImpl<$Res, InventoryIngredient>; + @useResult + $Res call({ + String id, + String ingredientId, + String ingredientName, + String unitName, + int quantity, + int reorderLevel, + int unitCost, + int totalValue, + int totalIn, + int totalOut, + bool isLowStock, + bool isZeroStock, + String updatedAt, + }); +} + +/// @nodoc +class _$InventoryIngredientCopyWithImpl<$Res, $Val extends InventoryIngredient> + implements $InventoryIngredientCopyWith<$Res> { + _$InventoryIngredientCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryIngredient + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? ingredientId = null, + Object? ingredientName = null, + Object? unitName = null, + Object? quantity = null, + Object? reorderLevel = null, + Object? unitCost = null, + Object? totalValue = null, + Object? totalIn = null, + Object? totalOut = null, + Object? isLowStock = null, + Object? isZeroStock = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + ingredientId: null == ingredientId + ? _value.ingredientId + : ingredientId // ignore: cast_nullable_to_non_nullable + as String, + ingredientName: null == ingredientName + ? _value.ingredientName + : ingredientName // ignore: cast_nullable_to_non_nullable + as String, + unitName: null == unitName + ? _value.unitName + : unitName // ignore: cast_nullable_to_non_nullable + as String, + quantity: null == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int, + reorderLevel: null == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int, + unitCost: null == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int, + totalValue: null == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int, + totalIn: null == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int, + totalOut: null == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int, + isLowStock: null == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool, + isZeroStock: null == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$InventoryIngredientImplCopyWith<$Res> + implements $InventoryIngredientCopyWith<$Res> { + factory _$$InventoryIngredientImplCopyWith( + _$InventoryIngredientImpl value, + $Res Function(_$InventoryIngredientImpl) then, + ) = __$$InventoryIngredientImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String ingredientId, + String ingredientName, + String unitName, + int quantity, + int reorderLevel, + int unitCost, + int totalValue, + int totalIn, + int totalOut, + bool isLowStock, + bool isZeroStock, + String updatedAt, + }); +} + +/// @nodoc +class __$$InventoryIngredientImplCopyWithImpl<$Res> + extends _$InventoryIngredientCopyWithImpl<$Res, _$InventoryIngredientImpl> + implements _$$InventoryIngredientImplCopyWith<$Res> { + __$$InventoryIngredientImplCopyWithImpl( + _$InventoryIngredientImpl _value, + $Res Function(_$InventoryIngredientImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryIngredient + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? ingredientId = null, + Object? ingredientName = null, + Object? unitName = null, + Object? quantity = null, + Object? reorderLevel = null, + Object? unitCost = null, + Object? totalValue = null, + Object? totalIn = null, + Object? totalOut = null, + Object? isLowStock = null, + Object? isZeroStock = null, + Object? updatedAt = null, + }) { + return _then( + _$InventoryIngredientImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + ingredientId: null == ingredientId + ? _value.ingredientId + : ingredientId // ignore: cast_nullable_to_non_nullable + as String, + ingredientName: null == ingredientName + ? _value.ingredientName + : ingredientName // ignore: cast_nullable_to_non_nullable + as String, + unitName: null == unitName + ? _value.unitName + : unitName // ignore: cast_nullable_to_non_nullable + as String, + quantity: null == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int, + reorderLevel: null == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int, + unitCost: null == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int, + totalValue: null == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int, + totalIn: null == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int, + totalOut: null == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int, + isLowStock: null == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool, + isZeroStock: null == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$InventoryIngredientImpl implements _InventoryIngredient { + const _$InventoryIngredientImpl({ + required this.id, + required this.ingredientId, + required this.ingredientName, + required this.unitName, + required this.quantity, + required this.reorderLevel, + required this.unitCost, + required this.totalValue, + required this.totalIn, + required this.totalOut, + required this.isLowStock, + required this.isZeroStock, + required this.updatedAt, + }); + + @override + final String id; + @override + final String ingredientId; + @override + final String ingredientName; + @override + final String unitName; + @override + final int quantity; + @override + final int reorderLevel; + @override + final int unitCost; + @override + final int totalValue; + @override + final int totalIn; + @override + final int totalOut; + @override + final bool isLowStock; + @override + final bool isZeroStock; + @override + final String updatedAt; + + @override + String toString() { + return 'InventoryIngredient(id: $id, ingredientId: $ingredientId, ingredientName: $ingredientName, unitName: $unitName, quantity: $quantity, reorderLevel: $reorderLevel, unitCost: $unitCost, totalValue: $totalValue, totalIn: $totalIn, totalOut: $totalOut, isLowStock: $isLowStock, isZeroStock: $isZeroStock, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryIngredientImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.ingredientId, ingredientId) || + other.ingredientId == ingredientId) && + (identical(other.ingredientName, ingredientName) || + other.ingredientName == ingredientName) && + (identical(other.unitName, unitName) || + other.unitName == unitName) && + (identical(other.quantity, quantity) || + other.quantity == quantity) && + (identical(other.reorderLevel, reorderLevel) || + other.reorderLevel == reorderLevel) && + (identical(other.unitCost, unitCost) || + other.unitCost == unitCost) && + (identical(other.totalValue, totalValue) || + other.totalValue == totalValue) && + (identical(other.totalIn, totalIn) || other.totalIn == totalIn) && + (identical(other.totalOut, totalOut) || + other.totalOut == totalOut) && + (identical(other.isLowStock, isLowStock) || + other.isLowStock == isLowStock) && + (identical(other.isZeroStock, isZeroStock) || + other.isZeroStock == isZeroStock) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + ingredientId, + ingredientName, + unitName, + quantity, + reorderLevel, + unitCost, + totalValue, + totalIn, + totalOut, + isLowStock, + isZeroStock, + updatedAt, + ); + + /// Create a copy of InventoryIngredient + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryIngredientImplCopyWith<_$InventoryIngredientImpl> get copyWith => + __$$InventoryIngredientImplCopyWithImpl<_$InventoryIngredientImpl>( + this, + _$identity, + ); +} + +abstract class _InventoryIngredient implements InventoryIngredient { + const factory _InventoryIngredient({ + required final String id, + required final String ingredientId, + required final String ingredientName, + required final String unitName, + required final int quantity, + required final int reorderLevel, + required final int unitCost, + required final int totalValue, + required final int totalIn, + required final int totalOut, + required final bool isLowStock, + required final bool isZeroStock, + required final String updatedAt, + }) = _$InventoryIngredientImpl; + + @override + String get id; + @override + String get ingredientId; + @override + String get ingredientName; + @override + String get unitName; + @override + int get quantity; + @override + int get reorderLevel; + @override + int get unitCost; + @override + int get totalValue; + @override + int get totalIn; + @override + int get totalOut; + @override + bool get isLowStock; + @override + bool get isZeroStock; + @override + String get updatedAt; + + /// Create a copy of InventoryIngredient + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryIngredientImplCopyWith<_$InventoryIngredientImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc mixin _$AnalyticFailure { @optionalTypeArgs diff --git a/lib/domain/analytic/entities/inventory_analytic_entity.dart b/lib/domain/analytic/entities/inventory_analytic_entity.dart new file mode 100644 index 0000000..00d373c --- /dev/null +++ b/lib/domain/analytic/entities/inventory_analytic_entity.dart @@ -0,0 +1,119 @@ +part of '../analytic.dart'; + +@freezed +class InventoryAnalytic with _$InventoryAnalytic { + const factory InventoryAnalytic({ + required InventorySummary summary, + required List products, + required List ingredients, + }) = _InventoryAnalytic; + + factory InventoryAnalytic.empty() => InventoryAnalytic( + summary: InventorySummary.empty(), + products: [], + ingredients: [], + ); +} + +@freezed +class InventorySummary with _$InventorySummary { + const factory InventorySummary({ + required int totalProducts, + required int totalIngredients, + required int totalValue, + required int lowStockProducts, + required int lowStockIngredients, + required int zeroStockProducts, + required int zeroStockIngredients, + required int totalSoldProducts, + required int totalSoldIngredients, + required String outletId, + required String outletName, + required String generatedAt, + }) = _InventorySummary; + + factory InventorySummary.empty() => const InventorySummary( + totalProducts: 0, + totalIngredients: 0, + totalValue: 0, + lowStockProducts: 0, + lowStockIngredients: 0, + zeroStockProducts: 0, + zeroStockIngredients: 0, + totalSoldProducts: 0, + totalSoldIngredients: 0, + outletId: "", + outletName: "", + generatedAt: "", + ); +} + +@freezed +class InventoryProduct with _$InventoryProduct { + const factory InventoryProduct({ + required String id, + required String productId, + required String productName, + required String categoryName, + required int quantity, + required int reorderLevel, + required int unitCost, + required int totalValue, + required int totalIn, + required int totalOut, + required bool isLowStock, + required bool isZeroStock, + required String updatedAt, + }) = _InventoryProduct; + + factory InventoryProduct.empty() => const InventoryProduct( + id: "", + productId: "", + productName: "", + categoryName: "", + quantity: 0, + reorderLevel: 0, + unitCost: 0, + totalValue: 0, + totalIn: 0, + totalOut: 0, + isLowStock: false, + isZeroStock: false, + updatedAt: "", + ); +} + +@freezed +class InventoryIngredient with _$InventoryIngredient { + const factory InventoryIngredient({ + required String id, + required String ingredientId, + required String ingredientName, + required String unitName, + required int quantity, + required int reorderLevel, + required int unitCost, + required int totalValue, + required int totalIn, + required int totalOut, + required bool isLowStock, + required bool isZeroStock, + required String updatedAt, + }) = _InventoryIngredient; + + factory InventoryIngredient.empty() => const InventoryIngredient( + id: "", + ingredientId: "", + ingredientName: "", + unitName: "", + quantity: 0, + reorderLevel: 0, + unitCost: 0, + totalValue: 0, + totalIn: 0, + totalOut: 0, + isLowStock: false, + isZeroStock: false, + updatedAt: "", + ); +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index cb7826a..fb45141 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -17,4 +17,9 @@ abstract class IAnalyticRepository { required DateTime dateFrom, required DateTime dateTo, }); + + Future> getInventory({ + required DateTime dateFrom, + required DateTime dateTo, + }); } diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart index a812a02..35e7062 100644 --- a/lib/infrastructure/analytic/analytic_dtos.dart +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -8,3 +8,4 @@ part 'analytic_dtos.g.dart'; part 'dto/sales_analytic_dto.dart'; part 'dto/profit_loss_analytic_dto.dart'; part 'dto/category_analytic_dto.dart'; +part 'dto/inventory_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index eee2978..d51b773 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -3258,3 +3258,1667 @@ abstract class _CategoryAnalyticItemDto extends CategoryAnalyticItemDto { _$$CategoryAnalyticItemDtoImplCopyWith<_$CategoryAnalyticItemDtoImpl> get copyWith => throw _privateConstructorUsedError; } + +InventoryAnalyticDto _$InventoryAnalyticDtoFromJson(Map json) { + return _InventoryAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$InventoryAnalyticDto { + @JsonKey(name: "summary") + InventorySummaryDto? get summary => throw _privateConstructorUsedError; + @JsonKey(name: "products") + List? get products => throw _privateConstructorUsedError; + @JsonKey(name: "ingredients") + List? get ingredients => + throw _privateConstructorUsedError; + + /// Serializes this InventoryAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of InventoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryAnalyticDtoCopyWith<$Res> { + factory $InventoryAnalyticDtoCopyWith( + InventoryAnalyticDto value, + $Res Function(InventoryAnalyticDto) then, + ) = _$InventoryAnalyticDtoCopyWithImpl<$Res, InventoryAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: "summary") InventorySummaryDto? summary, + @JsonKey(name: "products") List? products, + @JsonKey(name: "ingredients") List? ingredients, + }); + + $InventorySummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class _$InventoryAnalyticDtoCopyWithImpl< + $Res, + $Val extends InventoryAnalyticDto +> + implements $InventoryAnalyticDtoCopyWith<$Res> { + _$InventoryAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? summary = freezed, + Object? products = freezed, + Object? ingredients = freezed, + }) { + return _then( + _value.copyWith( + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as InventorySummaryDto?, + products: freezed == products + ? _value.products + : products // ignore: cast_nullable_to_non_nullable + as List?, + ingredients: freezed == ingredients + ? _value.ingredients + : ingredients // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } + + /// Create a copy of InventoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $InventorySummaryDtoCopyWith<$Res>? get summary { + if (_value.summary == null) { + return null; + } + + return $InventorySummaryDtoCopyWith<$Res>(_value.summary!, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$InventoryAnalyticDtoImplCopyWith<$Res> + implements $InventoryAnalyticDtoCopyWith<$Res> { + factory _$$InventoryAnalyticDtoImplCopyWith( + _$InventoryAnalyticDtoImpl value, + $Res Function(_$InventoryAnalyticDtoImpl) then, + ) = __$$InventoryAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: "summary") InventorySummaryDto? summary, + @JsonKey(name: "products") List? products, + @JsonKey(name: "ingredients") List? ingredients, + }); + + @override + $InventorySummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class __$$InventoryAnalyticDtoImplCopyWithImpl<$Res> + extends _$InventoryAnalyticDtoCopyWithImpl<$Res, _$InventoryAnalyticDtoImpl> + implements _$$InventoryAnalyticDtoImplCopyWith<$Res> { + __$$InventoryAnalyticDtoImplCopyWithImpl( + _$InventoryAnalyticDtoImpl _value, + $Res Function(_$InventoryAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? summary = freezed, + Object? products = freezed, + Object? ingredients = freezed, + }) { + return _then( + _$InventoryAnalyticDtoImpl( + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as InventorySummaryDto?, + products: freezed == products + ? _value._products + : products // ignore: cast_nullable_to_non_nullable + as List?, + ingredients: freezed == ingredients + ? _value._ingredients + : ingredients // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$InventoryAnalyticDtoImpl extends _InventoryAnalyticDto { + const _$InventoryAnalyticDtoImpl({ + @JsonKey(name: "summary") this.summary, + @JsonKey(name: "products") final List? products, + @JsonKey(name: "ingredients") + final List? ingredients, + }) : _products = products, + _ingredients = ingredients, + super._(); + + factory _$InventoryAnalyticDtoImpl.fromJson(Map json) => + _$$InventoryAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: "summary") + final InventorySummaryDto? summary; + final List? _products; + @override + @JsonKey(name: "products") + List? get products { + final value = _products; + if (value == null) return null; + if (_products is EqualUnmodifiableListView) return _products; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + final List? _ingredients; + @override + @JsonKey(name: "ingredients") + List? get ingredients { + final value = _ingredients; + if (value == null) return null; + if (_ingredients is EqualUnmodifiableListView) return _ingredients; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'InventoryAnalyticDto(summary: $summary, products: $products, ingredients: $ingredients)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryAnalyticDtoImpl && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._products, _products) && + const DeepCollectionEquality().equals( + other._ingredients, + _ingredients, + )); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + summary, + const DeepCollectionEquality().hash(_products), + const DeepCollectionEquality().hash(_ingredients), + ); + + /// Create a copy of InventoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryAnalyticDtoImplCopyWith<_$InventoryAnalyticDtoImpl> + get copyWith => + __$$InventoryAnalyticDtoImplCopyWithImpl<_$InventoryAnalyticDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$InventoryAnalyticDtoImplToJson(this); + } +} + +abstract class _InventoryAnalyticDto extends InventoryAnalyticDto { + const factory _InventoryAnalyticDto({ + @JsonKey(name: "summary") final InventorySummaryDto? summary, + @JsonKey(name: "products") final List? products, + @JsonKey(name: "ingredients") + final List? ingredients, + }) = _$InventoryAnalyticDtoImpl; + const _InventoryAnalyticDto._() : super._(); + + factory _InventoryAnalyticDto.fromJson(Map json) = + _$InventoryAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: "summary") + InventorySummaryDto? get summary; + @override + @JsonKey(name: "products") + List? get products; + @override + @JsonKey(name: "ingredients") + List? get ingredients; + + /// Create a copy of InventoryAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryAnalyticDtoImplCopyWith<_$InventoryAnalyticDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +InventorySummaryDto _$InventorySummaryDtoFromJson(Map json) { + return _InventorySummaryDto.fromJson(json); +} + +/// @nodoc +mixin _$InventorySummaryDto { + @JsonKey(name: "total_products") + int? get totalProducts => throw _privateConstructorUsedError; + @JsonKey(name: "total_ingredients") + int? get totalIngredients => throw _privateConstructorUsedError; + @JsonKey(name: "total_value") + int? get totalValue => throw _privateConstructorUsedError; + @JsonKey(name: "low_stock_products") + int? get lowStockProducts => throw _privateConstructorUsedError; + @JsonKey(name: "low_stock_ingredients") + int? get lowStockIngredients => throw _privateConstructorUsedError; + @JsonKey(name: "zero_stock_products") + int? get zeroStockProducts => throw _privateConstructorUsedError; + @JsonKey(name: "zero_stock_ingredients") + int? get zeroStockIngredients => throw _privateConstructorUsedError; + @JsonKey(name: "total_sold_products") + int? get totalSoldProducts => throw _privateConstructorUsedError; + @JsonKey(name: "total_sold_ingredients") + int? get totalSoldIngredients => throw _privateConstructorUsedError; + @JsonKey(name: "outlet_id") + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: "outlet_name") + String? get outletName => throw _privateConstructorUsedError; + @JsonKey(name: "generated_at") + String? get generatedAt => throw _privateConstructorUsedError; + + /// Serializes this InventorySummaryDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of InventorySummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventorySummaryDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventorySummaryDtoCopyWith<$Res> { + factory $InventorySummaryDtoCopyWith( + InventorySummaryDto value, + $Res Function(InventorySummaryDto) then, + ) = _$InventorySummaryDtoCopyWithImpl<$Res, InventorySummaryDto>; + @useResult + $Res call({ + @JsonKey(name: "total_products") int? totalProducts, + @JsonKey(name: "total_ingredients") int? totalIngredients, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "low_stock_products") int? lowStockProducts, + @JsonKey(name: "low_stock_ingredients") int? lowStockIngredients, + @JsonKey(name: "zero_stock_products") int? zeroStockProducts, + @JsonKey(name: "zero_stock_ingredients") int? zeroStockIngredients, + @JsonKey(name: "total_sold_products") int? totalSoldProducts, + @JsonKey(name: "total_sold_ingredients") int? totalSoldIngredients, + @JsonKey(name: "outlet_id") String? outletId, + @JsonKey(name: "outlet_name") String? outletName, + @JsonKey(name: "generated_at") String? generatedAt, + }); +} + +/// @nodoc +class _$InventorySummaryDtoCopyWithImpl<$Res, $Val extends InventorySummaryDto> + implements $InventorySummaryDtoCopyWith<$Res> { + _$InventorySummaryDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventorySummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalProducts = freezed, + Object? totalIngredients = freezed, + Object? totalValue = freezed, + Object? lowStockProducts = freezed, + Object? lowStockIngredients = freezed, + Object? zeroStockProducts = freezed, + Object? zeroStockIngredients = freezed, + Object? totalSoldProducts = freezed, + Object? totalSoldIngredients = freezed, + Object? outletId = freezed, + Object? outletName = freezed, + Object? generatedAt = freezed, + }) { + return _then( + _value.copyWith( + totalProducts: freezed == totalProducts + ? _value.totalProducts + : totalProducts // ignore: cast_nullable_to_non_nullable + as int?, + totalIngredients: freezed == totalIngredients + ? _value.totalIngredients + : totalIngredients // ignore: cast_nullable_to_non_nullable + as int?, + totalValue: freezed == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int?, + lowStockProducts: freezed == lowStockProducts + ? _value.lowStockProducts + : lowStockProducts // ignore: cast_nullable_to_non_nullable + as int?, + lowStockIngredients: freezed == lowStockIngredients + ? _value.lowStockIngredients + : lowStockIngredients // ignore: cast_nullable_to_non_nullable + as int?, + zeroStockProducts: freezed == zeroStockProducts + ? _value.zeroStockProducts + : zeroStockProducts // ignore: cast_nullable_to_non_nullable + as int?, + zeroStockIngredients: freezed == zeroStockIngredients + ? _value.zeroStockIngredients + : zeroStockIngredients // ignore: cast_nullable_to_non_nullable + as int?, + totalSoldProducts: freezed == totalSoldProducts + ? _value.totalSoldProducts + : totalSoldProducts // ignore: cast_nullable_to_non_nullable + as int?, + totalSoldIngredients: freezed == totalSoldIngredients + ? _value.totalSoldIngredients + : totalSoldIngredients // ignore: cast_nullable_to_non_nullable + as int?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + outletName: freezed == outletName + ? _value.outletName + : outletName // ignore: cast_nullable_to_non_nullable + as String?, + generatedAt: freezed == generatedAt + ? _value.generatedAt + : generatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$InventorySummaryDtoImplCopyWith<$Res> + implements $InventorySummaryDtoCopyWith<$Res> { + factory _$$InventorySummaryDtoImplCopyWith( + _$InventorySummaryDtoImpl value, + $Res Function(_$InventorySummaryDtoImpl) then, + ) = __$$InventorySummaryDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: "total_products") int? totalProducts, + @JsonKey(name: "total_ingredients") int? totalIngredients, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "low_stock_products") int? lowStockProducts, + @JsonKey(name: "low_stock_ingredients") int? lowStockIngredients, + @JsonKey(name: "zero_stock_products") int? zeroStockProducts, + @JsonKey(name: "zero_stock_ingredients") int? zeroStockIngredients, + @JsonKey(name: "total_sold_products") int? totalSoldProducts, + @JsonKey(name: "total_sold_ingredients") int? totalSoldIngredients, + @JsonKey(name: "outlet_id") String? outletId, + @JsonKey(name: "outlet_name") String? outletName, + @JsonKey(name: "generated_at") String? generatedAt, + }); +} + +/// @nodoc +class __$$InventorySummaryDtoImplCopyWithImpl<$Res> + extends _$InventorySummaryDtoCopyWithImpl<$Res, _$InventorySummaryDtoImpl> + implements _$$InventorySummaryDtoImplCopyWith<$Res> { + __$$InventorySummaryDtoImplCopyWithImpl( + _$InventorySummaryDtoImpl _value, + $Res Function(_$InventorySummaryDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventorySummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalProducts = freezed, + Object? totalIngredients = freezed, + Object? totalValue = freezed, + Object? lowStockProducts = freezed, + Object? lowStockIngredients = freezed, + Object? zeroStockProducts = freezed, + Object? zeroStockIngredients = freezed, + Object? totalSoldProducts = freezed, + Object? totalSoldIngredients = freezed, + Object? outletId = freezed, + Object? outletName = freezed, + Object? generatedAt = freezed, + }) { + return _then( + _$InventorySummaryDtoImpl( + totalProducts: freezed == totalProducts + ? _value.totalProducts + : totalProducts // ignore: cast_nullable_to_non_nullable + as int?, + totalIngredients: freezed == totalIngredients + ? _value.totalIngredients + : totalIngredients // ignore: cast_nullable_to_non_nullable + as int?, + totalValue: freezed == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int?, + lowStockProducts: freezed == lowStockProducts + ? _value.lowStockProducts + : lowStockProducts // ignore: cast_nullable_to_non_nullable + as int?, + lowStockIngredients: freezed == lowStockIngredients + ? _value.lowStockIngredients + : lowStockIngredients // ignore: cast_nullable_to_non_nullable + as int?, + zeroStockProducts: freezed == zeroStockProducts + ? _value.zeroStockProducts + : zeroStockProducts // ignore: cast_nullable_to_non_nullable + as int?, + zeroStockIngredients: freezed == zeroStockIngredients + ? _value.zeroStockIngredients + : zeroStockIngredients // ignore: cast_nullable_to_non_nullable + as int?, + totalSoldProducts: freezed == totalSoldProducts + ? _value.totalSoldProducts + : totalSoldProducts // ignore: cast_nullable_to_non_nullable + as int?, + totalSoldIngredients: freezed == totalSoldIngredients + ? _value.totalSoldIngredients + : totalSoldIngredients // ignore: cast_nullable_to_non_nullable + as int?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + outletName: freezed == outletName + ? _value.outletName + : outletName // ignore: cast_nullable_to_non_nullable + as String?, + generatedAt: freezed == generatedAt + ? _value.generatedAt + : generatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$InventorySummaryDtoImpl implements _InventorySummaryDto { + const _$InventorySummaryDtoImpl({ + @JsonKey(name: "total_products") this.totalProducts, + @JsonKey(name: "total_ingredients") this.totalIngredients, + @JsonKey(name: "total_value") this.totalValue, + @JsonKey(name: "low_stock_products") this.lowStockProducts, + @JsonKey(name: "low_stock_ingredients") this.lowStockIngredients, + @JsonKey(name: "zero_stock_products") this.zeroStockProducts, + @JsonKey(name: "zero_stock_ingredients") this.zeroStockIngredients, + @JsonKey(name: "total_sold_products") this.totalSoldProducts, + @JsonKey(name: "total_sold_ingredients") this.totalSoldIngredients, + @JsonKey(name: "outlet_id") this.outletId, + @JsonKey(name: "outlet_name") this.outletName, + @JsonKey(name: "generated_at") this.generatedAt, + }); + + factory _$InventorySummaryDtoImpl.fromJson(Map json) => + _$$InventorySummaryDtoImplFromJson(json); + + @override + @JsonKey(name: "total_products") + final int? totalProducts; + @override + @JsonKey(name: "total_ingredients") + final int? totalIngredients; + @override + @JsonKey(name: "total_value") + final int? totalValue; + @override + @JsonKey(name: "low_stock_products") + final int? lowStockProducts; + @override + @JsonKey(name: "low_stock_ingredients") + final int? lowStockIngredients; + @override + @JsonKey(name: "zero_stock_products") + final int? zeroStockProducts; + @override + @JsonKey(name: "zero_stock_ingredients") + final int? zeroStockIngredients; + @override + @JsonKey(name: "total_sold_products") + final int? totalSoldProducts; + @override + @JsonKey(name: "total_sold_ingredients") + final int? totalSoldIngredients; + @override + @JsonKey(name: "outlet_id") + final String? outletId; + @override + @JsonKey(name: "outlet_name") + final String? outletName; + @override + @JsonKey(name: "generated_at") + final String? generatedAt; + + @override + String toString() { + return 'InventorySummaryDto(totalProducts: $totalProducts, totalIngredients: $totalIngredients, totalValue: $totalValue, lowStockProducts: $lowStockProducts, lowStockIngredients: $lowStockIngredients, zeroStockProducts: $zeroStockProducts, zeroStockIngredients: $zeroStockIngredients, totalSoldProducts: $totalSoldProducts, totalSoldIngredients: $totalSoldIngredients, outletId: $outletId, outletName: $outletName, generatedAt: $generatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventorySummaryDtoImpl && + (identical(other.totalProducts, totalProducts) || + other.totalProducts == totalProducts) && + (identical(other.totalIngredients, totalIngredients) || + other.totalIngredients == totalIngredients) && + (identical(other.totalValue, totalValue) || + other.totalValue == totalValue) && + (identical(other.lowStockProducts, lowStockProducts) || + other.lowStockProducts == lowStockProducts) && + (identical(other.lowStockIngredients, lowStockIngredients) || + other.lowStockIngredients == lowStockIngredients) && + (identical(other.zeroStockProducts, zeroStockProducts) || + other.zeroStockProducts == zeroStockProducts) && + (identical(other.zeroStockIngredients, zeroStockIngredients) || + other.zeroStockIngredients == zeroStockIngredients) && + (identical(other.totalSoldProducts, totalSoldProducts) || + other.totalSoldProducts == totalSoldProducts) && + (identical(other.totalSoldIngredients, totalSoldIngredients) || + other.totalSoldIngredients == totalSoldIngredients) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.outletName, outletName) || + other.outletName == outletName) && + (identical(other.generatedAt, generatedAt) || + other.generatedAt == generatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + totalProducts, + totalIngredients, + totalValue, + lowStockProducts, + lowStockIngredients, + zeroStockProducts, + zeroStockIngredients, + totalSoldProducts, + totalSoldIngredients, + outletId, + outletName, + generatedAt, + ); + + /// Create a copy of InventorySummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventorySummaryDtoImplCopyWith<_$InventorySummaryDtoImpl> get copyWith => + __$$InventorySummaryDtoImplCopyWithImpl<_$InventorySummaryDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$InventorySummaryDtoImplToJson(this); + } +} + +abstract class _InventorySummaryDto implements InventorySummaryDto { + const factory _InventorySummaryDto({ + @JsonKey(name: "total_products") final int? totalProducts, + @JsonKey(name: "total_ingredients") final int? totalIngredients, + @JsonKey(name: "total_value") final int? totalValue, + @JsonKey(name: "low_stock_products") final int? lowStockProducts, + @JsonKey(name: "low_stock_ingredients") final int? lowStockIngredients, + @JsonKey(name: "zero_stock_products") final int? zeroStockProducts, + @JsonKey(name: "zero_stock_ingredients") final int? zeroStockIngredients, + @JsonKey(name: "total_sold_products") final int? totalSoldProducts, + @JsonKey(name: "total_sold_ingredients") final int? totalSoldIngredients, + @JsonKey(name: "outlet_id") final String? outletId, + @JsonKey(name: "outlet_name") final String? outletName, + @JsonKey(name: "generated_at") final String? generatedAt, + }) = _$InventorySummaryDtoImpl; + + factory _InventorySummaryDto.fromJson(Map json) = + _$InventorySummaryDtoImpl.fromJson; + + @override + @JsonKey(name: "total_products") + int? get totalProducts; + @override + @JsonKey(name: "total_ingredients") + int? get totalIngredients; + @override + @JsonKey(name: "total_value") + int? get totalValue; + @override + @JsonKey(name: "low_stock_products") + int? get lowStockProducts; + @override + @JsonKey(name: "low_stock_ingredients") + int? get lowStockIngredients; + @override + @JsonKey(name: "zero_stock_products") + int? get zeroStockProducts; + @override + @JsonKey(name: "zero_stock_ingredients") + int? get zeroStockIngredients; + @override + @JsonKey(name: "total_sold_products") + int? get totalSoldProducts; + @override + @JsonKey(name: "total_sold_ingredients") + int? get totalSoldIngredients; + @override + @JsonKey(name: "outlet_id") + String? get outletId; + @override + @JsonKey(name: "outlet_name") + String? get outletName; + @override + @JsonKey(name: "generated_at") + String? get generatedAt; + + /// Create a copy of InventorySummaryDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventorySummaryDtoImplCopyWith<_$InventorySummaryDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +InventoryProductDto _$InventoryProductDtoFromJson(Map json) { + return _InventoryProductDto.fromJson(json); +} + +/// @nodoc +mixin _$InventoryProductDto { + @JsonKey(name: "id") + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: "product_id") + String? get productId => throw _privateConstructorUsedError; + @JsonKey(name: "product_name") + String? get productName => throw _privateConstructorUsedError; + @JsonKey(name: "category_name") + String? get categoryName => throw _privateConstructorUsedError; + @JsonKey(name: "quantity") + int? get quantity => throw _privateConstructorUsedError; + @JsonKey(name: "reorder_level") + int? get reorderLevel => throw _privateConstructorUsedError; + @JsonKey(name: "unit_cost") + int? get unitCost => throw _privateConstructorUsedError; + @JsonKey(name: "total_value") + int? get totalValue => throw _privateConstructorUsedError; + @JsonKey(name: "total_in") + int? get totalIn => throw _privateConstructorUsedError; + @JsonKey(name: "total_out") + int? get totalOut => throw _privateConstructorUsedError; + @JsonKey(name: "is_low_stock") + bool? get isLowStock => throw _privateConstructorUsedError; + @JsonKey(name: "is_zero_stock") + bool? get isZeroStock => throw _privateConstructorUsedError; + @JsonKey(name: "updated_at") + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this InventoryProductDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of InventoryProductDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryProductDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryProductDtoCopyWith<$Res> { + factory $InventoryProductDtoCopyWith( + InventoryProductDto value, + $Res Function(InventoryProductDto) then, + ) = _$InventoryProductDtoCopyWithImpl<$Res, InventoryProductDto>; + @useResult + $Res call({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "product_id") String? productId, + @JsonKey(name: "product_name") String? productName, + @JsonKey(name: "category_name") String? categoryName, + @JsonKey(name: "quantity") int? quantity, + @JsonKey(name: "reorder_level") int? reorderLevel, + @JsonKey(name: "unit_cost") int? unitCost, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "total_in") int? totalIn, + @JsonKey(name: "total_out") int? totalOut, + @JsonKey(name: "is_low_stock") bool? isLowStock, + @JsonKey(name: "is_zero_stock") bool? isZeroStock, + @JsonKey(name: "updated_at") String? updatedAt, + }); +} + +/// @nodoc +class _$InventoryProductDtoCopyWithImpl<$Res, $Val extends InventoryProductDto> + implements $InventoryProductDtoCopyWith<$Res> { + _$InventoryProductDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryProductDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? productId = freezed, + Object? productName = freezed, + Object? categoryName = freezed, + Object? quantity = freezed, + Object? reorderLevel = freezed, + Object? unitCost = freezed, + Object? totalValue = freezed, + Object? totalIn = freezed, + Object? totalOut = freezed, + Object? isLowStock = freezed, + Object? isZeroStock = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + quantity: freezed == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int?, + reorderLevel: freezed == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int?, + unitCost: freezed == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int?, + totalValue: freezed == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int?, + totalIn: freezed == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int?, + totalOut: freezed == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int?, + isLowStock: freezed == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool?, + isZeroStock: freezed == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$InventoryProductDtoImplCopyWith<$Res> + implements $InventoryProductDtoCopyWith<$Res> { + factory _$$InventoryProductDtoImplCopyWith( + _$InventoryProductDtoImpl value, + $Res Function(_$InventoryProductDtoImpl) then, + ) = __$$InventoryProductDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "product_id") String? productId, + @JsonKey(name: "product_name") String? productName, + @JsonKey(name: "category_name") String? categoryName, + @JsonKey(name: "quantity") int? quantity, + @JsonKey(name: "reorder_level") int? reorderLevel, + @JsonKey(name: "unit_cost") int? unitCost, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "total_in") int? totalIn, + @JsonKey(name: "total_out") int? totalOut, + @JsonKey(name: "is_low_stock") bool? isLowStock, + @JsonKey(name: "is_zero_stock") bool? isZeroStock, + @JsonKey(name: "updated_at") String? updatedAt, + }); +} + +/// @nodoc +class __$$InventoryProductDtoImplCopyWithImpl<$Res> + extends _$InventoryProductDtoCopyWithImpl<$Res, _$InventoryProductDtoImpl> + implements _$$InventoryProductDtoImplCopyWith<$Res> { + __$$InventoryProductDtoImplCopyWithImpl( + _$InventoryProductDtoImpl _value, + $Res Function(_$InventoryProductDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryProductDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? productId = freezed, + Object? productName = freezed, + Object? categoryName = freezed, + Object? quantity = freezed, + Object? reorderLevel = freezed, + Object? unitCost = freezed, + Object? totalValue = freezed, + Object? totalIn = freezed, + Object? totalOut = freezed, + Object? isLowStock = freezed, + Object? isZeroStock = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$InventoryProductDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + quantity: freezed == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int?, + reorderLevel: freezed == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int?, + unitCost: freezed == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int?, + totalValue: freezed == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int?, + totalIn: freezed == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int?, + totalOut: freezed == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int?, + isLowStock: freezed == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool?, + isZeroStock: freezed == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$InventoryProductDtoImpl implements _InventoryProductDto { + const _$InventoryProductDtoImpl({ + @JsonKey(name: "id") this.id, + @JsonKey(name: "product_id") this.productId, + @JsonKey(name: "product_name") this.productName, + @JsonKey(name: "category_name") this.categoryName, + @JsonKey(name: "quantity") this.quantity, + @JsonKey(name: "reorder_level") this.reorderLevel, + @JsonKey(name: "unit_cost") this.unitCost, + @JsonKey(name: "total_value") this.totalValue, + @JsonKey(name: "total_in") this.totalIn, + @JsonKey(name: "total_out") this.totalOut, + @JsonKey(name: "is_low_stock") this.isLowStock, + @JsonKey(name: "is_zero_stock") this.isZeroStock, + @JsonKey(name: "updated_at") this.updatedAt, + }); + + factory _$InventoryProductDtoImpl.fromJson(Map json) => + _$$InventoryProductDtoImplFromJson(json); + + @override + @JsonKey(name: "id") + final String? id; + @override + @JsonKey(name: "product_id") + final String? productId; + @override + @JsonKey(name: "product_name") + final String? productName; + @override + @JsonKey(name: "category_name") + final String? categoryName; + @override + @JsonKey(name: "quantity") + final int? quantity; + @override + @JsonKey(name: "reorder_level") + final int? reorderLevel; + @override + @JsonKey(name: "unit_cost") + final int? unitCost; + @override + @JsonKey(name: "total_value") + final int? totalValue; + @override + @JsonKey(name: "total_in") + final int? totalIn; + @override + @JsonKey(name: "total_out") + final int? totalOut; + @override + @JsonKey(name: "is_low_stock") + final bool? isLowStock; + @override + @JsonKey(name: "is_zero_stock") + final bool? isZeroStock; + @override + @JsonKey(name: "updated_at") + final String? updatedAt; + + @override + String toString() { + return 'InventoryProductDto(id: $id, productId: $productId, productName: $productName, categoryName: $categoryName, quantity: $quantity, reorderLevel: $reorderLevel, unitCost: $unitCost, totalValue: $totalValue, totalIn: $totalIn, totalOut: $totalOut, isLowStock: $isLowStock, isZeroStock: $isZeroStock, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryProductDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantity, quantity) || + other.quantity == quantity) && + (identical(other.reorderLevel, reorderLevel) || + other.reorderLevel == reorderLevel) && + (identical(other.unitCost, unitCost) || + other.unitCost == unitCost) && + (identical(other.totalValue, totalValue) || + other.totalValue == totalValue) && + (identical(other.totalIn, totalIn) || other.totalIn == totalIn) && + (identical(other.totalOut, totalOut) || + other.totalOut == totalOut) && + (identical(other.isLowStock, isLowStock) || + other.isLowStock == isLowStock) && + (identical(other.isZeroStock, isZeroStock) || + other.isZeroStock == isZeroStock) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + productId, + productName, + categoryName, + quantity, + reorderLevel, + unitCost, + totalValue, + totalIn, + totalOut, + isLowStock, + isZeroStock, + updatedAt, + ); + + /// Create a copy of InventoryProductDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryProductDtoImplCopyWith<_$InventoryProductDtoImpl> get copyWith => + __$$InventoryProductDtoImplCopyWithImpl<_$InventoryProductDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$InventoryProductDtoImplToJson(this); + } +} + +abstract class _InventoryProductDto implements InventoryProductDto { + const factory _InventoryProductDto({ + @JsonKey(name: "id") final String? id, + @JsonKey(name: "product_id") final String? productId, + @JsonKey(name: "product_name") final String? productName, + @JsonKey(name: "category_name") final String? categoryName, + @JsonKey(name: "quantity") final int? quantity, + @JsonKey(name: "reorder_level") final int? reorderLevel, + @JsonKey(name: "unit_cost") final int? unitCost, + @JsonKey(name: "total_value") final int? totalValue, + @JsonKey(name: "total_in") final int? totalIn, + @JsonKey(name: "total_out") final int? totalOut, + @JsonKey(name: "is_low_stock") final bool? isLowStock, + @JsonKey(name: "is_zero_stock") final bool? isZeroStock, + @JsonKey(name: "updated_at") final String? updatedAt, + }) = _$InventoryProductDtoImpl; + + factory _InventoryProductDto.fromJson(Map json) = + _$InventoryProductDtoImpl.fromJson; + + @override + @JsonKey(name: "id") + String? get id; + @override + @JsonKey(name: "product_id") + String? get productId; + @override + @JsonKey(name: "product_name") + String? get productName; + @override + @JsonKey(name: "category_name") + String? get categoryName; + @override + @JsonKey(name: "quantity") + int? get quantity; + @override + @JsonKey(name: "reorder_level") + int? get reorderLevel; + @override + @JsonKey(name: "unit_cost") + int? get unitCost; + @override + @JsonKey(name: "total_value") + int? get totalValue; + @override + @JsonKey(name: "total_in") + int? get totalIn; + @override + @JsonKey(name: "total_out") + int? get totalOut; + @override + @JsonKey(name: "is_low_stock") + bool? get isLowStock; + @override + @JsonKey(name: "is_zero_stock") + bool? get isZeroStock; + @override + @JsonKey(name: "updated_at") + String? get updatedAt; + + /// Create a copy of InventoryProductDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryProductDtoImplCopyWith<_$InventoryProductDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +InventoryIngredientDto _$InventoryIngredientDtoFromJson( + Map json, +) { + return _InventoryIngredientDto.fromJson(json); +} + +/// @nodoc +mixin _$InventoryIngredientDto { + @JsonKey(name: "id") + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: "ingredient_id") + String? get ingredientId => throw _privateConstructorUsedError; + @JsonKey(name: "ingredient_name") + String? get ingredientName => throw _privateConstructorUsedError; + @JsonKey(name: "unit_name") + String? get unitName => throw _privateConstructorUsedError; + @JsonKey(name: "quantity") + int? get quantity => throw _privateConstructorUsedError; + @JsonKey(name: "reorder_level") + int? get reorderLevel => throw _privateConstructorUsedError; + @JsonKey(name: "unit_cost") + int? get unitCost => throw _privateConstructorUsedError; + @JsonKey(name: "total_value") + int? get totalValue => throw _privateConstructorUsedError; + @JsonKey(name: "total_in") + int? get totalIn => throw _privateConstructorUsedError; + @JsonKey(name: "total_out") + int? get totalOut => throw _privateConstructorUsedError; + @JsonKey(name: "is_low_stock") + bool? get isLowStock => throw _privateConstructorUsedError; + @JsonKey(name: "is_zero_stock") + bool? get isZeroStock => throw _privateConstructorUsedError; + @JsonKey(name: "updated_at") + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this InventoryIngredientDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of InventoryIngredientDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryIngredientDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryIngredientDtoCopyWith<$Res> { + factory $InventoryIngredientDtoCopyWith( + InventoryIngredientDto value, + $Res Function(InventoryIngredientDto) then, + ) = _$InventoryIngredientDtoCopyWithImpl<$Res, InventoryIngredientDto>; + @useResult + $Res call({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "ingredient_id") String? ingredientId, + @JsonKey(name: "ingredient_name") String? ingredientName, + @JsonKey(name: "unit_name") String? unitName, + @JsonKey(name: "quantity") int? quantity, + @JsonKey(name: "reorder_level") int? reorderLevel, + @JsonKey(name: "unit_cost") int? unitCost, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "total_in") int? totalIn, + @JsonKey(name: "total_out") int? totalOut, + @JsonKey(name: "is_low_stock") bool? isLowStock, + @JsonKey(name: "is_zero_stock") bool? isZeroStock, + @JsonKey(name: "updated_at") String? updatedAt, + }); +} + +/// @nodoc +class _$InventoryIngredientDtoCopyWithImpl< + $Res, + $Val extends InventoryIngredientDto +> + implements $InventoryIngredientDtoCopyWith<$Res> { + _$InventoryIngredientDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryIngredientDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? ingredientId = freezed, + Object? ingredientName = freezed, + Object? unitName = freezed, + Object? quantity = freezed, + Object? reorderLevel = freezed, + Object? unitCost = freezed, + Object? totalValue = freezed, + Object? totalIn = freezed, + Object? totalOut = freezed, + Object? isLowStock = freezed, + Object? isZeroStock = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + ingredientId: freezed == ingredientId + ? _value.ingredientId + : ingredientId // ignore: cast_nullable_to_non_nullable + as String?, + ingredientName: freezed == ingredientName + ? _value.ingredientName + : ingredientName // ignore: cast_nullable_to_non_nullable + as String?, + unitName: freezed == unitName + ? _value.unitName + : unitName // ignore: cast_nullable_to_non_nullable + as String?, + quantity: freezed == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int?, + reorderLevel: freezed == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int?, + unitCost: freezed == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int?, + totalValue: freezed == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int?, + totalIn: freezed == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int?, + totalOut: freezed == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int?, + isLowStock: freezed == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool?, + isZeroStock: freezed == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$InventoryIngredientDtoImplCopyWith<$Res> + implements $InventoryIngredientDtoCopyWith<$Res> { + factory _$$InventoryIngredientDtoImplCopyWith( + _$InventoryIngredientDtoImpl value, + $Res Function(_$InventoryIngredientDtoImpl) then, + ) = __$$InventoryIngredientDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "ingredient_id") String? ingredientId, + @JsonKey(name: "ingredient_name") String? ingredientName, + @JsonKey(name: "unit_name") String? unitName, + @JsonKey(name: "quantity") int? quantity, + @JsonKey(name: "reorder_level") int? reorderLevel, + @JsonKey(name: "unit_cost") int? unitCost, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "total_in") int? totalIn, + @JsonKey(name: "total_out") int? totalOut, + @JsonKey(name: "is_low_stock") bool? isLowStock, + @JsonKey(name: "is_zero_stock") bool? isZeroStock, + @JsonKey(name: "updated_at") String? updatedAt, + }); +} + +/// @nodoc +class __$$InventoryIngredientDtoImplCopyWithImpl<$Res> + extends + _$InventoryIngredientDtoCopyWithImpl<$Res, _$InventoryIngredientDtoImpl> + implements _$$InventoryIngredientDtoImplCopyWith<$Res> { + __$$InventoryIngredientDtoImplCopyWithImpl( + _$InventoryIngredientDtoImpl _value, + $Res Function(_$InventoryIngredientDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryIngredientDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? ingredientId = freezed, + Object? ingredientName = freezed, + Object? unitName = freezed, + Object? quantity = freezed, + Object? reorderLevel = freezed, + Object? unitCost = freezed, + Object? totalValue = freezed, + Object? totalIn = freezed, + Object? totalOut = freezed, + Object? isLowStock = freezed, + Object? isZeroStock = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$InventoryIngredientDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + ingredientId: freezed == ingredientId + ? _value.ingredientId + : ingredientId // ignore: cast_nullable_to_non_nullable + as String?, + ingredientName: freezed == ingredientName + ? _value.ingredientName + : ingredientName // ignore: cast_nullable_to_non_nullable + as String?, + unitName: freezed == unitName + ? _value.unitName + : unitName // ignore: cast_nullable_to_non_nullable + as String?, + quantity: freezed == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int?, + reorderLevel: freezed == reorderLevel + ? _value.reorderLevel + : reorderLevel // ignore: cast_nullable_to_non_nullable + as int?, + unitCost: freezed == unitCost + ? _value.unitCost + : unitCost // ignore: cast_nullable_to_non_nullable + as int?, + totalValue: freezed == totalValue + ? _value.totalValue + : totalValue // ignore: cast_nullable_to_non_nullable + as int?, + totalIn: freezed == totalIn + ? _value.totalIn + : totalIn // ignore: cast_nullable_to_non_nullable + as int?, + totalOut: freezed == totalOut + ? _value.totalOut + : totalOut // ignore: cast_nullable_to_non_nullable + as int?, + isLowStock: freezed == isLowStock + ? _value.isLowStock + : isLowStock // ignore: cast_nullable_to_non_nullable + as bool?, + isZeroStock: freezed == isZeroStock + ? _value.isZeroStock + : isZeroStock // ignore: cast_nullable_to_non_nullable + as bool?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$InventoryIngredientDtoImpl implements _InventoryIngredientDto { + const _$InventoryIngredientDtoImpl({ + @JsonKey(name: "id") this.id, + @JsonKey(name: "ingredient_id") this.ingredientId, + @JsonKey(name: "ingredient_name") this.ingredientName, + @JsonKey(name: "unit_name") this.unitName, + @JsonKey(name: "quantity") this.quantity, + @JsonKey(name: "reorder_level") this.reorderLevel, + @JsonKey(name: "unit_cost") this.unitCost, + @JsonKey(name: "total_value") this.totalValue, + @JsonKey(name: "total_in") this.totalIn, + @JsonKey(name: "total_out") this.totalOut, + @JsonKey(name: "is_low_stock") this.isLowStock, + @JsonKey(name: "is_zero_stock") this.isZeroStock, + @JsonKey(name: "updated_at") this.updatedAt, + }); + + factory _$InventoryIngredientDtoImpl.fromJson(Map json) => + _$$InventoryIngredientDtoImplFromJson(json); + + @override + @JsonKey(name: "id") + final String? id; + @override + @JsonKey(name: "ingredient_id") + final String? ingredientId; + @override + @JsonKey(name: "ingredient_name") + final String? ingredientName; + @override + @JsonKey(name: "unit_name") + final String? unitName; + @override + @JsonKey(name: "quantity") + final int? quantity; + @override + @JsonKey(name: "reorder_level") + final int? reorderLevel; + @override + @JsonKey(name: "unit_cost") + final int? unitCost; + @override + @JsonKey(name: "total_value") + final int? totalValue; + @override + @JsonKey(name: "total_in") + final int? totalIn; + @override + @JsonKey(name: "total_out") + final int? totalOut; + @override + @JsonKey(name: "is_low_stock") + final bool? isLowStock; + @override + @JsonKey(name: "is_zero_stock") + final bool? isZeroStock; + @override + @JsonKey(name: "updated_at") + final String? updatedAt; + + @override + String toString() { + return 'InventoryIngredientDto(id: $id, ingredientId: $ingredientId, ingredientName: $ingredientName, unitName: $unitName, quantity: $quantity, reorderLevel: $reorderLevel, unitCost: $unitCost, totalValue: $totalValue, totalIn: $totalIn, totalOut: $totalOut, isLowStock: $isLowStock, isZeroStock: $isZeroStock, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryIngredientDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.ingredientId, ingredientId) || + other.ingredientId == ingredientId) && + (identical(other.ingredientName, ingredientName) || + other.ingredientName == ingredientName) && + (identical(other.unitName, unitName) || + other.unitName == unitName) && + (identical(other.quantity, quantity) || + other.quantity == quantity) && + (identical(other.reorderLevel, reorderLevel) || + other.reorderLevel == reorderLevel) && + (identical(other.unitCost, unitCost) || + other.unitCost == unitCost) && + (identical(other.totalValue, totalValue) || + other.totalValue == totalValue) && + (identical(other.totalIn, totalIn) || other.totalIn == totalIn) && + (identical(other.totalOut, totalOut) || + other.totalOut == totalOut) && + (identical(other.isLowStock, isLowStock) || + other.isLowStock == isLowStock) && + (identical(other.isZeroStock, isZeroStock) || + other.isZeroStock == isZeroStock) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + ingredientId, + ingredientName, + unitName, + quantity, + reorderLevel, + unitCost, + totalValue, + totalIn, + totalOut, + isLowStock, + isZeroStock, + updatedAt, + ); + + /// Create a copy of InventoryIngredientDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryIngredientDtoImplCopyWith<_$InventoryIngredientDtoImpl> + get copyWith => + __$$InventoryIngredientDtoImplCopyWithImpl<_$InventoryIngredientDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$InventoryIngredientDtoImplToJson(this); + } +} + +abstract class _InventoryIngredientDto implements InventoryIngredientDto { + const factory _InventoryIngredientDto({ + @JsonKey(name: "id") final String? id, + @JsonKey(name: "ingredient_id") final String? ingredientId, + @JsonKey(name: "ingredient_name") final String? ingredientName, + @JsonKey(name: "unit_name") final String? unitName, + @JsonKey(name: "quantity") final int? quantity, + @JsonKey(name: "reorder_level") final int? reorderLevel, + @JsonKey(name: "unit_cost") final int? unitCost, + @JsonKey(name: "total_value") final int? totalValue, + @JsonKey(name: "total_in") final int? totalIn, + @JsonKey(name: "total_out") final int? totalOut, + @JsonKey(name: "is_low_stock") final bool? isLowStock, + @JsonKey(name: "is_zero_stock") final bool? isZeroStock, + @JsonKey(name: "updated_at") final String? updatedAt, + }) = _$InventoryIngredientDtoImpl; + + factory _InventoryIngredientDto.fromJson(Map json) = + _$InventoryIngredientDtoImpl.fromJson; + + @override + @JsonKey(name: "id") + String? get id; + @override + @JsonKey(name: "ingredient_id") + String? get ingredientId; + @override + @JsonKey(name: "ingredient_name") + String? get ingredientName; + @override + @JsonKey(name: "unit_name") + String? get unitName; + @override + @JsonKey(name: "quantity") + int? get quantity; + @override + @JsonKey(name: "reorder_level") + int? get reorderLevel; + @override + @JsonKey(name: "unit_cost") + int? get unitCost; + @override + @JsonKey(name: "total_value") + int? get totalValue; + @override + @JsonKey(name: "total_in") + int? get totalIn; + @override + @JsonKey(name: "total_out") + int? get totalOut; + @override + @JsonKey(name: "is_low_stock") + bool? get isLowStock; + @override + @JsonKey(name: "is_zero_stock") + bool? get isZeroStock; + @override + @JsonKey(name: "updated_at") + String? get updatedAt; + + /// Create a copy of InventoryIngredientDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryIngredientDtoImplCopyWith<_$InventoryIngredientDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index 044d525..e1f95fc 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -257,3 +257,131 @@ Map _$$CategoryAnalyticItemDtoImplToJson( 'product_count': instance.productCount, 'order_count': instance.orderCount, }; + +_$InventoryAnalyticDtoImpl _$$InventoryAnalyticDtoImplFromJson( + Map json, +) => _$InventoryAnalyticDtoImpl( + summary: json['summary'] == null + ? null + : InventorySummaryDto.fromJson(json['summary'] as Map), + products: (json['products'] as List?) + ?.map((e) => InventoryProductDto.fromJson(e as Map)) + .toList(), + ingredients: (json['ingredients'] as List?) + ?.map((e) => InventoryIngredientDto.fromJson(e as Map)) + .toList(), +); + +Map _$$InventoryAnalyticDtoImplToJson( + _$InventoryAnalyticDtoImpl instance, +) => { + 'summary': instance.summary, + 'products': instance.products, + 'ingredients': instance.ingredients, +}; + +_$InventorySummaryDtoImpl _$$InventorySummaryDtoImplFromJson( + Map json, +) => _$InventorySummaryDtoImpl( + totalProducts: (json['total_products'] as num?)?.toInt(), + totalIngredients: (json['total_ingredients'] as num?)?.toInt(), + totalValue: (json['total_value'] as num?)?.toInt(), + lowStockProducts: (json['low_stock_products'] as num?)?.toInt(), + lowStockIngredients: (json['low_stock_ingredients'] as num?)?.toInt(), + zeroStockProducts: (json['zero_stock_products'] as num?)?.toInt(), + zeroStockIngredients: (json['zero_stock_ingredients'] as num?)?.toInt(), + totalSoldProducts: (json['total_sold_products'] as num?)?.toInt(), + totalSoldIngredients: (json['total_sold_ingredients'] as num?)?.toInt(), + outletId: json['outlet_id'] as String?, + outletName: json['outlet_name'] as String?, + generatedAt: json['generated_at'] as String?, +); + +Map _$$InventorySummaryDtoImplToJson( + _$InventorySummaryDtoImpl instance, +) => { + 'total_products': instance.totalProducts, + 'total_ingredients': instance.totalIngredients, + 'total_value': instance.totalValue, + 'low_stock_products': instance.lowStockProducts, + 'low_stock_ingredients': instance.lowStockIngredients, + 'zero_stock_products': instance.zeroStockProducts, + 'zero_stock_ingredients': instance.zeroStockIngredients, + 'total_sold_products': instance.totalSoldProducts, + 'total_sold_ingredients': instance.totalSoldIngredients, + 'outlet_id': instance.outletId, + 'outlet_name': instance.outletName, + 'generated_at': instance.generatedAt, +}; + +_$InventoryProductDtoImpl _$$InventoryProductDtoImplFromJson( + Map json, +) => _$InventoryProductDtoImpl( + id: json['id'] as String?, + productId: json['product_id'] as String?, + productName: json['product_name'] as String?, + categoryName: json['category_name'] as String?, + quantity: (json['quantity'] as num?)?.toInt(), + reorderLevel: (json['reorder_level'] as num?)?.toInt(), + unitCost: (json['unit_cost'] as num?)?.toInt(), + totalValue: (json['total_value'] as num?)?.toInt(), + totalIn: (json['total_in'] as num?)?.toInt(), + totalOut: (json['total_out'] as num?)?.toInt(), + isLowStock: json['is_low_stock'] as bool?, + isZeroStock: json['is_zero_stock'] as bool?, + updatedAt: json['updated_at'] as String?, +); + +Map _$$InventoryProductDtoImplToJson( + _$InventoryProductDtoImpl instance, +) => { + 'id': instance.id, + 'product_id': instance.productId, + 'product_name': instance.productName, + 'category_name': instance.categoryName, + 'quantity': instance.quantity, + 'reorder_level': instance.reorderLevel, + 'unit_cost': instance.unitCost, + 'total_value': instance.totalValue, + 'total_in': instance.totalIn, + 'total_out': instance.totalOut, + 'is_low_stock': instance.isLowStock, + 'is_zero_stock': instance.isZeroStock, + 'updated_at': instance.updatedAt, +}; + +_$InventoryIngredientDtoImpl _$$InventoryIngredientDtoImplFromJson( + Map json, +) => _$InventoryIngredientDtoImpl( + id: json['id'] as String?, + ingredientId: json['ingredient_id'] as String?, + ingredientName: json['ingredient_name'] as String?, + unitName: json['unit_name'] as String?, + quantity: (json['quantity'] as num?)?.toInt(), + reorderLevel: (json['reorder_level'] as num?)?.toInt(), + unitCost: (json['unit_cost'] as num?)?.toInt(), + totalValue: (json['total_value'] as num?)?.toInt(), + totalIn: (json['total_in'] as num?)?.toInt(), + totalOut: (json['total_out'] as num?)?.toInt(), + isLowStock: json['is_low_stock'] as bool?, + isZeroStock: json['is_zero_stock'] as bool?, + updatedAt: json['updated_at'] as String?, +); + +Map _$$InventoryIngredientDtoImplToJson( + _$InventoryIngredientDtoImpl instance, +) => { + 'id': instance.id, + 'ingredient_id': instance.ingredientId, + 'ingredient_name': instance.ingredientName, + 'unit_name': instance.unitName, + 'quantity': instance.quantity, + 'reorder_level': instance.reorderLevel, + 'unit_cost': instance.unitCost, + 'total_value': instance.totalValue, + 'total_in': instance.totalIn, + 'total_out': instance.totalOut, + 'is_low_stock': instance.isLowStock, + 'is_zero_stock': instance.isZeroStock, + 'updated_at': instance.updatedAt, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index 9fd53eb..83ab43f 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -98,4 +98,32 @@ class AnalyticRemoteDataProvider { return DC.error(AnalyticFailure.serverError(e)); } } + + Future> fetchInventory({ + required String outletId, + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + '${ApiPath.inventoryReportDetail}/$outletId', + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = InventoryAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchInventoryError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/analytic/dto/inventory_analytic_dto.dart b/lib/infrastructure/analytic/dto/inventory_analytic_dto.dart new file mode 100644 index 0000000..a76c149 --- /dev/null +++ b/lib/infrastructure/analytic/dto/inventory_analytic_dto.dart @@ -0,0 +1,139 @@ +part of '../analytic_dtos.dart'; + +@freezed +class InventoryAnalyticDto with _$InventoryAnalyticDto { + const InventoryAnalyticDto._(); + + const factory InventoryAnalyticDto({ + @JsonKey(name: "summary") InventorySummaryDto? summary, + @JsonKey(name: "products") List? products, + @JsonKey(name: "ingredients") List? ingredients, + }) = _InventoryAnalyticDto; + + factory InventoryAnalyticDto.fromJson(Map json) => + _$InventoryAnalyticDtoFromJson(json); + + InventoryAnalytic toDomain() => InventoryAnalytic( + summary: summary?.toDomain() ?? InventorySummary.empty(), + products: products?.map((e) => e.toDomain()).toList() ?? [], + ingredients: ingredients?.map((e) => e.toDomain()).toList() ?? [], + ); +} + +@freezed +class InventorySummaryDto with _$InventorySummaryDto { + const factory InventorySummaryDto({ + @JsonKey(name: "total_products") int? totalProducts, + @JsonKey(name: "total_ingredients") int? totalIngredients, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "low_stock_products") int? lowStockProducts, + @JsonKey(name: "low_stock_ingredients") int? lowStockIngredients, + @JsonKey(name: "zero_stock_products") int? zeroStockProducts, + @JsonKey(name: "zero_stock_ingredients") int? zeroStockIngredients, + @JsonKey(name: "total_sold_products") int? totalSoldProducts, + @JsonKey(name: "total_sold_ingredients") int? totalSoldIngredients, + @JsonKey(name: "outlet_id") String? outletId, + @JsonKey(name: "outlet_name") String? outletName, + @JsonKey(name: "generated_at") String? generatedAt, + }) = _InventorySummaryDto; + + factory InventorySummaryDto.fromJson(Map json) => + _$InventorySummaryDtoFromJson(json); +} + +extension InventorySummaryDtoX on InventorySummaryDto { + InventorySummary toDomain() => InventorySummary( + totalProducts: totalProducts ?? 0, + totalIngredients: totalIngredients ?? 0, + totalValue: totalValue ?? 0, + lowStockProducts: lowStockProducts ?? 0, + lowStockIngredients: lowStockIngredients ?? 0, + zeroStockProducts: zeroStockProducts ?? 0, + zeroStockIngredients: zeroStockIngredients ?? 0, + totalSoldProducts: totalSoldProducts ?? 0, + totalSoldIngredients: totalSoldIngredients ?? 0, + outletId: outletId ?? "", + outletName: outletName ?? "", + generatedAt: generatedAt ?? "", + ); +} + +@freezed +class InventoryProductDto with _$InventoryProductDto { + const factory InventoryProductDto({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "product_id") String? productId, + @JsonKey(name: "product_name") String? productName, + @JsonKey(name: "category_name") String? categoryName, + @JsonKey(name: "quantity") int? quantity, + @JsonKey(name: "reorder_level") int? reorderLevel, + @JsonKey(name: "unit_cost") int? unitCost, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "total_in") int? totalIn, + @JsonKey(name: "total_out") int? totalOut, + @JsonKey(name: "is_low_stock") bool? isLowStock, + @JsonKey(name: "is_zero_stock") bool? isZeroStock, + @JsonKey(name: "updated_at") String? updatedAt, + }) = _InventoryProductDto; + + factory InventoryProductDto.fromJson(Map json) => + _$InventoryProductDtoFromJson(json); +} + +extension InventoryProductDtoX on InventoryProductDto { + InventoryProduct toDomain() => InventoryProduct( + id: id ?? "", + productId: productId ?? "", + productName: productName ?? "", + categoryName: categoryName ?? "", + quantity: quantity ?? 0, + reorderLevel: reorderLevel ?? 0, + unitCost: unitCost ?? 0, + totalValue: totalValue ?? 0, + totalIn: totalIn ?? 0, + totalOut: totalOut ?? 0, + isLowStock: isLowStock ?? false, + isZeroStock: isZeroStock ?? false, + updatedAt: updatedAt ?? "", + ); +} + +@freezed +class InventoryIngredientDto with _$InventoryIngredientDto { + const factory InventoryIngredientDto({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "ingredient_id") String? ingredientId, + @JsonKey(name: "ingredient_name") String? ingredientName, + @JsonKey(name: "unit_name") String? unitName, + @JsonKey(name: "quantity") int? quantity, + @JsonKey(name: "reorder_level") int? reorderLevel, + @JsonKey(name: "unit_cost") int? unitCost, + @JsonKey(name: "total_value") int? totalValue, + @JsonKey(name: "total_in") int? totalIn, + @JsonKey(name: "total_out") int? totalOut, + @JsonKey(name: "is_low_stock") bool? isLowStock, + @JsonKey(name: "is_zero_stock") bool? isZeroStock, + @JsonKey(name: "updated_at") String? updatedAt, + }) = _InventoryIngredientDto; + + factory InventoryIngredientDto.fromJson(Map json) => + _$InventoryIngredientDtoFromJson(json); +} + +extension InventoryIngredientDtoX on InventoryIngredientDto { + InventoryIngredient toDomain() => InventoryIngredient( + id: id ?? "", + ingredientId: ingredientId ?? "", + ingredientName: ingredientName ?? "", + unitName: unitName ?? "", + quantity: quantity ?? 0, + reorderLevel: reorderLevel ?? 0, + unitCost: unitCost ?? 0, + totalValue: totalValue ?? 0, + totalIn: totalIn ?? 0, + totalOut: totalOut ?? 0, + isLowStock: isLowStock ?? false, + isZeroStock: isZeroStock ?? false, + updatedAt: updatedAt ?? "", + ); +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 3acc60a..3001595 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -5,14 +5,17 @@ import 'package:injectable/injectable.dart'; import '../../../domain/analytic/analytic.dart'; import '../../../domain/analytic/repositories/i_analytic_repository.dart'; +import '../../../domain/auth/auth.dart'; +import '../../auth/datasources/local_data_provider.dart'; import '../datasource/remote_data_provider.dart'; @Injectable(as: IAnalyticRepository) class AnalyticRepository implements IAnalyticRepository { final AnalyticRemoteDataProvider _dataProvider; + final AuthLocalDataProvider _authLocalDataProvider; final String _logName = 'AnalyticRepository'; - AnalyticRepository(this._dataProvider); + AnalyticRepository(this._dataProvider, this._authLocalDataProvider); @override Future> getSales({ @@ -85,4 +88,31 @@ class AnalyticRepository implements IAnalyticRepository { return left(const AnalyticFailure.unexpectedError()); } } + + @override + Future> getInventory({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + User currentUser = await _authLocalDataProvider.currentUser(); + + final result = await _dataProvider.fetchInventory( + outletId: currentUser.outletId, + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getInventoryError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index e2ca7f3..e51896f 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -11,6 +11,8 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart' as _i1038; +import 'package:apskel_owner_flutter/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart' + as _i785; import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' as _i11; import 'package:apskel_owner_flutter/application/analytic/sales_loader/sales_loader_bloc.dart' @@ -120,9 +122,6 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i866.AnalyticRemoteDataProvider>( () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i477.IAnalyticRepository>( - () => _i393.AnalyticRepository(gh<_i866.AnalyticRemoteDataProvider>()), - ); gh.factory<_i49.IAuthRepository>( () => _i1035.AuthRepository( gh<_i991.AuthLocalDataProvider>(), @@ -132,6 +131,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i419.IProductRepository>( () => _i121.ProductRepository(gh<_i823.ProductRemoteDataProvider>()), ); + gh.factory<_i477.IAnalyticRepository>( + () => _i393.AnalyticRepository( + gh<_i866.AnalyticRemoteDataProvider>(), + gh<_i991.AuthLocalDataProvider>(), + ), + ); gh.factory<_i1020.ICategoryRepository>( () => _i869.CategoryRepository(gh<_i333.CategoryRemoteDataProvider>()), ); @@ -150,6 +155,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1038.CategoryAnalyticLoaderBloc>( () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i785.InventoryAnalyticLoaderBloc>( + () => _i785.InventoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); diff --git a/lib/presentation/pages/inventory/inventory_page.dart b/lib/presentation/pages/inventory/inventory_page.dart index 16cd5c7..f91b0f4 100644 --- a/lib/presentation/pages/inventory/inventory_page.dart +++ b/lib/presentation/pages/inventory/inventory_page.dart @@ -1,63 +1,33 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart'; import '../../../common/theme/theme.dart'; +import '../../../domain/analytic/analytic.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import 'widgets/ingredient_tile.dart'; import 'widgets/product_tile.dart'; import 'widgets/stat_card.dart'; import 'widgets/tabbar_delegate.dart'; -// Sample inventory data for products -class ProductItem { - final String id; - final String name; - final String category; - final int quantity; - final double price; - final String status; - final String image; - - ProductItem({ - required this.id, - required this.name, - required this.category, - required this.quantity, - required this.price, - required this.status, - required this.image, - }); -} - -// Sample inventory data for ingredients -class IngredientItem { - final String id; - final String name; - final String unit; - final double quantity; - final double minQuantity; - final String status; - final String image; - - IngredientItem({ - required this.id, - required this.name, - required this.unit, - required this.quantity, - required this.minQuantity, - required this.status, - required this.image, - }); -} - // Custom SliverPersistentHeaderDelegate untuk TabBar @RoutePage() -class InventoryPage extends StatefulWidget { +class InventoryPage extends StatefulWidget implements AutoRouteWrapper { const InventoryPage({super.key}); @override State createState() => _InventoryPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (_) => + getIt() + ..add(InventoryAnalyticLoaderEvent.fetched()), + child: this, + ); } class _InventoryPageState extends State @@ -68,111 +38,6 @@ class _InventoryPageState extends State late Animation _slideAnimation; late TabController _tabController; - final List productItems = [ - ProductItem( - id: '1', - name: 'Laptop Gaming ASUS ROG', - category: 'Elektronik', - quantity: 5, - price: 15000000, - status: 'available', - image: '๐Ÿ’ป', - ), - ProductItem( - id: '2', - name: 'Kemeja Formal Pria', - category: 'Fashion', - quantity: 25, - price: 250000, - status: 'available', - image: '๐Ÿ‘”', - ), - ProductItem( - id: '3', - name: 'Smartphone Samsung Galaxy', - category: 'Elektronik', - quantity: 12, - price: 8500000, - status: 'available', - image: '๐Ÿ“ฑ', - ), - ProductItem( - id: '4', - name: 'Tas Ransel Travel', - category: 'Fashion', - quantity: 8, - price: 350000, - status: 'low_stock', - image: '๐ŸŽ’', - ), - ProductItem( - id: '4', - name: 'Tas Ransel Travel', - category: 'Fashion', - quantity: 8, - price: 350000, - status: 'low_stock', - image: '๐ŸŽ’', - ), - ProductItem( - id: '4', - name: 'Tas Ransel Travel', - category: 'Fashion', - quantity: 8, - price: 350000, - status: 'low_stock', - image: '๐ŸŽ’', - ), - ]; - - final List ingredientItems = [ - IngredientItem( - id: '1', - name: 'Tepung Terigu', - unit: 'kg', - quantity: 50.5, - minQuantity: 10.0, - status: 'available', - image: '๐ŸŒพ', - ), - IngredientItem( - id: '2', - name: 'Gula Pasir', - unit: 'kg', - quantity: 2.5, - minQuantity: 5.0, - status: 'low_stock', - image: '๐Ÿฌ', - ), - IngredientItem( - id: '3', - name: 'Telur Ayam', - unit: 'butir', - quantity: 120, - minQuantity: 50, - status: 'available', - image: '๐Ÿฅš', - ), - IngredientItem( - id: '4', - name: 'Susu Segar', - unit: 'liter', - quantity: 0, - minQuantity: 10.0, - status: 'out_of_stock', - image: '๐Ÿฅ›', - ), - IngredientItem( - id: '5', - name: 'Mentega', - unit: 'kg', - quantity: 15.2, - minQuantity: 5.0, - status: 'available', - image: '๐Ÿงˆ', - ), - ]; - @override void initState() { super.initState(); @@ -244,95 +109,118 @@ class _InventoryPageState extends State Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: FadeTransition( - opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: NestedScrollView( - headerSliverBuilder: (context, innerBoxIsScrolled) { - return [ - _buildSliverAppBar(), - SliverPersistentHeader( - pinned: true, - delegate: InventorySliverTabBarDelegate( - tabBar: TabBar( + body: + BlocBuilder< + InventoryAnalyticLoaderBloc, + InventoryAnalyticLoaderState + >( + builder: (context, state) { + return FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: NestedScrollView( + headerSliverBuilder: (context, innerBoxIsScrolled) { + return [ + _buildSliverAppBar(), + SliverPersistentHeader( + pinned: true, + delegate: InventorySliverTabBarDelegate( + tabBar: TabBar( + controller: _tabController, + indicator: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(25), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + indicatorSize: TabBarIndicatorSize.tab, + indicatorPadding: const EdgeInsets.all(6), + labelColor: AppColor.textWhite, + unselectedLabelColor: AppColor.textSecondary, + labelStyle: const TextStyle( + fontWeight: FontWeight.w700, + fontSize: 13, + ), + unselectedLabelStyle: const TextStyle( + fontWeight: FontWeight.w500, + fontSize: 13, + ), + dividerColor: Colors.transparent, + splashFactory: NoSplash.splashFactory, + overlayColor: MaterialStateProperty.all( + Colors.transparent, + ), + tabs: [ + Tab( + height: 40, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + ), + child: const Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Icon( + Icons.inventory_2_rounded, + size: 16, + ), + SizedBox(width: 6), + Text('Produk'), + ], + ), + ), + ), + Tab( + height: 40, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + ), + child: const Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Icon( + Icons.restaurant_menu_rounded, + size: 16, + ), + SizedBox(width: 6), + Text('Bahan'), + ], + ), + ), + ), + ], + ), + ), + ), + ]; + }, + body: TabBarView( controller: _tabController, - indicator: BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(25), - boxShadow: [ - BoxShadow( - color: AppColor.primary.withOpacity(0.3), - blurRadius: 12, - offset: const Offset(0, 4), - ), - ], - ), - indicatorSize: TabBarIndicatorSize.tab, - indicatorPadding: const EdgeInsets.all(6), - labelColor: AppColor.textWhite, - unselectedLabelColor: AppColor.textSecondary, - labelStyle: const TextStyle( - fontWeight: FontWeight.w700, - fontSize: 13, - ), - unselectedLabelStyle: const TextStyle( - fontWeight: FontWeight.w500, - fontSize: 13, - ), - dividerColor: Colors.transparent, - splashFactory: NoSplash.splashFactory, - overlayColor: MaterialStateProperty.all( - Colors.transparent, - ), - tabs: [ - Tab( - height: 40, - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 12), - child: const Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon(Icons.inventory_2_rounded, size: 16), - SizedBox(width: 6), - Text('Produk'), - ], - ), - ), - ), - Tab( - height: 40, - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 12), - child: const Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon(Icons.restaurant_menu_rounded, size: 16), - SizedBox(width: 6), - Text('Bahan'), - ], - ), - ), - ), + children: [ + _buildProductTab(state.inventoryAnalytic), + _buildIngredientTab(state.inventoryAnalytic), ], ), ), ), - ]; + ); }, - body: TabBarView( - controller: _tabController, - children: [_buildProductTab(), _buildIngredientTab()], - ), ), - ), - ), ); } @@ -347,41 +235,19 @@ class _InventoryPageState extends State ); } - Widget _buildProductTab() { + Widget _buildProductTab(InventoryAnalytic inventoryAnalytic) { return CustomScrollView( slivers: [ - SliverToBoxAdapter(child: _buildProductStats()), - SliverPadding( - padding: const EdgeInsets.all(16), - sliver: SliverGrid( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, - crossAxisSpacing: 12, - mainAxisSpacing: 12, - childAspectRatio: 0.75, - ), - delegate: SliverChildBuilderDelegate( - (context, index) => - InventoryProductTile(item: productItems[index]), - childCount: productItems.length, - ), - ), + SliverToBoxAdapter( + child: _buildProductStats(inventoryAnalytic.summary), ), - ], - ); - } - - Widget _buildIngredientTab() { - return CustomScrollView( - slivers: [ - SliverToBoxAdapter(child: _buildIngredientStats()), SliverPadding( padding: const EdgeInsets.all(16), sliver: SliverList( delegate: SliverChildBuilderDelegate( (context, index) => - InventoryIngredientTile(item: ingredientItems[index]), - childCount: ingredientItems.length, + InventoryProductTile(item: inventoryAnalytic.products[index]), + childCount: inventoryAnalytic.products.length, ), ), ), @@ -389,15 +255,28 @@ class _InventoryPageState extends State ); } - Widget _buildProductStats() { - final totalProducts = productItems.length; - final availableProducts = productItems - .where((item) => item.status == 'available') - .length; - final lowStockProducts = productItems - .where((item) => item.status == 'low_stock') - .length; + Widget _buildIngredientTab(InventoryAnalytic inventoryAnalytic) { + return CustomScrollView( + slivers: [ + SliverToBoxAdapter( + child: _buildIngredientStats(inventoryAnalytic.summary), + ), + SliverPadding( + padding: const EdgeInsets.all(16), + sliver: SliverList( + delegate: SliverChildBuilderDelegate( + (context, index) => InventoryIngredientTile( + item: inventoryAnalytic.ingredients[index], + ), + childCount: inventoryAnalytic.ingredients.length, + ), + ), + ), + ], + ); + } + Widget _buildProductStats(InventorySummary inventory) { return Container( margin: const EdgeInsets.all(16), child: Column( @@ -407,20 +286,18 @@ class _InventoryPageState extends State Expanded( child: _buildStatCard( 'Total Produk', - totalProducts.toString(), + inventory.totalProducts.toString(), Icons.inventory_2_rounded, AppColor.primary, - '+12%', ), ), const SizedBox(width: 16), Expanded( child: _buildStatCard( - 'Tersedia', - availableProducts.toString(), + 'Produk Terjual', + inventory.totalSoldProducts.toString(), Icons.check_circle_rounded, AppColor.success, - '+5%', ), ), ], @@ -431,15 +308,19 @@ class _InventoryPageState extends State Expanded( child: _buildStatCard( 'Stok Rendah', - lowStockProducts.toString(), + inventory.lowStockProducts.toString(), Icons.warning_rounded, AppColor.warning, - '-8%', ), ), const SizedBox(width: 16), Expanded( - child: Container(), // Empty space for balance + child: _buildStatCard( + 'Stok Kosong', + inventory.zeroStockProducts.toString(), + Icons.error_rounded, + AppColor.error, + ), ), ], ), @@ -448,18 +329,7 @@ class _InventoryPageState extends State ); } - Widget _buildIngredientStats() { - final totalIngredients = ingredientItems.length; - final availableIngredients = ingredientItems - .where((item) => item.status == 'available') - .length; - final lowStockIngredients = ingredientItems - .where((item) => item.status == 'low_stock') - .length; - final outOfStockIngredients = ingredientItems - .where((item) => item.status == 'out_of_stock') - .length; - + Widget _buildIngredientStats(InventorySummary inventory) { return Container( margin: const EdgeInsets.all(16), child: Column( @@ -469,20 +339,18 @@ class _InventoryPageState extends State Expanded( child: _buildStatCard( 'Total Bahan', - totalIngredients.toString(), + inventory.totalIngredients.toString(), Icons.restaurant_menu_rounded, AppColor.primary, - '+8%', ), ), const SizedBox(width: 16), Expanded( child: _buildStatCard( - 'Tersedia', - availableIngredients.toString(), + 'Bahan Terjual', + inventory.totalSoldIngredients.toString(), Icons.check_circle_rounded, AppColor.success, - '+15%', ), ), ], @@ -493,20 +361,18 @@ class _InventoryPageState extends State Expanded( child: _buildStatCard( 'Stok Kurang', - lowStockIngredients.toString(), + inventory.lowStockIngredients.toString(), Icons.warning_rounded, AppColor.warning, - '-3%', ), ), const SizedBox(width: 16), Expanded( child: _buildStatCard( 'Habis', - outOfStockIngredients.toString(), + inventory.zeroStockIngredients.toString(), Icons.error_rounded, AppColor.error, - '+1', ), ), ], @@ -521,7 +387,6 @@ class _InventoryPageState extends State String value, IconData icon, Color color, - String change, ) { return TweenAnimationBuilder( tween: Tween(begin: 0, end: 1), @@ -534,7 +399,6 @@ class _InventoryPageState extends State value: value, icon: icon, color: color, - change: change, ), ); }, diff --git a/lib/presentation/pages/inventory/widgets/ingredient_tile.dart b/lib/presentation/pages/inventory/widgets/ingredient_tile.dart index 5a54464..8f40077 100644 --- a/lib/presentation/pages/inventory/widgets/ingredient_tile.dart +++ b/lib/presentation/pages/inventory/widgets/ingredient_tile.dart @@ -1,11 +1,14 @@ import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; +import 'package:intl/intl.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; -import '../inventory_page.dart'; class InventoryIngredientTile extends StatelessWidget { - final IngredientItem item; + final InventoryIngredient item; const InventoryIngredientTile({super.key, required this.item}); @override @@ -16,94 +19,458 @@ class InventoryIngredientTile extends StatelessWidget { decoration: BoxDecoration( color: AppColor.surface, borderRadius: BorderRadius.circular(16), + border: Border.all( + color: _getStatusColor().withOpacity(0.2), + width: 1.5, + ), boxShadow: [ BoxShadow( - color: AppColor.primaryWithOpacity(0.1), - blurRadius: 8, + color: _getStatusColor().withOpacity(0.08), + blurRadius: 12, + offset: const Offset(0, 4), + ), + BoxShadow( + color: AppColor.textLight.withOpacity(0.06), + blurRadius: 6, offset: const Offset(0, 2), ), ], ), - child: Row( + child: Column( children: [ - Container( - width: 60, - height: 60, - decoration: BoxDecoration( - gradient: LinearGradient(colors: AppColor.backgroundGradient), - borderRadius: BorderRadius.circular(12), - ), - child: Center( - child: Text(item.image, style: const TextStyle(fontSize: 24)), - ), - ), - const SpaceWidth(16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - item.name, - style: AppStyle.lg.copyWith( - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, + // Main Row + Row( + children: [ + // Enhanced Icon Container + Container( + width: 65, + height: 65, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: _getGradientColors(), + begin: Alignment.topLeft, + end: Alignment.bottomRight, ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: _getStatusColor().withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 3), + ), + ], ), - SpaceHeight(4), - Text( - 'Stok: ${item.quantity} ${item.unit}', - style: AppStyle.md.copyWith(color: AppColor.textSecondary), + child: Stack( + children: [ + Center( + child: Icon( + _getIngredientIcon(), + size: 28, + color: AppColor.white, + ), + ), + // Status indicator dot + Positioned( + top: 6, + right: 6, + child: Container( + width: 12, + height: 12, + decoration: BoxDecoration( + color: AppColor.white, + shape: BoxShape.circle, + border: Border.all( + color: _getStatusColor(), + width: 2, + ), + ), + child: Center( + child: Container( + width: 4, + height: 4, + decoration: BoxDecoration( + color: _getStatusColor(), + shape: BoxShape.circle, + ), + ), + ), + ), + ), + ], ), - SpaceHeight(4), - Text( - 'Min: ${item.minQuantity} ${item.unit}', - style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + + const SpaceWidth(16), + + // Content Section + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Ingredient Name + Text( + item.ingredientName, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + height: 1.2, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + + SpaceHeight(6), + + // Stock Information Row + Row( + children: [ + Icon( + LineIcons.warehouse, + size: 14, + color: AppColor.textSecondary, + ), + const SpaceWidth(4), + Text( + 'Stok: ', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + Text( + '${NumberFormat('#,###', 'id_ID').format(item.quantity)} ${item.unitName}', + style: AppStyle.sm.copyWith( + color: _getQuantityColor(), + fontWeight: FontWeight.w700, + ), + ), + ], + ), + + SpaceHeight(4), + + // Reorder Level Information + Row( + children: [ + Icon( + LineIcons.exclamationTriangle, + size: 14, + color: AppColor.warning, + ), + const SpaceWidth(4), + Text( + 'Min: ', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + Text( + '${NumberFormat('#,###', 'id_ID').format(item.reorderLevel)} ${item.unitName}', + style: AppStyle.sm.copyWith( + color: AppColor.warning, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + + SpaceHeight(6), + + // Unit Cost + Row( + children: [ + Icon( + LineIcons.dollarSign, + size: 14, + color: AppColor.success, + ), + const SpaceWidth(4), + Text( + item.unitCost.currencyFormatRp, + style: AppStyle.sm.copyWith( + color: AppColor.success, + fontWeight: FontWeight.w700, + ), + ), + Text( + '/${item.unitName}', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ], ), - ], - ), + ), + + // Status Badge + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 8, + ), + decoration: BoxDecoration( + color: _getStatusColor(), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: _getStatusColor().withOpacity(0.3), + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + _getStatusText(), + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.white, + fontSize: 11, + ), + ), + ], + ), + ), + ], ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), - decoration: BoxDecoration( - color: getStatusColor(item.status), - borderRadius: BorderRadius.circular(20), - ), - child: Text( - getStatusText(item.status), - style: AppStyle.sm.copyWith( - fontWeight: FontWeight.bold, - color: AppColor.textWhite, + + // Additional Information Card (if low stock or has movements) + if (item.isLowStock || item.totalIn > 0 || item.totalOut > 0) ...[ + SpaceHeight(12), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.borderLight, width: 0.5), + ), + child: Column( + children: [ + // Warning message for low stock + if (item.isLowStock && !item.isZeroStock) ...[ + Row( + children: [ + Icon( + LineIcons.exclamationTriangle, + size: 16, + color: AppColor.warning, + ), + const SpaceWidth(6), + Expanded( + child: Text( + 'Stok mendekati batas minimum (${item.reorderLevel} ${item.unitName})', + style: AppStyle.xs.copyWith( + color: AppColor.warning, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + if (item.totalIn > 0 || item.totalOut > 0) SpaceHeight(8), + ], + + // Movement Information + if (item.totalIn > 0 || item.totalOut > 0) + Row( + children: [ + // Stock In + if (item.totalIn > 0) ...[ + Expanded( + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.1), + borderRadius: BorderRadius.circular(6), + ), + child: Icon( + LineIcons.arrowUp, + size: 12, + color: AppColor.success, + ), + ), + const SpaceWidth(6), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Masuk', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + Text( + '${NumberFormat('#,###', 'id_ID').format(item.totalIn)} ${item.unitName}', + style: AppStyle.xs.copyWith( + color: AppColor.success, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + ], + ), + ), + ], + + // Stock Out + if (item.totalOut > 0) ...[ + if (item.totalIn > 0) const SpaceWidth(16), + Expanded( + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(6), + ), + child: Icon( + LineIcons.arrowDown, + size: 12, + color: AppColor.error, + ), + ), + const SpaceWidth(6), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Keluar', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + Text( + '${NumberFormat('#,###', 'id_ID').format(item.totalOut)} ${item.unitName}', + style: AppStyle.xs.copyWith( + color: AppColor.error, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + ], + ), + ), + ], + + // Total Value + if (item.totalValue > 0) ...[ + const SpaceWidth(16), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Nilai Total', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + Text( + _formatCurrencyShort(item.totalValue), + style: AppStyle.xs.copyWith( + color: AppColor.info, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + ], + ], + ), + ], ), ), - ), + ], ], ), ); } - Color getStatusColor(String status) { - switch (status) { - case 'available': - return AppColor.success; - case 'low_stock': - return AppColor.warning; - case 'out_of_stock': - return AppColor.error; - default: - return AppColor.textSecondary; - } + // Helper methods + Color _getStatusColor() { + if (item.isZeroStock) return AppColor.error; + if (item.isLowStock) return AppColor.warning; + return AppColor.success; } - String getStatusText(String status) { - switch (status) { - case 'available': - return 'Tersedia'; - case 'low_stock': - return 'Stok Rendah'; - case 'out_of_stock': - return 'Habis'; - default: - return 'Unknown'; + List _getGradientColors() { + if (item.isZeroStock) { + return [AppColor.error, AppColor.error.withOpacity(0.7)]; + } + if (item.isLowStock) { + return [AppColor.warning, AppColor.warning.withOpacity(0.7)]; + } + return [AppColor.success, AppColor.success.withOpacity(0.7)]; + } + + Color _getQuantityColor() { + if (item.isZeroStock) return AppColor.error; + if (item.isLowStock) return AppColor.warning; + return AppColor.textPrimary; + } + + String _getStatusText() { + if (item.isZeroStock) return 'HABIS'; + if (item.isLowStock) return 'MINIM'; + return 'TERSEDIA'; + } + + IconData _getIngredientIcon() { + final name = item.ingredientName.toLowerCase(); + + // Food ingredients + if (name.contains('tepung') || name.contains('flour')) { + return LineIcons.breadSlice; + } else if (name.contains('gula') || name.contains('sugar')) { + return LineIcons.cube; + } else if (name.contains('garam') || name.contains('salt')) { + return LineIcons.breadSlice; + } else if (name.contains('minyak') || name.contains('oil')) { + return LineIcons.tint; + } else if (name.contains('susu') || name.contains('milk')) { + return LineIcons.glasses; + } else if (name.contains('telur') || name.contains('egg')) { + return LineIcons.egg; + } else if (name.contains('daging') || name.contains('meat')) { + return LineIcons.hamburger; + } else if (name.contains('sayur') || name.contains('vegetable')) { + return LineIcons.carrot; + } else if (name.contains('bumbu') || name.contains('spice')) { + return LineIcons.leaf; + } else if (name.contains('buah') || name.contains('fruit')) { + return LineIcons.apple; + } else if (name.contains('beras') || name.contains('rice')) { + return LineIcons.seedling; + } else if (name.contains('kopi') || name.contains('coffee')) { + return LineIcons.coffee; + } + + // Default ingredient icon + return LineIcons.utensils; + } + + String _formatCurrencyShort(int amount) { + if (amount.abs() >= 1000000000) { + return 'Rp ${(amount / 1000000000).toStringAsFixed(1)}B'; + } else if (amount.abs() >= 1000000) { + return 'Rp ${(amount / 1000000).toStringAsFixed(1)}M'; + } else if (amount.abs() >= 1000) { + return 'Rp ${(amount / 1000).toStringAsFixed(0)}K'; + } else { + return 'Rp ${NumberFormat('#,###', 'id_ID').format(amount)}'; } } } diff --git a/lib/presentation/pages/inventory/widgets/product_tile.dart b/lib/presentation/pages/inventory/widgets/product_tile.dart index bcfdd6e..fe3a1e7 100644 --- a/lib/presentation/pages/inventory/widgets/product_tile.dart +++ b/lib/presentation/pages/inventory/widgets/product_tile.dart @@ -1,154 +1,514 @@ import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; +import 'package:intl/intl.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; -import '../inventory_page.dart'; class InventoryProductTile extends StatelessWidget { - final ProductItem item; + final InventoryProduct item; const InventoryProductTile({super.key, required this.item}); @override Widget build(BuildContext context) { return Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.all(16), decoration: BoxDecoration( color: AppColor.surface, borderRadius: BorderRadius.circular(16), - border: Border.all(color: AppColor.primary.withOpacity(0.08), width: 1), + border: Border.all( + color: _getStatusColor().withOpacity(0.2), + width: 1.5, + ), boxShadow: [ BoxShadow( - color: AppColor.primary.withOpacity(0.06), - blurRadius: 12, - offset: const Offset(0, 4), + color: _getStatusColor().withOpacity(0.06), + blurRadius: 16, + offset: const Offset(0, 6), + ), + BoxShadow( + color: AppColor.textLight.withOpacity(0.08), + blurRadius: 4, + offset: const Offset(0, 2), ), ], ), child: Column( - crossAxisAlignment: CrossAxisAlignment.start, children: [ - // Image Container - Container( - height: 85, - width: double.infinity, - decoration: BoxDecoration( - gradient: LinearGradient( - colors: AppColor.backgroundGradient, - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(16), - topRight: Radius.circular(16), - ), - ), - child: Center( - child: Container( - padding: const EdgeInsets.all(8), + // Main Content Row + Row( + children: [ + // Enhanced Product Icon + Container( + width: 70, + height: 70, decoration: BoxDecoration( - color: AppColor.textWhite.withOpacity(0.9), - borderRadius: BorderRadius.circular(12), + gradient: LinearGradient( + colors: _getGradientColors(), + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(18), + boxShadow: [ + BoxShadow( + color: _getStatusColor().withOpacity(0.25), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + child: Stack( + children: [ + Center( + child: Icon( + _getCategoryIcon(), + size: 32, + color: AppColor.white, + ), + ), + // Status indicator + Positioned( + top: 6, + right: 6, + child: Container( + width: 14, + height: 14, + decoration: BoxDecoration( + color: AppColor.white, + shape: BoxShape.circle, + border: Border.all( + color: _getStatusColor(), + width: 2.5, + ), + ), + child: Center( + child: Container( + width: 5, + height: 5, + decoration: BoxDecoration( + color: _getStatusColor(), + shape: BoxShape.circle, + ), + ), + ), + ), + ), + ], ), - child: Text(item.image, style: const TextStyle(fontSize: 32)), ), - ), + + const SpaceWidth(16), + + // Product Information + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Product Name and Category Row + Row( + children: [ + Expanded( + child: Text( + item.productName, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + height: 1.2, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ), + const SpaceWidth(8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: AppColor.primary.withOpacity(0.15), + width: 0.5, + ), + ), + child: Text( + item.categoryName, + style: AppStyle.xs.copyWith( + fontSize: 9, + fontWeight: FontWeight.w600, + color: AppColor.primary, + letterSpacing: 0.2, + ), + ), + ), + ], + ), + + SpaceHeight(8), + + // Price and Status Row + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Price + Text( + item.unitCost.currencyFormatRp, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w800, + color: AppColor.success, + fontSize: 16, + ), + ), + // Status Badge + Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 4, + ), + decoration: BoxDecoration( + color: _getStatusColor(), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: _getStatusColor().withOpacity(0.3), + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: Text( + _getStatusText(), + style: AppStyle.xs.copyWith( + fontSize: 10, + fontWeight: FontWeight.w700, + color: AppColor.white, + ), + ), + ), + ], + ), + + SpaceHeight(10), + + // Stock Information Grid + Row( + children: [ + // Quantity Info + Expanded( + child: _buildInfoItem( + LineIcons.boxes, + 'Stok', + '${NumberFormat('#,###', 'id_ID').format(item.quantity)} pcs', + _getQuantityColor(), + ), + ), + const SpaceWidth(16), + // Total Value Info + Expanded( + child: _buildInfoItem( + LineIcons.dollarSign, + 'Nilai', + _formatCurrencyShort(item.totalValue), + AppColor.info, + ), + ), + ], + ), + ], + ), + ), + ], ), - // Content Container - Expanded( - child: Padding( + // Additional Information (conditionally shown) + if (_shouldShowAdditionalInfo()) ...[ + SpaceHeight(12), + Container( padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.borderLight, width: 0.5), + ), child: Column( - crossAxisAlignment: CrossAxisAlignment.start, children: [ - // Product Name - Text( - item.name, - style: AppStyle.sm.copyWith( - fontWeight: FontWeight.w600, - color: AppColor.textPrimary, - height: 1.2, - ), - maxLines: 2, - overflow: TextOverflow.ellipsis, - ), - - SpaceHeight(4), - - // Category - Container( - padding: const EdgeInsets.symmetric( - horizontal: 6, - vertical: 2, - ), - decoration: BoxDecoration( - color: AppColor.primary.withOpacity(0.1), - borderRadius: BorderRadius.circular(8), - ), - child: Text( - item.category, - style: AppStyle.xs.copyWith( - fontSize: 9, - fontWeight: FontWeight.w500, - color: AppColor.primary, - ), - ), - ), - - const Spacer(), - - // Price - Text( - 'Rp ${item.price}', - style: AppStyle.sm.copyWith( - fontSize: 13, - fontWeight: FontWeight.w700, - color: AppColor.primary, - ), - ), - - SpaceHeight(6), - - // Quantity & Status - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - '${item.quantity} pcs', - style: AppStyle.xs.copyWith( - fontSize: 11, - fontWeight: FontWeight.w500, - color: AppColor.textSecondary, + // Low Stock Warning + if (item.isLowStock && !item.isZeroStock) ...[ + Row( + children: [ + Container( + padding: const EdgeInsets.all(6), + decoration: BoxDecoration( + color: AppColor.warning.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + LineIcons.exclamationTriangle, + size: 16, + color: AppColor.warning, + ), ), - ), - Container( - width: 8, - height: 8, - decoration: BoxDecoration( - color: getStatusColor(item.status), - shape: BoxShape.circle, + const SpaceWidth(10), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Stok Menipis', + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.warning, + ), + ), + Text( + 'Segera reorder minimal ${NumberFormat('#,###', 'id_ID').format(item.reorderLevel)} pcs', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), ), - ), - ], - ), + ], + ), + ], + + // Zero Stock Warning + if (item.isZeroStock) ...[ + Row( + children: [ + Container( + padding: const EdgeInsets.all(6), + decoration: BoxDecoration( + color: AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + LineIcons.timesCircle, + size: 16, + color: AppColor.error, + ), + ), + const SpaceWidth(10), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Stok Habis', + style: AppStyle.sm.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.error, + ), + ), + Text( + 'Produk tidak tersedia untuk dijual', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), + ], + ), + ], + + // Movement Information + if (_hasMovementData()) ...[ + if ((item.isLowStock || item.isZeroStock)) SpaceHeight(12), + Row( + children: [ + if (item.totalIn > 0) + Expanded( + child: _buildMovementInfo( + LineIcons.arrowUp, + 'Masuk', + '${NumberFormat('#,###', 'id_ID').format(item.totalIn)} pcs', + AppColor.success, + ), + ), + if (item.totalIn > 0 && item.totalOut > 0) + const SpaceWidth(16), + if (item.totalOut > 0) + Expanded( + child: _buildMovementInfo( + LineIcons.arrowDown, + 'Keluar', + '${NumberFormat('#,###', 'id_ID').format(item.totalOut)} pcs', + AppColor.error, + ), + ), + ], + ), + ], ], ), ), + ], + ], + ), + ); + } + + Widget _buildInfoItem( + IconData icon, + String label, + String value, + Color valueColor, + ) { + return Container( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(10), + border: Border.all(color: AppColor.borderLight, width: 0.5), + ), + child: Row( + children: [ + Icon(icon, size: 14, color: AppColor.textSecondary), + const SpaceWidth(6), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + label, + style: AppStyle.xs.copyWith( + fontSize: 10, + fontWeight: FontWeight.w500, + color: AppColor.textSecondary, + ), + ), + SpaceHeight(1), + Text( + value, + style: AppStyle.xs.copyWith( + fontSize: 11, + fontWeight: FontWeight.w700, + color: valueColor, + ), + ), + ], + ), ), ], ), ); } - Color getStatusColor(String status) { - switch (status) { - case 'available': - return AppColor.success; - case 'low_stock': - return AppColor.warning; - case 'out_of_stock': - return AppColor.error; - default: - return AppColor.textSecondary; + Widget _buildMovementInfo( + IconData icon, + String label, + String value, + Color color, + ) { + return Row( + children: [ + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(6), + ), + child: Icon(icon, size: 12, color: color), + ), + const SpaceWidth(8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + label, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + Text( + value, + style: AppStyle.xs.copyWith( + color: color, + fontWeight: FontWeight.w700, + fontSize: 11, + ), + ), + ], + ), + ], + ); + } + + // Helper methods + bool _shouldShowAdditionalInfo() { + return item.isLowStock || item.isZeroStock || _hasMovementData(); + } + + bool _hasMovementData() { + return item.totalIn > 0 || item.totalOut > 0; + } + + Color _getStatusColor() { + if (item.isZeroStock) return AppColor.error; + if (item.isLowStock) return AppColor.warning; + return AppColor.success; + } + + List _getGradientColors() { + if (item.isZeroStock) { + return [AppColor.error, AppColor.error.withOpacity(0.7)]; + } + if (item.isLowStock) { + return [AppColor.warning, AppColor.warning.withOpacity(0.7)]; + } + return [AppColor.primary, AppColor.primary.withOpacity(0.7)]; + } + + Color _getQuantityColor() { + if (item.isZeroStock) return AppColor.error; + if (item.isLowStock) return AppColor.warning; + return AppColor.textPrimary; + } + + String _getStatusText() { + if (item.isZeroStock) return 'HABIS'; + if (item.isLowStock) return 'MINIM'; + return 'TERSEDIA'; + } + + IconData _getCategoryIcon() { + final category = item.categoryName.toLowerCase(); + if (category.contains('elektronik') || category.contains('gadget')) { + return LineIcons.mobilePhone; + } else if (category.contains('fashion') || category.contains('pakaian')) { + return LineIcons.tShirt; + } else if (category.contains('makanan') || category.contains('food')) { + return LineIcons.utensils; + } else if (category.contains('kesehatan') || category.contains('health')) { + return LineIcons.medkit; + } else if (category.contains('rumah') || category.contains('home')) { + return LineIcons.home; + } else if (category.contains('olahraga') || category.contains('sport')) { + return LineIcons.dumbbell; + } + return LineIcons.box; + } + + String _formatCurrencyShort(int amount) { + if (amount.abs() >= 1000000000) { + return 'Rp ${(amount / 1000000000).toStringAsFixed(1)}B'; + } else if (amount.abs() >= 1000000) { + return 'Rp ${(amount / 1000000).toStringAsFixed(1)}M'; + } else if (amount.abs() >= 1000) { + return 'Rp ${(amount / 1000).toStringAsFixed(0)}K'; + } else { + return 'Rp ${NumberFormat('#,###', 'id_ID').format(amount)}'; } } } diff --git a/lib/presentation/pages/inventory/widgets/stat_card.dart b/lib/presentation/pages/inventory/widgets/stat_card.dart index 08d5125..c418b06 100644 --- a/lib/presentation/pages/inventory/widgets/stat_card.dart +++ b/lib/presentation/pages/inventory/widgets/stat_card.dart @@ -8,14 +8,12 @@ class InventoryStatCard extends StatelessWidget { final String value; final IconData icon; final Color color; - final String change; const InventoryStatCard({ super.key, required this.title, required this.value, required this.icon, required this.color, - required this.change, }); @override @@ -52,20 +50,6 @@ class InventoryStatCard extends StatelessWidget { child: Icon(icon, color: color, size: 24), ), const Spacer(), - Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: _getChangeColor(change).withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - change, - style: AppStyle.sm.copyWith( - color: _getChangeColor(change), - fontWeight: FontWeight.w700, - ), - ), - ), ], ), SpaceHeight(16), @@ -88,14 +72,4 @@ class InventoryStatCard extends StatelessWidget { ), ); } - - Color _getChangeColor(String change) { - if (change.startsWith('+')) { - return AppColor.success; - } else if (change.startsWith('-')) { - return AppColor.error; - } else { - return AppColor.warning; - } - } } From 51289d7829e26bf5f8249b4b0ba0eadd1f08fbcb Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 00:30:17 +0700 Subject: [PATCH 058/108] feat: customer page --- .../customer_loader/customer_loader_bloc.dart | 87 ++ .../customer_loader_bloc.freezed.dart | 653 +++++++++++ .../customer_loader_event.dart | 9 + .../customer_loader_state.dart | 17 + lib/common/url/api_path.dart | 3 + lib/domain/customer/customer.dart | 9 + lib/domain/customer/customer.freezed.dart | 1015 +++++++++++++++++ .../customer/entities/customer_entity.dart | 32 + .../customer/failures/customer_failure.dart | 10 + .../repositories/i_customer_repository.dart | 9 + .../customer/customer_dtos.dart | 8 + .../customer/customer_dtos.freezed.dart | 440 +++++++ .../customer/customer_dtos.g.dart | 37 + .../datasources/remote_data_provider.dart | 52 + .../customer/dto/customer_dto.dart | 39 + .../repositories/customer_repository.dart | 41 + lib/injection.config.dart | 16 + .../pages/customer/customer_page.dart | 237 ++-- .../pages/customer/widgets/customer_card.dart | 419 ++++++- .../pages/customer/widgets/customer_tile.dart | 451 ++++++-- lib/presentation/router/app_router.gr.dart | 2 +- 21 files changed, 3278 insertions(+), 308 deletions(-) create mode 100644 lib/application/customer/customer_loader/customer_loader_bloc.dart create mode 100644 lib/application/customer/customer_loader/customer_loader_bloc.freezed.dart create mode 100644 lib/application/customer/customer_loader/customer_loader_event.dart create mode 100644 lib/application/customer/customer_loader/customer_loader_state.dart create mode 100644 lib/domain/customer/customer.dart create mode 100644 lib/domain/customer/customer.freezed.dart create mode 100644 lib/domain/customer/entities/customer_entity.dart create mode 100644 lib/domain/customer/failures/customer_failure.dart create mode 100644 lib/domain/customer/repositories/i_customer_repository.dart create mode 100644 lib/infrastructure/customer/customer_dtos.dart create mode 100644 lib/infrastructure/customer/customer_dtos.freezed.dart create mode 100644 lib/infrastructure/customer/customer_dtos.g.dart create mode 100644 lib/infrastructure/customer/datasources/remote_data_provider.dart create mode 100644 lib/infrastructure/customer/dto/customer_dto.dart create mode 100644 lib/infrastructure/customer/repositories/customer_repository.dart diff --git a/lib/application/customer/customer_loader/customer_loader_bloc.dart b/lib/application/customer/customer_loader/customer_loader_bloc.dart new file mode 100644 index 0000000..a176b56 --- /dev/null +++ b/lib/application/customer/customer_loader/customer_loader_bloc.dart @@ -0,0 +1,87 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/customer/customer.dart'; + +part 'customer_loader_event.dart'; +part 'customer_loader_state.dart'; +part 'customer_loader_bloc.freezed.dart'; + +@injectable +class CustomerLoaderBloc + extends Bloc { + final ICustomerRepository _repository; + CustomerLoaderBloc(this._repository) : super(CustomerLoaderState.initial()) { + on(_onCustomerLoaderEvent); + } + + Future _onCustomerLoaderEvent( + CustomerLoaderEvent event, + Emitter emit, + ) { + return event.map( + searchChanged: (e) async { + emit(state.copyWith(search: e.search)); + }, + fetched: (e) async { + var newState = state; + + if (e.isRefresh) { + newState = state.copyWith(isFetching: true); + + emit(newState); + } + + newState = await _mapFetchedToState(state, isRefresh: e.isRefresh); + + emit(newState); + }, + ); + } + + Future _mapFetchedToState( + CustomerLoaderState state, { + bool isRefresh = false, + }) async { + state = state.copyWith(isFetching: false); + + if (state.hasReachedMax && state.customers.isNotEmpty && !isRefresh) { + return state; + } + + if (isRefresh) { + state = state.copyWith( + page: 1, + failureOptionCustomer: none(), + hasReachedMax: false, + customers: [], + ); + } + + final failureOrCustomer = await _repository.get( + page: state.page, + search: state.search, + ); + + state = failureOrCustomer.fold( + (f) { + if (state.customers.isNotEmpty) { + return state.copyWith(hasReachedMax: true); + } + return state.copyWith(failureOptionCustomer: optionOf(f)); + }, + (customers) { + return state.copyWith( + customers: List.from(state.customers)..addAll(customers), + failureOptionCustomer: none(), + page: state.page + 1, + hasReachedMax: customers.length < 10, + ); + }, + ); + + return state; + } +} diff --git a/lib/application/customer/customer_loader/customer_loader_bloc.freezed.dart b/lib/application/customer/customer_loader/customer_loader_bloc.freezed.dart new file mode 100644 index 0000000..d612039 --- /dev/null +++ b/lib/application/customer/customer_loader/customer_loader_bloc.freezed.dart @@ -0,0 +1,653 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'customer_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$CustomerLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CustomerLoaderEventCopyWith<$Res> { + factory $CustomerLoaderEventCopyWith( + CustomerLoaderEvent value, + $Res Function(CustomerLoaderEvent) then, + ) = _$CustomerLoaderEventCopyWithImpl<$Res, CustomerLoaderEvent>; +} + +/// @nodoc +class _$CustomerLoaderEventCopyWithImpl<$Res, $Val extends CustomerLoaderEvent> + implements $CustomerLoaderEventCopyWith<$Res> { + _$CustomerLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CustomerLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$SearchChangedImplCopyWith<$Res> { + factory _$$SearchChangedImplCopyWith( + _$SearchChangedImpl value, + $Res Function(_$SearchChangedImpl) then, + ) = __$$SearchChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String search}); +} + +/// @nodoc +class __$$SearchChangedImplCopyWithImpl<$Res> + extends _$CustomerLoaderEventCopyWithImpl<$Res, _$SearchChangedImpl> + implements _$$SearchChangedImplCopyWith<$Res> { + __$$SearchChangedImplCopyWithImpl( + _$SearchChangedImpl _value, + $Res Function(_$SearchChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? search = null}) { + return _then( + _$SearchChangedImpl( + null == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$SearchChangedImpl implements _SearchChanged { + const _$SearchChangedImpl(this.search); + + @override + final String search; + + @override + String toString() { + return 'CustomerLoaderEvent.searchChanged(search: $search)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SearchChangedImpl && + (identical(other.search, search) || other.search == search)); + } + + @override + int get hashCode => Object.hash(runtimeType, search); + + /// Create a copy of CustomerLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + __$$SearchChangedImplCopyWithImpl<_$SearchChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return searchChanged(search); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return searchChanged?.call(search); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(search); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return searchChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return searchChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(this); + } + return orElse(); + } +} + +abstract class _SearchChanged implements CustomerLoaderEvent { + const factory _SearchChanged(final String search) = _$SearchChangedImpl; + + String get search; + + /// Create a copy of CustomerLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; + @useResult + $Res call({bool isRefresh}); +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$CustomerLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? isRefresh = null}) { + return _then( + _$FetchedImpl( + isRefresh: null == isRefresh + ? _value.isRefresh + : isRefresh // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl({this.isRefresh = false}); + + @override + @JsonKey() + final bool isRefresh; + + @override + String toString() { + return 'CustomerLoaderEvent.fetched(isRefresh: $isRefresh)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$FetchedImpl && + (identical(other.isRefresh, isRefresh) || + other.isRefresh == isRefresh)); + } + + @override + int get hashCode => Object.hash(runtimeType, isRefresh); + + /// Create a copy of CustomerLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + __$$FetchedImplCopyWithImpl<_$FetchedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return fetched(isRefresh); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return fetched?.call(isRefresh); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(isRefresh); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements CustomerLoaderEvent { + const factory _Fetched({final bool isRefresh}) = _$FetchedImpl; + + bool get isRefresh; + + /// Create a copy of CustomerLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$CustomerLoaderState { + List get customers => throw _privateConstructorUsedError; + Option get failureOptionCustomer => + throw _privateConstructorUsedError; + String? get categoryId => throw _privateConstructorUsedError; + String? get search => throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + bool get hasReachedMax => throw _privateConstructorUsedError; + int get page => throw _privateConstructorUsedError; + + /// Create a copy of CustomerLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CustomerLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CustomerLoaderStateCopyWith<$Res> { + factory $CustomerLoaderStateCopyWith( + CustomerLoaderState value, + $Res Function(CustomerLoaderState) then, + ) = _$CustomerLoaderStateCopyWithImpl<$Res, CustomerLoaderState>; + @useResult + $Res call({ + List customers, + Option failureOptionCustomer, + String? categoryId, + String? search, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class _$CustomerLoaderStateCopyWithImpl<$Res, $Val extends CustomerLoaderState> + implements $CustomerLoaderStateCopyWith<$Res> { + _$CustomerLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CustomerLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? customers = null, + Object? failureOptionCustomer = null, + Object? categoryId = freezed, + Object? search = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _value.copyWith( + customers: null == customers + ? _value.customers + : customers // ignore: cast_nullable_to_non_nullable + as List, + failureOptionCustomer: null == failureOptionCustomer + ? _value.failureOptionCustomer + : failureOptionCustomer // ignore: cast_nullable_to_non_nullable + as Option, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CustomerLoaderStateImplCopyWith<$Res> + implements $CustomerLoaderStateCopyWith<$Res> { + factory _$$CustomerLoaderStateImplCopyWith( + _$CustomerLoaderStateImpl value, + $Res Function(_$CustomerLoaderStateImpl) then, + ) = __$$CustomerLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + List customers, + Option failureOptionCustomer, + String? categoryId, + String? search, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class __$$CustomerLoaderStateImplCopyWithImpl<$Res> + extends _$CustomerLoaderStateCopyWithImpl<$Res, _$CustomerLoaderStateImpl> + implements _$$CustomerLoaderStateImplCopyWith<$Res> { + __$$CustomerLoaderStateImplCopyWithImpl( + _$CustomerLoaderStateImpl _value, + $Res Function(_$CustomerLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? customers = null, + Object? failureOptionCustomer = null, + Object? categoryId = freezed, + Object? search = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _$CustomerLoaderStateImpl( + customers: null == customers + ? _value._customers + : customers // ignore: cast_nullable_to_non_nullable + as List, + failureOptionCustomer: null == failureOptionCustomer + ? _value.failureOptionCustomer + : failureOptionCustomer // ignore: cast_nullable_to_non_nullable + as Option, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$CustomerLoaderStateImpl implements _CustomerLoaderState { + const _$CustomerLoaderStateImpl({ + required final List customers, + required this.failureOptionCustomer, + this.categoryId, + this.search, + this.isFetching = false, + this.hasReachedMax = false, + this.page = 1, + }) : _customers = customers; + + final List _customers; + @override + List get customers { + if (_customers is EqualUnmodifiableListView) return _customers; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_customers); + } + + @override + final Option failureOptionCustomer; + @override + final String? categoryId; + @override + final String? search; + @override + @JsonKey() + final bool isFetching; + @override + @JsonKey() + final bool hasReachedMax; + @override + @JsonKey() + final int page; + + @override + String toString() { + return 'CustomerLoaderState(customers: $customers, failureOptionCustomer: $failureOptionCustomer, categoryId: $categoryId, search: $search, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CustomerLoaderStateImpl && + const DeepCollectionEquality().equals( + other._customers, + _customers, + ) && + (identical(other.failureOptionCustomer, failureOptionCustomer) || + other.failureOptionCustomer == failureOptionCustomer) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.search, search) || other.search == search) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching) && + (identical(other.hasReachedMax, hasReachedMax) || + other.hasReachedMax == hasReachedMax) && + (identical(other.page, page) || other.page == page)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(_customers), + failureOptionCustomer, + categoryId, + search, + isFetching, + hasReachedMax, + page, + ); + + /// Create a copy of CustomerLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CustomerLoaderStateImplCopyWith<_$CustomerLoaderStateImpl> get copyWith => + __$$CustomerLoaderStateImplCopyWithImpl<_$CustomerLoaderStateImpl>( + this, + _$identity, + ); +} + +abstract class _CustomerLoaderState implements CustomerLoaderState { + const factory _CustomerLoaderState({ + required final List customers, + required final Option failureOptionCustomer, + final String? categoryId, + final String? search, + final bool isFetching, + final bool hasReachedMax, + final int page, + }) = _$CustomerLoaderStateImpl; + + @override + List get customers; + @override + Option get failureOptionCustomer; + @override + String? get categoryId; + @override + String? get search; + @override + bool get isFetching; + @override + bool get hasReachedMax; + @override + int get page; + + /// Create a copy of CustomerLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CustomerLoaderStateImplCopyWith<_$CustomerLoaderStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/customer/customer_loader/customer_loader_event.dart b/lib/application/customer/customer_loader/customer_loader_event.dart new file mode 100644 index 0000000..82ebd41 --- /dev/null +++ b/lib/application/customer/customer_loader/customer_loader_event.dart @@ -0,0 +1,9 @@ +part of 'customer_loader_bloc.dart'; + +@freezed +class CustomerLoaderEvent with _$CustomerLoaderEvent { + const factory CustomerLoaderEvent.searchChanged(String search) = + _SearchChanged; + const factory CustomerLoaderEvent.fetched({@Default(false) bool isRefresh}) = + _Fetched; +} diff --git a/lib/application/customer/customer_loader/customer_loader_state.dart b/lib/application/customer/customer_loader/customer_loader_state.dart new file mode 100644 index 0000000..4cad298 --- /dev/null +++ b/lib/application/customer/customer_loader/customer_loader_state.dart @@ -0,0 +1,17 @@ +part of 'customer_loader_bloc.dart'; + +@freezed +class CustomerLoaderState with _$CustomerLoaderState { + const factory CustomerLoaderState({ + required List customers, + required Option failureOptionCustomer, + String? categoryId, + String? search, + @Default(false) bool isFetching, + @Default(false) bool hasReachedMax, + @Default(1) int page, + }) = _CustomerLoaderState; + + factory CustomerLoaderState.initial() => + CustomerLoaderState(customers: [], failureOptionCustomer: none()); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index ad89d04..1c2acee 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -17,4 +17,7 @@ class ApiPath { // Product static const String product = '/api/v1/products'; + + // Customer + static const String customer = '/api/v1/customers'; } diff --git a/lib/domain/customer/customer.dart b/lib/domain/customer/customer.dart new file mode 100644 index 0000000..d81a9f0 --- /dev/null +++ b/lib/domain/customer/customer.dart @@ -0,0 +1,9 @@ +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../common/api/api_failure.dart'; + +part 'customer.freezed.dart'; +part 'entities/customer_entity.dart'; +part 'failures/customer_failure.dart'; +part 'repositories/i_customer_repository.dart'; diff --git a/lib/domain/customer/customer.freezed.dart b/lib/domain/customer/customer.freezed.dart new file mode 100644 index 0000000..d970276 --- /dev/null +++ b/lib/domain/customer/customer.freezed.dart @@ -0,0 +1,1015 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'customer.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$Customer { + String get id => throw _privateConstructorUsedError; + String get organizationId => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + String get email => throw _privateConstructorUsedError; + String get phone => throw _privateConstructorUsedError; + String get address => throw _privateConstructorUsedError; + bool get isDefault => throw _privateConstructorUsedError; + bool get isActive => throw _privateConstructorUsedError; + Map get metadata => throw _privateConstructorUsedError; + String get createdAt => throw _privateConstructorUsedError; + String get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of Customer + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CustomerCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CustomerCopyWith<$Res> { + factory $CustomerCopyWith(Customer value, $Res Function(Customer) then) = + _$CustomerCopyWithImpl<$Res, Customer>; + @useResult + $Res call({ + String id, + String organizationId, + String name, + String email, + String phone, + String address, + bool isDefault, + bool isActive, + Map metadata, + String createdAt, + String updatedAt, + }); +} + +/// @nodoc +class _$CustomerCopyWithImpl<$Res, $Val extends Customer> + implements $CustomerCopyWith<$Res> { + _$CustomerCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Customer + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? name = null, + Object? email = null, + Object? phone = null, + Object? address = null, + Object? isDefault = null, + Object? isActive = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + phone: null == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + isDefault: null == isDefault + ? _value.isDefault + : isDefault // ignore: cast_nullable_to_non_nullable + as bool, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + metadata: null == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CustomerImplCopyWith<$Res> + implements $CustomerCopyWith<$Res> { + factory _$$CustomerImplCopyWith( + _$CustomerImpl value, + $Res Function(_$CustomerImpl) then, + ) = __$$CustomerImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String organizationId, + String name, + String email, + String phone, + String address, + bool isDefault, + bool isActive, + Map metadata, + String createdAt, + String updatedAt, + }); +} + +/// @nodoc +class __$$CustomerImplCopyWithImpl<$Res> + extends _$CustomerCopyWithImpl<$Res, _$CustomerImpl> + implements _$$CustomerImplCopyWith<$Res> { + __$$CustomerImplCopyWithImpl( + _$CustomerImpl _value, + $Res Function(_$CustomerImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Customer + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? name = null, + Object? email = null, + Object? phone = null, + Object? address = null, + Object? isDefault = null, + Object? isActive = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _$CustomerImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + phone: null == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + isDefault: null == isDefault + ? _value.isDefault + : isDefault // ignore: cast_nullable_to_non_nullable + as bool, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + metadata: null == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$CustomerImpl implements _Customer { + const _$CustomerImpl({ + required this.id, + required this.organizationId, + required this.name, + required this.email, + required this.phone, + required this.address, + required this.isDefault, + required this.isActive, + required final Map metadata, + required this.createdAt, + required this.updatedAt, + }) : _metadata = metadata; + + @override + final String id; + @override + final String organizationId; + @override + final String name; + @override + final String email; + @override + final String phone; + @override + final String address; + @override + final bool isDefault; + @override + final bool isActive; + final Map _metadata; + @override + Map get metadata { + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_metadata); + } + + @override + final String createdAt; + @override + final String updatedAt; + + @override + String toString() { + return 'Customer(id: $id, organizationId: $organizationId, name: $name, email: $email, phone: $phone, address: $address, isDefault: $isDefault, isActive: $isActive, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CustomerImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.name, name) || other.name == name) && + (identical(other.email, email) || other.email == email) && + (identical(other.phone, phone) || other.phone == phone) && + (identical(other.address, address) || other.address == address) && + (identical(other.isDefault, isDefault) || + other.isDefault == isDefault) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + name, + email, + phone, + address, + isDefault, + isActive, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of Customer + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CustomerImplCopyWith<_$CustomerImpl> get copyWith => + __$$CustomerImplCopyWithImpl<_$CustomerImpl>(this, _$identity); +} + +abstract class _Customer implements Customer { + const factory _Customer({ + required final String id, + required final String organizationId, + required final String name, + required final String email, + required final String phone, + required final String address, + required final bool isDefault, + required final bool isActive, + required final Map metadata, + required final String createdAt, + required final String updatedAt, + }) = _$CustomerImpl; + + @override + String get id; + @override + String get organizationId; + @override + String get name; + @override + String get email; + @override + String get phone; + @override + String get address; + @override + bool get isDefault; + @override + bool get isActive; + @override + Map get metadata; + @override + String get createdAt; + @override + String get updatedAt; + + /// Create a copy of Customer + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CustomerImplCopyWith<_$CustomerImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$CustomerFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CustomerFailureCopyWith<$Res> { + factory $CustomerFailureCopyWith( + CustomerFailure value, + $Res Function(CustomerFailure) then, + ) = _$CustomerFailureCopyWithImpl<$Res, CustomerFailure>; +} + +/// @nodoc +class _$CustomerFailureCopyWithImpl<$Res, $Val extends CustomerFailure> + implements $CustomerFailureCopyWith<$Res> { + _$CustomerFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$CustomerFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'CustomerFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements CustomerFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$CustomerFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'CustomerFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements CustomerFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$CustomerFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'CustomerFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements CustomerFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$CustomerFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'CustomerFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements CustomerFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of CustomerFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/customer/entities/customer_entity.dart b/lib/domain/customer/entities/customer_entity.dart new file mode 100644 index 0000000..5d1632c --- /dev/null +++ b/lib/domain/customer/entities/customer_entity.dart @@ -0,0 +1,32 @@ +part of '../customer.dart'; + +@freezed +class Customer with _$Customer { + const factory Customer({ + required String id, + required String organizationId, + required String name, + required String email, + required String phone, + required String address, + required bool isDefault, + required bool isActive, + required Map metadata, + required String createdAt, + required String updatedAt, + }) = _Customer; + + factory Customer.empty() => Customer( + id: '', + organizationId: '', + name: '', + email: '', + phone: '', + address: '', + isDefault: false, + isActive: false, + metadata: const {}, + createdAt: '', + updatedAt: '', + ); +} diff --git a/lib/domain/customer/failures/customer_failure.dart b/lib/domain/customer/failures/customer_failure.dart new file mode 100644 index 0000000..48d0f86 --- /dev/null +++ b/lib/domain/customer/failures/customer_failure.dart @@ -0,0 +1,10 @@ +part of '../customer.dart'; + +@freezed +sealed class CustomerFailure with _$CustomerFailure { + const factory CustomerFailure.serverError(ApiFailure failure) = _ServerError; + const factory CustomerFailure.unexpectedError() = _UnexpectedError; + const factory CustomerFailure.empty() = _Empty; + const factory CustomerFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/customer/repositories/i_customer_repository.dart b/lib/domain/customer/repositories/i_customer_repository.dart new file mode 100644 index 0000000..6efbac2 --- /dev/null +++ b/lib/domain/customer/repositories/i_customer_repository.dart @@ -0,0 +1,9 @@ +part of '../customer.dart'; + +abstract class ICustomerRepository { + Future>> get({ + int page = 1, + int limit = 20, + String? search, + }); +} diff --git a/lib/infrastructure/customer/customer_dtos.dart b/lib/infrastructure/customer/customer_dtos.dart new file mode 100644 index 0000000..ca0a1f0 --- /dev/null +++ b/lib/infrastructure/customer/customer_dtos.dart @@ -0,0 +1,8 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/customer/customer.dart'; + +part 'customer_dtos.freezed.dart'; +part 'customer_dtos.g.dart'; + +part 'dto/customer_dto.dart'; diff --git a/lib/infrastructure/customer/customer_dtos.freezed.dart b/lib/infrastructure/customer/customer_dtos.freezed.dart new file mode 100644 index 0000000..1f3f52d --- /dev/null +++ b/lib/infrastructure/customer/customer_dtos.freezed.dart @@ -0,0 +1,440 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'customer_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +CustomerDto _$CustomerDtoFromJson(Map json) { + return _CustomerDto.fromJson(json); +} + +/// @nodoc +mixin _$CustomerDto { + @JsonKey(name: "id") + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: "organization_id") + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: "name") + String? get name => throw _privateConstructorUsedError; + @JsonKey(name: "email") + String? get email => throw _privateConstructorUsedError; + @JsonKey(name: "phone") + String? get phone => throw _privateConstructorUsedError; + @JsonKey(name: "address") + String? get address => throw _privateConstructorUsedError; + @JsonKey(name: "is_default") + bool? get isDefault => throw _privateConstructorUsedError; + @JsonKey(name: "is_active") + bool? get isActive => throw _privateConstructorUsedError; + @JsonKey(name: "metadata") + Map? get metadata => throw _privateConstructorUsedError; + @JsonKey(name: "created_at") + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: "updated_at") + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this CustomerDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of CustomerDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CustomerDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CustomerDtoCopyWith<$Res> { + factory $CustomerDtoCopyWith( + CustomerDto value, + $Res Function(CustomerDto) then, + ) = _$CustomerDtoCopyWithImpl<$Res, CustomerDto>; + @useResult + $Res call({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "organization_id") String? organizationId, + @JsonKey(name: "name") String? name, + @JsonKey(name: "email") String? email, + @JsonKey(name: "phone") String? phone, + @JsonKey(name: "address") String? address, + @JsonKey(name: "is_default") bool? isDefault, + @JsonKey(name: "is_active") bool? isActive, + @JsonKey(name: "metadata") Map? metadata, + @JsonKey(name: "created_at") String? createdAt, + @JsonKey(name: "updated_at") String? updatedAt, + }); +} + +/// @nodoc +class _$CustomerDtoCopyWithImpl<$Res, $Val extends CustomerDto> + implements $CustomerDtoCopyWith<$Res> { + _$CustomerDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CustomerDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? name = freezed, + Object? email = freezed, + Object? phone = freezed, + Object? address = freezed, + Object? isDefault = freezed, + Object? isActive = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + email: freezed == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String?, + phone: freezed == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String?, + address: freezed == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String?, + isDefault: freezed == isDefault + ? _value.isDefault + : isDefault // ignore: cast_nullable_to_non_nullable + as bool?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + metadata: freezed == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$CustomerDtoImplCopyWith<$Res> + implements $CustomerDtoCopyWith<$Res> { + factory _$$CustomerDtoImplCopyWith( + _$CustomerDtoImpl value, + $Res Function(_$CustomerDtoImpl) then, + ) = __$$CustomerDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "organization_id") String? organizationId, + @JsonKey(name: "name") String? name, + @JsonKey(name: "email") String? email, + @JsonKey(name: "phone") String? phone, + @JsonKey(name: "address") String? address, + @JsonKey(name: "is_default") bool? isDefault, + @JsonKey(name: "is_active") bool? isActive, + @JsonKey(name: "metadata") Map? metadata, + @JsonKey(name: "created_at") String? createdAt, + @JsonKey(name: "updated_at") String? updatedAt, + }); +} + +/// @nodoc +class __$$CustomerDtoImplCopyWithImpl<$Res> + extends _$CustomerDtoCopyWithImpl<$Res, _$CustomerDtoImpl> + implements _$$CustomerDtoImplCopyWith<$Res> { + __$$CustomerDtoImplCopyWithImpl( + _$CustomerDtoImpl _value, + $Res Function(_$CustomerDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CustomerDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? name = freezed, + Object? email = freezed, + Object? phone = freezed, + Object? address = freezed, + Object? isDefault = freezed, + Object? isActive = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$CustomerDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + email: freezed == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String?, + phone: freezed == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String?, + address: freezed == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String?, + isDefault: freezed == isDefault + ? _value.isDefault + : isDefault // ignore: cast_nullable_to_non_nullable + as bool?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + metadata: freezed == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$CustomerDtoImpl extends _CustomerDto { + const _$CustomerDtoImpl({ + @JsonKey(name: "id") this.id, + @JsonKey(name: "organization_id") this.organizationId, + @JsonKey(name: "name") this.name, + @JsonKey(name: "email") this.email, + @JsonKey(name: "phone") this.phone, + @JsonKey(name: "address") this.address, + @JsonKey(name: "is_default") this.isDefault, + @JsonKey(name: "is_active") this.isActive, + @JsonKey(name: "metadata") final Map? metadata, + @JsonKey(name: "created_at") this.createdAt, + @JsonKey(name: "updated_at") this.updatedAt, + }) : _metadata = metadata, + super._(); + + factory _$CustomerDtoImpl.fromJson(Map json) => + _$$CustomerDtoImplFromJson(json); + + @override + @JsonKey(name: "id") + final String? id; + @override + @JsonKey(name: "organization_id") + final String? organizationId; + @override + @JsonKey(name: "name") + final String? name; + @override + @JsonKey(name: "email") + final String? email; + @override + @JsonKey(name: "phone") + final String? phone; + @override + @JsonKey(name: "address") + final String? address; + @override + @JsonKey(name: "is_default") + final bool? isDefault; + @override + @JsonKey(name: "is_active") + final bool? isActive; + final Map? _metadata; + @override + @JsonKey(name: "metadata") + Map? get metadata { + final value = _metadata; + if (value == null) return null; + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: "created_at") + final String? createdAt; + @override + @JsonKey(name: "updated_at") + final String? updatedAt; + + @override + String toString() { + return 'CustomerDto(id: $id, organizationId: $organizationId, name: $name, email: $email, phone: $phone, address: $address, isDefault: $isDefault, isActive: $isActive, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CustomerDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.name, name) || other.name == name) && + (identical(other.email, email) || other.email == email) && + (identical(other.phone, phone) || other.phone == phone) && + (identical(other.address, address) || other.address == address) && + (identical(other.isDefault, isDefault) || + other.isDefault == isDefault) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + name, + email, + phone, + address, + isDefault, + isActive, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of CustomerDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CustomerDtoImplCopyWith<_$CustomerDtoImpl> get copyWith => + __$$CustomerDtoImplCopyWithImpl<_$CustomerDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$CustomerDtoImplToJson(this); + } +} + +abstract class _CustomerDto extends CustomerDto { + const factory _CustomerDto({ + @JsonKey(name: "id") final String? id, + @JsonKey(name: "organization_id") final String? organizationId, + @JsonKey(name: "name") final String? name, + @JsonKey(name: "email") final String? email, + @JsonKey(name: "phone") final String? phone, + @JsonKey(name: "address") final String? address, + @JsonKey(name: "is_default") final bool? isDefault, + @JsonKey(name: "is_active") final bool? isActive, + @JsonKey(name: "metadata") final Map? metadata, + @JsonKey(name: "created_at") final String? createdAt, + @JsonKey(name: "updated_at") final String? updatedAt, + }) = _$CustomerDtoImpl; + const _CustomerDto._() : super._(); + + factory _CustomerDto.fromJson(Map json) = + _$CustomerDtoImpl.fromJson; + + @override + @JsonKey(name: "id") + String? get id; + @override + @JsonKey(name: "organization_id") + String? get organizationId; + @override + @JsonKey(name: "name") + String? get name; + @override + @JsonKey(name: "email") + String? get email; + @override + @JsonKey(name: "phone") + String? get phone; + @override + @JsonKey(name: "address") + String? get address; + @override + @JsonKey(name: "is_default") + bool? get isDefault; + @override + @JsonKey(name: "is_active") + bool? get isActive; + @override + @JsonKey(name: "metadata") + Map? get metadata; + @override + @JsonKey(name: "created_at") + String? get createdAt; + @override + @JsonKey(name: "updated_at") + String? get updatedAt; + + /// Create a copy of CustomerDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CustomerDtoImplCopyWith<_$CustomerDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/customer/customer_dtos.g.dart b/lib/infrastructure/customer/customer_dtos.g.dart new file mode 100644 index 0000000..148d005 --- /dev/null +++ b/lib/infrastructure/customer/customer_dtos.g.dart @@ -0,0 +1,37 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'customer_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$CustomerDtoImpl _$$CustomerDtoImplFromJson(Map json) => + _$CustomerDtoImpl( + id: json['id'] as String?, + organizationId: json['organization_id'] as String?, + name: json['name'] as String?, + email: json['email'] as String?, + phone: json['phone'] as String?, + address: json['address'] as String?, + isDefault: json['is_default'] as bool?, + isActive: json['is_active'] as bool?, + metadata: json['metadata'] as Map?, + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, + ); + +Map _$$CustomerDtoImplToJson(_$CustomerDtoImpl instance) => + { + 'id': instance.id, + 'organization_id': instance.organizationId, + 'name': instance.name, + 'email': instance.email, + 'phone': instance.phone, + 'address': instance.address, + 'is_default': instance.isDefault, + 'is_active': instance.isActive, + 'metadata': instance.metadata, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, + }; diff --git a/lib/infrastructure/customer/datasources/remote_data_provider.dart b/lib/infrastructure/customer/datasources/remote_data_provider.dart new file mode 100644 index 0000000..442a093 --- /dev/null +++ b/lib/infrastructure/customer/datasources/remote_data_provider.dart @@ -0,0 +1,52 @@ +import 'dart:developer'; + +import 'package:data_channel/data_channel.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/function/app_function.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/customer/customer.dart'; +import '../customer_dtos.dart'; + +@injectable +class CustomerRemoteDataProvider { + final ApiClient _apiClient; + final String _logName = "CustomerRemoteDataProvider"; + + CustomerRemoteDataProvider(this._apiClient); + + Future>> fetch({ + int page = 1, + int limit = 20, + String? search, + }) async { + try { + Map params = {'page': page, 'limit': limit}; + + if (search != null && search.isNotEmpty) { + params['search'] = search; + } + + final response = await _apiClient.get( + ApiPath.customer, + params: params, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(CustomerFailure.empty()); + } + + final dto = (response.data['data']['data'] as List) + .map((e) => CustomerDto.fromJson(e)) + .toList(); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchCustomerError', name: _logName, error: e, stackTrace: s); + return DC.error(CustomerFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/customer/dto/customer_dto.dart b/lib/infrastructure/customer/dto/customer_dto.dart new file mode 100644 index 0000000..46cba2a --- /dev/null +++ b/lib/infrastructure/customer/dto/customer_dto.dart @@ -0,0 +1,39 @@ +part of '../customer_dtos.dart'; + +@freezed +class CustomerDto with _$CustomerDto { + const CustomerDto._(); + + const factory CustomerDto({ + @JsonKey(name: "id") String? id, + @JsonKey(name: "organization_id") String? organizationId, + @JsonKey(name: "name") String? name, + @JsonKey(name: "email") String? email, + @JsonKey(name: "phone") String? phone, + @JsonKey(name: "address") String? address, + @JsonKey(name: "is_default") bool? isDefault, + @JsonKey(name: "is_active") bool? isActive, + @JsonKey(name: "metadata") Map? metadata, + @JsonKey(name: "created_at") String? createdAt, + @JsonKey(name: "updated_at") String? updatedAt, + }) = _CustomerDto; + + factory CustomerDto.fromJson(Map json) => + _$CustomerDtoFromJson(json); + + Customer toDomain() { + return Customer( + id: id ?? '', + organizationId: organizationId ?? '', + name: name ?? '', + email: email ?? '', + phone: phone ?? '', + address: address ?? '', + isDefault: isDefault ?? false, + isActive: isActive ?? false, + metadata: metadata ?? {}, + createdAt: createdAt ?? '', + updatedAt: updatedAt ?? '', + ); + } +} diff --git a/lib/infrastructure/customer/repositories/customer_repository.dart b/lib/infrastructure/customer/repositories/customer_repository.dart new file mode 100644 index 0000000..b826b8d --- /dev/null +++ b/lib/infrastructure/customer/repositories/customer_repository.dart @@ -0,0 +1,41 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/customer/customer.dart'; +import '../datasources/remote_data_provider.dart'; + +@Injectable(as: ICustomerRepository) +class CustomerRepository implements ICustomerRepository { + final CustomerRemoteDataProvider _dataProvider; + final String _logName = 'CustomerRepository'; + + CustomerRepository(this._dataProvider); + + @override + Future>> get({ + int page = 1, + int limit = 20, + String? search, + }) async { + try { + final result = await _dataProvider.fetch( + page: page, + limit: limit, + search: search, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.map((item) => item.toDomain()).toList(); + + return right(auth); + } catch (e, s) { + log('getCustomerError', name: _logName, error: e, stackTrace: s); + return left(const CustomerFailure.unexpectedError()); + } + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index e51896f..2a46271 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -24,6 +24,8 @@ import 'package:apskel_owner_flutter/application/auth/logout_form/logout_form_bl as _i574; import 'package:apskel_owner_flutter/application/category/category_loader/category_loader_bloc.dart' as _i183; +import 'package:apskel_owner_flutter/application/customer/customer_loader/customer_loader_bloc.dart' + as _i972; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' @@ -41,6 +43,7 @@ import 'package:apskel_owner_flutter/domain/analytic/repositories/i_analytic_rep as _i477; import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; import 'package:apskel_owner_flutter/domain/category/category.dart' as _i1020; +import 'package:apskel_owner_flutter/domain/customer/customer.dart' as _i48; import 'package:apskel_owner_flutter/domain/product/product.dart' as _i419; import 'package:apskel_owner_flutter/env.dart' as _i6; import 'package:apskel_owner_flutter/infrastructure/analytic/datasource/remote_data_provider.dart' @@ -57,6 +60,10 @@ import 'package:apskel_owner_flutter/infrastructure/category/datasource/remote_d as _i333; import 'package:apskel_owner_flutter/infrastructure/category/repositories/category_repository.dart' as _i869; +import 'package:apskel_owner_flutter/infrastructure/customer/datasources/remote_data_provider.dart' + as _i1006; +import 'package:apskel_owner_flutter/infrastructure/customer/repositories/customer_repository.dart' + as _i550; import 'package:apskel_owner_flutter/infrastructure/product/datasources/remote_data_provider.dart' as _i823; import 'package:apskel_owner_flutter/infrastructure/product/repositories/product_repository.dart' @@ -122,6 +129,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i866.AnalyticRemoteDataProvider>( () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i1006.CustomerRemoteDataProvider>( + () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), + ); + gh.factory<_i48.ICustomerRepository>( + () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), + ); gh.factory<_i49.IAuthRepository>( () => _i1035.AuthRepository( gh<_i991.AuthLocalDataProvider>(), @@ -131,6 +144,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i419.IProductRepository>( () => _i121.ProductRepository(gh<_i823.ProductRemoteDataProvider>()), ); + gh.factory<_i972.CustomerLoaderBloc>( + () => _i972.CustomerLoaderBloc(gh<_i48.ICustomerRepository>()), + ); gh.factory<_i477.IAnalyticRepository>( () => _i393.AnalyticRepository( gh<_i866.AnalyticRemoteDataProvider>(), diff --git a/lib/presentation/pages/customer/customer_page.dart b/lib/presentation/pages/customer/customer_page.dart index da89db4..9b63756 100644 --- a/lib/presentation/pages/customer/customer_page.dart +++ b/lib/presentation/pages/customer/customer_page.dart @@ -1,106 +1,39 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../application/customer/customer_loader/customer_loader_bloc.dart'; import '../../../common/theme/theme.dart'; +import '../../../domain/customer/customer.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import 'widgets/customer_card.dart'; import 'widgets/customer_tile.dart'; -// Customer Model -class Customer { - final String id; - final String name; - final String email; - final String phone; - final String address; - final double totalPurchases; - final int totalOrders; - final DateTime lastVisit; - final String membershipLevel; - final bool isActive; - - Customer({ - required this.id, - required this.name, - required this.email, - required this.phone, - required this.address, - required this.totalPurchases, - required this.totalOrders, - required this.lastVisit, - required this.membershipLevel, - required this.isActive, - }); -} - @RoutePage() -class CustomerPage extends StatefulWidget { +class CustomerPage extends StatefulWidget implements AutoRouteWrapper { const CustomerPage({super.key}); @override State createState() => _CustomerPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => + getIt() + ..add(CustomerLoaderEvent.fetched(isRefresh: true)), + child: this, + ); } class _CustomerPageState extends State with TickerProviderStateMixin { final TextEditingController _searchController = TextEditingController(); - String _searchQuery = ''; + ScrollController _scrollController = ScrollController(); bool _isGridView = false; - // Sample customer data - final List _customers = [ - Customer( - id: '001', - name: 'Ahmad Wijaya', - email: 'ahmad@email.com', - phone: '+62 812-3456-7890', - address: 'Jl. Raya No. 123, Jakarta', - totalPurchases: 2500000, - totalOrders: 15, - lastVisit: DateTime.now().subtract(Duration(days: 2)), - membershipLevel: 'Gold', - isActive: true, - ), - Customer( - id: '002', - name: 'Siti Nurhaliza', - email: 'siti@email.com', - phone: '+62 813-4567-8901', - address: 'Jl. Merdeka No. 45, Bandung', - totalPurchases: 1800000, - totalOrders: 12, - lastVisit: DateTime.now().subtract(Duration(days: 5)), - membershipLevel: 'Silver', - isActive: true, - ), - Customer( - id: '003', - name: 'Budi Santoso', - email: 'budi@email.com', - phone: '+62 814-5678-9012', - address: 'Jl. Sudirman No. 67, Surabaya', - totalPurchases: 3200000, - totalOrders: 20, - lastVisit: DateTime.now().subtract(Duration(days: 1)), - membershipLevel: 'Platinum', - isActive: true, - ), - Customer( - id: '004', - name: 'Maya Sari', - email: 'maya@email.com', - phone: '+62 815-6789-0123', - address: 'Jl. Diponegoro No. 89, Yogyakarta', - totalPurchases: 950000, - totalOrders: 8, - lastVisit: DateTime.now().subtract(Duration(days: 30)), - membershipLevel: 'Bronze', - isActive: false, - ), - ]; - @override initState() { super.initState(); @@ -112,94 +45,102 @@ class _CustomerPageState extends State super.dispose(); } - List get filteredCustomers { - var filtered = _customers.where((customer) { - final matchesSearch = - customer.name.toLowerCase().contains(_searchQuery.toLowerCase()) || - customer.email.toLowerCase().contains(_searchQuery.toLowerCase()) || - customer.phone.contains(_searchQuery); - - return matchesSearch; - }).toList(); - - return filtered; - } - @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - // SliverAppBar with gradient - SliverAppBar( - expandedHeight: 120.0, - floating: false, - pinned: true, - backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Pelanggan'), - actions: [ActionIconButton(onTap: () {}, icon: LineIcons.search)], - ), + body: BlocBuilder( + builder: (context, state) { + return NotificationListener( + onNotification: (notification) { + if (notification is ScrollEndNotification && + _scrollController.position.extentAfter == 0) { + context.read().add( + CustomerLoaderEvent.fetched(), + ); + return true; + } - // Search and Filter Section - SliverToBoxAdapter( - child: Container( - color: AppColor.white, - child: Column( - children: [ - // View toggle and sort - Padding( - padding: EdgeInsets.only(left: 16, right: 16, bottom: 0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + return true; + }, + child: CustomScrollView( + controller: _scrollController, + slivers: [ + // SliverAppBar with gradient + SliverAppBar( + expandedHeight: 120.0, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + flexibleSpace: CustomAppBar(title: 'Pelanggan'), + actions: [ + ActionIconButton(onTap: () {}, icon: LineIcons.search), + ], + ), + + // Search and Filter Section + SliverToBoxAdapter( + child: Container( + color: AppColor.white, + child: Column( children: [ - Text( - '${filteredCustomers.length} customers found', - style: TextStyle( - color: AppColor.textSecondary, - fontSize: 14, + // View toggle and sort + Padding( + padding: EdgeInsets.only( + left: 16, + right: 16, + bottom: 0, ), - ), - Row( - children: [ - IconButton( - icon: Icon( - _isGridView ? Icons.list : Icons.grid_view, - color: AppColor.primary, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + IconButton( + icon: Icon( + _isGridView + ? Icons.list + : Icons.grid_view, + color: AppColor.primary, + ), + onPressed: () { + setState(() { + _isGridView = !_isGridView; + }); + }, + ), + ], ), - onPressed: () { - setState(() { - _isGridView = !_isGridView; - }); - }, - ), - ], + ], + ), ), ], ), ), - ], - ), - ), - ), + ), - // Customer List - _isGridView ? _buildCustomerGrid() : _buildCustomerList(), - ], + // Customer List + _isGridView + ? _buildCustomerGrid(state.customers) + : _buildCustomerList(state.customers), + ], + ), + ); + }, ), ); } - Widget _buildCustomerList() { + Widget _buildCustomerList(List customers) { return SliverList( delegate: SliverChildBuilderDelegate((context, index) { - final customer = filteredCustomers[index]; + final customer = customers[index]; return CustomerTile(customer: customer); - }, childCount: filteredCustomers.length), + }, childCount: customers.length), ); } - Widget _buildCustomerGrid() { + Widget _buildCustomerGrid(List customers) { return SliverPadding( padding: EdgeInsets.all(16), sliver: SliverGrid( @@ -210,9 +151,9 @@ class _CustomerPageState extends State childAspectRatio: 0.8, ), delegate: SliverChildBuilderDelegate((context, index) { - final customer = filteredCustomers[index]; + final customer = customers[index]; return CustomerCard(customer: customer); - }, childCount: filteredCustomers.length), + }, childCount: customers.length), ), ); } diff --git a/lib/presentation/pages/customer/widgets/customer_card.dart b/lib/presentation/pages/customer/widgets/customer_card.dart index 457c67f..e11fe96 100644 --- a/lib/presentation/pages/customer/widgets/customer_card.dart +++ b/lib/presentation/pages/customer/widgets/customer_card.dart @@ -1,89 +1,390 @@ import 'package:flutter/material.dart'; - import '../../../../common/theme/theme.dart'; +import '../../../../domain/customer/customer.dart'; import '../../../components/spacer/spacer.dart'; -import '../customer_page.dart'; class CustomerCard extends StatelessWidget { final Customer customer; - const CustomerCard({super.key, required this.customer}); + final VoidCallback? onTap; + final VoidCallback? onLongPress; + + const CustomerCard({ + super.key, + required this.customer, + this.onTap, + this.onLongPress, + }); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( color: AppColor.white, - borderRadius: BorderRadius.circular(16), + borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: Colors.black.withOpacity(0.05), - blurRadius: 10, - offset: Offset(0, 4), + color: Colors.black.withOpacity(0.06), + blurRadius: 20, + offset: const Offset(0, 6), + spreadRadius: -4, ), ], + border: Border.all( + color: customer.isActive + ? AppColor.primary.withOpacity(0.1) + : Colors.grey.withOpacity(0.08), + width: 1.5, + ), ), - child: InkWell( - onTap: () {}, - borderRadius: BorderRadius.circular(16), - child: Padding( - padding: EdgeInsets.all(16), - child: Column( - children: [ - CircleAvatar( - backgroundColor: _getMembershipColor(customer.membershipLevel), - radius: 30, - child: Text( - customer.name[0].toUpperCase(), - style: AppStyle.xxl.copyWith( - color: AppColor.white, + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: onTap, + onLongPress: onLongPress, + borderRadius: BorderRadius.circular(20), + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Avatar with status indicator + Stack( + children: [ + Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + _getAvatarColor(customer.name), + _getAvatarColor(customer.name).withOpacity(0.8), + ], + ), + boxShadow: [ + BoxShadow( + color: _getAvatarColor( + customer.name, + ).withOpacity(0.3), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + child: CircleAvatar( + backgroundColor: Colors.transparent, + radius: 32, + child: Text( + customer.name.isNotEmpty + ? customer.name[0].toUpperCase() + : '?', + style: AppStyle.xxl.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + + // Status indicator + Positioned( + bottom: 2, + right: 2, + child: Container( + width: 20, + height: 20, + decoration: BoxDecoration( + color: customer.isActive + ? AppColor.success + : AppColor.error, + shape: BoxShape.circle, + border: Border.all(color: AppColor.white, width: 3), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + ), + ), + + // Default badge + if (customer.isDefault) + Positioned( + top: -2, + left: -8, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 6, + vertical: 2, + ), + decoration: BoxDecoration( + color: AppColor.primary, + borderRadius: BorderRadius.circular(8), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: Text( + 'โญ', + style: AppStyle.xs.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ], + ), + + const SpaceHeight(16), + + // Customer Name + Text( + customer.name.isNotEmpty ? customer.name : 'Unknown Customer', + style: AppStyle.lg.copyWith( fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + textAlign: TextAlign.center, + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + + const SpaceHeight(8), + + // Contact Info + if (customer.email.isNotEmpty || customer.phone.isNotEmpty) ...[ + Column( + children: [ + if (customer.email.isNotEmpty) + _buildContactInfo(Icons.email_outlined, customer.email), + if (customer.email.isNotEmpty && + customer.phone.isNotEmpty) + const SpaceHeight(4), + if (customer.phone.isNotEmpty) + _buildContactInfo(Icons.phone_outlined, customer.phone), + ], + ), + const SpaceHeight(12), + ], + + // Status Badge + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: customer.isActive + ? AppColor.success.withOpacity(0.1) + : AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: customer.isActive + ? AppColor.success.withOpacity(0.3) + : AppColor.error.withOpacity(0.3), + width: 1, + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 8, + height: 8, + decoration: BoxDecoration( + color: customer.isActive + ? AppColor.success + : AppColor.error, + shape: BoxShape.circle, + ), + ), + const SpaceWidth(6), + Text( + customer.isActive ? 'Active' : 'Inactive', + style: AppStyle.sm.copyWith( + color: customer.isActive + ? AppColor.success + : AppColor.error, + fontWeight: FontWeight.w600, + ), + ), + ], ), ), - ), - SpaceHeight(12), - Text( - customer.name, - style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), - textAlign: TextAlign.center, - maxLines: 2, - overflow: TextOverflow.ellipsis, - ), - SizedBox(height: 8), - Container( - padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: _getMembershipColor( - customer.membershipLevel, - ).withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - customer.membershipLevel, - style: AppStyle.sm.copyWith( - color: _getMembershipColor(customer.membershipLevel), - fontWeight: FontWeight.bold, + + // Additional info if available + if (customer.address.isNotEmpty) ...[ + const SpaceHeight(8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.location_on_outlined, + size: 14, + color: AppColor.textSecondary, + ), + const SpaceWidth(4), + Flexible( + child: Text( + customer.address, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + ), + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ], ), - ), - ), - ], + ], + + // Metadata info + if (customer.metadata.isNotEmpty && _hasRelevantMetadata()) ...[ + const SpaceHeight(8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.star_outline, + size: 12, + color: AppColor.primary, + ), + const SpaceWidth(4), + Text( + _getMetadataInfo(), + style: AppStyle.xs.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), + ], + + // Join date + if (customer.createdAt.isNotEmpty) ...[ + const SpaceHeight(8), + Text( + 'Joined ${_formatDate(customer.createdAt)}', + style: AppStyle.xs.copyWith(color: AppColor.textSecondary), + textAlign: TextAlign.center, + ), + ], + ], + ), ), ), ), ); } - Color _getMembershipColor(String level) { - switch (level) { - case 'Platinum': - return Color(0xFF9C27B0); - case 'Gold': - return Color(0xFFFF9800); - case 'Silver': - return Color(0xFF607D8B); - case 'Bronze': - return Color(0xFF795548); - default: - return AppColor.primary; + Widget _buildContactInfo(IconData icon, String text) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, size: 14, color: AppColor.textSecondary), + const SpaceWidth(6), + Flexible( + child: Text( + text, + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ); + } + + Color _getAvatarColor(String name) { + final colors = [ + AppColor.primary, + const Color(0xFF9C27B0), // Purple + const Color(0xFFFF9800), // Orange + const Color(0xFF607D8B), // Blue Grey + const Color(0xFF795548), // Brown + const Color(0xFF4CAF50), // Green + const Color(0xFF2196F3), // Blue + const Color(0xFFE91E63), // Pink + const Color(0xFF00BCD4), // Cyan + const Color(0xFFFF5722), // Deep Orange + ]; + + if (name.isEmpty) return AppColor.primary; + final index = name.hashCode.abs() % colors.length; + return colors[index]; + } + + String _formatDate(String dateStr) { + try { + final date = DateTime.parse(dateStr); + final now = DateTime.now(); + final difference = now.difference(date).inDays; + + if (difference == 0) { + return 'today'; + } else if (difference == 1) { + return 'yesterday'; + } else if (difference < 30) { + return '${difference}d ago'; + } else if (difference < 365) { + final months = (difference / 30).floor(); + return '${months}mo ago'; + } else { + final years = (difference / 365).floor(); + return '${years}y ago'; + } + } catch (e) { + return dateStr; } } + + bool _hasRelevantMetadata() { + return customer.metadata.containsKey('notes') || + customer.metadata.containsKey('tags') || + customer.metadata.containsKey('source') || + customer.metadata.containsKey('preferences') || + customer.metadata.containsKey('vip') || + customer.metadata.containsKey('tier'); + } + + String _getMetadataInfo() { + if (customer.metadata.containsKey('vip') && + customer.metadata['vip'] == true) { + return 'VIP'; + } + if (customer.metadata.containsKey('tier')) { + return customer.metadata['tier'].toString(); + } + if (customer.metadata.containsKey('tags')) { + final tags = customer.metadata['tags']; + if (tags is List && tags.isNotEmpty) { + return tags.first.toString(); + } + } + if (customer.metadata.containsKey('source')) { + return customer.metadata['source'].toString(); + } + return 'Special'; + } } diff --git a/lib/presentation/pages/customer/widgets/customer_tile.dart b/lib/presentation/pages/customer/widgets/customer_tile.dart index 69bf48a..414967e 100644 --- a/lib/presentation/pages/customer/widgets/customer_tile.dart +++ b/lib/presentation/pages/customer/widgets/customer_tile.dart @@ -1,127 +1,378 @@ import 'package:flutter/material.dart'; - import '../../../../common/theme/theme.dart'; +import '../../../../domain/customer/customer.dart'; import '../../../components/spacer/spacer.dart'; -import '../customer_page.dart'; class CustomerTile extends StatelessWidget { final Customer customer; - const CustomerTile({super.key, required this.customer}); + final VoidCallback? onTap; + final VoidCallback? onEdit; + final VoidCallback? onDelete; + + const CustomerTile({ + super.key, + required this.customer, + this.onTap, + this.onEdit, + this.onDelete, + }); @override Widget build(BuildContext context) { return Container( - margin: EdgeInsets.symmetric(horizontal: AppValue.margin, vertical: 6), + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), decoration: BoxDecoration( color: AppColor.white, - borderRadius: BorderRadius.circular(12), + borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( - color: Colors.black.withOpacity(0.05), - blurRadius: 10, - offset: Offset(0, 2), + color: Colors.black.withOpacity(0.06), + blurRadius: 16, + offset: const Offset(0, 4), + spreadRadius: -2, ), ], + border: Border.all( + color: customer.isActive + ? AppColor.primary.withOpacity(0.15) + : Colors.grey.withOpacity(0.1), + width: 1, + ), ), - child: ListTile( - contentPadding: EdgeInsets.all(16), - leading: CircleAvatar( - backgroundColor: _getMembershipColor(customer.membershipLevel), - child: Text( - customer.name[0].toUpperCase(), - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.bold, + child: Material( + color: Colors.transparent, + child: InkWell( + borderRadius: BorderRadius.circular(16), + onTap: onTap, + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header Row + Row( + children: [ + // Avatar + Stack( + children: [ + CircleAvatar( + radius: 26, + backgroundColor: _getAvatarColor(customer.name), + child: Text( + customer.name.isNotEmpty + ? customer.name[0].toUpperCase() + : '?', + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + // Status indicator + Positioned( + bottom: 2, + right: 2, + child: Container( + width: 16, + height: 16, + decoration: BoxDecoration( + color: customer.isActive + ? AppColor.success + : AppColor.error, + shape: BoxShape.circle, + border: Border.all( + color: AppColor.white, + width: 2, + ), + ), + ), + ), + ], + ), + const SpaceWidth(16), + + // Customer Info + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Name with badges + Row( + children: [ + Expanded( + child: Text( + customer.name.isNotEmpty + ? customer.name + : 'Unknown Customer', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + overflow: TextOverflow.ellipsis, + ), + ), + if (customer.isDefault) + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + 'DEFAULT', + style: AppStyle.xs.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.bold, + letterSpacing: 0.5, + ), + ), + ), + ], + ), + const SpaceHeight(4), + + // Contact info + if (customer.email.isNotEmpty) ...[ + Row( + children: [ + Icon( + Icons.email_outlined, + size: 16, + color: AppColor.textSecondary, + ), + const SpaceWidth(6), + Expanded( + child: Text( + customer.email, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + ), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + const SpaceHeight(4), + ], + + if (customer.phone.isNotEmpty) + Row( + children: [ + Icon( + Icons.phone_outlined, + size: 16, + color: AppColor.textSecondary, + ), + const SpaceWidth(6), + Text( + customer.phone, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + ), + ), + ], + ), + ], + ), + ), + ], + ), + + // Address section + if (customer.address.isNotEmpty) ...[ + const SpaceHeight(16), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(12), + ), + child: Row( + children: [ + Icon( + Icons.location_on_outlined, + size: 18, + color: AppColor.textSecondary, + ), + const SpaceWidth(8), + Expanded( + child: Text( + customer.address, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + ), + ], + + // Footer with status and dates + const SpaceHeight(16), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Status badge + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: customer.isActive + ? AppColor.success.withOpacity(0.1) + : AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 8, + height: 8, + decoration: BoxDecoration( + color: customer.isActive + ? AppColor.success + : AppColor.error, + shape: BoxShape.circle, + ), + ), + const SpaceWidth(6), + Text( + customer.isActive ? 'Active' : 'Inactive', + style: AppStyle.sm.copyWith( + color: customer.isActive + ? AppColor.success + : AppColor.error, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + + // Created date + if (customer.createdAt.isNotEmpty) + Text( + 'Joined ${_formatDate(customer.createdAt)}', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + ), + ), + ], + ), + + // Metadata section (if has any relevant data) + if (customer.metadata.isNotEmpty && _hasRelevantMetadata()) ...[ + const SpaceHeight(12), + Container( + width: double.infinity, + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.05), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: AppColor.primary.withOpacity(0.1), + width: 1, + ), + ), + child: Row( + children: [ + Icon( + Icons.info_outline, + size: 16, + color: AppColor.primary, + ), + const SpaceWidth(8), + Expanded( + child: Text( + _getMetadataInfo(), + style: AppStyle.xs.copyWith( + color: AppColor.primary, + ), + ), + ), + ], + ), + ), + ], + ], ), ), ), - title: Text( - customer.name, - style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), - ), - subtitle: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SpaceHeight(4), - Text(customer.email), - SpaceHeight(2), - Text(customer.phone), - SpaceHeight(4), - Row( - children: [ - Container( - padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: _getMembershipColor( - customer.membershipLevel, - ).withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - customer.membershipLevel, - style: AppStyle.sm.copyWith( - color: _getMembershipColor(customer.membershipLevel), - fontWeight: FontWeight.bold, - ), - ), - ), - SpaceWidth(8), - Container( - padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: customer.isActive - ? AppColor.success.withOpacity(0.1) - : AppColor.error.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - customer.isActive ? 'Active' : 'Inactive', - style: AppStyle.sm.copyWith( - color: customer.isActive - ? AppColor.success - : AppColor.error, - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ), - ], - ), - trailing: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Text( - 'Rp ${customer.totalPurchases.toStringAsFixed(0)}', - style: AppStyle.md.copyWith( - fontWeight: FontWeight.bold, - color: AppColor.primary, - ), - ), - Text( - '${customer.totalOrders} orders', - style: AppStyle.sm.copyWith(color: AppColor.textSecondary), - ), - ], - ), - onTap: () {}, ), ); } - Color _getMembershipColor(String level) { - switch (level) { - case 'Platinum': - return Color(0xFF9C27B0); - case 'Gold': - return Color(0xFFFF9800); - case 'Silver': - return Color(0xFF607D8B); - case 'Bronze': - return Color(0xFF795548); - default: - return AppColor.primary; + Color _getAvatarColor(String name) { + final colors = [ + AppColor.primary, + const Color(0xFF9C27B0), + const Color(0xFFFF9800), + const Color(0xFF607D8B), + const Color(0xFF795548), + const Color(0xFF4CAF50), + const Color(0xFF2196F3), + const Color(0xFFE91E63), + ]; + + final index = name.hashCode.abs() % colors.length; + return colors[index]; + } + + String _formatDate(String dateStr) { + try { + final date = DateTime.parse(dateStr); + final now = DateTime.now(); + final difference = now.difference(date).inDays; + + if (difference == 0) { + return 'today'; + } else if (difference == 1) { + return 'yesterday'; + } else if (difference < 30) { + return '${difference}d ago'; + } else if (difference < 365) { + final months = (difference / 30).floor(); + return '${months}mo ago'; + } else { + final years = (difference / 365).floor(); + return '${years}y ago'; + } + } catch (e) { + return dateStr; } } + + bool _hasRelevantMetadata() { + return customer.metadata.containsKey('notes') || + customer.metadata.containsKey('tags') || + customer.metadata.containsKey('source') || + customer.metadata.containsKey('preferences'); + } + + String _getMetadataInfo() { + final info = []; + + if (customer.metadata.containsKey('notes')) { + info.add('Has notes'); + } + if (customer.metadata.containsKey('tags')) { + final tags = customer.metadata['tags']; + if (tags is List && tags.isNotEmpty) { + info.add('${tags.length} tags'); + } + } + if (customer.metadata.containsKey('source')) { + info.add('Source: ${customer.metadata['source']}'); + } + + return info.join(' โ€ข '); + } } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 877fd96..b92b613 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -199,7 +199,7 @@ class InventoryRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i6.InventoryPage(); + return _i18.WrappedRoute(child: const _i6.InventoryPage()); }, ); } From 65ba81f311bbed978ca444922a33c4c5bd4da14f Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 01:50:50 +0700 Subject: [PATCH 059/108] feat: dashboard --- .../dashboard_analytic_loader_bloc.dart | 50 + ...ashboard_analytic_loader_bloc.freezed.dart | 406 ++++ .../dashboard_analytic_loader_event.dart | 6 + .../dashboard_analytic_loader_state.dart | 16 + lib/common/url/api_path.dart | 1 + lib/domain/analytic/analytic.dart | 1 + lib/domain/analytic/analytic.freezed.dart | 1478 ++++++++++++++ .../entities/dashboard_analytic_entity.dart | 118 ++ .../repositories/i_analytic_repository.dart | 5 + .../analytic/analytic_dtos.dart | 1 + .../analytic/analytic_dtos.freezed.dart | 1731 +++++++++++++++++ .../analytic/analytic_dtos.g.dart | 132 ++ .../datasource/remote_data_provider.dart | 28 + .../analytic/dto/dashboard_analytic_dto.dart | 145 ++ .../repositories/analytic_repository.dart | 27 + lib/injection.config.dart | 5 + .../pages/report/report_page.dart | 123 +- .../pages/report/widgets/payment_method.dart | 616 ++++++ .../pages/report/widgets/quick_stats.dart | 134 +- .../pages/report/widgets/report_action.dart | 136 -- .../pages/report/widgets/revenue_summary.dart | 49 +- .../pages/report/widgets/sales.dart | 585 +++--- .../pages/report/widgets/stat_tile.dart | 16 - .../pages/report/widgets/top_product.dart | 581 +++++- lib/presentation/router/app_router.gr.dart | 2 +- 25 files changed, 5786 insertions(+), 606 deletions(-) create mode 100644 lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart create mode 100644 lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart create mode 100644 lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart create mode 100644 lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart create mode 100644 lib/domain/analytic/entities/dashboard_analytic_entity.dart create mode 100644 lib/infrastructure/analytic/dto/dashboard_analytic_dto.dart create mode 100644 lib/presentation/pages/report/widgets/payment_method.dart delete mode 100644 lib/presentation/pages/report/widgets/report_action.dart diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart new file mode 100644 index 0000000..d3e7383 --- /dev/null +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart @@ -0,0 +1,50 @@ +import 'package:bloc/bloc.dart'; +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'dashboard_analytic_loader_event.dart'; +part 'dashboard_analytic_loader_state.dart'; +part 'dashboard_analytic_loader_bloc.freezed.dart'; + +@injectable +class DashboardAnalyticLoaderBloc + extends Bloc { + final IAnalyticRepository _repository; + DashboardAnalyticLoaderBloc(this._repository) + : super(DashboardAnalyticLoaderState.initial()) { + on(_onDashboardAnalyticLoaderEvent); + } + + Future _onDashboardAnalyticLoaderEvent( + DashboardAnalyticLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit( + state.copyWith( + isFetching: true, + failureOptionDashboardAnalytic: none(), + ), + ); + + final result = await _repository.getDashboard( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionDashboardAnalytic: optionOf(f)), + (dashboardAnalytic) => + state.copyWith(dashboardAnalytic: dashboardAnalytic), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart new file mode 100644 index 0000000..4976136 --- /dev/null +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart @@ -0,0 +1,406 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'dashboard_analytic_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$DashboardAnalyticLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardAnalyticLoaderEventCopyWith<$Res> { + factory $DashboardAnalyticLoaderEventCopyWith( + DashboardAnalyticLoaderEvent value, + $Res Function(DashboardAnalyticLoaderEvent) then, + ) = + _$DashboardAnalyticLoaderEventCopyWithImpl< + $Res, + DashboardAnalyticLoaderEvent + >; +} + +/// @nodoc +class _$DashboardAnalyticLoaderEventCopyWithImpl< + $Res, + $Val extends DashboardAnalyticLoaderEvent +> + implements $DashboardAnalyticLoaderEventCopyWith<$Res> { + _$DashboardAnalyticLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$DashboardAnalyticLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'DashboardAnalyticLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements DashboardAnalyticLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$DashboardAnalyticLoaderState { + DashboardAnalytic get dashboardAnalytic => throw _privateConstructorUsedError; + Option get failureOptionDashboardAnalytic => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of DashboardAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardAnalyticLoaderStateCopyWith + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardAnalyticLoaderStateCopyWith<$Res> { + factory $DashboardAnalyticLoaderStateCopyWith( + DashboardAnalyticLoaderState value, + $Res Function(DashboardAnalyticLoaderState) then, + ) = + _$DashboardAnalyticLoaderStateCopyWithImpl< + $Res, + DashboardAnalyticLoaderState + >; + @useResult + $Res call({ + DashboardAnalytic dashboardAnalytic, + Option failureOptionDashboardAnalytic, + bool isFetching, + }); + + $DashboardAnalyticCopyWith<$Res> get dashboardAnalytic; +} + +/// @nodoc +class _$DashboardAnalyticLoaderStateCopyWithImpl< + $Res, + $Val extends DashboardAnalyticLoaderState +> + implements $DashboardAnalyticLoaderStateCopyWith<$Res> { + _$DashboardAnalyticLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? dashboardAnalytic = null, + Object? failureOptionDashboardAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + dashboardAnalytic: null == dashboardAnalytic + ? _value.dashboardAnalytic + : dashboardAnalytic // ignore: cast_nullable_to_non_nullable + as DashboardAnalytic, + failureOptionDashboardAnalytic: + null == failureOptionDashboardAnalytic + ? _value.failureOptionDashboardAnalytic + : failureOptionDashboardAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of DashboardAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $DashboardAnalyticCopyWith<$Res> get dashboardAnalytic { + return $DashboardAnalyticCopyWith<$Res>(_value.dashboardAnalytic, (value) { + return _then(_value.copyWith(dashboardAnalytic: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$DashboardAnalyticLoaderStateImplCopyWith<$Res> + implements $DashboardAnalyticLoaderStateCopyWith<$Res> { + factory _$$DashboardAnalyticLoaderStateImplCopyWith( + _$DashboardAnalyticLoaderStateImpl value, + $Res Function(_$DashboardAnalyticLoaderStateImpl) then, + ) = __$$DashboardAnalyticLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + DashboardAnalytic dashboardAnalytic, + Option failureOptionDashboardAnalytic, + bool isFetching, + }); + + @override + $DashboardAnalyticCopyWith<$Res> get dashboardAnalytic; +} + +/// @nodoc +class __$$DashboardAnalyticLoaderStateImplCopyWithImpl<$Res> + extends + _$DashboardAnalyticLoaderStateCopyWithImpl< + $Res, + _$DashboardAnalyticLoaderStateImpl + > + implements _$$DashboardAnalyticLoaderStateImplCopyWith<$Res> { + __$$DashboardAnalyticLoaderStateImplCopyWithImpl( + _$DashboardAnalyticLoaderStateImpl _value, + $Res Function(_$DashboardAnalyticLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? dashboardAnalytic = null, + Object? failureOptionDashboardAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _$DashboardAnalyticLoaderStateImpl( + dashboardAnalytic: null == dashboardAnalytic + ? _value.dashboardAnalytic + : dashboardAnalytic // ignore: cast_nullable_to_non_nullable + as DashboardAnalytic, + failureOptionDashboardAnalytic: null == failureOptionDashboardAnalytic + ? _value.failureOptionDashboardAnalytic + : failureOptionDashboardAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$DashboardAnalyticLoaderStateImpl + implements _DashboardAnalyticLoaderState { + const _$DashboardAnalyticLoaderStateImpl({ + required this.dashboardAnalytic, + required this.failureOptionDashboardAnalytic, + this.isFetching = false, + }); + + @override + final DashboardAnalytic dashboardAnalytic; + @override + final Option failureOptionDashboardAnalytic; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'DashboardAnalyticLoaderState(dashboardAnalytic: $dashboardAnalytic, failureOptionDashboardAnalytic: $failureOptionDashboardAnalytic, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardAnalyticLoaderStateImpl && + (identical(other.dashboardAnalytic, dashboardAnalytic) || + other.dashboardAnalytic == dashboardAnalytic) && + (identical( + other.failureOptionDashboardAnalytic, + failureOptionDashboardAnalytic, + ) || + other.failureOptionDashboardAnalytic == + failureOptionDashboardAnalytic) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + dashboardAnalytic, + failureOptionDashboardAnalytic, + isFetching, + ); + + /// Create a copy of DashboardAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardAnalyticLoaderStateImplCopyWith< + _$DashboardAnalyticLoaderStateImpl + > + get copyWith => + __$$DashboardAnalyticLoaderStateImplCopyWithImpl< + _$DashboardAnalyticLoaderStateImpl + >(this, _$identity); +} + +abstract class _DashboardAnalyticLoaderState + implements DashboardAnalyticLoaderState { + const factory _DashboardAnalyticLoaderState({ + required final DashboardAnalytic dashboardAnalytic, + required final Option failureOptionDashboardAnalytic, + final bool isFetching, + }) = _$DashboardAnalyticLoaderStateImpl; + + @override + DashboardAnalytic get dashboardAnalytic; + @override + Option get failureOptionDashboardAnalytic; + @override + bool get isFetching; + + /// Create a copy of DashboardAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardAnalyticLoaderStateImplCopyWith< + _$DashboardAnalyticLoaderStateImpl + > + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart new file mode 100644 index 0000000..4ac3dbd --- /dev/null +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart @@ -0,0 +1,6 @@ +part of 'dashboard_analytic_loader_bloc.dart'; + +@freezed +class DashboardAnalyticLoaderEvent with _$DashboardAnalyticLoaderEvent { + const factory DashboardAnalyticLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart new file mode 100644 index 0000000..07937ae --- /dev/null +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart @@ -0,0 +1,16 @@ +part of 'dashboard_analytic_loader_bloc.dart'; + +@freezed +class DashboardAnalyticLoaderState with _$DashboardAnalyticLoaderState { + const factory DashboardAnalyticLoaderState({ + required DashboardAnalytic dashboardAnalytic, + required Option failureOptionDashboardAnalytic, + @Default(false) bool isFetching, + }) = _DashboardAnalyticLoaderState; + + factory DashboardAnalyticLoaderState.initial() => + DashboardAnalyticLoaderState( + dashboardAnalytic: DashboardAnalytic.empty(), + failureOptionDashboardAnalytic: none(), + ); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 1c2acee..9a84378 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -7,6 +7,7 @@ class ApiPath { static const String salesAnalytic = '/api/v1/analytics/sales'; static const String profitLossAnalytic = '/api/v1/analytics/profit-loss'; static const String categoryAnalytic = '/api/v1/analytics/categories'; + static const String dashboardAnalytic = '/api/v1/analytics/dashboard'; // Inventory static const String inventoryReportDetail = diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart index 13925fe..7759997 100644 --- a/lib/domain/analytic/analytic.dart +++ b/lib/domain/analytic/analytic.dart @@ -8,4 +8,5 @@ part 'entities/sales_analytic_entity.dart'; part 'entities/profit_loss_analytic_entity.dart'; part 'entities/category_analytic_entity.dart'; part 'entities/inventory_analytic_entity.dart'; +part 'entities/dashboard_analytic_entity.dart'; part 'failures/analytic_failure.dart'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index 6e221e6..52f35a3 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -4245,6 +4245,1484 @@ abstract class _InventoryIngredient implements InventoryIngredient { throw _privateConstructorUsedError; } +/// @nodoc +mixin _$DashboardAnalytic { + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get dateFrom => throw _privateConstructorUsedError; + String get dateTo => throw _privateConstructorUsedError; + DashboardOverview get overview => throw _privateConstructorUsedError; + List get topProducts => + throw _privateConstructorUsedError; + List get paymentMethods => + throw _privateConstructorUsedError; + List get recentSales => + throw _privateConstructorUsedError; + + /// Create a copy of DashboardAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardAnalyticCopyWith<$Res> { + factory $DashboardAnalyticCopyWith( + DashboardAnalytic value, + $Res Function(DashboardAnalytic) then, + ) = _$DashboardAnalyticCopyWithImpl<$Res, DashboardAnalytic>; + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + DashboardOverview overview, + List topProducts, + List paymentMethods, + List recentSales, + }); + + $DashboardOverviewCopyWith<$Res> get overview; +} + +/// @nodoc +class _$DashboardAnalyticCopyWithImpl<$Res, $Val extends DashboardAnalytic> + implements $DashboardAnalyticCopyWith<$Res> { + _$DashboardAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? overview = null, + Object? topProducts = null, + Object? paymentMethods = null, + Object? recentSales = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + overview: null == overview + ? _value.overview + : overview // ignore: cast_nullable_to_non_nullable + as DashboardOverview, + topProducts: null == topProducts + ? _value.topProducts + : topProducts // ignore: cast_nullable_to_non_nullable + as List, + paymentMethods: null == paymentMethods + ? _value.paymentMethods + : paymentMethods // ignore: cast_nullable_to_non_nullable + as List, + recentSales: null == recentSales + ? _value.recentSales + : recentSales // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } + + /// Create a copy of DashboardAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $DashboardOverviewCopyWith<$Res> get overview { + return $DashboardOverviewCopyWith<$Res>(_value.overview, (value) { + return _then(_value.copyWith(overview: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$DashboardAnalyticImplCopyWith<$Res> + implements $DashboardAnalyticCopyWith<$Res> { + factory _$$DashboardAnalyticImplCopyWith( + _$DashboardAnalyticImpl value, + $Res Function(_$DashboardAnalyticImpl) then, + ) = __$$DashboardAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + DashboardOverview overview, + List topProducts, + List paymentMethods, + List recentSales, + }); + + @override + $DashboardOverviewCopyWith<$Res> get overview; +} + +/// @nodoc +class __$$DashboardAnalyticImplCopyWithImpl<$Res> + extends _$DashboardAnalyticCopyWithImpl<$Res, _$DashboardAnalyticImpl> + implements _$$DashboardAnalyticImplCopyWith<$Res> { + __$$DashboardAnalyticImplCopyWithImpl( + _$DashboardAnalyticImpl _value, + $Res Function(_$DashboardAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? overview = null, + Object? topProducts = null, + Object? paymentMethods = null, + Object? recentSales = null, + }) { + return _then( + _$DashboardAnalyticImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + overview: null == overview + ? _value.overview + : overview // ignore: cast_nullable_to_non_nullable + as DashboardOverview, + topProducts: null == topProducts + ? _value._topProducts + : topProducts // ignore: cast_nullable_to_non_nullable + as List, + paymentMethods: null == paymentMethods + ? _value._paymentMethods + : paymentMethods // ignore: cast_nullable_to_non_nullable + as List, + recentSales: null == recentSales + ? _value._recentSales + : recentSales // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$DashboardAnalyticImpl implements _DashboardAnalytic { + const _$DashboardAnalyticImpl({ + required this.organizationId, + required this.outletId, + required this.dateFrom, + required this.dateTo, + required this.overview, + required final List topProducts, + required final List paymentMethods, + required final List recentSales, + }) : _topProducts = topProducts, + _paymentMethods = paymentMethods, + _recentSales = recentSales; + + @override + final String organizationId; + @override + final String outletId; + @override + final String dateFrom; + @override + final String dateTo; + @override + final DashboardOverview overview; + final List _topProducts; + @override + List get topProducts { + if (_topProducts is EqualUnmodifiableListView) return _topProducts; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_topProducts); + } + + final List _paymentMethods; + @override + List get paymentMethods { + if (_paymentMethods is EqualUnmodifiableListView) return _paymentMethods; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_paymentMethods); + } + + final List _recentSales; + @override + List get recentSales { + if (_recentSales is EqualUnmodifiableListView) return _recentSales; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_recentSales); + } + + @override + String toString() { + return 'DashboardAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, overview: $overview, topProducts: $topProducts, paymentMethods: $paymentMethods, recentSales: $recentSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardAnalyticImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.overview, overview) || + other.overview == overview) && + const DeepCollectionEquality().equals( + other._topProducts, + _topProducts, + ) && + const DeepCollectionEquality().equals( + other._paymentMethods, + _paymentMethods, + ) && + const DeepCollectionEquality().equals( + other._recentSales, + _recentSales, + )); + } + + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + overview, + const DeepCollectionEquality().hash(_topProducts), + const DeepCollectionEquality().hash(_paymentMethods), + const DeepCollectionEquality().hash(_recentSales), + ); + + /// Create a copy of DashboardAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardAnalyticImplCopyWith<_$DashboardAnalyticImpl> get copyWith => + __$$DashboardAnalyticImplCopyWithImpl<_$DashboardAnalyticImpl>( + this, + _$identity, + ); +} + +abstract class _DashboardAnalytic implements DashboardAnalytic { + const factory _DashboardAnalytic({ + required final String organizationId, + required final String outletId, + required final String dateFrom, + required final String dateTo, + required final DashboardOverview overview, + required final List topProducts, + required final List paymentMethods, + required final List recentSales, + }) = _$DashboardAnalyticImpl; + + @override + String get organizationId; + @override + String get outletId; + @override + String get dateFrom; + @override + String get dateTo; + @override + DashboardOverview get overview; + @override + List get topProducts; + @override + List get paymentMethods; + @override + List get recentSales; + + /// Create a copy of DashboardAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardAnalyticImplCopyWith<_$DashboardAnalyticImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$DashboardOverview { + int get totalSales => throw _privateConstructorUsedError; + int get totalOrders => throw _privateConstructorUsedError; + double get averageOrderValue => throw _privateConstructorUsedError; + int get totalCustomers => throw _privateConstructorUsedError; + int get voidedOrders => throw _privateConstructorUsedError; + int get refundedOrders => throw _privateConstructorUsedError; + + /// Create a copy of DashboardOverview + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardOverviewCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardOverviewCopyWith<$Res> { + factory $DashboardOverviewCopyWith( + DashboardOverview value, + $Res Function(DashboardOverview) then, + ) = _$DashboardOverviewCopyWithImpl<$Res, DashboardOverview>; + @useResult + $Res call({ + int totalSales, + int totalOrders, + double averageOrderValue, + int totalCustomers, + int voidedOrders, + int refundedOrders, + }); +} + +/// @nodoc +class _$DashboardOverviewCopyWithImpl<$Res, $Val extends DashboardOverview> + implements $DashboardOverviewCopyWith<$Res> { + _$DashboardOverviewCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardOverview + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = null, + Object? totalOrders = null, + Object? averageOrderValue = null, + Object? totalCustomers = null, + Object? voidedOrders = null, + Object? refundedOrders = null, + }) { + return _then( + _value.copyWith( + totalSales: null == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as int, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + totalCustomers: null == totalCustomers + ? _value.totalCustomers + : totalCustomers // ignore: cast_nullable_to_non_nullable + as int, + voidedOrders: null == voidedOrders + ? _value.voidedOrders + : voidedOrders // ignore: cast_nullable_to_non_nullable + as int, + refundedOrders: null == refundedOrders + ? _value.refundedOrders + : refundedOrders // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardOverviewImplCopyWith<$Res> + implements $DashboardOverviewCopyWith<$Res> { + factory _$$DashboardOverviewImplCopyWith( + _$DashboardOverviewImpl value, + $Res Function(_$DashboardOverviewImpl) then, + ) = __$$DashboardOverviewImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + int totalSales, + int totalOrders, + double averageOrderValue, + int totalCustomers, + int voidedOrders, + int refundedOrders, + }); +} + +/// @nodoc +class __$$DashboardOverviewImplCopyWithImpl<$Res> + extends _$DashboardOverviewCopyWithImpl<$Res, _$DashboardOverviewImpl> + implements _$$DashboardOverviewImplCopyWith<$Res> { + __$$DashboardOverviewImplCopyWithImpl( + _$DashboardOverviewImpl _value, + $Res Function(_$DashboardOverviewImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardOverview + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = null, + Object? totalOrders = null, + Object? averageOrderValue = null, + Object? totalCustomers = null, + Object? voidedOrders = null, + Object? refundedOrders = null, + }) { + return _then( + _$DashboardOverviewImpl( + totalSales: null == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as int, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + totalCustomers: null == totalCustomers + ? _value.totalCustomers + : totalCustomers // ignore: cast_nullable_to_non_nullable + as int, + voidedOrders: null == voidedOrders + ? _value.voidedOrders + : voidedOrders // ignore: cast_nullable_to_non_nullable + as int, + refundedOrders: null == refundedOrders + ? _value.refundedOrders + : refundedOrders // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$DashboardOverviewImpl implements _DashboardOverview { + const _$DashboardOverviewImpl({ + required this.totalSales, + required this.totalOrders, + required this.averageOrderValue, + required this.totalCustomers, + required this.voidedOrders, + required this.refundedOrders, + }); + + @override + final int totalSales; + @override + final int totalOrders; + @override + final double averageOrderValue; + @override + final int totalCustomers; + @override + final int voidedOrders; + @override + final int refundedOrders; + + @override + String toString() { + return 'DashboardOverview(totalSales: $totalSales, totalOrders: $totalOrders, averageOrderValue: $averageOrderValue, totalCustomers: $totalCustomers, voidedOrders: $voidedOrders, refundedOrders: $refundedOrders)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardOverviewImpl && + (identical(other.totalSales, totalSales) || + other.totalSales == totalSales) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue) && + (identical(other.totalCustomers, totalCustomers) || + other.totalCustomers == totalCustomers) && + (identical(other.voidedOrders, voidedOrders) || + other.voidedOrders == voidedOrders) && + (identical(other.refundedOrders, refundedOrders) || + other.refundedOrders == refundedOrders)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + totalSales, + totalOrders, + averageOrderValue, + totalCustomers, + voidedOrders, + refundedOrders, + ); + + /// Create a copy of DashboardOverview + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardOverviewImplCopyWith<_$DashboardOverviewImpl> get copyWith => + __$$DashboardOverviewImplCopyWithImpl<_$DashboardOverviewImpl>( + this, + _$identity, + ); +} + +abstract class _DashboardOverview implements DashboardOverview { + const factory _DashboardOverview({ + required final int totalSales, + required final int totalOrders, + required final double averageOrderValue, + required final int totalCustomers, + required final int voidedOrders, + required final int refundedOrders, + }) = _$DashboardOverviewImpl; + + @override + int get totalSales; + @override + int get totalOrders; + @override + double get averageOrderValue; + @override + int get totalCustomers; + @override + int get voidedOrders; + @override + int get refundedOrders; + + /// Create a copy of DashboardOverview + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardOverviewImplCopyWith<_$DashboardOverviewImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$DashboardTopProduct { + String get productId => throw _privateConstructorUsedError; + String get productName => throw _privateConstructorUsedError; + String get categoryId => throw _privateConstructorUsedError; + String get categoryName => throw _privateConstructorUsedError; + int get quantitySold => throw _privateConstructorUsedError; + int get revenue => throw _privateConstructorUsedError; + double get averagePrice => throw _privateConstructorUsedError; + int get orderCount => throw _privateConstructorUsedError; + + /// Create a copy of DashboardTopProduct + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardTopProductCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardTopProductCopyWith<$Res> { + factory $DashboardTopProductCopyWith( + DashboardTopProduct value, + $Res Function(DashboardTopProduct) then, + ) = _$DashboardTopProductCopyWithImpl<$Res, DashboardTopProduct>; + @useResult + $Res call({ + String productId, + String productName, + String categoryId, + String categoryName, + int quantitySold, + int revenue, + double averagePrice, + int orderCount, + }); +} + +/// @nodoc +class _$DashboardTopProductCopyWithImpl<$Res, $Val extends DashboardTopProduct> + implements $DashboardTopProductCopyWith<$Res> { + _$DashboardTopProductCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardTopProduct + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? averagePrice = null, + Object? orderCount = null, + }) { + return _then( + _value.copyWith( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardTopProductImplCopyWith<$Res> + implements $DashboardTopProductCopyWith<$Res> { + factory _$$DashboardTopProductImplCopyWith( + _$DashboardTopProductImpl value, + $Res Function(_$DashboardTopProductImpl) then, + ) = __$$DashboardTopProductImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String productId, + String productName, + String categoryId, + String categoryName, + int quantitySold, + int revenue, + double averagePrice, + int orderCount, + }); +} + +/// @nodoc +class __$$DashboardTopProductImplCopyWithImpl<$Res> + extends _$DashboardTopProductCopyWithImpl<$Res, _$DashboardTopProductImpl> + implements _$$DashboardTopProductImplCopyWith<$Res> { + __$$DashboardTopProductImplCopyWithImpl( + _$DashboardTopProductImpl _value, + $Res Function(_$DashboardTopProductImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardTopProduct + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? averagePrice = null, + Object? orderCount = null, + }) { + return _then( + _$DashboardTopProductImpl( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$DashboardTopProductImpl implements _DashboardTopProduct { + const _$DashboardTopProductImpl({ + required this.productId, + required this.productName, + required this.categoryId, + required this.categoryName, + required this.quantitySold, + required this.revenue, + required this.averagePrice, + required this.orderCount, + }); + + @override + final String productId; + @override + final String productName; + @override + final String categoryId; + @override + final String categoryName; + @override + final int quantitySold; + @override + final int revenue; + @override + final double averagePrice; + @override + final int orderCount; + + @override + String toString() { + return 'DashboardTopProduct(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, averagePrice: $averagePrice, orderCount: $orderCount)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardTopProductImpl && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantitySold, quantitySold) || + other.quantitySold == quantitySold) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.averagePrice, averagePrice) || + other.averagePrice == averagePrice) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + productId, + productName, + categoryId, + categoryName, + quantitySold, + revenue, + averagePrice, + orderCount, + ); + + /// Create a copy of DashboardTopProduct + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardTopProductImplCopyWith<_$DashboardTopProductImpl> get copyWith => + __$$DashboardTopProductImplCopyWithImpl<_$DashboardTopProductImpl>( + this, + _$identity, + ); +} + +abstract class _DashboardTopProduct implements DashboardTopProduct { + const factory _DashboardTopProduct({ + required final String productId, + required final String productName, + required final String categoryId, + required final String categoryName, + required final int quantitySold, + required final int revenue, + required final double averagePrice, + required final int orderCount, + }) = _$DashboardTopProductImpl; + + @override + String get productId; + @override + String get productName; + @override + String get categoryId; + @override + String get categoryName; + @override + int get quantitySold; + @override + int get revenue; + @override + double get averagePrice; + @override + int get orderCount; + + /// Create a copy of DashboardTopProduct + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardTopProductImplCopyWith<_$DashboardTopProductImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$DashboardPaymentMethod { + String get paymentMethodId => throw _privateConstructorUsedError; + String get paymentMethodName => throw _privateConstructorUsedError; + String get paymentMethodType => throw _privateConstructorUsedError; + int get totalAmount => throw _privateConstructorUsedError; + int get orderCount => throw _privateConstructorUsedError; + int get paymentCount => throw _privateConstructorUsedError; + double get percentage => throw _privateConstructorUsedError; + + /// Create a copy of DashboardPaymentMethod + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardPaymentMethodCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardPaymentMethodCopyWith<$Res> { + factory $DashboardPaymentMethodCopyWith( + DashboardPaymentMethod value, + $Res Function(DashboardPaymentMethod) then, + ) = _$DashboardPaymentMethodCopyWithImpl<$Res, DashboardPaymentMethod>; + @useResult + $Res call({ + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + int totalAmount, + int orderCount, + int paymentCount, + double percentage, + }); +} + +/// @nodoc +class _$DashboardPaymentMethodCopyWithImpl< + $Res, + $Val extends DashboardPaymentMethod +> + implements $DashboardPaymentMethodCopyWith<$Res> { + _$DashboardPaymentMethodCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardPaymentMethod + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? totalAmount = null, + Object? orderCount = null, + Object? paymentCount = null, + Object? percentage = null, + }) { + return _then( + _value.copyWith( + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + percentage: null == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardPaymentMethodImplCopyWith<$Res> + implements $DashboardPaymentMethodCopyWith<$Res> { + factory _$$DashboardPaymentMethodImplCopyWith( + _$DashboardPaymentMethodImpl value, + $Res Function(_$DashboardPaymentMethodImpl) then, + ) = __$$DashboardPaymentMethodImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + int totalAmount, + int orderCount, + int paymentCount, + double percentage, + }); +} + +/// @nodoc +class __$$DashboardPaymentMethodImplCopyWithImpl<$Res> + extends + _$DashboardPaymentMethodCopyWithImpl<$Res, _$DashboardPaymentMethodImpl> + implements _$$DashboardPaymentMethodImplCopyWith<$Res> { + __$$DashboardPaymentMethodImplCopyWithImpl( + _$DashboardPaymentMethodImpl _value, + $Res Function(_$DashboardPaymentMethodImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardPaymentMethod + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? totalAmount = null, + Object? orderCount = null, + Object? paymentCount = null, + Object? percentage = null, + }) { + return _then( + _$DashboardPaymentMethodImpl( + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + percentage: null == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double, + ), + ); + } +} + +/// @nodoc + +class _$DashboardPaymentMethodImpl implements _DashboardPaymentMethod { + const _$DashboardPaymentMethodImpl({ + required this.paymentMethodId, + required this.paymentMethodName, + required this.paymentMethodType, + required this.totalAmount, + required this.orderCount, + required this.paymentCount, + required this.percentage, + }); + + @override + final String paymentMethodId; + @override + final String paymentMethodName; + @override + final String paymentMethodType; + @override + final int totalAmount; + @override + final int orderCount; + @override + final int paymentCount; + @override + final double percentage; + + @override + String toString() { + return 'DashboardPaymentMethod(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardPaymentMethodImpl && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.percentage, percentage) || + other.percentage == percentage)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodId, + paymentMethodName, + paymentMethodType, + totalAmount, + orderCount, + paymentCount, + percentage, + ); + + /// Create a copy of DashboardPaymentMethod + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardPaymentMethodImplCopyWith<_$DashboardPaymentMethodImpl> + get copyWith => + __$$DashboardPaymentMethodImplCopyWithImpl<_$DashboardPaymentMethodImpl>( + this, + _$identity, + ); +} + +abstract class _DashboardPaymentMethod implements DashboardPaymentMethod { + const factory _DashboardPaymentMethod({ + required final String paymentMethodId, + required final String paymentMethodName, + required final String paymentMethodType, + required final int totalAmount, + required final int orderCount, + required final int paymentCount, + required final double percentage, + }) = _$DashboardPaymentMethodImpl; + + @override + String get paymentMethodId; + @override + String get paymentMethodName; + @override + String get paymentMethodType; + @override + int get totalAmount; + @override + int get orderCount; + @override + int get paymentCount; + @override + double get percentage; + + /// Create a copy of DashboardPaymentMethod + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardPaymentMethodImplCopyWith<_$DashboardPaymentMethodImpl> + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$DashboardRecentSale { + String get date => throw _privateConstructorUsedError; + int get sales => throw _privateConstructorUsedError; + int get orders => throw _privateConstructorUsedError; + int get items => throw _privateConstructorUsedError; + int get tax => throw _privateConstructorUsedError; + int get discount => throw _privateConstructorUsedError; + int get netSales => throw _privateConstructorUsedError; + + /// Create a copy of DashboardRecentSale + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardRecentSaleCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardRecentSaleCopyWith<$Res> { + factory $DashboardRecentSaleCopyWith( + DashboardRecentSale value, + $Res Function(DashboardRecentSale) then, + ) = _$DashboardRecentSaleCopyWithImpl<$Res, DashboardRecentSale>; + @useResult + $Res call({ + String date, + int sales, + int orders, + int items, + int tax, + int discount, + int netSales, + }); +} + +/// @nodoc +class _$DashboardRecentSaleCopyWithImpl<$Res, $Val extends DashboardRecentSale> + implements $DashboardRecentSaleCopyWith<$Res> { + _$DashboardRecentSaleCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardRecentSale + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = null, + Object? sales = null, + Object? orders = null, + Object? items = null, + Object? tax = null, + Object? discount = null, + Object? netSales = null, + }) { + return _then( + _value.copyWith( + date: null == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String, + sales: null == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as int, + orders: null == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int, + items: null == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as int, + tax: null == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int, + discount: null == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int, + netSales: null == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardRecentSaleImplCopyWith<$Res> + implements $DashboardRecentSaleCopyWith<$Res> { + factory _$$DashboardRecentSaleImplCopyWith( + _$DashboardRecentSaleImpl value, + $Res Function(_$DashboardRecentSaleImpl) then, + ) = __$$DashboardRecentSaleImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String date, + int sales, + int orders, + int items, + int tax, + int discount, + int netSales, + }); +} + +/// @nodoc +class __$$DashboardRecentSaleImplCopyWithImpl<$Res> + extends _$DashboardRecentSaleCopyWithImpl<$Res, _$DashboardRecentSaleImpl> + implements _$$DashboardRecentSaleImplCopyWith<$Res> { + __$$DashboardRecentSaleImplCopyWithImpl( + _$DashboardRecentSaleImpl _value, + $Res Function(_$DashboardRecentSaleImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardRecentSale + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = null, + Object? sales = null, + Object? orders = null, + Object? items = null, + Object? tax = null, + Object? discount = null, + Object? netSales = null, + }) { + return _then( + _$DashboardRecentSaleImpl( + date: null == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String, + sales: null == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as int, + orders: null == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int, + items: null == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as int, + tax: null == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int, + discount: null == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int, + netSales: null == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$DashboardRecentSaleImpl implements _DashboardRecentSale { + const _$DashboardRecentSaleImpl({ + required this.date, + required this.sales, + required this.orders, + required this.items, + required this.tax, + required this.discount, + required this.netSales, + }); + + @override + final String date; + @override + final int sales; + @override + final int orders; + @override + final int items; + @override + final int tax; + @override + final int discount; + @override + final int netSales; + + @override + String toString() { + return 'DashboardRecentSale(date: $date, sales: $sales, orders: $orders, items: $items, tax: $tax, discount: $discount, netSales: $netSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardRecentSaleImpl && + (identical(other.date, date) || other.date == date) && + (identical(other.sales, sales) || other.sales == sales) && + (identical(other.orders, orders) || other.orders == orders) && + (identical(other.items, items) || other.items == items) && + (identical(other.tax, tax) || other.tax == tax) && + (identical(other.discount, discount) || + other.discount == discount) && + (identical(other.netSales, netSales) || + other.netSales == netSales)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + date, + sales, + orders, + items, + tax, + discount, + netSales, + ); + + /// Create a copy of DashboardRecentSale + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardRecentSaleImplCopyWith<_$DashboardRecentSaleImpl> get copyWith => + __$$DashboardRecentSaleImplCopyWithImpl<_$DashboardRecentSaleImpl>( + this, + _$identity, + ); +} + +abstract class _DashboardRecentSale implements DashboardRecentSale { + const factory _DashboardRecentSale({ + required final String date, + required final int sales, + required final int orders, + required final int items, + required final int tax, + required final int discount, + required final int netSales, + }) = _$DashboardRecentSaleImpl; + + @override + String get date; + @override + int get sales; + @override + int get orders; + @override + int get items; + @override + int get tax; + @override + int get discount; + @override + int get netSales; + + /// Create a copy of DashboardRecentSale + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardRecentSaleImplCopyWith<_$DashboardRecentSaleImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc mixin _$AnalyticFailure { @optionalTypeArgs diff --git a/lib/domain/analytic/entities/dashboard_analytic_entity.dart b/lib/domain/analytic/entities/dashboard_analytic_entity.dart new file mode 100644 index 0000000..204c85b --- /dev/null +++ b/lib/domain/analytic/entities/dashboard_analytic_entity.dart @@ -0,0 +1,118 @@ +part of '../analytic.dart'; + +@freezed +class DashboardAnalytic with _$DashboardAnalytic { + const factory DashboardAnalytic({ + required String organizationId, + required String outletId, + required String dateFrom, + required String dateTo, + required DashboardOverview overview, + required List topProducts, + required List paymentMethods, + required List recentSales, + }) = _DashboardAnalytic; + + factory DashboardAnalytic.empty() => DashboardAnalytic( + organizationId: '', + outletId: '', + dateFrom: '', + dateTo: '', + overview: DashboardOverview.empty(), + topProducts: const [], + paymentMethods: const [], + recentSales: const [], + ); +} + +@freezed +class DashboardOverview with _$DashboardOverview { + const factory DashboardOverview({ + required int totalSales, + required int totalOrders, + required double averageOrderValue, + required int totalCustomers, + required int voidedOrders, + required int refundedOrders, + }) = _DashboardOverview; + + factory DashboardOverview.empty() => const DashboardOverview( + totalSales: 0, + totalOrders: 0, + averageOrderValue: 0.0, + totalCustomers: 0, + voidedOrders: 0, + refundedOrders: 0, + ); +} + +@freezed +class DashboardTopProduct with _$DashboardTopProduct { + const factory DashboardTopProduct({ + required String productId, + required String productName, + required String categoryId, + required String categoryName, + required int quantitySold, + required int revenue, + required double averagePrice, + required int orderCount, + }) = _DashboardTopProduct; + + factory DashboardTopProduct.empty() => const DashboardTopProduct( + productId: '', + productName: '', + categoryId: '', + categoryName: '', + quantitySold: 0, + revenue: 0, + averagePrice: 0.0, + orderCount: 0, + ); +} + +@freezed +class DashboardPaymentMethod with _$DashboardPaymentMethod { + const factory DashboardPaymentMethod({ + required String paymentMethodId, + required String paymentMethodName, + required String paymentMethodType, + required int totalAmount, + required int orderCount, + required int paymentCount, + required double percentage, + }) = _DashboardPaymentMethod; + + factory DashboardPaymentMethod.empty() => const DashboardPaymentMethod( + paymentMethodId: '', + paymentMethodName: '', + paymentMethodType: '', + totalAmount: 0, + orderCount: 0, + paymentCount: 0, + percentage: 0.0, + ); +} + +@freezed +class DashboardRecentSale with _$DashboardRecentSale { + const factory DashboardRecentSale({ + required String date, + required int sales, + required int orders, + required int items, + required int tax, + required int discount, + required int netSales, + }) = _DashboardRecentSale; + + factory DashboardRecentSale.empty() => const DashboardRecentSale( + date: '', + sales: 0, + orders: 0, + items: 0, + tax: 0, + discount: 0, + netSales: 0, + ); +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index fb45141..50a1a90 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -22,4 +22,9 @@ abstract class IAnalyticRepository { required DateTime dateFrom, required DateTime dateTo, }); + + Future> getDashboard({ + required DateTime dateFrom, + required DateTime dateTo, + }); } diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart index 35e7062..a604c55 100644 --- a/lib/infrastructure/analytic/analytic_dtos.dart +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -9,3 +9,4 @@ part 'dto/sales_analytic_dto.dart'; part 'dto/profit_loss_analytic_dto.dart'; part 'dto/category_analytic_dto.dart'; part 'dto/inventory_analytic_dto.dart'; +part 'dto/dashboard_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index d51b773..2f5bbd5 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -4922,3 +4922,1734 @@ abstract class _InventoryIngredientDto implements InventoryIngredientDto { _$$InventoryIngredientDtoImplCopyWith<_$InventoryIngredientDtoImpl> get copyWith => throw _privateConstructorUsedError; } + +DashboardAnalyticDto _$DashboardAnalyticDtoFromJson(Map json) { + return _DashboardAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$DashboardAnalyticDto { + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'date_from') + String? get dateFrom => throw _privateConstructorUsedError; + @JsonKey(name: 'date_to') + String? get dateTo => throw _privateConstructorUsedError; + @JsonKey(name: 'overview') + DashboardOverviewDto? get overview => throw _privateConstructorUsedError; + @JsonKey(name: 'top_products') + List? get topProducts => + throw _privateConstructorUsedError; + @JsonKey(name: 'payment_methods') + List? get paymentMethods => + throw _privateConstructorUsedError; + @JsonKey(name: 'recent_sales') + List? get recentSales => + throw _privateConstructorUsedError; + + /// Serializes this DashboardAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of DashboardAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardAnalyticDtoCopyWith<$Res> { + factory $DashboardAnalyticDtoCopyWith( + DashboardAnalyticDto value, + $Res Function(DashboardAnalyticDto) then, + ) = _$DashboardAnalyticDtoCopyWithImpl<$Res, DashboardAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'overview') DashboardOverviewDto? overview, + @JsonKey(name: 'top_products') List? topProducts, + @JsonKey(name: 'payment_methods') + List? paymentMethods, + @JsonKey(name: 'recent_sales') List? recentSales, + }); + + $DashboardOverviewDtoCopyWith<$Res>? get overview; +} + +/// @nodoc +class _$DashboardAnalyticDtoCopyWithImpl< + $Res, + $Val extends DashboardAnalyticDto +> + implements $DashboardAnalyticDtoCopyWith<$Res> { + _$DashboardAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? overview = freezed, + Object? topProducts = freezed, + Object? paymentMethods = freezed, + Object? recentSales = freezed, + }) { + return _then( + _value.copyWith( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + overview: freezed == overview + ? _value.overview + : overview // ignore: cast_nullable_to_non_nullable + as DashboardOverviewDto?, + topProducts: freezed == topProducts + ? _value.topProducts + : topProducts // ignore: cast_nullable_to_non_nullable + as List?, + paymentMethods: freezed == paymentMethods + ? _value.paymentMethods + : paymentMethods // ignore: cast_nullable_to_non_nullable + as List?, + recentSales: freezed == recentSales + ? _value.recentSales + : recentSales // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } + + /// Create a copy of DashboardAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $DashboardOverviewDtoCopyWith<$Res>? get overview { + if (_value.overview == null) { + return null; + } + + return $DashboardOverviewDtoCopyWith<$Res>(_value.overview!, (value) { + return _then(_value.copyWith(overview: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$DashboardAnalyticDtoImplCopyWith<$Res> + implements $DashboardAnalyticDtoCopyWith<$Res> { + factory _$$DashboardAnalyticDtoImplCopyWith( + _$DashboardAnalyticDtoImpl value, + $Res Function(_$DashboardAnalyticDtoImpl) then, + ) = __$$DashboardAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'overview') DashboardOverviewDto? overview, + @JsonKey(name: 'top_products') List? topProducts, + @JsonKey(name: 'payment_methods') + List? paymentMethods, + @JsonKey(name: 'recent_sales') List? recentSales, + }); + + @override + $DashboardOverviewDtoCopyWith<$Res>? get overview; +} + +/// @nodoc +class __$$DashboardAnalyticDtoImplCopyWithImpl<$Res> + extends _$DashboardAnalyticDtoCopyWithImpl<$Res, _$DashboardAnalyticDtoImpl> + implements _$$DashboardAnalyticDtoImplCopyWith<$Res> { + __$$DashboardAnalyticDtoImplCopyWithImpl( + _$DashboardAnalyticDtoImpl _value, + $Res Function(_$DashboardAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? overview = freezed, + Object? topProducts = freezed, + Object? paymentMethods = freezed, + Object? recentSales = freezed, + }) { + return _then( + _$DashboardAnalyticDtoImpl( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + overview: freezed == overview + ? _value.overview + : overview // ignore: cast_nullable_to_non_nullable + as DashboardOverviewDto?, + topProducts: freezed == topProducts + ? _value._topProducts + : topProducts // ignore: cast_nullable_to_non_nullable + as List?, + paymentMethods: freezed == paymentMethods + ? _value._paymentMethods + : paymentMethods // ignore: cast_nullable_to_non_nullable + as List?, + recentSales: freezed == recentSales + ? _value._recentSales + : recentSales // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$DashboardAnalyticDtoImpl extends _DashboardAnalyticDto { + const _$DashboardAnalyticDtoImpl({ + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'date_from') this.dateFrom, + @JsonKey(name: 'date_to') this.dateTo, + @JsonKey(name: 'overview') this.overview, + @JsonKey(name: 'top_products') + final List? topProducts, + @JsonKey(name: 'payment_methods') + final List? paymentMethods, + @JsonKey(name: 'recent_sales') + final List? recentSales, + }) : _topProducts = topProducts, + _paymentMethods = paymentMethods, + _recentSales = recentSales, + super._(); + + factory _$DashboardAnalyticDtoImpl.fromJson(Map json) => + _$$DashboardAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'date_from') + final String? dateFrom; + @override + @JsonKey(name: 'date_to') + final String? dateTo; + @override + @JsonKey(name: 'overview') + final DashboardOverviewDto? overview; + final List? _topProducts; + @override + @JsonKey(name: 'top_products') + List? get topProducts { + final value = _topProducts; + if (value == null) return null; + if (_topProducts is EqualUnmodifiableListView) return _topProducts; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + final List? _paymentMethods; + @override + @JsonKey(name: 'payment_methods') + List? get paymentMethods { + final value = _paymentMethods; + if (value == null) return null; + if (_paymentMethods is EqualUnmodifiableListView) return _paymentMethods; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + final List? _recentSales; + @override + @JsonKey(name: 'recent_sales') + List? get recentSales { + final value = _recentSales; + if (value == null) return null; + if (_recentSales is EqualUnmodifiableListView) return _recentSales; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'DashboardAnalyticDto(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, overview: $overview, topProducts: $topProducts, paymentMethods: $paymentMethods, recentSales: $recentSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardAnalyticDtoImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.overview, overview) || + other.overview == overview) && + const DeepCollectionEquality().equals( + other._topProducts, + _topProducts, + ) && + const DeepCollectionEquality().equals( + other._paymentMethods, + _paymentMethods, + ) && + const DeepCollectionEquality().equals( + other._recentSales, + _recentSales, + )); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + overview, + const DeepCollectionEquality().hash(_topProducts), + const DeepCollectionEquality().hash(_paymentMethods), + const DeepCollectionEquality().hash(_recentSales), + ); + + /// Create a copy of DashboardAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardAnalyticDtoImplCopyWith<_$DashboardAnalyticDtoImpl> + get copyWith => + __$$DashboardAnalyticDtoImplCopyWithImpl<_$DashboardAnalyticDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$DashboardAnalyticDtoImplToJson(this); + } +} + +abstract class _DashboardAnalyticDto extends DashboardAnalyticDto { + const factory _DashboardAnalyticDto({ + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'date_from') final String? dateFrom, + @JsonKey(name: 'date_to') final String? dateTo, + @JsonKey(name: 'overview') final DashboardOverviewDto? overview, + @JsonKey(name: 'top_products') + final List? topProducts, + @JsonKey(name: 'payment_methods') + final List? paymentMethods, + @JsonKey(name: 'recent_sales') + final List? recentSales, + }) = _$DashboardAnalyticDtoImpl; + const _DashboardAnalyticDto._() : super._(); + + factory _DashboardAnalyticDto.fromJson(Map json) = + _$DashboardAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'date_from') + String? get dateFrom; + @override + @JsonKey(name: 'date_to') + String? get dateTo; + @override + @JsonKey(name: 'overview') + DashboardOverviewDto? get overview; + @override + @JsonKey(name: 'top_products') + List? get topProducts; + @override + @JsonKey(name: 'payment_methods') + List? get paymentMethods; + @override + @JsonKey(name: 'recent_sales') + List? get recentSales; + + /// Create a copy of DashboardAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardAnalyticDtoImplCopyWith<_$DashboardAnalyticDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +DashboardOverviewDto _$DashboardOverviewDtoFromJson(Map json) { + return _DashboardOverviewDto.fromJson(json); +} + +/// @nodoc +mixin _$DashboardOverviewDto { + @JsonKey(name: 'total_sales') + int? get totalSales => throw _privateConstructorUsedError; + @JsonKey(name: 'total_orders') + int? get totalOrders => throw _privateConstructorUsedError; + @JsonKey(name: 'average_order_value') + double? get averageOrderValue => throw _privateConstructorUsedError; + @JsonKey(name: 'total_customers') + int? get totalCustomers => throw _privateConstructorUsedError; + @JsonKey(name: 'voided_orders') + int? get voidedOrders => throw _privateConstructorUsedError; + @JsonKey(name: 'refunded_orders') + int? get refundedOrders => throw _privateConstructorUsedError; + + /// Serializes this DashboardOverviewDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of DashboardOverviewDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardOverviewDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardOverviewDtoCopyWith<$Res> { + factory $DashboardOverviewDtoCopyWith( + DashboardOverviewDto value, + $Res Function(DashboardOverviewDto) then, + ) = _$DashboardOverviewDtoCopyWithImpl<$Res, DashboardOverviewDto>; + @useResult + $Res call({ + @JsonKey(name: 'total_sales') int? totalSales, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + @JsonKey(name: 'total_customers') int? totalCustomers, + @JsonKey(name: 'voided_orders') int? voidedOrders, + @JsonKey(name: 'refunded_orders') int? refundedOrders, + }); +} + +/// @nodoc +class _$DashboardOverviewDtoCopyWithImpl< + $Res, + $Val extends DashboardOverviewDto +> + implements $DashboardOverviewDtoCopyWith<$Res> { + _$DashboardOverviewDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardOverviewDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = freezed, + Object? totalOrders = freezed, + Object? averageOrderValue = freezed, + Object? totalCustomers = freezed, + Object? voidedOrders = freezed, + Object? refundedOrders = freezed, + }) { + return _then( + _value.copyWith( + totalSales: freezed == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as int?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double?, + totalCustomers: freezed == totalCustomers + ? _value.totalCustomers + : totalCustomers // ignore: cast_nullable_to_non_nullable + as int?, + voidedOrders: freezed == voidedOrders + ? _value.voidedOrders + : voidedOrders // ignore: cast_nullable_to_non_nullable + as int?, + refundedOrders: freezed == refundedOrders + ? _value.refundedOrders + : refundedOrders // ignore: cast_nullable_to_non_nullable + as int?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardOverviewDtoImplCopyWith<$Res> + implements $DashboardOverviewDtoCopyWith<$Res> { + factory _$$DashboardOverviewDtoImplCopyWith( + _$DashboardOverviewDtoImpl value, + $Res Function(_$DashboardOverviewDtoImpl) then, + ) = __$$DashboardOverviewDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'total_sales') int? totalSales, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + @JsonKey(name: 'total_customers') int? totalCustomers, + @JsonKey(name: 'voided_orders') int? voidedOrders, + @JsonKey(name: 'refunded_orders') int? refundedOrders, + }); +} + +/// @nodoc +class __$$DashboardOverviewDtoImplCopyWithImpl<$Res> + extends _$DashboardOverviewDtoCopyWithImpl<$Res, _$DashboardOverviewDtoImpl> + implements _$$DashboardOverviewDtoImplCopyWith<$Res> { + __$$DashboardOverviewDtoImplCopyWithImpl( + _$DashboardOverviewDtoImpl _value, + $Res Function(_$DashboardOverviewDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardOverviewDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalSales = freezed, + Object? totalOrders = freezed, + Object? averageOrderValue = freezed, + Object? totalCustomers = freezed, + Object? voidedOrders = freezed, + Object? refundedOrders = freezed, + }) { + return _then( + _$DashboardOverviewDtoImpl( + totalSales: freezed == totalSales + ? _value.totalSales + : totalSales // ignore: cast_nullable_to_non_nullable + as int?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double?, + totalCustomers: freezed == totalCustomers + ? _value.totalCustomers + : totalCustomers // ignore: cast_nullable_to_non_nullable + as int?, + voidedOrders: freezed == voidedOrders + ? _value.voidedOrders + : voidedOrders // ignore: cast_nullable_to_non_nullable + as int?, + refundedOrders: freezed == refundedOrders + ? _value.refundedOrders + : refundedOrders // ignore: cast_nullable_to_non_nullable + as int?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$DashboardOverviewDtoImpl extends _DashboardOverviewDto { + const _$DashboardOverviewDtoImpl({ + @JsonKey(name: 'total_sales') this.totalSales, + @JsonKey(name: 'total_orders') this.totalOrders, + @JsonKey(name: 'average_order_value') this.averageOrderValue, + @JsonKey(name: 'total_customers') this.totalCustomers, + @JsonKey(name: 'voided_orders') this.voidedOrders, + @JsonKey(name: 'refunded_orders') this.refundedOrders, + }) : super._(); + + factory _$DashboardOverviewDtoImpl.fromJson(Map json) => + _$$DashboardOverviewDtoImplFromJson(json); + + @override + @JsonKey(name: 'total_sales') + final int? totalSales; + @override + @JsonKey(name: 'total_orders') + final int? totalOrders; + @override + @JsonKey(name: 'average_order_value') + final double? averageOrderValue; + @override + @JsonKey(name: 'total_customers') + final int? totalCustomers; + @override + @JsonKey(name: 'voided_orders') + final int? voidedOrders; + @override + @JsonKey(name: 'refunded_orders') + final int? refundedOrders; + + @override + String toString() { + return 'DashboardOverviewDto(totalSales: $totalSales, totalOrders: $totalOrders, averageOrderValue: $averageOrderValue, totalCustomers: $totalCustomers, voidedOrders: $voidedOrders, refundedOrders: $refundedOrders)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardOverviewDtoImpl && + (identical(other.totalSales, totalSales) || + other.totalSales == totalSales) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue) && + (identical(other.totalCustomers, totalCustomers) || + other.totalCustomers == totalCustomers) && + (identical(other.voidedOrders, voidedOrders) || + other.voidedOrders == voidedOrders) && + (identical(other.refundedOrders, refundedOrders) || + other.refundedOrders == refundedOrders)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + totalSales, + totalOrders, + averageOrderValue, + totalCustomers, + voidedOrders, + refundedOrders, + ); + + /// Create a copy of DashboardOverviewDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardOverviewDtoImplCopyWith<_$DashboardOverviewDtoImpl> + get copyWith => + __$$DashboardOverviewDtoImplCopyWithImpl<_$DashboardOverviewDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$DashboardOverviewDtoImplToJson(this); + } +} + +abstract class _DashboardOverviewDto extends DashboardOverviewDto { + const factory _DashboardOverviewDto({ + @JsonKey(name: 'total_sales') final int? totalSales, + @JsonKey(name: 'total_orders') final int? totalOrders, + @JsonKey(name: 'average_order_value') final double? averageOrderValue, + @JsonKey(name: 'total_customers') final int? totalCustomers, + @JsonKey(name: 'voided_orders') final int? voidedOrders, + @JsonKey(name: 'refunded_orders') final int? refundedOrders, + }) = _$DashboardOverviewDtoImpl; + const _DashboardOverviewDto._() : super._(); + + factory _DashboardOverviewDto.fromJson(Map json) = + _$DashboardOverviewDtoImpl.fromJson; + + @override + @JsonKey(name: 'total_sales') + int? get totalSales; + @override + @JsonKey(name: 'total_orders') + int? get totalOrders; + @override + @JsonKey(name: 'average_order_value') + double? get averageOrderValue; + @override + @JsonKey(name: 'total_customers') + int? get totalCustomers; + @override + @JsonKey(name: 'voided_orders') + int? get voidedOrders; + @override + @JsonKey(name: 'refunded_orders') + int? get refundedOrders; + + /// Create a copy of DashboardOverviewDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardOverviewDtoImplCopyWith<_$DashboardOverviewDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +DashboardTopProductDto _$DashboardTopProductDtoFromJson( + Map json, +) { + return _DashboardTopProductDto.fromJson(json); +} + +/// @nodoc +mixin _$DashboardTopProductDto { + @JsonKey(name: 'product_id') + String? get productId => throw _privateConstructorUsedError; + @JsonKey(name: 'product_name') + String? get productName => throw _privateConstructorUsedError; + @JsonKey(name: 'category_id') + String? get categoryId => throw _privateConstructorUsedError; + @JsonKey(name: 'category_name') + String? get categoryName => throw _privateConstructorUsedError; + @JsonKey(name: 'quantity_sold') + int? get quantitySold => throw _privateConstructorUsedError; + @JsonKey(name: 'revenue') + int? get revenue => throw _privateConstructorUsedError; + @JsonKey(name: 'average_price') + double? get averagePrice => throw _privateConstructorUsedError; + @JsonKey(name: 'order_count') + int? get orderCount => throw _privateConstructorUsedError; + + /// Serializes this DashboardTopProductDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of DashboardTopProductDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardTopProductDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardTopProductDtoCopyWith<$Res> { + factory $DashboardTopProductDtoCopyWith( + DashboardTopProductDto value, + $Res Function(DashboardTopProductDto) then, + ) = _$DashboardTopProductDtoCopyWithImpl<$Res, DashboardTopProductDto>; + @useResult + $Res call({ + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'average_price') double? averagePrice, + @JsonKey(name: 'order_count') int? orderCount, + }); +} + +/// @nodoc +class _$DashboardTopProductDtoCopyWithImpl< + $Res, + $Val extends DashboardTopProductDto +> + implements $DashboardTopProductDtoCopyWith<$Res> { + _$DashboardTopProductDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardTopProductDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = freezed, + Object? productName = freezed, + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? quantitySold = freezed, + Object? revenue = freezed, + Object? averagePrice = freezed, + Object? orderCount = freezed, + }) { + return _then( + _value.copyWith( + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + quantitySold: freezed == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int?, + revenue: freezed == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int?, + averagePrice: freezed == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardTopProductDtoImplCopyWith<$Res> + implements $DashboardTopProductDtoCopyWith<$Res> { + factory _$$DashboardTopProductDtoImplCopyWith( + _$DashboardTopProductDtoImpl value, + $Res Function(_$DashboardTopProductDtoImpl) then, + ) = __$$DashboardTopProductDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'average_price') double? averagePrice, + @JsonKey(name: 'order_count') int? orderCount, + }); +} + +/// @nodoc +class __$$DashboardTopProductDtoImplCopyWithImpl<$Res> + extends + _$DashboardTopProductDtoCopyWithImpl<$Res, _$DashboardTopProductDtoImpl> + implements _$$DashboardTopProductDtoImplCopyWith<$Res> { + __$$DashboardTopProductDtoImplCopyWithImpl( + _$DashboardTopProductDtoImpl _value, + $Res Function(_$DashboardTopProductDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardTopProductDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = freezed, + Object? productName = freezed, + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? quantitySold = freezed, + Object? revenue = freezed, + Object? averagePrice = freezed, + Object? orderCount = freezed, + }) { + return _then( + _$DashboardTopProductDtoImpl( + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + categoryId: freezed == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String?, + categoryName: freezed == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String?, + quantitySold: freezed == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int?, + revenue: freezed == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as int?, + averagePrice: freezed == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$DashboardTopProductDtoImpl extends _DashboardTopProductDto { + const _$DashboardTopProductDtoImpl({ + @JsonKey(name: 'product_id') this.productId, + @JsonKey(name: 'product_name') this.productName, + @JsonKey(name: 'category_id') this.categoryId, + @JsonKey(name: 'category_name') this.categoryName, + @JsonKey(name: 'quantity_sold') this.quantitySold, + @JsonKey(name: 'revenue') this.revenue, + @JsonKey(name: 'average_price') this.averagePrice, + @JsonKey(name: 'order_count') this.orderCount, + }) : super._(); + + factory _$DashboardTopProductDtoImpl.fromJson(Map json) => + _$$DashboardTopProductDtoImplFromJson(json); + + @override + @JsonKey(name: 'product_id') + final String? productId; + @override + @JsonKey(name: 'product_name') + final String? productName; + @override + @JsonKey(name: 'category_id') + final String? categoryId; + @override + @JsonKey(name: 'category_name') + final String? categoryName; + @override + @JsonKey(name: 'quantity_sold') + final int? quantitySold; + @override + @JsonKey(name: 'revenue') + final int? revenue; + @override + @JsonKey(name: 'average_price') + final double? averagePrice; + @override + @JsonKey(name: 'order_count') + final int? orderCount; + + @override + String toString() { + return 'DashboardTopProductDto(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, averagePrice: $averagePrice, orderCount: $orderCount)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardTopProductDtoImpl && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantitySold, quantitySold) || + other.quantitySold == quantitySold) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.averagePrice, averagePrice) || + other.averagePrice == averagePrice) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + productId, + productName, + categoryId, + categoryName, + quantitySold, + revenue, + averagePrice, + orderCount, + ); + + /// Create a copy of DashboardTopProductDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardTopProductDtoImplCopyWith<_$DashboardTopProductDtoImpl> + get copyWith => + __$$DashboardTopProductDtoImplCopyWithImpl<_$DashboardTopProductDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$DashboardTopProductDtoImplToJson(this); + } +} + +abstract class _DashboardTopProductDto extends DashboardTopProductDto { + const factory _DashboardTopProductDto({ + @JsonKey(name: 'product_id') final String? productId, + @JsonKey(name: 'product_name') final String? productName, + @JsonKey(name: 'category_id') final String? categoryId, + @JsonKey(name: 'category_name') final String? categoryName, + @JsonKey(name: 'quantity_sold') final int? quantitySold, + @JsonKey(name: 'revenue') final int? revenue, + @JsonKey(name: 'average_price') final double? averagePrice, + @JsonKey(name: 'order_count') final int? orderCount, + }) = _$DashboardTopProductDtoImpl; + const _DashboardTopProductDto._() : super._(); + + factory _DashboardTopProductDto.fromJson(Map json) = + _$DashboardTopProductDtoImpl.fromJson; + + @override + @JsonKey(name: 'product_id') + String? get productId; + @override + @JsonKey(name: 'product_name') + String? get productName; + @override + @JsonKey(name: 'category_id') + String? get categoryId; + @override + @JsonKey(name: 'category_name') + String? get categoryName; + @override + @JsonKey(name: 'quantity_sold') + int? get quantitySold; + @override + @JsonKey(name: 'revenue') + int? get revenue; + @override + @JsonKey(name: 'average_price') + double? get averagePrice; + @override + @JsonKey(name: 'order_count') + int? get orderCount; + + /// Create a copy of DashboardTopProductDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardTopProductDtoImplCopyWith<_$DashboardTopProductDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +DashboardPaymentMethodDto _$DashboardPaymentMethodDtoFromJson( + Map json, +) { + return _DashboardPaymentMethodDto.fromJson(json); +} + +/// @nodoc +mixin _$DashboardPaymentMethodDto { + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType => throw _privateConstructorUsedError; + @JsonKey(name: 'total_amount') + int? get totalAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'order_count') + int? get orderCount => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_count') + int? get paymentCount => throw _privateConstructorUsedError; + @JsonKey(name: 'percentage') + double? get percentage => throw _privateConstructorUsedError; + + /// Serializes this DashboardPaymentMethodDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of DashboardPaymentMethodDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardPaymentMethodDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardPaymentMethodDtoCopyWith<$Res> { + factory $DashboardPaymentMethodDtoCopyWith( + DashboardPaymentMethodDto value, + $Res Function(DashboardPaymentMethodDto) then, + ) = _$DashboardPaymentMethodDtoCopyWithImpl<$Res, DashboardPaymentMethodDto>; + @useResult + $Res call({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') int? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }); +} + +/// @nodoc +class _$DashboardPaymentMethodDtoCopyWithImpl< + $Res, + $Val extends DashboardPaymentMethodDto +> + implements $DashboardPaymentMethodDtoCopyWith<$Res> { + _$DashboardPaymentMethodDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardPaymentMethodDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? totalAmount = freezed, + Object? orderCount = freezed, + Object? paymentCount = freezed, + Object? percentage = freezed, + }) { + return _then( + _value.copyWith( + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + percentage: freezed == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardPaymentMethodDtoImplCopyWith<$Res> + implements $DashboardPaymentMethodDtoCopyWith<$Res> { + factory _$$DashboardPaymentMethodDtoImplCopyWith( + _$DashboardPaymentMethodDtoImpl value, + $Res Function(_$DashboardPaymentMethodDtoImpl) then, + ) = __$$DashboardPaymentMethodDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') int? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }); +} + +/// @nodoc +class __$$DashboardPaymentMethodDtoImplCopyWithImpl<$Res> + extends + _$DashboardPaymentMethodDtoCopyWithImpl< + $Res, + _$DashboardPaymentMethodDtoImpl + > + implements _$$DashboardPaymentMethodDtoImplCopyWith<$Res> { + __$$DashboardPaymentMethodDtoImplCopyWithImpl( + _$DashboardPaymentMethodDtoImpl _value, + $Res Function(_$DashboardPaymentMethodDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardPaymentMethodDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? totalAmount = freezed, + Object? orderCount = freezed, + Object? paymentCount = freezed, + Object? percentage = freezed, + }) { + return _then( + _$DashboardPaymentMethodDtoImpl( + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + percentage: freezed == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$DashboardPaymentMethodDtoImpl extends _DashboardPaymentMethodDto { + const _$DashboardPaymentMethodDtoImpl({ + @JsonKey(name: 'payment_method_id') this.paymentMethodId, + @JsonKey(name: 'payment_method_name') this.paymentMethodName, + @JsonKey(name: 'payment_method_type') this.paymentMethodType, + @JsonKey(name: 'total_amount') this.totalAmount, + @JsonKey(name: 'order_count') this.orderCount, + @JsonKey(name: 'payment_count') this.paymentCount, + @JsonKey(name: 'percentage') this.percentage, + }) : super._(); + + factory _$DashboardPaymentMethodDtoImpl.fromJson(Map json) => + _$$DashboardPaymentMethodDtoImplFromJson(json); + + @override + @JsonKey(name: 'payment_method_id') + final String? paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + final String? paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + final String? paymentMethodType; + @override + @JsonKey(name: 'total_amount') + final int? totalAmount; + @override + @JsonKey(name: 'order_count') + final int? orderCount; + @override + @JsonKey(name: 'payment_count') + final int? paymentCount; + @override + @JsonKey(name: 'percentage') + final double? percentage; + + @override + String toString() { + return 'DashboardPaymentMethodDto(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardPaymentMethodDtoImpl && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.percentage, percentage) || + other.percentage == percentage)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodId, + paymentMethodName, + paymentMethodType, + totalAmount, + orderCount, + paymentCount, + percentage, + ); + + /// Create a copy of DashboardPaymentMethodDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardPaymentMethodDtoImplCopyWith<_$DashboardPaymentMethodDtoImpl> + get copyWith => + __$$DashboardPaymentMethodDtoImplCopyWithImpl< + _$DashboardPaymentMethodDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$DashboardPaymentMethodDtoImplToJson(this); + } +} + +abstract class _DashboardPaymentMethodDto extends DashboardPaymentMethodDto { + const factory _DashboardPaymentMethodDto({ + @JsonKey(name: 'payment_method_id') final String? paymentMethodId, + @JsonKey(name: 'payment_method_name') final String? paymentMethodName, + @JsonKey(name: 'payment_method_type') final String? paymentMethodType, + @JsonKey(name: 'total_amount') final int? totalAmount, + @JsonKey(name: 'order_count') final int? orderCount, + @JsonKey(name: 'payment_count') final int? paymentCount, + @JsonKey(name: 'percentage') final double? percentage, + }) = _$DashboardPaymentMethodDtoImpl; + const _DashboardPaymentMethodDto._() : super._(); + + factory _DashboardPaymentMethodDto.fromJson(Map json) = + _$DashboardPaymentMethodDtoImpl.fromJson; + + @override + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType; + @override + @JsonKey(name: 'total_amount') + int? get totalAmount; + @override + @JsonKey(name: 'order_count') + int? get orderCount; + @override + @JsonKey(name: 'payment_count') + int? get paymentCount; + @override + @JsonKey(name: 'percentage') + double? get percentage; + + /// Create a copy of DashboardPaymentMethodDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardPaymentMethodDtoImplCopyWith<_$DashboardPaymentMethodDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +DashboardRecentSaleDto _$DashboardRecentSaleDtoFromJson( + Map json, +) { + return _DashboardRecentSaleDto.fromJson(json); +} + +/// @nodoc +mixin _$DashboardRecentSaleDto { + @JsonKey(name: 'date') + String? get date => throw _privateConstructorUsedError; + @JsonKey(name: 'sales') + int? get sales => throw _privateConstructorUsedError; + @JsonKey(name: 'orders') + int? get orders => throw _privateConstructorUsedError; + @JsonKey(name: 'items') + int? get items => throw _privateConstructorUsedError; + @JsonKey(name: 'tax') + int? get tax => throw _privateConstructorUsedError; + @JsonKey(name: 'discount') + int? get discount => throw _privateConstructorUsedError; + @JsonKey(name: 'net_sales') + int? get netSales => throw _privateConstructorUsedError; + + /// Serializes this DashboardRecentSaleDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of DashboardRecentSaleDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DashboardRecentSaleDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DashboardRecentSaleDtoCopyWith<$Res> { + factory $DashboardRecentSaleDtoCopyWith( + DashboardRecentSaleDto value, + $Res Function(DashboardRecentSaleDto) then, + ) = _$DashboardRecentSaleDtoCopyWithImpl<$Res, DashboardRecentSaleDto>; + @useResult + $Res call({ + @JsonKey(name: 'date') String? date, + @JsonKey(name: 'sales') int? sales, + @JsonKey(name: 'orders') int? orders, + @JsonKey(name: 'items') int? items, + @JsonKey(name: 'tax') int? tax, + @JsonKey(name: 'discount') int? discount, + @JsonKey(name: 'net_sales') int? netSales, + }); +} + +/// @nodoc +class _$DashboardRecentSaleDtoCopyWithImpl< + $Res, + $Val extends DashboardRecentSaleDto +> + implements $DashboardRecentSaleDtoCopyWith<$Res> { + _$DashboardRecentSaleDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of DashboardRecentSaleDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = freezed, + Object? sales = freezed, + Object? orders = freezed, + Object? items = freezed, + Object? tax = freezed, + Object? discount = freezed, + Object? netSales = freezed, + }) { + return _then( + _value.copyWith( + date: freezed == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String?, + sales: freezed == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as int?, + orders: freezed == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int?, + items: freezed == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as int?, + tax: freezed == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int?, + discount: freezed == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int?, + netSales: freezed == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$DashboardRecentSaleDtoImplCopyWith<$Res> + implements $DashboardRecentSaleDtoCopyWith<$Res> { + factory _$$DashboardRecentSaleDtoImplCopyWith( + _$DashboardRecentSaleDtoImpl value, + $Res Function(_$DashboardRecentSaleDtoImpl) then, + ) = __$$DashboardRecentSaleDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'date') String? date, + @JsonKey(name: 'sales') int? sales, + @JsonKey(name: 'orders') int? orders, + @JsonKey(name: 'items') int? items, + @JsonKey(name: 'tax') int? tax, + @JsonKey(name: 'discount') int? discount, + @JsonKey(name: 'net_sales') int? netSales, + }); +} + +/// @nodoc +class __$$DashboardRecentSaleDtoImplCopyWithImpl<$Res> + extends + _$DashboardRecentSaleDtoCopyWithImpl<$Res, _$DashboardRecentSaleDtoImpl> + implements _$$DashboardRecentSaleDtoImplCopyWith<$Res> { + __$$DashboardRecentSaleDtoImplCopyWithImpl( + _$DashboardRecentSaleDtoImpl _value, + $Res Function(_$DashboardRecentSaleDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardRecentSaleDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? date = freezed, + Object? sales = freezed, + Object? orders = freezed, + Object? items = freezed, + Object? tax = freezed, + Object? discount = freezed, + Object? netSales = freezed, + }) { + return _then( + _$DashboardRecentSaleDtoImpl( + date: freezed == date + ? _value.date + : date // ignore: cast_nullable_to_non_nullable + as String?, + sales: freezed == sales + ? _value.sales + : sales // ignore: cast_nullable_to_non_nullable + as int?, + orders: freezed == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as int?, + items: freezed == items + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as int?, + tax: freezed == tax + ? _value.tax + : tax // ignore: cast_nullable_to_non_nullable + as int?, + discount: freezed == discount + ? _value.discount + : discount // ignore: cast_nullable_to_non_nullable + as int?, + netSales: freezed == netSales + ? _value.netSales + : netSales // ignore: cast_nullable_to_non_nullable + as int?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$DashboardRecentSaleDtoImpl extends _DashboardRecentSaleDto { + const _$DashboardRecentSaleDtoImpl({ + @JsonKey(name: 'date') this.date, + @JsonKey(name: 'sales') this.sales, + @JsonKey(name: 'orders') this.orders, + @JsonKey(name: 'items') this.items, + @JsonKey(name: 'tax') this.tax, + @JsonKey(name: 'discount') this.discount, + @JsonKey(name: 'net_sales') this.netSales, + }) : super._(); + + factory _$DashboardRecentSaleDtoImpl.fromJson(Map json) => + _$$DashboardRecentSaleDtoImplFromJson(json); + + @override + @JsonKey(name: 'date') + final String? date; + @override + @JsonKey(name: 'sales') + final int? sales; + @override + @JsonKey(name: 'orders') + final int? orders; + @override + @JsonKey(name: 'items') + final int? items; + @override + @JsonKey(name: 'tax') + final int? tax; + @override + @JsonKey(name: 'discount') + final int? discount; + @override + @JsonKey(name: 'net_sales') + final int? netSales; + + @override + String toString() { + return 'DashboardRecentSaleDto(date: $date, sales: $sales, orders: $orders, items: $items, tax: $tax, discount: $discount, netSales: $netSales)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DashboardRecentSaleDtoImpl && + (identical(other.date, date) || other.date == date) && + (identical(other.sales, sales) || other.sales == sales) && + (identical(other.orders, orders) || other.orders == orders) && + (identical(other.items, items) || other.items == items) && + (identical(other.tax, tax) || other.tax == tax) && + (identical(other.discount, discount) || + other.discount == discount) && + (identical(other.netSales, netSales) || + other.netSales == netSales)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + date, + sales, + orders, + items, + tax, + discount, + netSales, + ); + + /// Create a copy of DashboardRecentSaleDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DashboardRecentSaleDtoImplCopyWith<_$DashboardRecentSaleDtoImpl> + get copyWith => + __$$DashboardRecentSaleDtoImplCopyWithImpl<_$DashboardRecentSaleDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$DashboardRecentSaleDtoImplToJson(this); + } +} + +abstract class _DashboardRecentSaleDto extends DashboardRecentSaleDto { + const factory _DashboardRecentSaleDto({ + @JsonKey(name: 'date') final String? date, + @JsonKey(name: 'sales') final int? sales, + @JsonKey(name: 'orders') final int? orders, + @JsonKey(name: 'items') final int? items, + @JsonKey(name: 'tax') final int? tax, + @JsonKey(name: 'discount') final int? discount, + @JsonKey(name: 'net_sales') final int? netSales, + }) = _$DashboardRecentSaleDtoImpl; + const _DashboardRecentSaleDto._() : super._(); + + factory _DashboardRecentSaleDto.fromJson(Map json) = + _$DashboardRecentSaleDtoImpl.fromJson; + + @override + @JsonKey(name: 'date') + String? get date; + @override + @JsonKey(name: 'sales') + int? get sales; + @override + @JsonKey(name: 'orders') + int? get orders; + @override + @JsonKey(name: 'items') + int? get items; + @override + @JsonKey(name: 'tax') + int? get tax; + @override + @JsonKey(name: 'discount') + int? get discount; + @override + @JsonKey(name: 'net_sales') + int? get netSales; + + /// Create a copy of DashboardRecentSaleDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DashboardRecentSaleDtoImplCopyWith<_$DashboardRecentSaleDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index e1f95fc..9d3dbdd 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -385,3 +385,135 @@ Map _$$InventoryIngredientDtoImplToJson( 'is_zero_stock': instance.isZeroStock, 'updated_at': instance.updatedAt, }; + +_$DashboardAnalyticDtoImpl _$$DashboardAnalyticDtoImplFromJson( + Map json, +) => _$DashboardAnalyticDtoImpl( + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + dateFrom: json['date_from'] as String?, + dateTo: json['date_to'] as String?, + overview: json['overview'] == null + ? null + : DashboardOverviewDto.fromJson(json['overview'] as Map), + topProducts: (json['top_products'] as List?) + ?.map((e) => DashboardTopProductDto.fromJson(e as Map)) + .toList(), + paymentMethods: (json['payment_methods'] as List?) + ?.map( + (e) => DashboardPaymentMethodDto.fromJson(e as Map), + ) + .toList(), + recentSales: (json['recent_sales'] as List?) + ?.map((e) => DashboardRecentSaleDto.fromJson(e as Map)) + .toList(), +); + +Map _$$DashboardAnalyticDtoImplToJson( + _$DashboardAnalyticDtoImpl instance, +) => { + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'date_from': instance.dateFrom, + 'date_to': instance.dateTo, + 'overview': instance.overview, + 'top_products': instance.topProducts, + 'payment_methods': instance.paymentMethods, + 'recent_sales': instance.recentSales, +}; + +_$DashboardOverviewDtoImpl _$$DashboardOverviewDtoImplFromJson( + Map json, +) => _$DashboardOverviewDtoImpl( + totalSales: (json['total_sales'] as num?)?.toInt(), + totalOrders: (json['total_orders'] as num?)?.toInt(), + averageOrderValue: (json['average_order_value'] as num?)?.toDouble(), + totalCustomers: (json['total_customers'] as num?)?.toInt(), + voidedOrders: (json['voided_orders'] as num?)?.toInt(), + refundedOrders: (json['refunded_orders'] as num?)?.toInt(), +); + +Map _$$DashboardOverviewDtoImplToJson( + _$DashboardOverviewDtoImpl instance, +) => { + 'total_sales': instance.totalSales, + 'total_orders': instance.totalOrders, + 'average_order_value': instance.averageOrderValue, + 'total_customers': instance.totalCustomers, + 'voided_orders': instance.voidedOrders, + 'refunded_orders': instance.refundedOrders, +}; + +_$DashboardTopProductDtoImpl _$$DashboardTopProductDtoImplFromJson( + Map json, +) => _$DashboardTopProductDtoImpl( + productId: json['product_id'] as String?, + productName: json['product_name'] as String?, + categoryId: json['category_id'] as String?, + categoryName: json['category_name'] as String?, + quantitySold: (json['quantity_sold'] as num?)?.toInt(), + revenue: (json['revenue'] as num?)?.toInt(), + averagePrice: (json['average_price'] as num?)?.toDouble(), + orderCount: (json['order_count'] as num?)?.toInt(), +); + +Map _$$DashboardTopProductDtoImplToJson( + _$DashboardTopProductDtoImpl instance, +) => { + 'product_id': instance.productId, + 'product_name': instance.productName, + 'category_id': instance.categoryId, + 'category_name': instance.categoryName, + 'quantity_sold': instance.quantitySold, + 'revenue': instance.revenue, + 'average_price': instance.averagePrice, + 'order_count': instance.orderCount, +}; + +_$DashboardPaymentMethodDtoImpl _$$DashboardPaymentMethodDtoImplFromJson( + Map json, +) => _$DashboardPaymentMethodDtoImpl( + paymentMethodId: json['payment_method_id'] as String?, + paymentMethodName: json['payment_method_name'] as String?, + paymentMethodType: json['payment_method_type'] as String?, + totalAmount: (json['total_amount'] as num?)?.toInt(), + orderCount: (json['order_count'] as num?)?.toInt(), + paymentCount: (json['payment_count'] as num?)?.toInt(), + percentage: (json['percentage'] as num?)?.toDouble(), +); + +Map _$$DashboardPaymentMethodDtoImplToJson( + _$DashboardPaymentMethodDtoImpl instance, +) => { + 'payment_method_id': instance.paymentMethodId, + 'payment_method_name': instance.paymentMethodName, + 'payment_method_type': instance.paymentMethodType, + 'total_amount': instance.totalAmount, + 'order_count': instance.orderCount, + 'payment_count': instance.paymentCount, + 'percentage': instance.percentage, +}; + +_$DashboardRecentSaleDtoImpl _$$DashboardRecentSaleDtoImplFromJson( + Map json, +) => _$DashboardRecentSaleDtoImpl( + date: json['date'] as String?, + sales: (json['sales'] as num?)?.toInt(), + orders: (json['orders'] as num?)?.toInt(), + items: (json['items'] as num?)?.toInt(), + tax: (json['tax'] as num?)?.toInt(), + discount: (json['discount'] as num?)?.toInt(), + netSales: (json['net_sales'] as num?)?.toInt(), +); + +Map _$$DashboardRecentSaleDtoImplToJson( + _$DashboardRecentSaleDtoImpl instance, +) => { + 'date': instance.date, + 'sales': instance.sales, + 'orders': instance.orders, + 'items': instance.items, + 'tax': instance.tax, + 'discount': instance.discount, + 'net_sales': instance.netSales, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index 83ab43f..e8e7c7d 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -126,4 +126,32 @@ class AnalyticRemoteDataProvider { return DC.error(AnalyticFailure.serverError(e)); } } + + Future> fetchDashboard({ + required String outletId, + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + ApiPath.dashboardAnalytic, + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = DashboardAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchDashboardError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/analytic/dto/dashboard_analytic_dto.dart b/lib/infrastructure/analytic/dto/dashboard_analytic_dto.dart new file mode 100644 index 0000000..f17bfe5 --- /dev/null +++ b/lib/infrastructure/analytic/dto/dashboard_analytic_dto.dart @@ -0,0 +1,145 @@ +part of '../analytic_dtos.dart'; + +@freezed +class DashboardAnalyticDto with _$DashboardAnalyticDto { + const DashboardAnalyticDto._(); + + const factory DashboardAnalyticDto({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'overview') DashboardOverviewDto? overview, + @JsonKey(name: 'top_products') List? topProducts, + @JsonKey(name: 'payment_methods') + List? paymentMethods, + @JsonKey(name: 'recent_sales') List? recentSales, + }) = _DashboardAnalyticDto; + + factory DashboardAnalyticDto.fromJson(Map json) => + _$DashboardAnalyticDtoFromJson(json); + + DashboardAnalytic toDomain() => DashboardAnalytic( + organizationId: organizationId ?? '', + outletId: outletId ?? '', + dateFrom: dateFrom ?? '', + dateTo: dateTo ?? '', + overview: overview?.toDomain() ?? DashboardOverview.empty(), + topProducts: topProducts?.map((e) => e.toDomain()).toList() ?? [], + paymentMethods: paymentMethods?.map((e) => e.toDomain()).toList() ?? [], + recentSales: recentSales?.map((e) => e.toDomain()).toList() ?? [], + ); +} + +@freezed +class DashboardOverviewDto with _$DashboardOverviewDto { + const DashboardOverviewDto._(); + + const factory DashboardOverviewDto({ + @JsonKey(name: 'total_sales') int? totalSales, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + @JsonKey(name: 'total_customers') int? totalCustomers, + @JsonKey(name: 'voided_orders') int? voidedOrders, + @JsonKey(name: 'refunded_orders') int? refundedOrders, + }) = _DashboardOverviewDto; + + factory DashboardOverviewDto.fromJson(Map json) => + _$DashboardOverviewDtoFromJson(json); + + DashboardOverview toDomain() => DashboardOverview( + totalSales: totalSales ?? 0, + totalOrders: totalOrders ?? 0, + averageOrderValue: averageOrderValue ?? 0.0, + totalCustomers: totalCustomers ?? 0, + voidedOrders: voidedOrders ?? 0, + refundedOrders: refundedOrders ?? 0, + ); +} + +@freezed +class DashboardTopProductDto with _$DashboardTopProductDto { + const DashboardTopProductDto._(); + + const factory DashboardTopProductDto({ + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'average_price') double? averagePrice, + @JsonKey(name: 'order_count') int? orderCount, + }) = _DashboardTopProductDto; + + factory DashboardTopProductDto.fromJson(Map json) => + _$DashboardTopProductDtoFromJson(json); + + DashboardTopProduct toDomain() => DashboardTopProduct( + productId: productId ?? '', + productName: productName ?? '', + categoryId: categoryId ?? '', + categoryName: categoryName ?? '', + quantitySold: quantitySold ?? 0, + revenue: revenue ?? 0, + averagePrice: averagePrice ?? 0.0, + orderCount: orderCount ?? 0, + ); +} + +@freezed +class DashboardPaymentMethodDto with _$DashboardPaymentMethodDto { + const DashboardPaymentMethodDto._(); + + const factory DashboardPaymentMethodDto({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') int? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }) = _DashboardPaymentMethodDto; + + factory DashboardPaymentMethodDto.fromJson(Map json) => + _$DashboardPaymentMethodDtoFromJson(json); + + DashboardPaymentMethod toDomain() => DashboardPaymentMethod( + paymentMethodId: paymentMethodId ?? '', + paymentMethodName: paymentMethodName ?? '', + paymentMethodType: paymentMethodType ?? '', + totalAmount: totalAmount ?? 0, + orderCount: orderCount ?? 0, + paymentCount: paymentCount ?? 0, + percentage: percentage ?? 0.0, + ); +} + +/// ===================== RECENT SALE DTO ===================== +@freezed +class DashboardRecentSaleDto with _$DashboardRecentSaleDto { + const DashboardRecentSaleDto._(); + + const factory DashboardRecentSaleDto({ + @JsonKey(name: 'date') String? date, + @JsonKey(name: 'sales') int? sales, + @JsonKey(name: 'orders') int? orders, + @JsonKey(name: 'items') int? items, + @JsonKey(name: 'tax') int? tax, + @JsonKey(name: 'discount') int? discount, + @JsonKey(name: 'net_sales') int? netSales, + }) = _DashboardRecentSaleDto; + + factory DashboardRecentSaleDto.fromJson(Map json) => + _$DashboardRecentSaleDtoFromJson(json); + + DashboardRecentSale toDomain() => DashboardRecentSale( + date: date ?? '', + sales: sales ?? 0, + orders: orders ?? 0, + items: items ?? 0, + tax: tax ?? 0, + discount: discount ?? 0, + netSales: netSales ?? 0, + ); +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 3001595..011f2bc 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -115,4 +115,31 @@ class AnalyticRepository implements IAnalyticRepository { return left(const AnalyticFailure.unexpectedError()); } } + + @override + Future> getDashboard({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + User currentUser = await _authLocalDataProvider.currentUser(); + + final result = await _dataProvider.fetchDashboard( + outletId: currentUser.outletId, + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getDashboardError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 2a46271..a63e8a5 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -11,6 +11,8 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:apskel_owner_flutter/application/analytic/category_analytic_loader/category_analytic_loader_bloc.dart' as _i1038; +import 'package:apskel_owner_flutter/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart' + as _i516; import 'package:apskel_owner_flutter/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart' as _i785; import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' @@ -174,6 +176,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i785.InventoryAnalyticLoaderBloc>( () => _i785.InventoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i516.DashboardAnalyticLoaderBloc>( + () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); diff --git a/lib/presentation/pages/report/report_page.dart b/lib/presentation/pages/report/report_page.dart index 05510e4..60be8f5 100644 --- a/lib/presentation/pages/report/report_page.dart +++ b/lib/presentation/pages/report/report_page.dart @@ -1,24 +1,35 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import 'dart:math' as math; +import '../../../application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart'; import '../../../common/theme/theme.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; +import 'widgets/payment_method.dart'; import 'widgets/quick_stats.dart'; -import 'widgets/report_action.dart'; import 'widgets/revenue_summary.dart'; import 'widgets/sales.dart'; import 'widgets/top_product.dart'; @RoutePage() -class ReportPage extends StatefulWidget { +class ReportPage extends StatefulWidget implements AutoRouteWrapper { const ReportPage({super.key}); @override State createState() => _ReportPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => + getIt() + ..add(DashboardAnalyticLoaderEvent.fetched()), + child: this, + ); } class _ReportPageState extends State with TickerProviderStateMixin { @@ -78,54 +89,76 @@ class _ReportPageState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - SliverAppBar( - expandedHeight: 120, - floating: false, - pinned: true, - backgroundColor: AppColor.primary, - centerTitle: false, - flexibleSpace: CustomAppBar(title: 'Laporan', isBack: false), - actions: [ - ActionIconButton(onTap: () {}, icon: LineIcons.download), - ActionIconButton(onTap: () {}, icon: LineIcons.filter), - SpaceWidth(8), - ], - ), + body: + BlocBuilder< + DashboardAnalyticLoaderBloc, + DashboardAnalyticLoaderState + >( + builder: (context, state) { + return CustomScrollView( + slivers: [ + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + centerTitle: false, + flexibleSpace: CustomAppBar( + title: 'Laporan', + isBack: false, + ), + actions: [ + ActionIconButton(onTap: () {}, icon: LineIcons.download), + ActionIconButton(onTap: () {}, icon: LineIcons.filter), + SpaceWidth(8), + ], + ), - // Content - SliverPadding( - padding: EdgeInsets.all(AppValue.padding), - sliver: SliverList( - delegate: SliverChildListDelegate([ - FadeTransition( - opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: Column( - children: [ - ReportRevenueSummary( - rotationAnimation: _rotationAnimation, + // Content + SliverPadding( + padding: EdgeInsets.all(AppValue.padding), + sliver: SliverList( + delegate: SliverChildListDelegate([ + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + children: [ + ReportRevenueSummary( + overview: state.dashboardAnalytic.overview, + rotationAnimation: _rotationAnimation, + ), + const SpaceHeight(24), + ReportQuickStats( + overview: state.dashboardAnalytic.overview, + ), + const SpaceHeight(24), + ReportSales( + salesData: + state.dashboardAnalytic.recentSales, + ), + const SpaceHeight(24), + ReportPaymentMethod( + paymentMethods: + state.dashboardAnalytic.paymentMethods, + ), + const SpaceHeight(24), + ReportTopProduct( + products: state.dashboardAnalytic.topProducts, + ), + const SpaceHeight(24), + ], + ), + ), ), - const SpaceHeight(24), - ReportQuickStats(), - const SpaceHeight(24), - ReportSales(), - const SpaceHeight(24), - ReportTopProduct(), - const SpaceHeight(24), - ReportAction(), - const SpaceHeight(20), - ], + ]), ), ), - ), - ]), - ), + ], + ); + }, ), - ], - ), ); } } diff --git a/lib/presentation/pages/report/widgets/payment_method.dart b/lib/presentation/pages/report/widgets/payment_method.dart new file mode 100644 index 0000000..dcb1396 --- /dev/null +++ b/lib/presentation/pages/report/widgets/payment_method.dart @@ -0,0 +1,616 @@ +import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; +import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; +import '../../../components/widgets/empty_widget.dart'; + +class ReportPaymentMethod extends StatelessWidget { + final List paymentMethods; + + const ReportPaymentMethod({super.key, required this.paymentMethods}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.06), + blurRadius: 20, + offset: const Offset(0, 4), + spreadRadius: -4, + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header + Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + child: Icon(Icons.payment, color: AppColor.white, size: 24), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Payment Methods', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 4), + Text( + 'Revenue breakdown by payment method', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + ), + ), + ], + ), + ), + ], + ), + + const SizedBox(height: 24), + + // Payment Method List + if (paymentMethods.isEmpty) + _buildEmptyState() + else + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: paymentMethods.length, + padding: EdgeInsets.zero, + separatorBuilder: (context, index) => + const SizedBox(height: 12), + itemBuilder: (context, index) { + final method = paymentMethods[index]; + return TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: Duration(milliseconds: 600 + (index * 150)), + curve: Curves.easeOutCubic, + builder: (context, value, child) { + return Transform.translate( + offset: Offset(30 * (1 - value), 0), + child: Opacity( + opacity: value, + child: _buildPaymentMethodTile( + context, + method, + index, + ), + ), + ); + }, + ); + }, + ), + ], + ), + ), + ); + } + + Widget _buildPaymentMethodTile( + BuildContext context, + DashboardPaymentMethod method, + int index, + ) { + final screenWidth = MediaQuery.of(context).size.width; + final isCompact = screenWidth < 400; // For smaller screens + + return Container( + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.1), + width: 1.5, + ), + boxShadow: [ + BoxShadow( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.08), + blurRadius: 12, + offset: const Offset(0, 4), + spreadRadius: -2, + ), + BoxShadow( + color: Colors.black.withOpacity(0.03), + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(16), + child: Stack( + children: [ + // Subtle background gradient + Positioned.fill( + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.03), + _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.01), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + ), + ), + + // Main content + Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header section with improved responsive layout + if (isCompact) + _buildCompactHeader(method) + else + _buildStandardHeader(context, method), + + const SizedBox(height: 16), + + // Stats row with better spacing + _buildStatsSection(method), + + const SizedBox(height: 16), + + // Enhanced progress bar section + _buildProgressSection(method, index), + ], + ), + ), + + // Accent line on the left + Positioned( + left: 0, + top: 0, + bottom: 0, + child: Container( + width: 4, + decoration: BoxDecoration( + color: _getPaymentMethodColor(method.paymentMethodType), + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), + bottomLeft: Radius.circular(16), + ), + ), + ), + ), + ], + ), + ), + ); + } + + Widget _buildStandardHeader( + BuildContext context, + DashboardPaymentMethod method, + ) { + return Row( + children: [ + // Enhanced icon container + Container( + width: 56, + height: 56, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + _getPaymentMethodColor(method.paymentMethodType), + _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.3), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + ), + child: Icon( + _getPaymentMethodIcon(method.paymentMethodType), + color: AppColor.white, + size: 28, + ), + ), + + const SizedBox(width: 16), + + // Payment method info - improved text handling + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + method.paymentMethodName, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 6), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 5, + ), + decoration: BoxDecoration( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.2), + width: 1, + ), + ), + child: Text( + method.paymentMethodType.toUpperCase(), + style: AppStyle.xs.copyWith( + color: _getPaymentMethodColor(method.paymentMethodType), + fontWeight: FontWeight.bold, + letterSpacing: 0.8, + ), + ), + ), + ], + ), + ), + + const SizedBox(width: 12), + + // Percentage badge + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: _getPaymentMethodColor(method.paymentMethodType), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.3), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: Text( + '${method.percentage.toStringAsFixed(1)}%', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ); + } + + Widget _buildCompactHeader(DashboardPaymentMethod method) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 48, + height: 48, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + _getPaymentMethodColor(method.paymentMethodType), + _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.8), + ], + ), + borderRadius: BorderRadius.circular(14), + ), + child: Icon( + _getPaymentMethodIcon(method.paymentMethodType), + color: AppColor.white, + size: 24, + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + method.paymentMethodName, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Text( + method.paymentMethodType.toUpperCase(), + style: AppStyle.xs.copyWith( + color: _getPaymentMethodColor(method.paymentMethodType), + fontWeight: FontWeight.bold, + letterSpacing: 0.5, + ), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), + decoration: BoxDecoration( + color: _getPaymentMethodColor(method.paymentMethodType), + borderRadius: BorderRadius.circular(16), + ), + child: Text( + '${method.percentage.toStringAsFixed(1)}%', + style: AppStyle.xs.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ], + ); + } + + Widget _buildStatsSection(DashboardPaymentMethod method) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.background.withOpacity(0.5), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.border.withOpacity(0.2), width: 1), + ), + child: IntrinsicHeight( + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Total Revenue', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + letterSpacing: 0.5, + ), + ), + const SizedBox(height: 6), + Text( + method.totalAmount.currencyFormatRp, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + Container( + width: 1, + margin: const EdgeInsets.symmetric(horizontal: 16), + decoration: BoxDecoration( + color: AppColor.border.withOpacity(0.3), + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Orders', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + letterSpacing: 0.5, + ), + ), + const SizedBox(height: 6), + Text( + '${method.orderCount}', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: _getPaymentMethodColor(method.paymentMethodType), + ), + ), + ], + ), + ], + ), + ), + ); + } + + Widget _buildProgressSection(DashboardPaymentMethod method, int index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Revenue Share', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w600, + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Text( + '${method.percentage.toStringAsFixed(1)}%', + style: AppStyle.sm.copyWith( + color: _getPaymentMethodColor(method.paymentMethodType), + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + const SizedBox(height: 12), + TweenAnimationBuilder( + tween: Tween(begin: 0, end: method.percentage / 100), + duration: Duration(milliseconds: 1200 + (index * 200)), + curve: Curves.easeOutCubic, + builder: (context, value, child) { + return Container( + height: 8, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(4), + color: AppColor.border.withOpacity(0.3), + ), + child: Stack( + children: [ + FractionallySizedBox( + widthFactor: value, + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + _getPaymentMethodColor(method.paymentMethodType), + _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.8), + ], + ), + borderRadius: BorderRadius.circular(4), + boxShadow: [ + BoxShadow( + color: _getPaymentMethodColor( + method.paymentMethodType, + ).withOpacity(0.3), + blurRadius: 4, + offset: const Offset(0, 1), + ), + ], + ), + ), + ), + ], + ), + ); + }, + ), + ], + ); + } + + Widget _buildEmptyState() { + return EmptyWidget( + title: 'No Payment Methods', + message: + 'Payment method data will appear here once transactions are made', + ); + } + + Color _getPaymentMethodColor(String type) { + switch (type.toLowerCase()) { + case 'cash': + return AppColor.success; + case 'card': + case 'credit_card': + case 'debit_card': + return AppColor.info; + case 'bank_transfer': + case 'transfer': + return AppColor.primary; + case 'ewallet': + case 'e_wallet': + case 'digital_wallet': + return AppColor.warning; + case 'qr_code': + case 'qris': + return const Color(0xFF9C27B0); // Purple + default: + return AppColor.textSecondary; + } + } + + IconData _getPaymentMethodIcon(String type) { + switch (type.toLowerCase()) { + case 'cash': + return Icons.payments; + case 'card': + case 'credit_card': + case 'debit_card': + return Icons.credit_card; + case 'bank_transfer': + case 'transfer': + return Icons.account_balance; + case 'ewallet': + case 'e_wallet': + case 'digital_wallet': + return Icons.account_balance_wallet; + case 'qr_code': + case 'qris': + return Icons.qr_code; + default: + return Icons.payment; + } + } +} diff --git a/lib/presentation/pages/report/widgets/quick_stats.dart b/lib/presentation/pages/report/widgets/quick_stats.dart index 9e46687..49d847c 100644 --- a/lib/presentation/pages/report/widgets/quick_stats.dart +++ b/lib/presentation/pages/report/widgets/quick_stats.dart @@ -1,53 +1,109 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; import 'stat_tile.dart'; class ReportQuickStats extends StatelessWidget { - const ReportQuickStats({super.key}); + final DashboardOverview overview; + + const ReportQuickStats({super.key, required this.overview}); @override Widget build(BuildContext context) { - return Row( + return Column( children: [ - Expanded( - child: TweenAnimationBuilder( - tween: Tween(begin: 0, end: 1), - duration: const Duration(milliseconds: 800), - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: ReportStatTile( - title: 'Total Transaksi', - value: '245', - icon: Icons.receipt_long, - color: AppColor.info, - change: '+8.2%', - animatedValue: 245 * value, - ), - ); - }, - ), + Row( + children: [ + Expanded( + child: TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: const Duration(milliseconds: 800), + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: ReportStatTile( + title: 'Total Orders', + value: overview.totalOrders.toString(), + icon: Icons.receipt_long, + color: AppColor.info, + animatedValue: overview.totalOrders * value, + ), + ); + }, + ), + ), + const SizedBox(width: 16), + Expanded( + child: TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: const Duration(milliseconds: 1000), + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: ReportStatTile( + title: 'Average Order', + value: overview.averageOrderValue + .round() + .currencyFormatRp, + icon: Icons.trending_up, + color: AppColor.warning, + animatedValue: overview.averageOrderValue * value, + ), + ); + }, + ), + ), + ], ), - const SizedBox(width: 16), - Expanded( - child: TweenAnimationBuilder( - tween: Tween(begin: 0, end: 1), - duration: const Duration(milliseconds: 1000), - builder: (context, value, child) { - return Transform.scale( - scale: value, - child: ReportStatTile( - title: 'Rata-rata', - value: 'Rp 63.061', - icon: Icons.trending_up, - color: AppColor.warning, - change: '+5.1%', - animatedValue: 63061 * value, - ), - ); - }, - ), + + const SizedBox(height: 16), + + Row( + children: [ + Expanded( + child: TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: const Duration(milliseconds: 1200), + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: ReportStatTile( + title: 'Customers', + value: overview.totalCustomers.toString(), + icon: Icons.people, + color: AppColor.success, + animatedValue: overview.totalCustomers * value, + ), + ); + }, + ), + ), + const SizedBox(width: 16), + Expanded( + child: TweenAnimationBuilder( + tween: Tween(begin: 0, end: 1), + duration: const Duration(milliseconds: 1400), + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: ReportStatTile( + title: 'Void + Refund', + value: (overview.voidedOrders + overview.refundedOrders) + .toString(), + + icon: Icons.cancel, + color: AppColor.error, + animatedValue: + (overview.voidedOrders + overview.refundedOrders) * + value, + ), + ); + }, + ), + ), + ], ), ], ); diff --git a/lib/presentation/pages/report/widgets/report_action.dart b/lib/presentation/pages/report/widgets/report_action.dart deleted file mode 100644 index 44fb29c..0000000 --- a/lib/presentation/pages/report/widgets/report_action.dart +++ /dev/null @@ -1,136 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; -import '../../../components/spacer/spacer.dart'; - -class ReportAction extends StatefulWidget { - const ReportAction({super.key}); - - @override - State createState() => _ReportActionState(); -} - -class _ReportActionState extends State { - final actions = [ - { - 'title': 'Laporan Detail Penjualan', - 'subtitle': 'Analisis mendalam transaksi harian', - 'icon': Icons.assignment, - 'color': AppColor.primary, - 'gradient': [AppColor.primary, AppColor.primaryLight], - }, - { - 'title': 'Monitor Stok Produk', - 'subtitle': 'Tracking inventory real-time', - 'icon': Icons.inventory_2, - 'color': AppColor.info, - 'gradient': [AppColor.info, const Color(0xFF64B5F6)], - }, - { - 'title': 'Analisis Keuangan', - 'subtitle': 'Profit, loss & cash flow analysis', - 'icon': Icons.account_balance_wallet, - 'color': AppColor.success, - 'gradient': [AppColor.success, AppColor.secondaryLight], - }, - ]; - - @override - Widget build(BuildContext context) { - return Column( - children: actions.map((action) { - return Container( - margin: const EdgeInsets.only(bottom: 16), - child: Material( - color: Colors.transparent, - child: InkWell( - onTap: () {}, - borderRadius: BorderRadius.circular(20), - child: Container( - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - (action['color'] as Color).withOpacity(0.1), - (action['color'] as Color).withOpacity(0.05), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(20), - border: Border.all( - color: (action['color'] as Color).withOpacity(0.3), - width: 1.5, - ), - ), - child: Row( - children: [ - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: action['gradient'] as List, - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(16), - boxShadow: [ - BoxShadow( - color: (action['color'] as Color).withOpacity(0.3), - blurRadius: 10, - offset: const Offset(0, 4), - ), - ], - ), - child: Icon( - action['icon'] as IconData, - color: AppColor.white, - size: 28, - ), - ), - const SizedBox(width: 20), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - action['title'] as String, - style: AppStyle.lg.copyWith( - color: AppColor.textPrimary, - fontSize: 16, - fontWeight: FontWeight.w600, - ), - ), - const SpaceHeight(4), - Text( - action['subtitle'] as String, - style: AppStyle.sm.copyWith( - color: AppColor.textSecondary, - fontSize: 13, - ), - ), - ], - ), - ), - Container( - padding: const EdgeInsets.all(8), - decoration: BoxDecoration( - color: (action['color'] as Color).withOpacity(0.1), - borderRadius: BorderRadius.circular(10), - ), - child: Icon( - Icons.arrow_forward_ios, - color: action['color'] as Color, - size: 16, - ), - ), - ], - ), - ), - ), - ), - ); - }).toList(), - ); - } -} diff --git a/lib/presentation/pages/report/widgets/revenue_summary.dart b/lib/presentation/pages/report/widgets/revenue_summary.dart index 86ec191..c3603d9 100644 --- a/lib/presentation/pages/report/widgets/revenue_summary.dart +++ b/lib/presentation/pages/report/widgets/revenue_summary.dart @@ -1,11 +1,18 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; class ReportRevenueSummary extends StatelessWidget { + final DashboardOverview overview; final Animation rotationAnimation; - const ReportRevenueSummary({super.key, required this.rotationAnimation}); + const ReportRevenueSummary({ + super.key, + required this.rotationAnimation, + required this.overview, + }); @override Widget build(BuildContext context) { @@ -106,51 +113,13 @@ class ReportRevenueSummary extends StatelessWidget { ), const Spacer(), Text( - 'Rp 15.450.000', + overview.totalSales.currencyFormatRp, style: AppStyle.h1.copyWith( color: AppColor.textWhite, fontWeight: FontWeight.bold, letterSpacing: -1, ), ), - const SpaceHeight(8), - Row( - children: [ - Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - color: AppColor.success.withOpacity(0.9), - borderRadius: BorderRadius.circular(20), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.trending_up, - color: AppColor.textWhite, - size: 16, - ), - SpaceWidth(4), - Text( - '+12.5%', - style: AppStyle.sm.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w700, - ), - ), - ], - ), - ), - const SpaceWidth(12), - Text( - 'dari periode sebelumnya', - style: AppStyle.sm.copyWith(color: AppColor.textWhite), - ), - ], - ), ], ), ), diff --git a/lib/presentation/pages/report/widgets/sales.dart b/lib/presentation/pages/report/widgets/sales.dart index e0b6f69..96b1d79 100644 --- a/lib/presentation/pages/report/widgets/sales.dart +++ b/lib/presentation/pages/report/widgets/sales.dart @@ -1,11 +1,15 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; - +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; +import '../../../components/widgets/empty_widget.dart'; class ReportSales extends StatelessWidget { - const ReportSales({super.key}); + final List salesData; + + const ReportSales({super.key, required this.salesData}); @override Widget build(BuildContext context) { @@ -25,6 +29,7 @@ class ReportSales extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + // Header Section Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -32,16 +37,17 @@ class ReportSales extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Grafik Penjualan', + 'Sales Chart', style: AppStyle.xxl.copyWith( color: AppColor.textPrimary, - fontWeight: FontWeight.bold, ), ), const SpaceHeight(4), Text( - '7 hari terakhir', + salesData.isEmpty + ? 'No data available' + : '${salesData.length} days overview', style: AppStyle.md.copyWith(color: AppColor.textSecondary), ), ], @@ -60,233 +66,124 @@ class ReportSales extends StatelessWidget { ), ], ), + const SpaceHeight(20), - // Chart Container - Container( - height: 280, - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.primary.withOpacity(0.05), - AppColor.backgroundLight, - ], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: AppColor.primary.withOpacity(0.1), - width: 2, - ), - ), - child: LineChart( - LineChartData( - gridData: FlGridData( - show: true, - drawHorizontalLine: true, - drawVerticalLine: false, - horizontalInterval: 500000, - getDrawingHorizontalLine: (value) { - return FlLine( - color: AppColor.border.withOpacity(0.3), - strokeWidth: 1, - dashArray: [5, 5], - ); - }, - ), - titlesData: FlTitlesData( - leftTitles: AxisTitles( - sideTitles: SideTitles( - showTitles: true, - reservedSize: 60, - getTitlesWidget: (value, meta) { - return Text( - '${(value / 1000000).toStringAsFixed(1)}M', - style: AppStyle.sm.copyWith( - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - ), - ); - }, - ), - ), - bottomTitles: AxisTitles( - sideTitles: SideTitles( - showTitles: true, - reservedSize: 32, - getTitlesWidget: (value, meta) { - const days = [ - 'Sen', - 'Sel', - 'Rab', - 'Kam', - 'Jum', - 'Sab', - 'Min', - ]; - if (value.toInt() >= 0 && value.toInt() < days.length) { - return Padding( - padding: const EdgeInsets.only(top: 8), - child: Text( - days[value.toInt()], - style: AppStyle.sm.copyWith( - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - ), - ), - ); - } - return const Text(''); - }, - ), - ), - rightTitles: AxisTitles( - sideTitles: SideTitles(showTitles: false), - ), - topTitles: AxisTitles( - sideTitles: SideTitles(showTitles: false), - ), - ), - borderData: FlBorderData(show: false), - minX: 0, - maxX: 6, - minY: 0, - maxY: 3000000, - lineBarsData: [ - // Main sales line - LineChartBarData( - spots: [ - const FlSpot(0, 1800000), // Senin - const FlSpot(1, 2200000), // Selasa - const FlSpot(2, 1900000), // Rabu - const FlSpot(3, 2600000), // Kamis - const FlSpot(4, 2300000), // Jumat - const FlSpot(5, 2800000), // Sabtu - const FlSpot(6, 2500000), // Minggu - ], - isCurved: true, - curveSmoothness: 0.35, - gradient: LinearGradient( - colors: [AppColor.primary, AppColor.primaryLight], - begin: Alignment.centerLeft, - end: Alignment.centerRight, - ), - barWidth: 4, - isStrokeCapRound: true, - belowBarData: BarAreaData( - show: true, - gradient: LinearGradient( - colors: [ - AppColor.primary.withOpacity(0.3), - AppColor.primary.withOpacity(0.1), - Colors.transparent, - ], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - dotData: FlDotData( - show: true, - getDotPainter: (spot, percent, barData, index) { - return FlDotCirclePainter( - radius: 6, - color: AppColor.surface, - strokeWidth: 3, - strokeColor: AppColor.primary, - ); - }, - ), - ), - // Secondary line for comparison - LineChartBarData( - spots: [ - const FlSpot(0, 1500000), - const FlSpot(1, 1800000), - const FlSpot(2, 1600000), - const FlSpot(3, 2100000), - const FlSpot(4, 1900000), - const FlSpot(5, 2300000), - const FlSpot(6, 2100000), - ], - isCurved: true, - curveSmoothness: 0.35, - color: AppColor.success.withOpacity(0.7), - barWidth: 3, - isStrokeCapRound: true, - dashArray: [8, 4], - belowBarData: BarAreaData(show: false), - dotData: FlDotData( - show: true, - getDotPainter: (spot, percent, barData, index) { - return FlDotCirclePainter( - radius: 4, - color: AppColor.success, - strokeWidth: 2, - strokeColor: AppColor.surface, - ); - }, - ), - ), - ], - lineTouchData: LineTouchData( - enabled: true, - touchTooltipData: LineTouchTooltipData( - tooltipPadding: const EdgeInsets.all(12), - getTooltipItems: (List touchedBarSpots) { - return touchedBarSpots.map((barSpot) { - final flSpot = barSpot; - const days = [ - 'Senin', - 'Selasa', - 'Rabu', - 'Kamis', - 'Jumat', - 'Sabtu', - 'Minggu', - ]; + // Sales Summary Cards + if (salesData.isNotEmpty) ...[ + _buildSalesSummary(), + const SpaceHeight(20), + ], - return LineTooltipItem( - '${days[flSpot.x.toInt()]}\n', - const TextStyle( - color: AppColor.textWhite, - fontWeight: FontWeight.bold, - fontSize: 14, - ), - children: [ - TextSpan( - text: - 'Rp ${(flSpot.y / 1000000).toStringAsFixed(1)}M', - style: AppStyle.sm.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w500, - ), - ), - ], - ); - }).toList(); - }, + // Chart Container + salesData.isEmpty + ? _buildEmptyChart() + : Container( + height: 300, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.05), + AppColor.backgroundLight, + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: AppColor.primary.withOpacity(0.1), + width: 2, + ), ), - touchCallback: - (FlTouchEvent event, LineTouchResponse? touchResponse) { - // Handle touch events here if needed - }, - handleBuiltInTouches: true, + child: _buildSalesChart(), ), - ), - ), - ), const SpaceHeight(16), // Legend + if (salesData.isNotEmpty) + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [_buildLegendItem('Sales Data', AppColor.primary)], + ), + ], + ), + ); + } + + Widget _buildSalesSummary() { + final totalSales = salesData.fold(0, (sum, item) => sum + item.sales); + final totalOrders = salesData.fold( + 0, + (sum, item) => sum + item.orders, + ); + final totalItems = salesData.fold(0, (sum, item) => sum + item.items); + final totalNetSales = salesData.fold( + 0, + (sum, item) => sum + item.netSales, + ); + + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.backgroundLight, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.border.withOpacity(0.3), width: 1), + ), + child: Column( + children: [ Row( - mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildLegendItem('Minggu Ini', AppColor.primary), - const SpaceWidth(24), - _buildLegendItem('Minggu Lalu', AppColor.success), + Expanded( + child: _buildSummaryItem( + 'Total Sales', + totalSales.currencyFormatRp, + Icons.attach_money, + AppColor.success, + ), + ), + Container( + width: 1, + height: 40, + color: AppColor.border.withOpacity(0.3), + margin: const EdgeInsets.symmetric(horizontal: 16), + ), + Expanded( + child: _buildSummaryItem( + 'Net Sales', + totalNetSales.currencyFormatRp, + Icons.trending_up, + AppColor.primary, + ), + ), + ], + ), + const SpaceHeight(16), + Row( + children: [ + Expanded( + child: _buildSummaryItem( + 'Total Orders', + totalOrders.toString(), + Icons.shopping_cart, + AppColor.info, + ), + ), + Container( + width: 1, + height: 40, + color: AppColor.border.withOpacity(0.3), + margin: const EdgeInsets.symmetric(horizontal: 16), + ), + Expanded( + child: _buildSummaryItem( + 'Total Items', + totalItems.toString(), + Icons.inventory, + AppColor.warning, + ), + ), ], ), ], @@ -294,6 +191,251 @@ class ReportSales extends StatelessWidget { ); } + Widget _buildSummaryItem( + String label, + String value, + IconData icon, + Color color, + ) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon(icon, size: 16, color: color), + const SpaceWidth(6), + Text( + label, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + const SpaceHeight(6), + Text( + value, + style: AppStyle.md.copyWith( + color: color, + fontWeight: FontWeight.bold, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ); + } + + Widget _buildSalesChart() { + final maxValue = _getMaxValue(); + final spots = _generateSpots(salesData); + + return LineChart( + LineChartData( + gridData: FlGridData( + show: true, + drawHorizontalLine: true, + drawVerticalLine: false, + horizontalInterval: maxValue / 5, + getDrawingHorizontalLine: (value) { + return FlLine( + color: AppColor.border.withOpacity(0.3), + strokeWidth: 1, + dashArray: [5, 5], + ); + }, + ), + titlesData: FlTitlesData( + leftTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + reservedSize: 70, + getTitlesWidget: (value, meta) { + return Text( + _formatCurrency(value), + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ); + }, + ), + ), + bottomTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: true, + reservedSize: 32, + getTitlesWidget: (value, meta) { + final index = value.toInt(); + if (index >= 0 && index < salesData.length) { + final date = DateTime.parse(salesData[index].date); + final dayName = _getDayName(date.weekday); + return Padding( + padding: const EdgeInsets.only(top: 8), + child: Text( + dayName, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ); + } + return const Text(''); + }, + ), + ), + rightTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)), + topTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)), + ), + borderData: FlBorderData(show: false), + minX: 0, + maxX: (salesData.length - 1).toDouble(), + minY: 0, + maxY: maxValue, + lineBarsData: [ + // Main sales line + LineChartBarData( + spots: spots, + isCurved: true, + curveSmoothness: 0.35, + gradient: LinearGradient( + colors: [AppColor.primary, AppColor.primaryLight], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + barWidth: 4, + isStrokeCapRound: true, + belowBarData: BarAreaData( + show: true, + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.3), + AppColor.primary.withOpacity(0.1), + Colors.transparent, + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, index) { + return FlDotCirclePainter( + radius: 6, + color: AppColor.surface, + strokeWidth: 3, + strokeColor: AppColor.primary, + ); + }, + ), + ), + ], + lineTouchData: LineTouchData( + enabled: true, + touchTooltipData: LineTouchTooltipData( + tooltipPadding: const EdgeInsets.all(12), + getTooltipItems: (List touchedBarSpots) { + return touchedBarSpots + .map((barSpot) { + final index = barSpot.x.toInt(); + + if (index >= 0 && index < salesData.length) { + final sale = salesData[index]; + final date = DateTime.parse(sale.date); + final dayName = _getDayName(date.weekday); + + return LineTooltipItem( + '$dayName\n', + const TextStyle( + color: AppColor.textWhite, + fontWeight: FontWeight.bold, + fontSize: 14, + ), + children: [ + TextSpan( + text: 'Sales: ${sale.sales.currencyFormatRp}\n', + style: AppStyle.sm.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w500, + ), + ), + TextSpan( + text: 'Orders: ${sale.orders}\n', + style: AppStyle.sm.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w400, + ), + ), + TextSpan( + text: 'Net: ${sale.netSales.currencyFormatRp}', + style: AppStyle.sm.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.w400, + ), + ), + ], + ); + } + return null; + }) + .where((item) => item != null) + .cast() + .toList(); + }, + ), + touchCallback: + (FlTouchEvent event, LineTouchResponse? touchResponse) { + // Handle touch events here if needed + }, + handleBuiltInTouches: true, + ), + ), + ); + } + + Widget _buildEmptyChart() { + return EmptyWidget( + title: 'No Sales Data', + message: 'Sales data will appear here once transactions are recorded', + emptyIcon: Icons.show_chart, + ); + } + + List _generateSpots(List data) { + return data.asMap().entries.map((entry) { + final index = entry.key; + final sale = entry.value; + return FlSpot(index.toDouble(), sale.sales.toDouble()); + }).toList(); + } + + double _getMaxValue() { + if (salesData.isEmpty) return 1000000; + + double maxValue = salesData + .map((e) => e.sales.toDouble()) + .reduce((a, b) => a > b ? a : b); + + // Add 20% padding to max value + return maxValue * 1.2; + } + + String _formatCurrency(double value) { + if (value >= 1000000) { + return '${(value / 1000000).toStringAsFixed(1)}M'; + } else if (value >= 1000) { + return '${(value / 1000).toStringAsFixed(0)}K'; + } + return value.toStringAsFixed(0); + } + + String _getDayName(int weekday) { + const days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; + return days[weekday - 1]; + } + Widget _buildLegendItem(String label, Color color) { return Row( mainAxisSize: MainAxisSize.min, @@ -311,7 +453,6 @@ class ReportSales extends StatelessWidget { label, style: AppStyle.sm.copyWith( color: AppColor.textSecondary, - fontWeight: FontWeight.w500, ), ), diff --git a/lib/presentation/pages/report/widgets/stat_tile.dart b/lib/presentation/pages/report/widgets/stat_tile.dart index 863aab5..6452eac 100644 --- a/lib/presentation/pages/report/widgets/stat_tile.dart +++ b/lib/presentation/pages/report/widgets/stat_tile.dart @@ -7,7 +7,6 @@ class ReportStatTile extends StatelessWidget { final String value; final IconData icon; final Color color; - final String change; final double animatedValue; const ReportStatTile({ super.key, @@ -15,7 +14,6 @@ class ReportStatTile extends StatelessWidget { required this.value, required this.icon, required this.color, - required this.change, required this.animatedValue, }); @@ -53,20 +51,6 @@ class ReportStatTile extends StatelessWidget { child: Icon(icon, color: color, size: 24), ), const Spacer(), - Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: AppColor.success.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - change, - style: AppStyle.sm.copyWith( - color: AppColor.success, - fontWeight: FontWeight.w700, - ), - ), - ), ], ), const SizedBox(height: 16), diff --git a/lib/presentation/pages/report/widgets/top_product.dart b/lib/presentation/pages/report/widgets/top_product.dart index 57404c3..7e914d9 100644 --- a/lib/presentation/pages/report/widgets/top_product.dart +++ b/lib/presentation/pages/report/widgets/top_product.dart @@ -1,10 +1,13 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; class ReportTopProduct extends StatelessWidget { - const ReportTopProduct({super.key}); + final List products; + const ReportTopProduct({super.key, required this.products}); @override Widget build(BuildContext context) { @@ -59,39 +62,25 @@ class ReportTopProduct extends StatelessWidget { ], ), const SpaceHeight(20), - _buildEnhancedProductItem( - 'Kopi Americano', - 'Rp 25.000', - '145 terjual', - 1, - ), - _buildEnhancedProductItem( - 'Nasi Goreng Spesial', - 'Rp 35.000', - '98 terjual', - 2, - ), - _buildEnhancedProductItem( - 'Mie Ayam Bakso', - 'Rp 28.000', - '87 terjual', - 3, + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + return _buildEnhancedProductItem(products[index], index + 1); + }, + itemCount: products.length, ), ], ), ); } - Widget _buildEnhancedProductItem( - String name, - String price, - String sold, - int rank, - ) { + Widget _buildEnhancedProductItem(DashboardTopProduct product, int rank) { final isFirst = rank == 1; + final isTopThree = rank <= 3; + return Container( margin: const EdgeInsets.only(bottom: 16), - padding: const EdgeInsets.all(16), decoration: BoxDecoration( gradient: isFirst ? LinearGradient( @@ -102,100 +91,478 @@ class ReportTopProduct extends StatelessWidget { begin: Alignment.topLeft, end: Alignment.bottomRight, ) + : isTopThree + ? LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.08), + AppColor.primary.withOpacity(0.03), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ) : null, - color: isFirst ? null : AppColor.backgroundLight, - borderRadius: BorderRadius.circular(16), + color: isTopThree ? null : AppColor.white, + borderRadius: BorderRadius.circular(20), border: Border.all( - color: isFirst ? AppColor.warning.withOpacity(0.3) : AppColor.border, + color: isFirst + ? AppColor.warning.withOpacity(0.3) + : isTopThree + ? AppColor.primary.withOpacity(0.2) + : AppColor.border.withOpacity(0.3), width: isFirst ? 2 : 1, ), - ), - child: Row( - children: [ - Container( - width: 48, - height: 48, - decoration: BoxDecoration( - gradient: isFirst - ? const LinearGradient( - colors: [AppColor.warning, Color(0xFFFFB74D)], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ) - : LinearGradient( - colors: [ - AppColor.primary.withOpacity(0.8), - AppColor.primaryLight.withOpacity(0.6), - ], - ), - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: isFirst - ? AppColor.warning.withOpacity(0.3) - : AppColor.primary.withOpacity(0.2), - blurRadius: 8, - offset: const Offset(0, 4), - ), - ], - ), - child: Center( - child: isFirst - ? const Icon( - Icons.emoji_events, - color: AppColor.white, - size: 24, - ) - : Text( - rank.toString(), - style: AppStyle.xl.copyWith( - color: AppColor.white, - fontWeight: FontWeight.bold, - ), - ), - ), + boxShadow: [ + BoxShadow( + color: isFirst + ? AppColor.warning.withOpacity(0.15) + : isTopThree + ? AppColor.primary.withOpacity(0.1) + : Colors.black.withOpacity(0.04), + blurRadius: isFirst ? 16 : 12, + offset: const Offset(0, 4), + spreadRadius: isFirst ? -2 : -3, ), - const SpaceWidth(16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - name, - style: AppStyle.lg.copyWith( - color: AppColor.textPrimary, - fontWeight: FontWeight.w600, + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(20), + child: Stack( + children: [ + // Top accent line for rank 1-3 + if (isTopThree) + Positioned( + top: 0, + left: 0, + right: 0, + child: Container( + height: 4, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: isFirst + ? [ + AppColor.warning, + AppColor.warning.withOpacity(0.7), + ] + : [ + AppColor.primary, + AppColor.primary.withOpacity(0.7), + ], + ), ), ), - const SpaceHeight(4), - Row( - children: [ - Icon( - Icons.shopping_cart, - size: 14, - color: AppColor.textSecondary, + ), + + // Main content + Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header with rank and product info + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Rank badge + Container( + width: 56, + height: 56, + decoration: BoxDecoration( + gradient: isFirst + ? const LinearGradient( + colors: [AppColor.warning, Color(0xFFFFB74D)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ) + : isTopThree + ? LinearGradient( + colors: [ + AppColor.primary, + AppColor.primary.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ) + : LinearGradient( + colors: [ + AppColor.textSecondary.withOpacity(0.8), + AppColor.textSecondary.withOpacity(0.6), + ], + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: isFirst + ? AppColor.warning.withOpacity(0.3) + : isTopThree + ? AppColor.primary.withOpacity(0.3) + : AppColor.textSecondary.withOpacity(0.2), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: Center( + child: isFirst + ? const Icon( + Icons.emoji_events, + color: AppColor.white, + size: 28, + ) + : rank == 2 + ? const Icon( + Icons.workspace_premium, + color: AppColor.white, + size: 26, + ) + : rank == 3 + ? const Icon( + Icons.military_tech, + color: AppColor.white, + size: 26, + ) + : Text( + rank.toString(), + style: AppStyle.xl.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + ), + ), + + const SpaceWidth(16), + + // Product info + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + product.productName, + style: AppStyle.lg.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SpaceHeight(6), + // Category badge + Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 4, + ), + decoration: BoxDecoration( + color: isFirst + ? AppColor.warning.withOpacity(0.1) + : AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: isFirst + ? AppColor.warning.withOpacity(0.3) + : AppColor.primary.withOpacity(0.3), + width: 1, + ), + ), + child: Text( + product.categoryName, + style: AppStyle.xs.copyWith( + color: isFirst + ? AppColor.warning + : AppColor.primary, + fontWeight: FontWeight.w600, + letterSpacing: 0.5, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + ), + ], + ), + + const SpaceHeight(16), + + // Statistics section + Container( + padding: const EdgeInsets.all(14), + decoration: BoxDecoration( + color: AppColor.background.withOpacity(0.5), + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: AppColor.border.withOpacity(0.2), + width: 1, + ), ), - const SpaceWidth(4), - Text( - sold, - style: AppStyle.sm.copyWith( - color: AppColor.textSecondary, + child: Column( + children: [ + // Revenue and Average Price + IntrinsicHeight( + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.attach_money, + size: 14, + color: AppColor.success, + ), + const SpaceWidth(3), + Flexible( + child: Text( + 'Revenue', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 11, + ), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + const SpaceHeight(4), + Text( + product.revenue.currencyFormatRp, + style: AppStyle.sm.copyWith( + color: AppColor.success, + fontWeight: FontWeight.bold, + fontSize: 13, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + + Container( + width: 1, + margin: const EdgeInsets.symmetric( + horizontal: 10, + ), + color: AppColor.border.withOpacity(0.3), + ), + + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + Flexible( + child: Text( + 'Avg. Price', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 11, + ), + overflow: TextOverflow.ellipsis, + ), + ), + const SpaceWidth(3), + Icon( + Icons.trending_up, + size: 14, + color: AppColor.primary, + ), + ], + ), + const SpaceHeight(4), + Text( + product.averagePrice + .round() + .currencyFormatRp, + style: AppStyle.sm.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.bold, + fontSize: 13, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.end, + ), + ], + ), + ), + ], + ), + ), + + const SpaceHeight(10), + + // Quantity Sold and Order Count + IntrinsicHeight( + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.inventory, + size: 14, + color: AppColor.warning, + ), + const SpaceWidth(3), + Flexible( + child: Text( + 'Sold', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 11, + ), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + const SpaceHeight(4), + Text( + '${product.quantitySold}', + style: AppStyle.sm.copyWith( + color: AppColor.warning, + fontWeight: FontWeight.bold, + fontSize: 13, + ), + ), + ], + ), + ), + + Container( + width: 1, + margin: const EdgeInsets.symmetric( + horizontal: 10, + ), + color: AppColor.border.withOpacity(0.3), + ), + + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + Flexible( + child: Text( + 'Orders', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontSize: 11, + ), + overflow: TextOverflow.ellipsis, + ), + ), + const SpaceWidth(3), + Icon( + Icons.shopping_cart, + size: 14, + color: AppColor.info, + ), + ], + ), + const SpaceHeight(4), + Text( + '${product.orderCount}', + style: AppStyle.sm.copyWith( + color: AppColor.info, + fontWeight: FontWeight.bold, + fontSize: 13, + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + + // Performance indicator for top 3 + if (isTopThree) ...[ + const SpaceHeight(10), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 6, + ), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: isFirst + ? [ + AppColor.warning.withOpacity(0.2), + AppColor.warning.withOpacity(0.1), + ] + : [ + AppColor.primary.withOpacity(0.2), + AppColor.primary.withOpacity(0.1), + ], + ), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: isFirst + ? AppColor.warning.withOpacity(0.3) + : AppColor.primary.withOpacity(0.3), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + isFirst ? Icons.star : Icons.trending_up, + size: 14, + color: isFirst + ? AppColor.warning + : AppColor.primary, + ), + const SpaceWidth(5), + Flexible( + child: Text( + isFirst ? 'Best Seller' : 'Top Performer', + style: AppStyle.xs.copyWith( + color: isFirst + ? AppColor.warning + : AppColor.primary, + fontWeight: FontWeight.bold, + fontSize: 11, + ), + overflow: TextOverflow.ellipsis, + ), + ), + ], ), ), ], - ), - ], + ], + ), ), - ), - Text( - price, - style: AppStyle.lg.copyWith( - color: isFirst ? AppColor.warning : AppColor.primary, - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - ], + ], + ), ), ); } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index b92b613..30d3060 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -57,7 +57,7 @@ class CustomerRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i1.CustomerPage(); + return _i18.WrappedRoute(child: const _i1.CustomerPage()); }, ); } From b5593d10eb494e6db5fb4d02e3cae46fafe28bec Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 01:55:15 +0700 Subject: [PATCH 060/108] feat: update header profile --- lib/presentation/pages/profile/widgets/header.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/presentation/pages/profile/widgets/header.dart b/lib/presentation/pages/profile/widgets/header.dart index d83e70b..747cdad 100644 --- a/lib/presentation/pages/profile/widgets/header.dart +++ b/lib/presentation/pages/profile/widgets/header.dart @@ -409,7 +409,7 @@ class _ProfileHeaderState extends State size: 16, color: AppColor.textWhite.withOpacity(0.9), ), - const SpaceHeight(6), + const SpaceWidth(6), Text( widget.user.role.toTitleCase, style: AppStyle.md.copyWith( From d58198e7f017a14cefcd067acebe9fc9152037f5 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 02:13:11 +0700 Subject: [PATCH 061/108] feat: product analytic repo --- .../product_analytic_loader_bloc.dart | 49 ++ .../product_analytic_loader_bloc.freezed.dart | 385 +++++++++++ .../product_analytic_loader_event.dart | 6 + .../product_analytic_loader_state.dart | 15 + lib/common/url/api_path.dart | 1 + lib/domain/analytic/analytic.dart | 1 + lib/domain/analytic/analytic.freezed.dart | 546 +++++++++++++++ .../entities/product_analytic_entity.dart | 45 ++ .../repositories/i_analytic_repository.dart | 5 + .../analytic/analytic_dtos.dart | 1 + .../analytic/analytic_dtos.freezed.dart | 627 ++++++++++++++++++ .../analytic/analytic_dtos.g.dart | 48 ++ .../datasource/remote_data_provider.dart | 28 + .../analytic/dto/product_analytic_dto.dart | 55 ++ .../repositories/analytic_repository.dart | 27 + lib/injection.config.dart | 5 + lib/presentation/router/app_router.gr.dart | 2 +- 17 files changed, 1845 insertions(+), 1 deletion(-) create mode 100644 lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart create mode 100644 lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart create mode 100644 lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart create mode 100644 lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart create mode 100644 lib/domain/analytic/entities/product_analytic_entity.dart create mode 100644 lib/infrastructure/analytic/dto/product_analytic_dto.dart diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart new file mode 100644 index 0000000..877407c --- /dev/null +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart @@ -0,0 +1,49 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'product_analytic_loader_event.dart'; +part 'product_analytic_loader_state.dart'; +part 'product_analytic_loader_bloc.freezed.dart'; + +@injectable +class ProductAnalyticLoaderBloc + extends Bloc { + final IAnalyticRepository _repository; + ProductAnalyticLoaderBloc(this._repository) + : super(ProductAnalyticLoaderState.initial()) { + on(_onProductAnalyticLoaderEvent); + } + + Future _onProductAnalyticLoaderEvent( + ProductAnalyticLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit( + state.copyWith( + isFetching: true, + failureOptionProductAnalytic: none(), + ), + ); + + final result = await _repository.getProduct( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionProductAnalytic: optionOf(f)), + (productAnalytic) => state.copyWith(productAnalytic: productAnalytic), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart new file mode 100644 index 0000000..d35c1aa --- /dev/null +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart @@ -0,0 +1,385 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'product_analytic_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$ProductAnalyticLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductAnalyticLoaderEventCopyWith<$Res> { + factory $ProductAnalyticLoaderEventCopyWith( + ProductAnalyticLoaderEvent value, + $Res Function(ProductAnalyticLoaderEvent) then, + ) = + _$ProductAnalyticLoaderEventCopyWithImpl< + $Res, + ProductAnalyticLoaderEvent + >; +} + +/// @nodoc +class _$ProductAnalyticLoaderEventCopyWithImpl< + $Res, + $Val extends ProductAnalyticLoaderEvent +> + implements $ProductAnalyticLoaderEventCopyWith<$Res> { + _$ProductAnalyticLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$ProductAnalyticLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'ProductAnalyticLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements ProductAnalyticLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$ProductAnalyticLoaderState { + ProductAnalytic get productAnalytic => throw _privateConstructorUsedError; + dynamic get failureOptionProductAnalytic => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of ProductAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductAnalyticLoaderStateCopyWith + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductAnalyticLoaderStateCopyWith<$Res> { + factory $ProductAnalyticLoaderStateCopyWith( + ProductAnalyticLoaderState value, + $Res Function(ProductAnalyticLoaderState) then, + ) = + _$ProductAnalyticLoaderStateCopyWithImpl< + $Res, + ProductAnalyticLoaderState + >; + @useResult + $Res call({ + ProductAnalytic productAnalytic, + dynamic failureOptionProductAnalytic, + bool isFetching, + }); +} + +/// @nodoc +class _$ProductAnalyticLoaderStateCopyWithImpl< + $Res, + $Val extends ProductAnalyticLoaderState +> + implements $ProductAnalyticLoaderStateCopyWith<$Res> { + _$ProductAnalyticLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productAnalytic = freezed, + Object? failureOptionProductAnalytic = freezed, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + productAnalytic: freezed == productAnalytic + ? _value.productAnalytic + : productAnalytic // ignore: cast_nullable_to_non_nullable + as ProductAnalytic, + failureOptionProductAnalytic: + freezed == failureOptionProductAnalytic + ? _value.failureOptionProductAnalytic + : failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable + as dynamic, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductAnalyticLoaderStateImplCopyWith<$Res> + implements $ProductAnalyticLoaderStateCopyWith<$Res> { + factory _$$ProductAnalyticLoaderStateImplCopyWith( + _$ProductAnalyticLoaderStateImpl value, + $Res Function(_$ProductAnalyticLoaderStateImpl) then, + ) = __$$ProductAnalyticLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + ProductAnalytic productAnalytic, + dynamic failureOptionProductAnalytic, + bool isFetching, + }); +} + +/// @nodoc +class __$$ProductAnalyticLoaderStateImplCopyWithImpl<$Res> + extends + _$ProductAnalyticLoaderStateCopyWithImpl< + $Res, + _$ProductAnalyticLoaderStateImpl + > + implements _$$ProductAnalyticLoaderStateImplCopyWith<$Res> { + __$$ProductAnalyticLoaderStateImplCopyWithImpl( + _$ProductAnalyticLoaderStateImpl _value, + $Res Function(_$ProductAnalyticLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productAnalytic = freezed, + Object? failureOptionProductAnalytic = freezed, + Object? isFetching = null, + }) { + return _then( + _$ProductAnalyticLoaderStateImpl( + productAnalytic: freezed == productAnalytic + ? _value.productAnalytic + : productAnalytic // ignore: cast_nullable_to_non_nullable + as ProductAnalytic, + failureOptionProductAnalytic: freezed == failureOptionProductAnalytic + ? _value.failureOptionProductAnalytic! + : failureOptionProductAnalytic, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { + const _$ProductAnalyticLoaderStateImpl({ + required this.productAnalytic, + required this.failureOptionProductAnalytic, + this.isFetching = false, + }); + + @override + final ProductAnalytic productAnalytic; + @override + final dynamic failureOptionProductAnalytic; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'ProductAnalyticLoaderState(productAnalytic: $productAnalytic, failureOptionProductAnalytic: $failureOptionProductAnalytic, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductAnalyticLoaderStateImpl && + const DeepCollectionEquality().equals( + other.productAnalytic, + productAnalytic, + ) && + const DeepCollectionEquality().equals( + other.failureOptionProductAnalytic, + failureOptionProductAnalytic, + ) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(productAnalytic), + const DeepCollectionEquality().hash(failureOptionProductAnalytic), + isFetching, + ); + + /// Create a copy of ProductAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductAnalyticLoaderStateImplCopyWith<_$ProductAnalyticLoaderStateImpl> + get copyWith => + __$$ProductAnalyticLoaderStateImplCopyWithImpl< + _$ProductAnalyticLoaderStateImpl + >(this, _$identity); +} + +abstract class _ProductAnalyticLoaderState + implements ProductAnalyticLoaderState { + const factory _ProductAnalyticLoaderState({ + required final ProductAnalytic productAnalytic, + required final dynamic failureOptionProductAnalytic, + final bool isFetching, + }) = _$ProductAnalyticLoaderStateImpl; + + @override + ProductAnalytic get productAnalytic; + @override + dynamic get failureOptionProductAnalytic; + @override + bool get isFetching; + + /// Create a copy of ProductAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductAnalyticLoaderStateImplCopyWith<_$ProductAnalyticLoaderStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart new file mode 100644 index 0000000..58e9c7f --- /dev/null +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart @@ -0,0 +1,6 @@ +part of 'product_analytic_loader_bloc.dart'; + +@freezed +class ProductAnalyticLoaderEvent with _$ProductAnalyticLoaderEvent { + const factory ProductAnalyticLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart new file mode 100644 index 0000000..23dfa16 --- /dev/null +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart @@ -0,0 +1,15 @@ +part of 'product_analytic_loader_bloc.dart'; + +@freezed +class ProductAnalyticLoaderState with _$ProductAnalyticLoaderState { + const factory ProductAnalyticLoaderState({ + required ProductAnalytic productAnalytic, + required Option failureOptionProductAnalytic, + @Default(false) bool isFetching, + }) = _ProductAnalyticLoaderState; + + factory ProductAnalyticLoaderState.initial() => ProductAnalyticLoaderState( + productAnalytic: ProductAnalytic.empty(), + failureOptionProductAnalytic: none(), + ); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 9a84378..4f8bee7 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -8,6 +8,7 @@ class ApiPath { static const String profitLossAnalytic = '/api/v1/analytics/profit-loss'; static const String categoryAnalytic = '/api/v1/analytics/categories'; static const String dashboardAnalytic = '/api/v1/analytics/dashboard'; + static const String productAnalytic = '/api/v1/analytics/products'; // Inventory static const String inventoryReportDetail = diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart index 7759997..99ab431 100644 --- a/lib/domain/analytic/analytic.dart +++ b/lib/domain/analytic/analytic.dart @@ -9,4 +9,5 @@ part 'entities/profit_loss_analytic_entity.dart'; part 'entities/category_analytic_entity.dart'; part 'entities/inventory_analytic_entity.dart'; part 'entities/dashboard_analytic_entity.dart'; +part 'entities/product_analytic_entity.dart'; part 'failures/analytic_failure.dart'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index 52f35a3..879b068 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -5723,6 +5723,552 @@ abstract class _DashboardRecentSale implements DashboardRecentSale { throw _privateConstructorUsedError; } +/// @nodoc +mixin _$ProductAnalytic { + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get dateFrom => throw _privateConstructorUsedError; + String get dateTo => throw _privateConstructorUsedError; + List get data => throw _privateConstructorUsedError; + + /// Create a copy of ProductAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductAnalyticCopyWith<$Res> { + factory $ProductAnalyticCopyWith( + ProductAnalytic value, + $Res Function(ProductAnalytic) then, + ) = _$ProductAnalyticCopyWithImpl<$Res, ProductAnalytic>; + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + List data, + }); +} + +/// @nodoc +class _$ProductAnalyticCopyWithImpl<$Res, $Val extends ProductAnalytic> + implements $ProductAnalyticCopyWith<$Res> { + _$ProductAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? data = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + data: null == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductAnalyticImplCopyWith<$Res> + implements $ProductAnalyticCopyWith<$Res> { + factory _$$ProductAnalyticImplCopyWith( + _$ProductAnalyticImpl value, + $Res Function(_$ProductAnalyticImpl) then, + ) = __$$ProductAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + List data, + }); +} + +/// @nodoc +class __$$ProductAnalyticImplCopyWithImpl<$Res> + extends _$ProductAnalyticCopyWithImpl<$Res, _$ProductAnalyticImpl> + implements _$$ProductAnalyticImplCopyWith<$Res> { + __$$ProductAnalyticImplCopyWithImpl( + _$ProductAnalyticImpl _value, + $Res Function(_$ProductAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? data = null, + }) { + return _then( + _$ProductAnalyticImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + data: null == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$ProductAnalyticImpl implements _ProductAnalytic { + const _$ProductAnalyticImpl({ + required this.organizationId, + required this.outletId, + required this.dateFrom, + required this.dateTo, + required final List data, + }) : _data = data; + + @override + final String organizationId; + @override + final String outletId; + @override + final String dateFrom; + @override + final String dateTo; + final List _data; + @override + List get data { + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_data); + } + + @override + String toString() { + return 'ProductAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductAnalyticImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of ProductAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductAnalyticImplCopyWith<_$ProductAnalyticImpl> get copyWith => + __$$ProductAnalyticImplCopyWithImpl<_$ProductAnalyticImpl>( + this, + _$identity, + ); +} + +abstract class _ProductAnalytic implements ProductAnalytic { + const factory _ProductAnalytic({ + required final String organizationId, + required final String outletId, + required final String dateFrom, + required final String dateTo, + required final List data, + }) = _$ProductAnalyticImpl; + + @override + String get organizationId; + @override + String get outletId; + @override + String get dateFrom; + @override + String get dateTo; + @override + List get data; + + /// Create a copy of ProductAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductAnalyticImplCopyWith<_$ProductAnalyticImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$ProductAnalyticData { + String get productId => throw _privateConstructorUsedError; + String get productName => throw _privateConstructorUsedError; + String get categoryId => throw _privateConstructorUsedError; + String get categoryName => throw _privateConstructorUsedError; + int get quantitySold => throw _privateConstructorUsedError; + double get revenue => throw _privateConstructorUsedError; + double get averagePrice => throw _privateConstructorUsedError; + int get orderCount => throw _privateConstructorUsedError; + + /// Create a copy of ProductAnalyticData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductAnalyticDataCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductAnalyticDataCopyWith<$Res> { + factory $ProductAnalyticDataCopyWith( + ProductAnalyticData value, + $Res Function(ProductAnalyticData) then, + ) = _$ProductAnalyticDataCopyWithImpl<$Res, ProductAnalyticData>; + @useResult + $Res call({ + String productId, + String productName, + String categoryId, + String categoryName, + int quantitySold, + double revenue, + double averagePrice, + int orderCount, + }); +} + +/// @nodoc +class _$ProductAnalyticDataCopyWithImpl<$Res, $Val extends ProductAnalyticData> + implements $ProductAnalyticDataCopyWith<$Res> { + _$ProductAnalyticDataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductAnalyticData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? averagePrice = null, + Object? orderCount = null, + }) { + return _then( + _value.copyWith( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as double, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductAnalyticDataImplCopyWith<$Res> + implements $ProductAnalyticDataCopyWith<$Res> { + factory _$$ProductAnalyticDataImplCopyWith( + _$ProductAnalyticDataImpl value, + $Res Function(_$ProductAnalyticDataImpl) then, + ) = __$$ProductAnalyticDataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String productId, + String productName, + String categoryId, + String categoryName, + int quantitySold, + double revenue, + double averagePrice, + int orderCount, + }); +} + +/// @nodoc +class __$$ProductAnalyticDataImplCopyWithImpl<$Res> + extends _$ProductAnalyticDataCopyWithImpl<$Res, _$ProductAnalyticDataImpl> + implements _$$ProductAnalyticDataImplCopyWith<$Res> { + __$$ProductAnalyticDataImplCopyWithImpl( + _$ProductAnalyticDataImpl _value, + $Res Function(_$ProductAnalyticDataImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductAnalyticData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? averagePrice = null, + Object? orderCount = null, + }) { + return _then( + _$ProductAnalyticDataImpl( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as double, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$ProductAnalyticDataImpl implements _ProductAnalyticData { + const _$ProductAnalyticDataImpl({ + required this.productId, + required this.productName, + required this.categoryId, + required this.categoryName, + required this.quantitySold, + required this.revenue, + required this.averagePrice, + required this.orderCount, + }); + + @override + final String productId; + @override + final String productName; + @override + final String categoryId; + @override + final String categoryName; + @override + final int quantitySold; + @override + final double revenue; + @override + final double averagePrice; + @override + final int orderCount; + + @override + String toString() { + return 'ProductAnalyticData(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, averagePrice: $averagePrice, orderCount: $orderCount)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductAnalyticDataImpl && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantitySold, quantitySold) || + other.quantitySold == quantitySold) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.averagePrice, averagePrice) || + other.averagePrice == averagePrice) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + productId, + productName, + categoryId, + categoryName, + quantitySold, + revenue, + averagePrice, + orderCount, + ); + + /// Create a copy of ProductAnalyticData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductAnalyticDataImplCopyWith<_$ProductAnalyticDataImpl> get copyWith => + __$$ProductAnalyticDataImplCopyWithImpl<_$ProductAnalyticDataImpl>( + this, + _$identity, + ); +} + +abstract class _ProductAnalyticData implements ProductAnalyticData { + const factory _ProductAnalyticData({ + required final String productId, + required final String productName, + required final String categoryId, + required final String categoryName, + required final int quantitySold, + required final double revenue, + required final double averagePrice, + required final int orderCount, + }) = _$ProductAnalyticDataImpl; + + @override + String get productId; + @override + String get productName; + @override + String get categoryId; + @override + String get categoryName; + @override + int get quantitySold; + @override + double get revenue; + @override + double get averagePrice; + @override + int get orderCount; + + /// Create a copy of ProductAnalyticData + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductAnalyticDataImplCopyWith<_$ProductAnalyticDataImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc mixin _$AnalyticFailure { @optionalTypeArgs diff --git a/lib/domain/analytic/entities/product_analytic_entity.dart b/lib/domain/analytic/entities/product_analytic_entity.dart new file mode 100644 index 0000000..1b57062 --- /dev/null +++ b/lib/domain/analytic/entities/product_analytic_entity.dart @@ -0,0 +1,45 @@ +part of '../analytic.dart'; + +@freezed +class ProductAnalytic with _$ProductAnalytic { + const factory ProductAnalytic({ + required String organizationId, + required String outletId, + required String dateFrom, + required String dateTo, + required List data, + }) = _ProductAnalytic; + + factory ProductAnalytic.empty() => const ProductAnalytic( + organizationId: '', + outletId: '', + dateFrom: '', + dateTo: '', + data: [], + ); +} + +@freezed +class ProductAnalyticData with _$ProductAnalyticData { + const factory ProductAnalyticData({ + required String productId, + required String productName, + required String categoryId, + required String categoryName, + required int quantitySold, + required double revenue, + required double averagePrice, + required int orderCount, + }) = _ProductAnalyticData; + + factory ProductAnalyticData.empty() => const ProductAnalyticData( + productId: '', + productName: '', + categoryId: '', + categoryName: '', + quantitySold: 0, + revenue: 0.0, + averagePrice: 0.0, + orderCount: 0, + ); +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index 50a1a90..a2a0c99 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -27,4 +27,9 @@ abstract class IAnalyticRepository { required DateTime dateFrom, required DateTime dateTo, }); + + Future> getProduct({ + required DateTime dateFrom, + required DateTime dateTo, + }); } diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart index a604c55..f5ae672 100644 --- a/lib/infrastructure/analytic/analytic_dtos.dart +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -10,3 +10,4 @@ part 'dto/profit_loss_analytic_dto.dart'; part 'dto/category_analytic_dto.dart'; part 'dto/inventory_analytic_dto.dart'; part 'dto/dashboard_analytic_dto.dart'; +part 'dto/product_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index 2f5bbd5..3385538 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -6653,3 +6653,630 @@ abstract class _DashboardRecentSaleDto extends DashboardRecentSaleDto { _$$DashboardRecentSaleDtoImplCopyWith<_$DashboardRecentSaleDtoImpl> get copyWith => throw _privateConstructorUsedError; } + +ProductAnalyticDto _$ProductAnalyticDtoFromJson(Map json) { + return _ProductAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$ProductAnalyticDto { + @JsonKey(name: 'organization_id') + String get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'date_from') + String get dateFrom => throw _privateConstructorUsedError; + @JsonKey(name: 'date_to') + String get dateTo => throw _privateConstructorUsedError; + List get data => throw _privateConstructorUsedError; + + /// Serializes this ProductAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProductAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductAnalyticDtoCopyWith<$Res> { + factory $ProductAnalyticDtoCopyWith( + ProductAnalyticDto value, + $Res Function(ProductAnalyticDto) then, + ) = _$ProductAnalyticDtoCopyWithImpl<$Res, ProductAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String organizationId, + @JsonKey(name: 'outlet_id') String outletId, + @JsonKey(name: 'date_from') String dateFrom, + @JsonKey(name: 'date_to') String dateTo, + List data, + }); +} + +/// @nodoc +class _$ProductAnalyticDtoCopyWithImpl<$Res, $Val extends ProductAnalyticDto> + implements $ProductAnalyticDtoCopyWith<$Res> { + _$ProductAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? data = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + data: null == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductAnalyticDtoImplCopyWith<$Res> + implements $ProductAnalyticDtoCopyWith<$Res> { + factory _$$ProductAnalyticDtoImplCopyWith( + _$ProductAnalyticDtoImpl value, + $Res Function(_$ProductAnalyticDtoImpl) then, + ) = __$$ProductAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String organizationId, + @JsonKey(name: 'outlet_id') String outletId, + @JsonKey(name: 'date_from') String dateFrom, + @JsonKey(name: 'date_to') String dateTo, + List data, + }); +} + +/// @nodoc +class __$$ProductAnalyticDtoImplCopyWithImpl<$Res> + extends _$ProductAnalyticDtoCopyWithImpl<$Res, _$ProductAnalyticDtoImpl> + implements _$$ProductAnalyticDtoImplCopyWith<$Res> { + __$$ProductAnalyticDtoImplCopyWithImpl( + _$ProductAnalyticDtoImpl _value, + $Res Function(_$ProductAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? data = null, + }) { + return _then( + _$ProductAnalyticDtoImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + data: null == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProductAnalyticDtoImpl extends _ProductAnalyticDto { + const _$ProductAnalyticDtoImpl({ + @JsonKey(name: 'organization_id') required this.organizationId, + @JsonKey(name: 'outlet_id') required this.outletId, + @JsonKey(name: 'date_from') required this.dateFrom, + @JsonKey(name: 'date_to') required this.dateTo, + required final List data, + }) : _data = data, + super._(); + + factory _$ProductAnalyticDtoImpl.fromJson(Map json) => + _$$ProductAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: 'organization_id') + final String organizationId; + @override + @JsonKey(name: 'outlet_id') + final String outletId; + @override + @JsonKey(name: 'date_from') + final String dateFrom; + @override + @JsonKey(name: 'date_to') + final String dateTo; + final List _data; + @override + List get data { + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_data); + } + + @override + String toString() { + return 'ProductAnalyticDto(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductAnalyticDtoImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of ProductAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductAnalyticDtoImplCopyWith<_$ProductAnalyticDtoImpl> get copyWith => + __$$ProductAnalyticDtoImplCopyWithImpl<_$ProductAnalyticDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$ProductAnalyticDtoImplToJson(this); + } +} + +abstract class _ProductAnalyticDto extends ProductAnalyticDto { + const factory _ProductAnalyticDto({ + @JsonKey(name: 'organization_id') required final String organizationId, + @JsonKey(name: 'outlet_id') required final String outletId, + @JsonKey(name: 'date_from') required final String dateFrom, + @JsonKey(name: 'date_to') required final String dateTo, + required final List data, + }) = _$ProductAnalyticDtoImpl; + const _ProductAnalyticDto._() : super._(); + + factory _ProductAnalyticDto.fromJson(Map json) = + _$ProductAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: 'organization_id') + String get organizationId; + @override + @JsonKey(name: 'outlet_id') + String get outletId; + @override + @JsonKey(name: 'date_from') + String get dateFrom; + @override + @JsonKey(name: 'date_to') + String get dateTo; + @override + List get data; + + /// Create a copy of ProductAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductAnalyticDtoImplCopyWith<_$ProductAnalyticDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +ProductAnalyticDataDto _$ProductAnalyticDataDtoFromJson( + Map json, +) { + return _ProductAnalyticDataDto.fromJson(json); +} + +/// @nodoc +mixin _$ProductAnalyticDataDto { + @JsonKey(name: 'product_id') + String get productId => throw _privateConstructorUsedError; + @JsonKey(name: 'product_name') + String get productName => throw _privateConstructorUsedError; + @JsonKey(name: 'category_id') + String get categoryId => throw _privateConstructorUsedError; + @JsonKey(name: 'category_name') + String get categoryName => throw _privateConstructorUsedError; + @JsonKey(name: 'quantity_sold') + int get quantitySold => throw _privateConstructorUsedError; + double get revenue => throw _privateConstructorUsedError; + @JsonKey(name: 'average_price') + double get averagePrice => throw _privateConstructorUsedError; + @JsonKey(name: 'order_count') + int get orderCount => throw _privateConstructorUsedError; + + /// Serializes this ProductAnalyticDataDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ProductAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProductAnalyticDataDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProductAnalyticDataDtoCopyWith<$Res> { + factory $ProductAnalyticDataDtoCopyWith( + ProductAnalyticDataDto value, + $Res Function(ProductAnalyticDataDto) then, + ) = _$ProductAnalyticDataDtoCopyWithImpl<$Res, ProductAnalyticDataDto>; + @useResult + $Res call({ + @JsonKey(name: 'product_id') String productId, + @JsonKey(name: 'product_name') String productName, + @JsonKey(name: 'category_id') String categoryId, + @JsonKey(name: 'category_name') String categoryName, + @JsonKey(name: 'quantity_sold') int quantitySold, + double revenue, + @JsonKey(name: 'average_price') double averagePrice, + @JsonKey(name: 'order_count') int orderCount, + }); +} + +/// @nodoc +class _$ProductAnalyticDataDtoCopyWithImpl< + $Res, + $Val extends ProductAnalyticDataDto +> + implements $ProductAnalyticDataDtoCopyWith<$Res> { + _$ProductAnalyticDataDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ProductAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? averagePrice = null, + Object? orderCount = null, + }) { + return _then( + _value.copyWith( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as double, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ProductAnalyticDataDtoImplCopyWith<$Res> + implements $ProductAnalyticDataDtoCopyWith<$Res> { + factory _$$ProductAnalyticDataDtoImplCopyWith( + _$ProductAnalyticDataDtoImpl value, + $Res Function(_$ProductAnalyticDataDtoImpl) then, + ) = __$$ProductAnalyticDataDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'product_id') String productId, + @JsonKey(name: 'product_name') String productName, + @JsonKey(name: 'category_id') String categoryId, + @JsonKey(name: 'category_name') String categoryName, + @JsonKey(name: 'quantity_sold') int quantitySold, + double revenue, + @JsonKey(name: 'average_price') double averagePrice, + @JsonKey(name: 'order_count') int orderCount, + }); +} + +/// @nodoc +class __$$ProductAnalyticDataDtoImplCopyWithImpl<$Res> + extends + _$ProductAnalyticDataDtoCopyWithImpl<$Res, _$ProductAnalyticDataDtoImpl> + implements _$$ProductAnalyticDataDtoImplCopyWith<$Res> { + __$$ProductAnalyticDataDtoImplCopyWithImpl( + _$ProductAnalyticDataDtoImpl _value, + $Res Function(_$ProductAnalyticDataDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? productId = null, + Object? productName = null, + Object? categoryId = null, + Object? categoryName = null, + Object? quantitySold = null, + Object? revenue = null, + Object? averagePrice = null, + Object? orderCount = null, + }) { + return _then( + _$ProductAnalyticDataDtoImpl( + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + categoryId: null == categoryId + ? _value.categoryId + : categoryId // ignore: cast_nullable_to_non_nullable + as String, + categoryName: null == categoryName + ? _value.categoryName + : categoryName // ignore: cast_nullable_to_non_nullable + as String, + quantitySold: null == quantitySold + ? _value.quantitySold + : quantitySold // ignore: cast_nullable_to_non_nullable + as int, + revenue: null == revenue + ? _value.revenue + : revenue // ignore: cast_nullable_to_non_nullable + as double, + averagePrice: null == averagePrice + ? _value.averagePrice + : averagePrice // ignore: cast_nullable_to_non_nullable + as double, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProductAnalyticDataDtoImpl extends _ProductAnalyticDataDto { + const _$ProductAnalyticDataDtoImpl({ + @JsonKey(name: 'product_id') required this.productId, + @JsonKey(name: 'product_name') required this.productName, + @JsonKey(name: 'category_id') required this.categoryId, + @JsonKey(name: 'category_name') required this.categoryName, + @JsonKey(name: 'quantity_sold') required this.quantitySold, + required this.revenue, + @JsonKey(name: 'average_price') required this.averagePrice, + @JsonKey(name: 'order_count') required this.orderCount, + }) : super._(); + + factory _$ProductAnalyticDataDtoImpl.fromJson(Map json) => + _$$ProductAnalyticDataDtoImplFromJson(json); + + @override + @JsonKey(name: 'product_id') + final String productId; + @override + @JsonKey(name: 'product_name') + final String productName; + @override + @JsonKey(name: 'category_id') + final String categoryId; + @override + @JsonKey(name: 'category_name') + final String categoryName; + @override + @JsonKey(name: 'quantity_sold') + final int quantitySold; + @override + final double revenue; + @override + @JsonKey(name: 'average_price') + final double averagePrice; + @override + @JsonKey(name: 'order_count') + final int orderCount; + + @override + String toString() { + return 'ProductAnalyticDataDto(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, averagePrice: $averagePrice, orderCount: $orderCount)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProductAnalyticDataDtoImpl && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.categoryId, categoryId) || + other.categoryId == categoryId) && + (identical(other.categoryName, categoryName) || + other.categoryName == categoryName) && + (identical(other.quantitySold, quantitySold) || + other.quantitySold == quantitySold) && + (identical(other.revenue, revenue) || other.revenue == revenue) && + (identical(other.averagePrice, averagePrice) || + other.averagePrice == averagePrice) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + productId, + productName, + categoryId, + categoryName, + quantitySold, + revenue, + averagePrice, + orderCount, + ); + + /// Create a copy of ProductAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProductAnalyticDataDtoImplCopyWith<_$ProductAnalyticDataDtoImpl> + get copyWith => + __$$ProductAnalyticDataDtoImplCopyWithImpl<_$ProductAnalyticDataDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$ProductAnalyticDataDtoImplToJson(this); + } +} + +abstract class _ProductAnalyticDataDto extends ProductAnalyticDataDto { + const factory _ProductAnalyticDataDto({ + @JsonKey(name: 'product_id') required final String productId, + @JsonKey(name: 'product_name') required final String productName, + @JsonKey(name: 'category_id') required final String categoryId, + @JsonKey(name: 'category_name') required final String categoryName, + @JsonKey(name: 'quantity_sold') required final int quantitySold, + required final double revenue, + @JsonKey(name: 'average_price') required final double averagePrice, + @JsonKey(name: 'order_count') required final int orderCount, + }) = _$ProductAnalyticDataDtoImpl; + const _ProductAnalyticDataDto._() : super._(); + + factory _ProductAnalyticDataDto.fromJson(Map json) = + _$ProductAnalyticDataDtoImpl.fromJson; + + @override + @JsonKey(name: 'product_id') + String get productId; + @override + @JsonKey(name: 'product_name') + String get productName; + @override + @JsonKey(name: 'category_id') + String get categoryId; + @override + @JsonKey(name: 'category_name') + String get categoryName; + @override + @JsonKey(name: 'quantity_sold') + int get quantitySold; + @override + double get revenue; + @override + @JsonKey(name: 'average_price') + double get averagePrice; + @override + @JsonKey(name: 'order_count') + int get orderCount; + + /// Create a copy of ProductAnalyticDataDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProductAnalyticDataDtoImplCopyWith<_$ProductAnalyticDataDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index 9d3dbdd..6a760d7 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -517,3 +517,51 @@ Map _$$DashboardRecentSaleDtoImplToJson( 'discount': instance.discount, 'net_sales': instance.netSales, }; + +_$ProductAnalyticDtoImpl _$$ProductAnalyticDtoImplFromJson( + Map json, +) => _$ProductAnalyticDtoImpl( + organizationId: json['organization_id'] as String, + outletId: json['outlet_id'] as String, + dateFrom: json['date_from'] as String, + dateTo: json['date_to'] as String, + data: (json['data'] as List) + .map((e) => ProductAnalyticDataDto.fromJson(e as Map)) + .toList(), +); + +Map _$$ProductAnalyticDtoImplToJson( + _$ProductAnalyticDtoImpl instance, +) => { + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'date_from': instance.dateFrom, + 'date_to': instance.dateTo, + 'data': instance.data, +}; + +_$ProductAnalyticDataDtoImpl _$$ProductAnalyticDataDtoImplFromJson( + Map json, +) => _$ProductAnalyticDataDtoImpl( + productId: json['product_id'] as String, + productName: json['product_name'] as String, + categoryId: json['category_id'] as String, + categoryName: json['category_name'] as String, + quantitySold: (json['quantity_sold'] as num).toInt(), + revenue: (json['revenue'] as num).toDouble(), + averagePrice: (json['average_price'] as num).toDouble(), + orderCount: (json['order_count'] as num).toInt(), +); + +Map _$$ProductAnalyticDataDtoImplToJson( + _$ProductAnalyticDataDtoImpl instance, +) => { + 'product_id': instance.productId, + 'product_name': instance.productName, + 'category_id': instance.categoryId, + 'category_name': instance.categoryName, + 'quantity_sold': instance.quantitySold, + 'revenue': instance.revenue, + 'average_price': instance.averagePrice, + 'order_count': instance.orderCount, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index e8e7c7d..f6283dc 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -154,4 +154,32 @@ class AnalyticRemoteDataProvider { return DC.error(AnalyticFailure.serverError(e)); } } + + Future> fetchProduct({ + required String outletId, + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + ApiPath.productAnalytic, + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = ProductAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchProductError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/analytic/dto/product_analytic_dto.dart b/lib/infrastructure/analytic/dto/product_analytic_dto.dart new file mode 100644 index 0000000..68eb722 --- /dev/null +++ b/lib/infrastructure/analytic/dto/product_analytic_dto.dart @@ -0,0 +1,55 @@ +part of '../analytic_dtos.dart'; + +@freezed +class ProductAnalyticDto with _$ProductAnalyticDto { + const ProductAnalyticDto._(); + + const factory ProductAnalyticDto({ + @JsonKey(name: 'organization_id') required String organizationId, + @JsonKey(name: 'outlet_id') required String outletId, + @JsonKey(name: 'date_from') required String dateFrom, + @JsonKey(name: 'date_to') required String dateTo, + required List data, + }) = _ProductAnalyticDto; + + factory ProductAnalyticDto.fromJson(Map json) => + _$ProductAnalyticDtoFromJson(json); + + ProductAnalytic toDomain() => ProductAnalytic( + organizationId: organizationId, + outletId: outletId, + dateFrom: dateFrom, + dateTo: dateTo, + data: data.map((e) => e.toDomain()).toList(), + ); +} + +@freezed +class ProductAnalyticDataDto with _$ProductAnalyticDataDto { + const ProductAnalyticDataDto._(); + + const factory ProductAnalyticDataDto({ + @JsonKey(name: 'product_id') required String productId, + @JsonKey(name: 'product_name') required String productName, + @JsonKey(name: 'category_id') required String categoryId, + @JsonKey(name: 'category_name') required String categoryName, + @JsonKey(name: 'quantity_sold') required int quantitySold, + required double revenue, + @JsonKey(name: 'average_price') required double averagePrice, + @JsonKey(name: 'order_count') required int orderCount, + }) = _ProductAnalyticDataDto; + + factory ProductAnalyticDataDto.fromJson(Map json) => + _$ProductAnalyticDataDtoFromJson(json); + + ProductAnalyticData toDomain() => ProductAnalyticData( + productId: productId, + productName: productName, + categoryId: categoryId, + categoryName: categoryName, + quantitySold: quantitySold, + revenue: revenue, + averagePrice: averagePrice, + orderCount: orderCount, + ); +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 011f2bc..67b7c9a 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -142,4 +142,31 @@ class AnalyticRepository implements IAnalyticRepository { return left(const AnalyticFailure.unexpectedError()); } } + + @override + Future> getProduct({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + User currentUser = await _authLocalDataProvider.currentUser(); + + final result = await _dataProvider.fetchProduct( + outletId: currentUser.outletId, + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getProductError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index a63e8a5..e6b0cdf 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -15,6 +15,8 @@ import 'package:apskel_owner_flutter/application/analytic/dashboard_analytic_loa as _i516; import 'package:apskel_owner_flutter/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart' as _i785; +import 'package:apskel_owner_flutter/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart' + as _i221; import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' as _i11; import 'package:apskel_owner_flutter/application/analytic/sales_loader/sales_loader_bloc.dart' @@ -179,6 +181,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i516.DashboardAnalyticLoaderBloc>( () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i221.ProductAnalyticLoaderBloc>( + () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 30d3060..6854f53 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -311,7 +311,7 @@ class ReportRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i13.ReportPage(); + return _i18.WrappedRoute(child: const _i13.ReportPage()); }, ); } From bc95336a193c1c06719bbcbeb893f6a8f71b2a63 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 02:23:25 +0700 Subject: [PATCH 062/108] feat: payment method analytic repo --- .../inventory_analytic_loader_state.dart | 2 +- .../payment_method_analytic_loader_bloc.dart | 55 + ...t_method_analytic_loader_bloc.freezed.dart | 410 ++++++++ .../payment_method_analytic_loader_event.dart | 6 + .../payment_method_analytic_loader_state.dart | 16 + .../product_analytic_loader_bloc.freezed.dart | 71 +- lib/common/url/api_path.dart | 2 + lib/domain/analytic/analytic.dart | 1 + lib/domain/analytic/analytic.freezed.dart | 808 +++++++++++++++ .../payment_method_analytic_entity.dart | 64 ++ .../repositories/i_analytic_repository.dart | 5 + .../analytic/analytic_dtos.dart | 1 + .../analytic/analytic_dtos.freezed.dart | 942 ++++++++++++++++++ .../analytic/analytic_dtos.g.dart | 72 ++ .../datasource/remote_data_provider.dart | 28 + .../dto/payment_method_analytic_dto.dart | 85 ++ .../repositories/analytic_repository.dart | 27 + lib/injection.config.dart | 7 + 18 files changed, 2573 insertions(+), 29 deletions(-) create mode 100644 lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart create mode 100644 lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.freezed.dart create mode 100644 lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_event.dart create mode 100644 lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_state.dart create mode 100644 lib/domain/analytic/entities/payment_method_analytic_entity.dart create mode 100644 lib/infrastructure/analytic/dto/payment_method_analytic_dto.dart diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart index 2cdd303..a4f7fb3 100644 --- a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart @@ -11,6 +11,6 @@ class InventoryAnalyticLoaderState with _$InventoryAnalyticLoaderState { factory InventoryAnalyticLoaderState.initial() => InventoryAnalyticLoaderState( inventoryAnalytic: InventoryAnalytic.empty(), - failureOptionInventoryAnalytic: None(), + failureOptionInventoryAnalytic: none(), ); } diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart new file mode 100644 index 0000000..ff03c25 --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart @@ -0,0 +1,55 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'payment_method_analytic_loader_event.dart'; +part 'payment_method_analytic_loader_state.dart'; +part 'payment_method_analytic_loader_bloc.freezed.dart'; + +@injectable +class PaymentMethodAnalyticLoaderBloc + extends + Bloc< + PaymentMethodAnalyticLoaderEvent, + PaymentMethodAnalyticLoaderState + > { + final IAnalyticRepository _repository; + PaymentMethodAnalyticLoaderBloc(this._repository) + : super(PaymentMethodAnalyticLoaderState.initial()) { + on(_onPaymentMethodAnalyticLoaderEvent); + } + + Future _onPaymentMethodAnalyticLoaderEvent( + PaymentMethodAnalyticLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit( + state.copyWith( + isFetching: true, + failureOptionPaymentMethodAnalytic: none(), + ), + ); + + final result = await _repository.getPaymentMethod( + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => + state.copyWith(failureOptionPaymentMethodAnalytic: optionOf(f)), + (paymentMethodAnalytic) => + state.copyWith(paymentMethodAnalytic: paymentMethodAnalytic), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.freezed.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.freezed.dart new file mode 100644 index 0000000..376f974 --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.freezed.dart @@ -0,0 +1,410 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'payment_method_analytic_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$PaymentMethodAnalyticLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticLoaderEventCopyWith<$Res> { + factory $PaymentMethodAnalyticLoaderEventCopyWith( + PaymentMethodAnalyticLoaderEvent value, + $Res Function(PaymentMethodAnalyticLoaderEvent) then, + ) = + _$PaymentMethodAnalyticLoaderEventCopyWithImpl< + $Res, + PaymentMethodAnalyticLoaderEvent + >; +} + +/// @nodoc +class _$PaymentMethodAnalyticLoaderEventCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalyticLoaderEvent +> + implements $PaymentMethodAnalyticLoaderEventCopyWith<$Res> { + _$PaymentMethodAnalyticLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$PaymentMethodAnalyticLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'PaymentMethodAnalyticLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements PaymentMethodAnalyticLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$PaymentMethodAnalyticLoaderState { + PaymentMethodAnalytic get paymentMethodAnalytic => + throw _privateConstructorUsedError; + Option get failureOptionPaymentMethodAnalytic => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodAnalyticLoaderStateCopyWith + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticLoaderStateCopyWith<$Res> { + factory $PaymentMethodAnalyticLoaderStateCopyWith( + PaymentMethodAnalyticLoaderState value, + $Res Function(PaymentMethodAnalyticLoaderState) then, + ) = + _$PaymentMethodAnalyticLoaderStateCopyWithImpl< + $Res, + PaymentMethodAnalyticLoaderState + >; + @useResult + $Res call({ + PaymentMethodAnalytic paymentMethodAnalytic, + Option failureOptionPaymentMethodAnalytic, + bool isFetching, + }); + + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic; +} + +/// @nodoc +class _$PaymentMethodAnalyticLoaderStateCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalyticLoaderState +> + implements $PaymentMethodAnalyticLoaderStateCopyWith<$Res> { + _$PaymentMethodAnalyticLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodAnalytic = null, + Object? failureOptionPaymentMethodAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + paymentMethodAnalytic: null == paymentMethodAnalytic + ? _value.paymentMethodAnalytic + : paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as PaymentMethodAnalytic, + failureOptionPaymentMethodAnalytic: + null == failureOptionPaymentMethodAnalytic + ? _value.failureOptionPaymentMethodAnalytic + : failureOptionPaymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic { + return $PaymentMethodAnalyticCopyWith<$Res>(_value.paymentMethodAnalytic, ( + value, + ) { + return _then(_value.copyWith(paymentMethodAnalytic: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$PaymentMethodAnalyticLoaderStateImplCopyWith<$Res> + implements $PaymentMethodAnalyticLoaderStateCopyWith<$Res> { + factory _$$PaymentMethodAnalyticLoaderStateImplCopyWith( + _$PaymentMethodAnalyticLoaderStateImpl value, + $Res Function(_$PaymentMethodAnalyticLoaderStateImpl) then, + ) = __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + PaymentMethodAnalytic paymentMethodAnalytic, + Option failureOptionPaymentMethodAnalytic, + bool isFetching, + }); + + @override + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic; +} + +/// @nodoc +class __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl<$Res> + extends + _$PaymentMethodAnalyticLoaderStateCopyWithImpl< + $Res, + _$PaymentMethodAnalyticLoaderStateImpl + > + implements _$$PaymentMethodAnalyticLoaderStateImplCopyWith<$Res> { + __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl( + _$PaymentMethodAnalyticLoaderStateImpl _value, + $Res Function(_$PaymentMethodAnalyticLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodAnalytic = null, + Object? failureOptionPaymentMethodAnalytic = null, + Object? isFetching = null, + }) { + return _then( + _$PaymentMethodAnalyticLoaderStateImpl( + paymentMethodAnalytic: null == paymentMethodAnalytic + ? _value.paymentMethodAnalytic + : paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as PaymentMethodAnalytic, + failureOptionPaymentMethodAnalytic: + null == failureOptionPaymentMethodAnalytic + ? _value.failureOptionPaymentMethodAnalytic + : failureOptionPaymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodAnalyticLoaderStateImpl + implements _PaymentMethodAnalyticLoaderState { + const _$PaymentMethodAnalyticLoaderStateImpl({ + required this.paymentMethodAnalytic, + required this.failureOptionPaymentMethodAnalytic, + this.isFetching = false, + }); + + @override + final PaymentMethodAnalytic paymentMethodAnalytic; + @override + final Option failureOptionPaymentMethodAnalytic; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'PaymentMethodAnalyticLoaderState(paymentMethodAnalytic: $paymentMethodAnalytic, failureOptionPaymentMethodAnalytic: $failureOptionPaymentMethodAnalytic, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodAnalyticLoaderStateImpl && + (identical(other.paymentMethodAnalytic, paymentMethodAnalytic) || + other.paymentMethodAnalytic == paymentMethodAnalytic) && + (identical( + other.failureOptionPaymentMethodAnalytic, + failureOptionPaymentMethodAnalytic, + ) || + other.failureOptionPaymentMethodAnalytic == + failureOptionPaymentMethodAnalytic) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodAnalytic, + failureOptionPaymentMethodAnalytic, + isFetching, + ); + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodAnalyticLoaderStateImplCopyWith< + _$PaymentMethodAnalyticLoaderStateImpl + > + get copyWith => + __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl< + _$PaymentMethodAnalyticLoaderStateImpl + >(this, _$identity); +} + +abstract class _PaymentMethodAnalyticLoaderState + implements PaymentMethodAnalyticLoaderState { + const factory _PaymentMethodAnalyticLoaderState({ + required final PaymentMethodAnalytic paymentMethodAnalytic, + required final Option failureOptionPaymentMethodAnalytic, + final bool isFetching, + }) = _$PaymentMethodAnalyticLoaderStateImpl; + + @override + PaymentMethodAnalytic get paymentMethodAnalytic; + @override + Option get failureOptionPaymentMethodAnalytic; + @override + bool get isFetching; + + /// Create a copy of PaymentMethodAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodAnalyticLoaderStateImplCopyWith< + _$PaymentMethodAnalyticLoaderStateImpl + > + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_event.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_event.dart new file mode 100644 index 0000000..04e5543 --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_event.dart @@ -0,0 +1,6 @@ +part of 'payment_method_analytic_loader_bloc.dart'; + +@freezed +class PaymentMethodAnalyticLoaderEvent with _$PaymentMethodAnalyticLoaderEvent { + const factory PaymentMethodAnalyticLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_state.dart b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_state.dart new file mode 100644 index 0000000..62cb5cd --- /dev/null +++ b/lib/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_state.dart @@ -0,0 +1,16 @@ +part of 'payment_method_analytic_loader_bloc.dart'; + +@freezed +class PaymentMethodAnalyticLoaderState with _$PaymentMethodAnalyticLoaderState { + const factory PaymentMethodAnalyticLoaderState({ + required PaymentMethodAnalytic paymentMethodAnalytic, + required Option failureOptionPaymentMethodAnalytic, + @Default(false) bool isFetching, + }) = _PaymentMethodAnalyticLoaderState; + + factory PaymentMethodAnalyticLoaderState.initial() => + PaymentMethodAnalyticLoaderState( + paymentMethodAnalytic: PaymentMethodAnalytic.empty(), + failureOptionPaymentMethodAnalytic: none(), + ); +} diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart index d35c1aa..9a7fc21 100644 --- a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart @@ -174,7 +174,7 @@ abstract class _Fetched implements ProductAnalyticLoaderEvent { /// @nodoc mixin _$ProductAnalyticLoaderState { ProductAnalytic get productAnalytic => throw _privateConstructorUsedError; - dynamic get failureOptionProductAnalytic => + Option get failureOptionProductAnalytic => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; @@ -198,9 +198,11 @@ abstract class $ProductAnalyticLoaderStateCopyWith<$Res> { @useResult $Res call({ ProductAnalytic productAnalytic, - dynamic failureOptionProductAnalytic, + Option failureOptionProductAnalytic, bool isFetching, }); + + $ProductAnalyticCopyWith<$Res> get productAnalytic; } /// @nodoc @@ -221,21 +223,20 @@ class _$ProductAnalyticLoaderStateCopyWithImpl< @pragma('vm:prefer-inline') @override $Res call({ - Object? productAnalytic = freezed, - Object? failureOptionProductAnalytic = freezed, + Object? productAnalytic = null, + Object? failureOptionProductAnalytic = null, Object? isFetching = null, }) { return _then( _value.copyWith( - productAnalytic: freezed == productAnalytic + productAnalytic: null == productAnalytic ? _value.productAnalytic : productAnalytic // ignore: cast_nullable_to_non_nullable as ProductAnalytic, - failureOptionProductAnalytic: - freezed == failureOptionProductAnalytic + failureOptionProductAnalytic: null == failureOptionProductAnalytic ? _value.failureOptionProductAnalytic : failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable - as dynamic, + as Option, isFetching: null == isFetching ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable @@ -244,6 +245,16 @@ class _$ProductAnalyticLoaderStateCopyWithImpl< as $Val, ); } + + /// Create a copy of ProductAnalyticLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ProductAnalyticCopyWith<$Res> get productAnalytic { + return $ProductAnalyticCopyWith<$Res>(_value.productAnalytic, (value) { + return _then(_value.copyWith(productAnalytic: value) as $Val); + }); + } } /// @nodoc @@ -257,9 +268,12 @@ abstract class _$$ProductAnalyticLoaderStateImplCopyWith<$Res> @useResult $Res call({ ProductAnalytic productAnalytic, - dynamic failureOptionProductAnalytic, + Option failureOptionProductAnalytic, bool isFetching, }); + + @override + $ProductAnalyticCopyWith<$Res> get productAnalytic; } /// @nodoc @@ -280,19 +294,20 @@ class __$$ProductAnalyticLoaderStateImplCopyWithImpl<$Res> @pragma('vm:prefer-inline') @override $Res call({ - Object? productAnalytic = freezed, - Object? failureOptionProductAnalytic = freezed, + Object? productAnalytic = null, + Object? failureOptionProductAnalytic = null, Object? isFetching = null, }) { return _then( _$ProductAnalyticLoaderStateImpl( - productAnalytic: freezed == productAnalytic + productAnalytic: null == productAnalytic ? _value.productAnalytic : productAnalytic // ignore: cast_nullable_to_non_nullable as ProductAnalytic, - failureOptionProductAnalytic: freezed == failureOptionProductAnalytic - ? _value.failureOptionProductAnalytic! - : failureOptionProductAnalytic, + failureOptionProductAnalytic: null == failureOptionProductAnalytic + ? _value.failureOptionProductAnalytic + : failureOptionProductAnalytic // ignore: cast_nullable_to_non_nullable + as Option, isFetching: null == isFetching ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable @@ -314,7 +329,7 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { @override final ProductAnalytic productAnalytic; @override - final dynamic failureOptionProductAnalytic; + final Option failureOptionProductAnalytic; @override @JsonKey() final bool isFetching; @@ -329,14 +344,14 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { return identical(this, other) || (other.runtimeType == runtimeType && other is _$ProductAnalyticLoaderStateImpl && - const DeepCollectionEquality().equals( - other.productAnalytic, - productAnalytic, - ) && - const DeepCollectionEquality().equals( - other.failureOptionProductAnalytic, - failureOptionProductAnalytic, - ) && + (identical(other.productAnalytic, productAnalytic) || + other.productAnalytic == productAnalytic) && + (identical( + other.failureOptionProductAnalytic, + failureOptionProductAnalytic, + ) || + other.failureOptionProductAnalytic == + failureOptionProductAnalytic) && (identical(other.isFetching, isFetching) || other.isFetching == isFetching)); } @@ -344,8 +359,8 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { @override int get hashCode => Object.hash( runtimeType, - const DeepCollectionEquality().hash(productAnalytic), - const DeepCollectionEquality().hash(failureOptionProductAnalytic), + productAnalytic, + failureOptionProductAnalytic, isFetching, ); @@ -365,14 +380,14 @@ abstract class _ProductAnalyticLoaderState implements ProductAnalyticLoaderState { const factory _ProductAnalyticLoaderState({ required final ProductAnalytic productAnalytic, - required final dynamic failureOptionProductAnalytic, + required final Option failureOptionProductAnalytic, final bool isFetching, }) = _$ProductAnalyticLoaderStateImpl; @override ProductAnalytic get productAnalytic; @override - dynamic get failureOptionProductAnalytic; + Option get failureOptionProductAnalytic; @override bool get isFetching; diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 4f8bee7..20031cf 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -9,6 +9,8 @@ class ApiPath { static const String categoryAnalytic = '/api/v1/analytics/categories'; static const String dashboardAnalytic = '/api/v1/analytics/dashboard'; static const String productAnalytic = '/api/v1/analytics/products'; + static const String paymentMethodAnalytic = + '/api/v1/analytics/paymentMethods'; // Inventory static const String inventoryReportDetail = diff --git a/lib/domain/analytic/analytic.dart b/lib/domain/analytic/analytic.dart index 99ab431..f51eb5a 100644 --- a/lib/domain/analytic/analytic.dart +++ b/lib/domain/analytic/analytic.dart @@ -10,4 +10,5 @@ part 'entities/category_analytic_entity.dart'; part 'entities/inventory_analytic_entity.dart'; part 'entities/dashboard_analytic_entity.dart'; part 'entities/product_analytic_entity.dart'; +part 'entities/payment_method_analytic_entity.dart'; part 'failures/analytic_failure.dart'; diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index 879b068..ac7fd5b 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -6269,6 +6269,814 @@ abstract class _ProductAnalyticData implements ProductAnalyticData { throw _privateConstructorUsedError; } +/// @nodoc +mixin _$PaymentMethodAnalytic { + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get dateFrom => throw _privateConstructorUsedError; + String get dateTo => throw _privateConstructorUsedError; + String get groupBy => throw _privateConstructorUsedError; + PaymentMethodSummary get summary => throw _privateConstructorUsedError; + List get data => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodAnalyticCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticCopyWith<$Res> { + factory $PaymentMethodAnalyticCopyWith( + PaymentMethodAnalytic value, + $Res Function(PaymentMethodAnalytic) then, + ) = _$PaymentMethodAnalyticCopyWithImpl<$Res, PaymentMethodAnalytic>; + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + String groupBy, + PaymentMethodSummary summary, + List data, + }); + + $PaymentMethodSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class _$PaymentMethodAnalyticCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalytic +> + implements $PaymentMethodAnalyticCopyWith<$Res> { + _$PaymentMethodAnalyticCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + }) { + return _then( + _value.copyWith( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummary, + data: null == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $PaymentMethodSummaryCopyWith<$Res> get summary { + return $PaymentMethodSummaryCopyWith<$Res>(_value.summary, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$PaymentMethodAnalyticImplCopyWith<$Res> + implements $PaymentMethodAnalyticCopyWith<$Res> { + factory _$$PaymentMethodAnalyticImplCopyWith( + _$PaymentMethodAnalyticImpl value, + $Res Function(_$PaymentMethodAnalyticImpl) then, + ) = __$$PaymentMethodAnalyticImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String organizationId, + String outletId, + String dateFrom, + String dateTo, + String groupBy, + PaymentMethodSummary summary, + List data, + }); + + @override + $PaymentMethodSummaryCopyWith<$Res> get summary; +} + +/// @nodoc +class __$$PaymentMethodAnalyticImplCopyWithImpl<$Res> + extends + _$PaymentMethodAnalyticCopyWithImpl<$Res, _$PaymentMethodAnalyticImpl> + implements _$$PaymentMethodAnalyticImplCopyWith<$Res> { + __$$PaymentMethodAnalyticImplCopyWithImpl( + _$PaymentMethodAnalyticImpl _value, + $Res Function(_$PaymentMethodAnalyticImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = null, + Object? outletId = null, + Object? dateFrom = null, + Object? dateTo = null, + Object? groupBy = null, + Object? summary = null, + Object? data = null, + }) { + return _then( + _$PaymentMethodAnalyticImpl( + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String, + groupBy: null == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String, + summary: null == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummary, + data: null == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodAnalyticImpl implements _PaymentMethodAnalytic { + const _$PaymentMethodAnalyticImpl({ + required this.organizationId, + required this.outletId, + required this.dateFrom, + required this.dateTo, + required this.groupBy, + required this.summary, + required final List data, + }) : _data = data; + + @override + final String organizationId; + @override + final String outletId; + @override + final String dateFrom; + @override + final String dateTo; + @override + final String groupBy; + @override + final PaymentMethodSummary summary; + final List _data; + @override + List get data { + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_data); + } + + @override + String toString() { + return 'PaymentMethodAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodAnalyticImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodAnalyticImplCopyWith<_$PaymentMethodAnalyticImpl> + get copyWith => + __$$PaymentMethodAnalyticImplCopyWithImpl<_$PaymentMethodAnalyticImpl>( + this, + _$identity, + ); +} + +abstract class _PaymentMethodAnalytic implements PaymentMethodAnalytic { + const factory _PaymentMethodAnalytic({ + required final String organizationId, + required final String outletId, + required final String dateFrom, + required final String dateTo, + required final String groupBy, + required final PaymentMethodSummary summary, + required final List data, + }) = _$PaymentMethodAnalyticImpl; + + @override + String get organizationId; + @override + String get outletId; + @override + String get dateFrom; + @override + String get dateTo; + @override + String get groupBy; + @override + PaymentMethodSummary get summary; + @override + List get data; + + /// Create a copy of PaymentMethodAnalytic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodAnalyticImplCopyWith<_$PaymentMethodAnalyticImpl> + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$PaymentMethodItem { + String get paymentMethodId => throw _privateConstructorUsedError; + String get paymentMethodName => throw _privateConstructorUsedError; + String get paymentMethodType => throw _privateConstructorUsedError; + num get totalAmount => throw _privateConstructorUsedError; + int get orderCount => throw _privateConstructorUsedError; + int get paymentCount => throw _privateConstructorUsedError; + double get percentage => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodItemCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodItemCopyWith<$Res> { + factory $PaymentMethodItemCopyWith( + PaymentMethodItem value, + $Res Function(PaymentMethodItem) then, + ) = _$PaymentMethodItemCopyWithImpl<$Res, PaymentMethodItem>; + @useResult + $Res call({ + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + num totalAmount, + int orderCount, + int paymentCount, + double percentage, + }); +} + +/// @nodoc +class _$PaymentMethodItemCopyWithImpl<$Res, $Val extends PaymentMethodItem> + implements $PaymentMethodItemCopyWith<$Res> { + _$PaymentMethodItemCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? totalAmount = null, + Object? orderCount = null, + Object? paymentCount = null, + Object? percentage = null, + }) { + return _then( + _value.copyWith( + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + percentage: null == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodItemImplCopyWith<$Res> + implements $PaymentMethodItemCopyWith<$Res> { + factory _$$PaymentMethodItemImplCopyWith( + _$PaymentMethodItemImpl value, + $Res Function(_$PaymentMethodItemImpl) then, + ) = __$$PaymentMethodItemImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + num totalAmount, + int orderCount, + int paymentCount, + double percentage, + }); +} + +/// @nodoc +class __$$PaymentMethodItemImplCopyWithImpl<$Res> + extends _$PaymentMethodItemCopyWithImpl<$Res, _$PaymentMethodItemImpl> + implements _$$PaymentMethodItemImplCopyWith<$Res> { + __$$PaymentMethodItemImplCopyWithImpl( + _$PaymentMethodItemImpl _value, + $Res Function(_$PaymentMethodItemImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? totalAmount = null, + Object? orderCount = null, + Object? paymentCount = null, + Object? percentage = null, + }) { + return _then( + _$PaymentMethodItemImpl( + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + orderCount: null == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + percentage: null == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodItemImpl implements _PaymentMethodItem { + const _$PaymentMethodItemImpl({ + required this.paymentMethodId, + required this.paymentMethodName, + required this.paymentMethodType, + required this.totalAmount, + required this.orderCount, + required this.paymentCount, + required this.percentage, + }); + + @override + final String paymentMethodId; + @override + final String paymentMethodName; + @override + final String paymentMethodType; + @override + final num totalAmount; + @override + final int orderCount; + @override + final int paymentCount; + @override + final double percentage; + + @override + String toString() { + return 'PaymentMethodItem(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodItemImpl && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.percentage, percentage) || + other.percentage == percentage)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodId, + paymentMethodName, + paymentMethodType, + totalAmount, + orderCount, + paymentCount, + percentage, + ); + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodItemImplCopyWith<_$PaymentMethodItemImpl> get copyWith => + __$$PaymentMethodItemImplCopyWithImpl<_$PaymentMethodItemImpl>( + this, + _$identity, + ); +} + +abstract class _PaymentMethodItem implements PaymentMethodItem { + const factory _PaymentMethodItem({ + required final String paymentMethodId, + required final String paymentMethodName, + required final String paymentMethodType, + required final num totalAmount, + required final int orderCount, + required final int paymentCount, + required final double percentage, + }) = _$PaymentMethodItemImpl; + + @override + String get paymentMethodId; + @override + String get paymentMethodName; + @override + String get paymentMethodType; + @override + num get totalAmount; + @override + int get orderCount; + @override + int get paymentCount; + @override + double get percentage; + + /// Create a copy of PaymentMethodItem + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodItemImplCopyWith<_$PaymentMethodItemImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$PaymentMethodSummary { + num get totalAmount => throw _privateConstructorUsedError; + int get totalOrders => throw _privateConstructorUsedError; + int get totalPayments => throw _privateConstructorUsedError; + double get averageOrderValue => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodSummaryCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodSummaryCopyWith<$Res> { + factory $PaymentMethodSummaryCopyWith( + PaymentMethodSummary value, + $Res Function(PaymentMethodSummary) then, + ) = _$PaymentMethodSummaryCopyWithImpl<$Res, PaymentMethodSummary>; + @useResult + $Res call({ + num totalAmount, + int totalOrders, + int totalPayments, + double averageOrderValue, + }); +} + +/// @nodoc +class _$PaymentMethodSummaryCopyWithImpl< + $Res, + $Val extends PaymentMethodSummary +> + implements $PaymentMethodSummaryCopyWith<$Res> { + _$PaymentMethodSummaryCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = null, + Object? totalOrders = null, + Object? totalPayments = null, + Object? averageOrderValue = null, + }) { + return _then( + _value.copyWith( + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + totalPayments: null == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodSummaryImplCopyWith<$Res> + implements $PaymentMethodSummaryCopyWith<$Res> { + factory _$$PaymentMethodSummaryImplCopyWith( + _$PaymentMethodSummaryImpl value, + $Res Function(_$PaymentMethodSummaryImpl) then, + ) = __$$PaymentMethodSummaryImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + num totalAmount, + int totalOrders, + int totalPayments, + double averageOrderValue, + }); +} + +/// @nodoc +class __$$PaymentMethodSummaryImplCopyWithImpl<$Res> + extends _$PaymentMethodSummaryCopyWithImpl<$Res, _$PaymentMethodSummaryImpl> + implements _$$PaymentMethodSummaryImplCopyWith<$Res> { + __$$PaymentMethodSummaryImplCopyWithImpl( + _$PaymentMethodSummaryImpl _value, + $Res Function(_$PaymentMethodSummaryImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = null, + Object? totalOrders = null, + Object? totalPayments = null, + Object? averageOrderValue = null, + }) { + return _then( + _$PaymentMethodSummaryImpl( + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num, + totalOrders: null == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int, + totalPayments: null == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int, + averageOrderValue: null == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double, + ), + ); + } +} + +/// @nodoc + +class _$PaymentMethodSummaryImpl implements _PaymentMethodSummary { + const _$PaymentMethodSummaryImpl({ + required this.totalAmount, + required this.totalOrders, + required this.totalPayments, + required this.averageOrderValue, + }); + + @override + final num totalAmount; + @override + final int totalOrders; + @override + final int totalPayments; + @override + final double averageOrderValue; + + @override + String toString() { + return 'PaymentMethodSummary(totalAmount: $totalAmount, totalOrders: $totalOrders, totalPayments: $totalPayments, averageOrderValue: $averageOrderValue)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodSummaryImpl && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.totalPayments, totalPayments) || + other.totalPayments == totalPayments) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + totalAmount, + totalOrders, + totalPayments, + averageOrderValue, + ); + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodSummaryImplCopyWith<_$PaymentMethodSummaryImpl> + get copyWith => + __$$PaymentMethodSummaryImplCopyWithImpl<_$PaymentMethodSummaryImpl>( + this, + _$identity, + ); +} + +abstract class _PaymentMethodSummary implements PaymentMethodSummary { + const factory _PaymentMethodSummary({ + required final num totalAmount, + required final int totalOrders, + required final int totalPayments, + required final double averageOrderValue, + }) = _$PaymentMethodSummaryImpl; + + @override + num get totalAmount; + @override + int get totalOrders; + @override + int get totalPayments; + @override + double get averageOrderValue; + + /// Create a copy of PaymentMethodSummary + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodSummaryImplCopyWith<_$PaymentMethodSummaryImpl> + get copyWith => throw _privateConstructorUsedError; +} + /// @nodoc mixin _$AnalyticFailure { @optionalTypeArgs diff --git a/lib/domain/analytic/entities/payment_method_analytic_entity.dart b/lib/domain/analytic/entities/payment_method_analytic_entity.dart new file mode 100644 index 0000000..859e06d --- /dev/null +++ b/lib/domain/analytic/entities/payment_method_analytic_entity.dart @@ -0,0 +1,64 @@ +part of '../analytic.dart'; + +@freezed +class PaymentMethodAnalytic with _$PaymentMethodAnalytic { + const factory PaymentMethodAnalytic({ + required String organizationId, + required String outletId, + required String dateFrom, + required String dateTo, + required String groupBy, + required PaymentMethodSummary summary, + required List data, + }) = _PaymentMethodAnalytic; + + factory PaymentMethodAnalytic.empty() => PaymentMethodAnalytic( + organizationId: '', + outletId: '', + dateFrom: '', + dateTo: '', + groupBy: '', + summary: PaymentMethodSummary.empty(), + data: [], + ); +} + +@freezed +class PaymentMethodItem with _$PaymentMethodItem { + const factory PaymentMethodItem({ + required String paymentMethodId, + required String paymentMethodName, + required String paymentMethodType, + required num totalAmount, + required int orderCount, + required int paymentCount, + required double percentage, + }) = _PaymentMethodItem; + + factory PaymentMethodItem.empty() => const PaymentMethodItem( + paymentMethodId: '', + paymentMethodName: '', + paymentMethodType: '', + totalAmount: 0, + orderCount: 0, + paymentCount: 0, + percentage: 0.0, + ); +} + +@freezed +class PaymentMethodSummary with _$PaymentMethodSummary { + const factory PaymentMethodSummary({ + required num totalAmount, + required int totalOrders, + required int totalPayments, + required double averageOrderValue, + }) = _PaymentMethodSummary; + + factory PaymentMethodSummary.empty() => const PaymentMethodSummary( + totalAmount: 0, + totalOrders: 0, + totalPayments: 0, + averageOrderValue: 0.0, + ); +} diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index a2a0c99..60fb168 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -32,4 +32,9 @@ abstract class IAnalyticRepository { required DateTime dateFrom, required DateTime dateTo, }); + + Future> getPaymentMethod({ + required DateTime dateFrom, + required DateTime dateTo, + }); } diff --git a/lib/infrastructure/analytic/analytic_dtos.dart b/lib/infrastructure/analytic/analytic_dtos.dart index f5ae672..abdb439 100644 --- a/lib/infrastructure/analytic/analytic_dtos.dart +++ b/lib/infrastructure/analytic/analytic_dtos.dart @@ -11,3 +11,4 @@ part 'dto/category_analytic_dto.dart'; part 'dto/inventory_analytic_dto.dart'; part 'dto/dashboard_analytic_dto.dart'; part 'dto/product_analytic_dto.dart'; +part 'dto/payment_method_analytic_dto.dart'; diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index 3385538..199c7a8 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -7280,3 +7280,945 @@ abstract class _ProductAnalyticDataDto extends ProductAnalyticDataDto { _$$ProductAnalyticDataDtoImplCopyWith<_$ProductAnalyticDataDtoImpl> get copyWith => throw _privateConstructorUsedError; } + +PaymentMethodAnalyticDto _$PaymentMethodAnalyticDtoFromJson( + Map json, +) { + return _PaymentMethodAnalyticDto.fromJson(json); +} + +/// @nodoc +mixin _$PaymentMethodAnalyticDto { + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'date_from') + String? get dateFrom => throw _privateConstructorUsedError; + @JsonKey(name: 'date_to') + String? get dateTo => throw _privateConstructorUsedError; + @JsonKey(name: 'group_by') + String? get groupBy => throw _privateConstructorUsedError; + @JsonKey(name: 'summary') + PaymentMethodSummaryDto? get summary => throw _privateConstructorUsedError; + @JsonKey(name: 'data') + List? get data => throw _privateConstructorUsedError; + + /// Serializes this PaymentMethodAnalyticDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodAnalyticDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodAnalyticDtoCopyWith<$Res> { + factory $PaymentMethodAnalyticDtoCopyWith( + PaymentMethodAnalyticDto value, + $Res Function(PaymentMethodAnalyticDto) then, + ) = _$PaymentMethodAnalyticDtoCopyWithImpl<$Res, PaymentMethodAnalyticDto>; + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }); + + $PaymentMethodSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class _$PaymentMethodAnalyticDtoCopyWithImpl< + $Res, + $Val extends PaymentMethodAnalyticDto +> + implements $PaymentMethodAnalyticDtoCopyWith<$Res> { + _$PaymentMethodAnalyticDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + }) { + return _then( + _value.copyWith( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummaryDto?, + data: freezed == data + ? _value.data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $PaymentMethodSummaryDtoCopyWith<$Res>? get summary { + if (_value.summary == null) { + return null; + } + + return $PaymentMethodSummaryDtoCopyWith<$Res>(_value.summary!, (value) { + return _then(_value.copyWith(summary: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$PaymentMethodAnalyticDtoImplCopyWith<$Res> + implements $PaymentMethodAnalyticDtoCopyWith<$Res> { + factory _$$PaymentMethodAnalyticDtoImplCopyWith( + _$PaymentMethodAnalyticDtoImpl value, + $Res Function(_$PaymentMethodAnalyticDtoImpl) then, + ) = __$$PaymentMethodAnalyticDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }); + + @override + $PaymentMethodSummaryDtoCopyWith<$Res>? get summary; +} + +/// @nodoc +class __$$PaymentMethodAnalyticDtoImplCopyWithImpl<$Res> + extends + _$PaymentMethodAnalyticDtoCopyWithImpl< + $Res, + _$PaymentMethodAnalyticDtoImpl + > + implements _$$PaymentMethodAnalyticDtoImplCopyWith<$Res> { + __$$PaymentMethodAnalyticDtoImplCopyWithImpl( + _$PaymentMethodAnalyticDtoImpl _value, + $Res Function(_$PaymentMethodAnalyticDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? groupBy = freezed, + Object? summary = freezed, + Object? data = freezed, + }) { + return _then( + _$PaymentMethodAnalyticDtoImpl( + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + dateFrom: freezed == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as String?, + dateTo: freezed == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as String?, + groupBy: freezed == groupBy + ? _value.groupBy + : groupBy // ignore: cast_nullable_to_non_nullable + as String?, + summary: freezed == summary + ? _value.summary + : summary // ignore: cast_nullable_to_non_nullable + as PaymentMethodSummaryDto?, + data: freezed == data + ? _value._data + : data // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$PaymentMethodAnalyticDtoImpl extends _PaymentMethodAnalyticDto { + const _$PaymentMethodAnalyticDtoImpl({ + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'date_from') this.dateFrom, + @JsonKey(name: 'date_to') this.dateTo, + @JsonKey(name: 'group_by') this.groupBy, + @JsonKey(name: 'summary') this.summary, + @JsonKey(name: 'data') final List? data, + }) : _data = data, + super._(); + + factory _$PaymentMethodAnalyticDtoImpl.fromJson(Map json) => + _$$PaymentMethodAnalyticDtoImplFromJson(json); + + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'date_from') + final String? dateFrom; + @override + @JsonKey(name: 'date_to') + final String? dateTo; + @override + @JsonKey(name: 'group_by') + final String? groupBy; + @override + @JsonKey(name: 'summary') + final PaymentMethodSummaryDto? summary; + final List? _data; + @override + @JsonKey(name: 'data') + List? get data { + final value = _data; + if (value == null) return null; + if (_data is EqualUnmodifiableListView) return _data; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'PaymentMethodAnalyticDto(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodAnalyticDtoImpl && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo) && + (identical(other.groupBy, groupBy) || other.groupBy == groupBy) && + (identical(other.summary, summary) || other.summary == summary) && + const DeepCollectionEquality().equals(other._data, _data)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + organizationId, + outletId, + dateFrom, + dateTo, + groupBy, + summary, + const DeepCollectionEquality().hash(_data), + ); + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodAnalyticDtoImplCopyWith<_$PaymentMethodAnalyticDtoImpl> + get copyWith => + __$$PaymentMethodAnalyticDtoImplCopyWithImpl< + _$PaymentMethodAnalyticDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$PaymentMethodAnalyticDtoImplToJson(this); + } +} + +abstract class _PaymentMethodAnalyticDto extends PaymentMethodAnalyticDto { + const factory _PaymentMethodAnalyticDto({ + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'date_from') final String? dateFrom, + @JsonKey(name: 'date_to') final String? dateTo, + @JsonKey(name: 'group_by') final String? groupBy, + @JsonKey(name: 'summary') final PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') final List? data, + }) = _$PaymentMethodAnalyticDtoImpl; + const _PaymentMethodAnalyticDto._() : super._(); + + factory _PaymentMethodAnalyticDto.fromJson(Map json) = + _$PaymentMethodAnalyticDtoImpl.fromJson; + + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'date_from') + String? get dateFrom; + @override + @JsonKey(name: 'date_to') + String? get dateTo; + @override + @JsonKey(name: 'group_by') + String? get groupBy; + @override + @JsonKey(name: 'summary') + PaymentMethodSummaryDto? get summary; + @override + @JsonKey(name: 'data') + List? get data; + + /// Create a copy of PaymentMethodAnalyticDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodAnalyticDtoImplCopyWith<_$PaymentMethodAnalyticDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +PaymentMethodItemDto _$PaymentMethodItemDtoFromJson(Map json) { + return _PaymentMethodItemDto.fromJson(json); +} + +/// @nodoc +mixin _$PaymentMethodItemDto { + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType => throw _privateConstructorUsedError; + @JsonKey(name: 'total_amount') + num? get totalAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'order_count') + int? get orderCount => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_count') + int? get paymentCount => throw _privateConstructorUsedError; + @JsonKey(name: 'percentage') + double? get percentage => throw _privateConstructorUsedError; + + /// Serializes this PaymentMethodItemDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodItemDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodItemDtoCopyWith<$Res> { + factory $PaymentMethodItemDtoCopyWith( + PaymentMethodItemDto value, + $Res Function(PaymentMethodItemDto) then, + ) = _$PaymentMethodItemDtoCopyWithImpl<$Res, PaymentMethodItemDto>; + @useResult + $Res call({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }); +} + +/// @nodoc +class _$PaymentMethodItemDtoCopyWithImpl< + $Res, + $Val extends PaymentMethodItemDto +> + implements $PaymentMethodItemDtoCopyWith<$Res> { + _$PaymentMethodItemDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? totalAmount = freezed, + Object? orderCount = freezed, + Object? paymentCount = freezed, + Object? percentage = freezed, + }) { + return _then( + _value.copyWith( + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + percentage: freezed == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodItemDtoImplCopyWith<$Res> + implements $PaymentMethodItemDtoCopyWith<$Res> { + factory _$$PaymentMethodItemDtoImplCopyWith( + _$PaymentMethodItemDtoImpl value, + $Res Function(_$PaymentMethodItemDtoImpl) then, + ) = __$$PaymentMethodItemDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }); +} + +/// @nodoc +class __$$PaymentMethodItemDtoImplCopyWithImpl<$Res> + extends _$PaymentMethodItemDtoCopyWithImpl<$Res, _$PaymentMethodItemDtoImpl> + implements _$$PaymentMethodItemDtoImplCopyWith<$Res> { + __$$PaymentMethodItemDtoImplCopyWithImpl( + _$PaymentMethodItemDtoImpl _value, + $Res Function(_$PaymentMethodItemDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? totalAmount = freezed, + Object? orderCount = freezed, + Object? paymentCount = freezed, + Object? percentage = freezed, + }) { + return _then( + _$PaymentMethodItemDtoImpl( + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + orderCount: freezed == orderCount + ? _value.orderCount + : orderCount // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + percentage: freezed == percentage + ? _value.percentage + : percentage // ignore: cast_nullable_to_non_nullable + as double?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$PaymentMethodItemDtoImpl extends _PaymentMethodItemDto { + const _$PaymentMethodItemDtoImpl({ + @JsonKey(name: 'payment_method_id') this.paymentMethodId, + @JsonKey(name: 'payment_method_name') this.paymentMethodName, + @JsonKey(name: 'payment_method_type') this.paymentMethodType, + @JsonKey(name: 'total_amount') this.totalAmount, + @JsonKey(name: 'order_count') this.orderCount, + @JsonKey(name: 'payment_count') this.paymentCount, + @JsonKey(name: 'percentage') this.percentage, + }) : super._(); + + factory _$PaymentMethodItemDtoImpl.fromJson(Map json) => + _$$PaymentMethodItemDtoImplFromJson(json); + + @override + @JsonKey(name: 'payment_method_id') + final String? paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + final String? paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + final String? paymentMethodType; + @override + @JsonKey(name: 'total_amount') + final num? totalAmount; + @override + @JsonKey(name: 'order_count') + final int? orderCount; + @override + @JsonKey(name: 'payment_count') + final int? paymentCount; + @override + @JsonKey(name: 'percentage') + final double? percentage; + + @override + String toString() { + return 'PaymentMethodItemDto(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodItemDtoImpl && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.orderCount, orderCount) || + other.orderCount == orderCount) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.percentage, percentage) || + other.percentage == percentage)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + paymentMethodId, + paymentMethodName, + paymentMethodType, + totalAmount, + orderCount, + paymentCount, + percentage, + ); + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodItemDtoImplCopyWith<_$PaymentMethodItemDtoImpl> + get copyWith => + __$$PaymentMethodItemDtoImplCopyWithImpl<_$PaymentMethodItemDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$PaymentMethodItemDtoImplToJson(this); + } +} + +abstract class _PaymentMethodItemDto extends PaymentMethodItemDto { + const factory _PaymentMethodItemDto({ + @JsonKey(name: 'payment_method_id') final String? paymentMethodId, + @JsonKey(name: 'payment_method_name') final String? paymentMethodName, + @JsonKey(name: 'payment_method_type') final String? paymentMethodType, + @JsonKey(name: 'total_amount') final num? totalAmount, + @JsonKey(name: 'order_count') final int? orderCount, + @JsonKey(name: 'payment_count') final int? paymentCount, + @JsonKey(name: 'percentage') final double? percentage, + }) = _$PaymentMethodItemDtoImpl; + const _PaymentMethodItemDto._() : super._(); + + factory _PaymentMethodItemDto.fromJson(Map json) = + _$PaymentMethodItemDtoImpl.fromJson; + + @override + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType; + @override + @JsonKey(name: 'total_amount') + num? get totalAmount; + @override + @JsonKey(name: 'order_count') + int? get orderCount; + @override + @JsonKey(name: 'payment_count') + int? get paymentCount; + @override + @JsonKey(name: 'percentage') + double? get percentage; + + /// Create a copy of PaymentMethodItemDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodItemDtoImplCopyWith<_$PaymentMethodItemDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} + +PaymentMethodSummaryDto _$PaymentMethodSummaryDtoFromJson( + Map json, +) { + return _PaymentMethodSummaryDto.fromJson(json); +} + +/// @nodoc +mixin _$PaymentMethodSummaryDto { + @JsonKey(name: 'total_amount') + num? get totalAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'total_orders') + int? get totalOrders => throw _privateConstructorUsedError; + @JsonKey(name: 'total_payments') + int? get totalPayments => throw _privateConstructorUsedError; + @JsonKey(name: 'average_order_value') + double? get averageOrderValue => throw _privateConstructorUsedError; + + /// Serializes this PaymentMethodSummaryDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentMethodSummaryDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentMethodSummaryDtoCopyWith<$Res> { + factory $PaymentMethodSummaryDtoCopyWith( + PaymentMethodSummaryDto value, + $Res Function(PaymentMethodSummaryDto) then, + ) = _$PaymentMethodSummaryDtoCopyWithImpl<$Res, PaymentMethodSummaryDto>; + @useResult + $Res call({ + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'total_payments') int? totalPayments, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + }); +} + +/// @nodoc +class _$PaymentMethodSummaryDtoCopyWithImpl< + $Res, + $Val extends PaymentMethodSummaryDto +> + implements $PaymentMethodSummaryDtoCopyWith<$Res> { + _$PaymentMethodSummaryDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = freezed, + Object? totalOrders = freezed, + Object? totalPayments = freezed, + Object? averageOrderValue = freezed, + }) { + return _then( + _value.copyWith( + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + totalPayments: freezed == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentMethodSummaryDtoImplCopyWith<$Res> + implements $PaymentMethodSummaryDtoCopyWith<$Res> { + factory _$$PaymentMethodSummaryDtoImplCopyWith( + _$PaymentMethodSummaryDtoImpl value, + $Res Function(_$PaymentMethodSummaryDtoImpl) then, + ) = __$$PaymentMethodSummaryDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'total_payments') int? totalPayments, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + }); +} + +/// @nodoc +class __$$PaymentMethodSummaryDtoImplCopyWithImpl<$Res> + extends + _$PaymentMethodSummaryDtoCopyWithImpl< + $Res, + _$PaymentMethodSummaryDtoImpl + > + implements _$$PaymentMethodSummaryDtoImplCopyWith<$Res> { + __$$PaymentMethodSummaryDtoImplCopyWithImpl( + _$PaymentMethodSummaryDtoImpl _value, + $Res Function(_$PaymentMethodSummaryDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? totalAmount = freezed, + Object? totalOrders = freezed, + Object? totalPayments = freezed, + Object? averageOrderValue = freezed, + }) { + return _then( + _$PaymentMethodSummaryDtoImpl( + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as num?, + totalOrders: freezed == totalOrders + ? _value.totalOrders + : totalOrders // ignore: cast_nullable_to_non_nullable + as int?, + totalPayments: freezed == totalPayments + ? _value.totalPayments + : totalPayments // ignore: cast_nullable_to_non_nullable + as int?, + averageOrderValue: freezed == averageOrderValue + ? _value.averageOrderValue + : averageOrderValue // ignore: cast_nullable_to_non_nullable + as double?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$PaymentMethodSummaryDtoImpl extends _PaymentMethodSummaryDto { + const _$PaymentMethodSummaryDtoImpl({ + @JsonKey(name: 'total_amount') this.totalAmount, + @JsonKey(name: 'total_orders') this.totalOrders, + @JsonKey(name: 'total_payments') this.totalPayments, + @JsonKey(name: 'average_order_value') this.averageOrderValue, + }) : super._(); + + factory _$PaymentMethodSummaryDtoImpl.fromJson(Map json) => + _$$PaymentMethodSummaryDtoImplFromJson(json); + + @override + @JsonKey(name: 'total_amount') + final num? totalAmount; + @override + @JsonKey(name: 'total_orders') + final int? totalOrders; + @override + @JsonKey(name: 'total_payments') + final int? totalPayments; + @override + @JsonKey(name: 'average_order_value') + final double? averageOrderValue; + + @override + String toString() { + return 'PaymentMethodSummaryDto(totalAmount: $totalAmount, totalOrders: $totalOrders, totalPayments: $totalPayments, averageOrderValue: $averageOrderValue)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentMethodSummaryDtoImpl && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.totalOrders, totalOrders) || + other.totalOrders == totalOrders) && + (identical(other.totalPayments, totalPayments) || + other.totalPayments == totalPayments) && + (identical(other.averageOrderValue, averageOrderValue) || + other.averageOrderValue == averageOrderValue)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + totalAmount, + totalOrders, + totalPayments, + averageOrderValue, + ); + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentMethodSummaryDtoImplCopyWith<_$PaymentMethodSummaryDtoImpl> + get copyWith => + __$$PaymentMethodSummaryDtoImplCopyWithImpl< + _$PaymentMethodSummaryDtoImpl + >(this, _$identity); + + @override + Map toJson() { + return _$$PaymentMethodSummaryDtoImplToJson(this); + } +} + +abstract class _PaymentMethodSummaryDto extends PaymentMethodSummaryDto { + const factory _PaymentMethodSummaryDto({ + @JsonKey(name: 'total_amount') final num? totalAmount, + @JsonKey(name: 'total_orders') final int? totalOrders, + @JsonKey(name: 'total_payments') final int? totalPayments, + @JsonKey(name: 'average_order_value') final double? averageOrderValue, + }) = _$PaymentMethodSummaryDtoImpl; + const _PaymentMethodSummaryDto._() : super._(); + + factory _PaymentMethodSummaryDto.fromJson(Map json) = + _$PaymentMethodSummaryDtoImpl.fromJson; + + @override + @JsonKey(name: 'total_amount') + num? get totalAmount; + @override + @JsonKey(name: 'total_orders') + int? get totalOrders; + @override + @JsonKey(name: 'total_payments') + int? get totalPayments; + @override + @JsonKey(name: 'average_order_value') + double? get averageOrderValue; + + /// Create a copy of PaymentMethodSummaryDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentMethodSummaryDtoImplCopyWith<_$PaymentMethodSummaryDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index 6a760d7..f29e863 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -565,3 +565,75 @@ Map _$$ProductAnalyticDataDtoImplToJson( 'average_price': instance.averagePrice, 'order_count': instance.orderCount, }; + +_$PaymentMethodAnalyticDtoImpl _$$PaymentMethodAnalyticDtoImplFromJson( + Map json, +) => _$PaymentMethodAnalyticDtoImpl( + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + dateFrom: json['date_from'] as String?, + dateTo: json['date_to'] as String?, + groupBy: json['group_by'] as String?, + summary: json['summary'] == null + ? null + : PaymentMethodSummaryDto.fromJson( + json['summary'] as Map, + ), + data: (json['data'] as List?) + ?.map((e) => PaymentMethodItemDto.fromJson(e as Map)) + .toList(), +); + +Map _$$PaymentMethodAnalyticDtoImplToJson( + _$PaymentMethodAnalyticDtoImpl instance, +) => { + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'date_from': instance.dateFrom, + 'date_to': instance.dateTo, + 'group_by': instance.groupBy, + 'summary': instance.summary, + 'data': instance.data, +}; + +_$PaymentMethodItemDtoImpl _$$PaymentMethodItemDtoImplFromJson( + Map json, +) => _$PaymentMethodItemDtoImpl( + paymentMethodId: json['payment_method_id'] as String?, + paymentMethodName: json['payment_method_name'] as String?, + paymentMethodType: json['payment_method_type'] as String?, + totalAmount: json['total_amount'] as num?, + orderCount: (json['order_count'] as num?)?.toInt(), + paymentCount: (json['payment_count'] as num?)?.toInt(), + percentage: (json['percentage'] as num?)?.toDouble(), +); + +Map _$$PaymentMethodItemDtoImplToJson( + _$PaymentMethodItemDtoImpl instance, +) => { + 'payment_method_id': instance.paymentMethodId, + 'payment_method_name': instance.paymentMethodName, + 'payment_method_type': instance.paymentMethodType, + 'total_amount': instance.totalAmount, + 'order_count': instance.orderCount, + 'payment_count': instance.paymentCount, + 'percentage': instance.percentage, +}; + +_$PaymentMethodSummaryDtoImpl _$$PaymentMethodSummaryDtoImplFromJson( + Map json, +) => _$PaymentMethodSummaryDtoImpl( + totalAmount: json['total_amount'] as num?, + totalOrders: (json['total_orders'] as num?)?.toInt(), + totalPayments: (json['total_payments'] as num?)?.toInt(), + averageOrderValue: (json['average_order_value'] as num?)?.toDouble(), +); + +Map _$$PaymentMethodSummaryDtoImplToJson( + _$PaymentMethodSummaryDtoImpl instance, +) => { + 'total_amount': instance.totalAmount, + 'total_orders': instance.totalOrders, + 'total_payments': instance.totalPayments, + 'average_order_value': instance.averageOrderValue, +}; diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index f6283dc..ff52f3d 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -182,4 +182,32 @@ class AnalyticRemoteDataProvider { return DC.error(AnalyticFailure.serverError(e)); } } + + Future> fetchPaymentMethod({ + required String outletId, + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + final response = await _apiClient.get( + ApiPath.paymentMethodAnalytic, + params: { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(AnalyticFailure.empty()); + } + + final dto = PaymentMethodAnalyticDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchPaymentMethodError', name: _logName, error: e, stackTrace: s); + return DC.error(AnalyticFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/analytic/dto/payment_method_analytic_dto.dart b/lib/infrastructure/analytic/dto/payment_method_analytic_dto.dart new file mode 100644 index 0000000..b29f877 --- /dev/null +++ b/lib/infrastructure/analytic/dto/payment_method_analytic_dto.dart @@ -0,0 +1,85 @@ +part of '../analytic_dtos.dart'; + +@freezed +class PaymentMethodAnalyticDto with _$PaymentMethodAnalyticDto { + const PaymentMethodAnalyticDto._(); + + const factory PaymentMethodAnalyticDto({ + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'group_by') String? groupBy, + @JsonKey(name: 'summary') PaymentMethodSummaryDto? summary, + @JsonKey(name: 'data') List? data, + }) = _PaymentMethodAnalyticDto; + + factory PaymentMethodAnalyticDto.fromJson(Map json) => + _$PaymentMethodAnalyticDtoFromJson(json); + + PaymentMethodAnalytic toDomain() { + return PaymentMethodAnalytic( + organizationId: organizationId ?? '', + outletId: outletId ?? '', + dateFrom: dateFrom ?? '', + dateTo: dateTo ?? '', + groupBy: groupBy ?? '', + summary: summary?.toDomain() ?? PaymentMethodSummary.empty(), + data: data?.map((e) => e.toDomain()).toList() ?? [], + ); + } +} + +@freezed +class PaymentMethodItemDto with _$PaymentMethodItemDto { + const PaymentMethodItemDto._(); + + const factory PaymentMethodItemDto({ + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'order_count') int? orderCount, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'percentage') double? percentage, + }) = _PaymentMethodItemDto; + + factory PaymentMethodItemDto.fromJson(Map json) => + _$PaymentMethodItemDtoFromJson(json); + + PaymentMethodItem toDomain() { + return PaymentMethodItem( + paymentMethodId: paymentMethodId ?? '', + paymentMethodName: paymentMethodName ?? '', + paymentMethodType: paymentMethodType ?? '', + totalAmount: totalAmount ?? 0, + orderCount: orderCount ?? 0, + paymentCount: paymentCount ?? 0, + percentage: percentage ?? 0.0, + ); + } +} + +@freezed +class PaymentMethodSummaryDto with _$PaymentMethodSummaryDto { + const PaymentMethodSummaryDto._(); + + const factory PaymentMethodSummaryDto({ + @JsonKey(name: 'total_amount') num? totalAmount, + @JsonKey(name: 'total_orders') int? totalOrders, + @JsonKey(name: 'total_payments') int? totalPayments, + @JsonKey(name: 'average_order_value') double? averageOrderValue, + }) = _PaymentMethodSummaryDto; + + factory PaymentMethodSummaryDto.fromJson(Map json) => + _$PaymentMethodSummaryDtoFromJson(json); + + PaymentMethodSummary toDomain() { + return PaymentMethodSummary( + totalAmount: totalAmount ?? 0, + totalOrders: totalOrders ?? 0, + totalPayments: totalPayments ?? 0, + averageOrderValue: averageOrderValue ?? 0.0, + ); + } +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 67b7c9a..77f2368 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -169,4 +169,31 @@ class AnalyticRepository implements IAnalyticRepository { return left(const AnalyticFailure.unexpectedError()); } } + + @override + Future> getPaymentMethod({ + required DateTime dateFrom, + required DateTime dateTo, + }) async { + try { + User currentUser = await _authLocalDataProvider.currentUser(); + + final result = await _dataProvider.fetchPaymentMethod( + outletId: currentUser.outletId, + dateFrom: dateFrom, + dateTo: dateTo, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('getPaymentMethodError', name: _logName, error: e, stackTrace: s); + return left(const AnalyticFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index e6b0cdf..ebc0cf1 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -15,6 +15,8 @@ import 'package:apskel_owner_flutter/application/analytic/dashboard_analytic_loa as _i516; import 'package:apskel_owner_flutter/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart' as _i785; +import 'package:apskel_owner_flutter/application/analytic/payment_method_analytic_loader/payment_method_analytic_loader_bloc.dart' + as _i552; import 'package:apskel_owner_flutter/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart' as _i221; import 'package:apskel_owner_flutter/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart' @@ -184,6 +186,11 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i221.ProductAnalyticLoaderBloc>( () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i552.PaymentMethodAnalyticLoaderBloc>( + () => _i552.PaymentMethodAnalyticLoaderBloc( + gh<_i477.IAnalyticRepository>(), + ), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); From b8055c8eab663d82a71baf40c813143a80ecea65 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 13:07:48 +0700 Subject: [PATCH 063/108] feat: change structure --- .../{ => product_list}/product_page.dart | 18 +++++++++--------- .../widgets/category_delegate.dart | 4 ++-- .../widgets/product_card.dart | 8 ++++---- .../widgets/product_tile.dart | 10 +++++----- lib/presentation/router/app_router.gr.dart | 2 +- 5 files changed, 21 insertions(+), 21 deletions(-) rename lib/presentation/pages/product/{ => product_list}/product_page.dart (95%) rename lib/presentation/pages/product/{ => product_list}/widgets/category_delegate.dart (95%) rename lib/presentation/pages/product/{ => product_list}/widgets/product_card.dart (93%) rename lib/presentation/pages/product/{ => product_list}/widgets/product_tile.dart (95%) diff --git a/lib/presentation/pages/product/product_page.dart b/lib/presentation/pages/product/product_list/product_page.dart similarity index 95% rename from lib/presentation/pages/product/product_page.dart rename to lib/presentation/pages/product/product_list/product_page.dart index 0d16a7a..cc71457 100644 --- a/lib/presentation/pages/product/product_page.dart +++ b/lib/presentation/pages/product/product_list/product_page.dart @@ -4,15 +4,15 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import 'package:shimmer/shimmer.dart'; -import '../../../application/category/category_loader/category_loader_bloc.dart'; -import '../../../application/product/product_loader/product_loader_bloc.dart'; -import '../../../common/theme/theme.dart'; -import '../../../domain/category/category.dart'; -import '../../../domain/product/product.dart'; -import '../../../injection.dart'; -import '../../components/appbar/appbar.dart'; -import '../../components/button/button.dart'; -import '../../components/widgets/empty_widget.dart'; +import '../../../../application/category/category_loader/category_loader_bloc.dart'; +import '../../../../application/product/product_loader/product_loader_bloc.dart'; +import '../../../../common/theme/theme.dart'; +import '../../../../domain/category/category.dart'; +import '../../../../domain/product/product.dart'; +import '../../../../injection.dart'; +import '../../../components/appbar/appbar.dart'; +import '../../../components/button/button.dart'; +import '../../../components/widgets/empty_widget.dart'; import 'widgets/category_delegate.dart'; import 'widgets/product_card.dart'; import 'widgets/product_tile.dart'; diff --git a/lib/presentation/pages/product/widgets/category_delegate.dart b/lib/presentation/pages/product/product_list/widgets/category_delegate.dart similarity index 95% rename from lib/presentation/pages/product/widgets/category_delegate.dart rename to lib/presentation/pages/product/product_list/widgets/category_delegate.dart index 54c6a37..c042683 100644 --- a/lib/presentation/pages/product/widgets/category_delegate.dart +++ b/lib/presentation/pages/product/product_list/widgets/category_delegate.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import '../../../../common/theme/theme.dart'; -import '../../../../domain/category/category.dart'; +import '../../../../../common/theme/theme.dart'; +import '../../../../../domain/category/category.dart'; class ProductCategoryHeaderDelegate extends SliverPersistentHeaderDelegate { final List categories; diff --git a/lib/presentation/pages/product/widgets/product_card.dart b/lib/presentation/pages/product/product_list/widgets/product_card.dart similarity index 93% rename from lib/presentation/pages/product/widgets/product_card.dart rename to lib/presentation/pages/product/product_list/widgets/product_card.dart index e3ad845..ebb6730 100644 --- a/lib/presentation/pages/product/widgets/product_card.dart +++ b/lib/presentation/pages/product/product_list/widgets/product_card.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import '../../../../common/extension/extension.dart'; -import '../../../../common/theme/theme.dart'; -import '../../../../domain/product/product.dart'; -import '../../../components/image/image.dart'; +import '../../../../../common/extension/extension.dart'; +import '../../../../../common/theme/theme.dart'; +import '../../../../../domain/product/product.dart'; +import '../../../../components/image/image.dart'; class ProductCard extends StatelessWidget { const ProductCard({super.key, required this.product, this.onTap}); diff --git a/lib/presentation/pages/product/widgets/product_tile.dart b/lib/presentation/pages/product/product_list/widgets/product_tile.dart similarity index 95% rename from lib/presentation/pages/product/widgets/product_tile.dart rename to lib/presentation/pages/product/product_list/widgets/product_tile.dart index 4d151cb..fe912bf 100644 --- a/lib/presentation/pages/product/widgets/product_tile.dart +++ b/lib/presentation/pages/product/product_list/widgets/product_tile.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -import '../../../../common/extension/extension.dart'; -import '../../../../common/theme/theme.dart'; -import '../../../../domain/product/product.dart'; -import '../../../components/image/image.dart'; -import '../../../components/spacer/spacer.dart'; +import '../../../../../common/extension/extension.dart'; +import '../../../../../common/theme/theme.dart'; +import '../../../../../domain/product/product.dart'; +import '../../../../components/image/image.dart'; +import '../../../../components/spacer/spacer.dart'; class ProductTile extends StatelessWidget { final Product product; diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 6854f53..24eb8f6 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -27,7 +27,7 @@ import 'package:apskel_owner_flutter/presentation/pages/language/language_page.d as _i7; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/product/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i10; import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i11; From 62eb15b27f43c8c159673241628163b692f716cc Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 13:33:45 +0700 Subject: [PATCH 064/108] feat: change name transaction to order --- lib/presentation/pages/main/main_page.dart | 2 +- .../pages/main/widgets/bottom_navbar.dart | 4 +- .../order_page.dart} | 17 ++-- .../widgets/order_tile.dart} | 4 +- .../widgets/status_tile.dart | 4 +- .../pages/transaction/widgets/appbar.dart | 97 ------------------- lib/presentation/router/app_router.dart | 2 +- lib/presentation/router/app_router.gr.dart | 76 +++++++-------- 8 files changed, 54 insertions(+), 152 deletions(-) rename lib/presentation/pages/{transaction/transaction_page.dart => order/order_page.dart} (94%) rename lib/presentation/pages/{transaction/widgets/transaction_tile.dart => order/widgets/order_tile.dart} (99%) rename lib/presentation/pages/{transaction => order}/widgets/status_tile.dart (92%) delete mode 100644 lib/presentation/pages/transaction/widgets/appbar.dart diff --git a/lib/presentation/pages/main/main_page.dart b/lib/presentation/pages/main/main_page.dart index 6232fc7..f180061 100644 --- a/lib/presentation/pages/main/main_page.dart +++ b/lib/presentation/pages/main/main_page.dart @@ -11,7 +11,7 @@ class MainPage extends StatelessWidget { @override Widget build(BuildContext context) { return AutoTabsRouter.pageView( - routes: [HomeRoute(), TransactionRoute(), ReportRoute(), ProfileRoute()], + routes: [HomeRoute(), OrderRoute(), ReportRoute(), ProfileRoute()], physics: const NeverScrollableScrollPhysics(), builder: (context, child, pageController) { final tabsRouter = AutoTabsRouter.of(context); diff --git a/lib/presentation/pages/main/widgets/bottom_navbar.dart b/lib/presentation/pages/main/widgets/bottom_navbar.dart index 03c216c..8ea33ff 100644 --- a/lib/presentation/pages/main/widgets/bottom_navbar.dart +++ b/lib/presentation/pages/main/widgets/bottom_navbar.dart @@ -33,8 +33,8 @@ class _MainBottomNavbarState extends State { ), BottomNavigationBarItem( icon: LineIcon(LineIcons.moneyBill), - label: context.lang.transaction, - tooltip: context.lang.transaction, + label: 'Order', + tooltip: 'Order', ), BottomNavigationBarItem( icon: LineIcon(LineIcons.barChart), diff --git a/lib/presentation/pages/transaction/transaction_page.dart b/lib/presentation/pages/order/order_page.dart similarity index 94% rename from lib/presentation/pages/transaction/transaction_page.dart rename to lib/presentation/pages/order/order_page.dart index f9ce760..5d65e02 100644 --- a/lib/presentation/pages/transaction/transaction_page.dart +++ b/lib/presentation/pages/order/order_page.dart @@ -7,18 +7,17 @@ import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/status_tile.dart'; -import 'widgets/transaction_tile.dart'; +import 'widgets/order_tile.dart'; @RoutePage() -class TransactionPage extends StatefulWidget { - const TransactionPage({super.key}); +class OrderPage extends StatefulWidget { + const OrderPage({super.key}); @override - State createState() => _TransactionPageState(); + State createState() => _OrderPageState(); } -class _TransactionPageState extends State - with TickerProviderStateMixin { +class _OrderPageState extends State with TickerProviderStateMixin { late AnimationController _fadeController; late AnimationController _slideController; late Animation _fadeAnimation; @@ -139,7 +138,7 @@ class _TransactionPageState extends State pinned: true, backgroundColor: AppColor.primary, centerTitle: false, - flexibleSpace: CustomAppBar(title: 'Transaction', isBack: false), + flexibleSpace: CustomAppBar(title: 'Order', isBack: false), actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.filter), SpaceWidth(8), @@ -170,7 +169,7 @@ class _TransactionPageState extends State padding: EdgeInsets.only( right: index < filterOptions.length - 1 ? 8 : 0, ), - child: TransactionStatusTile( + child: OrderStatusTile( label: option, isSelected: option == selectedFilter, onSelected: (isSelected) { @@ -249,7 +248,7 @@ class _TransactionPageState extends State children: filteredTransactions.map(( transaction, ) { - return TransactionTile( + return OrderTile( transaction: transaction, onTap: () {}, ); diff --git a/lib/presentation/pages/transaction/widgets/transaction_tile.dart b/lib/presentation/pages/order/widgets/order_tile.dart similarity index 99% rename from lib/presentation/pages/transaction/widgets/transaction_tile.dart rename to lib/presentation/pages/order/widgets/order_tile.dart index 2e8923e..f4e9a6a 100644 --- a/lib/presentation/pages/transaction/widgets/transaction_tile.dart +++ b/lib/presentation/pages/order/widgets/order_tile.dart @@ -28,13 +28,13 @@ class Transaction { enum TransactionStatus { completed, pending, cancelled, refunded } -class TransactionTile extends StatelessWidget { +class OrderTile extends StatelessWidget { final Transaction transaction; final VoidCallback? onTap; final VoidCallback? onPrint; final VoidCallback? onRefund; - const TransactionTile({ + const OrderTile({ super.key, required this.transaction, this.onTap, diff --git a/lib/presentation/pages/transaction/widgets/status_tile.dart b/lib/presentation/pages/order/widgets/status_tile.dart similarity index 92% rename from lib/presentation/pages/transaction/widgets/status_tile.dart rename to lib/presentation/pages/order/widgets/status_tile.dart index 11757fe..e373de7 100644 --- a/lib/presentation/pages/transaction/widgets/status_tile.dart +++ b/lib/presentation/pages/order/widgets/status_tile.dart @@ -2,11 +2,11 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; -class TransactionStatusTile extends StatelessWidget { +class OrderStatusTile extends StatelessWidget { final String label; final bool isSelected; final void Function(bool)? onSelected; - const TransactionStatusTile({ + const OrderStatusTile({ super.key, required this.label, this.isSelected = false, diff --git a/lib/presentation/pages/transaction/widgets/appbar.dart b/lib/presentation/pages/transaction/widgets/appbar.dart deleted file mode 100644 index d868958..0000000 --- a/lib/presentation/pages/transaction/widgets/appbar.dart +++ /dev/null @@ -1,97 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; - -class TransactionAppBar extends StatelessWidget { - final Animation rotationAnimation; - const TransactionAppBar({super.key, required this.rotationAnimation}); - - @override - Widget build(BuildContext context) { - return FlexibleSpaceBar( - titlePadding: const EdgeInsets.only(left: 20, bottom: 16), - title: Text( - 'Transaksi', - style: AppStyle.xl.copyWith( - color: AppColor.textWhite, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), - - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Stack( - children: [ - Positioned( - right: -20, - top: -20, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: rotationAnimation.value, - child: Container( - width: 100, - height: 100, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.1), - ), - ), - ); - }, - ), - ), - Positioned( - left: -30, - bottom: -30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.5, - child: Container( - width: 80, - height: 80, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.05), - ), - ), - ); - }, - ), - ), - Positioned( - right: 80, - bottom: 30, - child: AnimatedBuilder( - animation: rotationAnimation, - builder: (context, child) { - return Transform.rotate( - angle: -rotationAnimation.value * 0.2, - child: Container( - width: 40, - height: 40, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: AppColor.white.withOpacity(0.08), - ), - ), - ); - }, - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 4cdcb3c..8a0c267 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -16,7 +16,7 @@ class AppRouter extends RootStackRouter { page: MainRoute.page, children: [ AutoRoute(page: HomeRoute.page), - AutoRoute(page: TransactionRoute.page), + AutoRoute(page: OrderRoute.page), AutoRoute(page: ReportRoute.page), AutoRoute(page: ProfileRoute.page), ], diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 24eb8f6..8c9e144 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -27,21 +27,21 @@ import 'package:apskel_owner_flutter/presentation/pages/language/language_page.d as _i7; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/transaction/transaction_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' as _i17; import 'package:auto_route/auto_route.dart' as _i18; import 'package:flutter/material.dart' as _i19; @@ -253,7 +253,23 @@ class MainRoute extends _i18.PageRouteInfo { } /// generated route for -/// [_i10.ProductPage] +/// [_i10.OrderPage] +class OrderRoute extends _i18.PageRouteInfo { + const OrderRoute({List<_i18.PageRouteInfo>? children}) + : super(OrderRoute.name, initialChildren: children); + + static const String name = 'OrderRoute'; + + static _i18.PageInfo page = _i18.PageInfo( + name, + builder: (data) { + return const _i10.OrderPage(); + }, + ); +} + +/// generated route for +/// [_i11.ProductPage] class ProductRoute extends _i18.PageRouteInfo { const ProductRoute({List<_i18.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); @@ -263,13 +279,13 @@ class ProductRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i10.ProductPage()); + return _i18.WrappedRoute(child: const _i11.ProductPage()); }, ); } /// generated route for -/// [_i11.ProfilePage] +/// [_i12.ProfilePage] class ProfileRoute extends _i18.PageRouteInfo { const ProfileRoute({List<_i18.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); @@ -279,13 +295,13 @@ class ProfileRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i11.ProfilePage()); + return _i18.WrappedRoute(child: const _i12.ProfilePage()); }, ); } /// generated route for -/// [_i12.PurchasePage] +/// [_i13.PurchasePage] class PurchaseRoute extends _i18.PageRouteInfo { const PurchaseRoute({List<_i18.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); @@ -295,13 +311,13 @@ class PurchaseRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i12.PurchasePage(); + return const _i13.PurchasePage(); }, ); } /// generated route for -/// [_i13.ReportPage] +/// [_i14.ReportPage] class ReportRoute extends _i18.PageRouteInfo { const ReportRoute({List<_i18.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); @@ -311,13 +327,13 @@ class ReportRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i13.ReportPage()); + return _i18.WrappedRoute(child: const _i14.ReportPage()); }, ); } /// generated route for -/// [_i14.SalesPage] +/// [_i15.SalesPage] class SalesRoute extends _i18.PageRouteInfo { const SalesRoute({List<_i18.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); @@ -327,13 +343,13 @@ class SalesRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i14.SalesPage()); + return _i18.WrappedRoute(child: const _i15.SalesPage()); }, ); } /// generated route for -/// [_i15.SchedulePage] +/// [_i16.SchedulePage] class ScheduleRoute extends _i18.PageRouteInfo { const ScheduleRoute({List<_i18.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); @@ -343,13 +359,13 @@ class ScheduleRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i15.SchedulePage(); + return const _i16.SchedulePage(); }, ); } /// generated route for -/// [_i16.SplashPage] +/// [_i17.SplashPage] class SplashRoute extends _i18.PageRouteInfo { const SplashRoute({List<_i18.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); @@ -359,23 +375,7 @@ class SplashRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i16.SplashPage(); - }, - ); -} - -/// generated route for -/// [_i17.TransactionPage] -class TransactionRoute extends _i18.PageRouteInfo { - const TransactionRoute({List<_i18.PageRouteInfo>? children}) - : super(TransactionRoute.name, initialChildren: children); - - static const String name = 'TransactionRoute'; - - static _i18.PageInfo page = _i18.PageInfo( - name, - builder: (data) { - return const _i17.TransactionPage(); + return const _i17.SplashPage(); }, ); } From d3f2cb300cff05d015e92df0103f3d5f31fb2c36 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 14:24:15 +0700 Subject: [PATCH 065/108] feat: order --- .../order/order_loader/order_loader_bloc.dart | 90 + .../order_loader_bloc.freezed.dart | 815 ++++++ .../order_loader/order_loader_event.dart | 9 + .../order_loader/order_loader_state.dart | 17 + lib/common/url/api_path.dart | 3 + lib/domain/order/entities/order_entity.dart | 161 ++ lib/domain/order/failures/order_failure.dart | 10 + lib/domain/order/order.dart | 10 + lib/domain/order/order.freezed.dart | 2538 +++++++++++++++++ .../repositories/i_order_repository.dart | 10 + .../datasource/remote_data_provider.dart | 57 + lib/infrastructure/order/dto/order_dto.dart | 183 ++ lib/infrastructure/order/order_dtos.dart | 8 + .../order/order_dtos.freezed.dart | 2197 ++++++++++++++ lib/infrastructure/order/order_dtos.g.dart | 173 ++ .../order/repositories/order_repository.dart | 43 + lib/injection.config.dart | 16 + lib/presentation/pages/order/order_page.dart | 354 ++- .../pages/order/widgets/order_tile.dart | 252 +- 19 files changed, 6669 insertions(+), 277 deletions(-) create mode 100644 lib/application/order/order_loader/order_loader_bloc.dart create mode 100644 lib/application/order/order_loader/order_loader_bloc.freezed.dart create mode 100644 lib/application/order/order_loader/order_loader_event.dart create mode 100644 lib/application/order/order_loader/order_loader_state.dart create mode 100644 lib/domain/order/entities/order_entity.dart create mode 100644 lib/domain/order/failures/order_failure.dart create mode 100644 lib/domain/order/order.dart create mode 100644 lib/domain/order/order.freezed.dart create mode 100644 lib/domain/order/repositories/i_order_repository.dart create mode 100644 lib/infrastructure/order/datasource/remote_data_provider.dart create mode 100644 lib/infrastructure/order/dto/order_dto.dart create mode 100644 lib/infrastructure/order/order_dtos.dart create mode 100644 lib/infrastructure/order/order_dtos.freezed.dart create mode 100644 lib/infrastructure/order/order_dtos.g.dart create mode 100644 lib/infrastructure/order/repositories/order_repository.dart diff --git a/lib/application/order/order_loader/order_loader_bloc.dart b/lib/application/order/order_loader/order_loader_bloc.dart new file mode 100644 index 0000000..ee3589a --- /dev/null +++ b/lib/application/order/order_loader/order_loader_bloc.dart @@ -0,0 +1,90 @@ +import 'package:dartz/dartz.dart' hide Order; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart' hide Order; + +import '../../../domain/order/order.dart'; + +part 'order_loader_event.dart'; +part 'order_loader_state.dart'; +part 'order_loader_bloc.freezed.dart'; + +@injectable +class OrderLoaderBloc extends Bloc { + final IOrderRepository _repository; + OrderLoaderBloc(this._repository) : super(OrderLoaderState.initial()) { + on(_onOrderLoaderEvent); + } + + Future _onOrderLoaderEvent( + OrderLoaderEvent event, + Emitter emit, + ) { + return event.map( + statusChanged: (e) async { + emit(state.copyWith(status: e.status)); + }, + searchChanged: (e) async { + emit(state.copyWith(search: e.search)); + }, + fetched: (e) async { + var newState = state; + + if (e.isRefresh) { + newState = state.copyWith(isFetching: true); + + emit(newState); + } + + newState = await _mapFetchedToState(state, isRefresh: e.isRefresh); + + emit(newState); + }, + ); + } + + Future _mapFetchedToState( + OrderLoaderState state, { + bool isRefresh = false, + }) async { + state = state.copyWith(isFetching: false); + + if (state.hasReachedMax && state.orders.isNotEmpty && !isRefresh) { + return state; + } + + if (isRefresh) { + state = state.copyWith( + page: 1, + failureOptionOrder: none(), + hasReachedMax: false, + orders: [], + ); + } + + final failureOrOrder = await _repository.get( + status: state.status, + page: state.page, + search: state.search, + ); + + state = failureOrOrder.fold( + (f) { + if (state.orders.isNotEmpty) { + return state.copyWith(hasReachedMax: true); + } + return state.copyWith(failureOptionOrder: optionOf(f)); + }, + (orders) { + return state.copyWith( + orders: List.from(state.orders)..addAll(orders), + failureOptionOrder: none(), + page: state.page + 1, + hasReachedMax: orders.length < 10, + ); + }, + ); + + return state; + } +} diff --git a/lib/application/order/order_loader/order_loader_bloc.freezed.dart b/lib/application/order/order_loader/order_loader_bloc.freezed.dart new file mode 100644 index 0000000..4aed4c0 --- /dev/null +++ b/lib/application/order/order_loader/order_loader_bloc.freezed.dart @@ -0,0 +1,815 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'order_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$OrderLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(String status) statusChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String status)? statusChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String status)? statusChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_StatusChanged value) statusChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_StatusChanged value)? statusChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_StatusChanged value)? statusChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderLoaderEventCopyWith<$Res> { + factory $OrderLoaderEventCopyWith( + OrderLoaderEvent value, + $Res Function(OrderLoaderEvent) then, + ) = _$OrderLoaderEventCopyWithImpl<$Res, OrderLoaderEvent>; +} + +/// @nodoc +class _$OrderLoaderEventCopyWithImpl<$Res, $Val extends OrderLoaderEvent> + implements $OrderLoaderEventCopyWith<$Res> { + _$OrderLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$StatusChangedImplCopyWith<$Res> { + factory _$$StatusChangedImplCopyWith( + _$StatusChangedImpl value, + $Res Function(_$StatusChangedImpl) then, + ) = __$$StatusChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String status}); +} + +/// @nodoc +class __$$StatusChangedImplCopyWithImpl<$Res> + extends _$OrderLoaderEventCopyWithImpl<$Res, _$StatusChangedImpl> + implements _$$StatusChangedImplCopyWith<$Res> { + __$$StatusChangedImplCopyWithImpl( + _$StatusChangedImpl _value, + $Res Function(_$StatusChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? status = null}) { + return _then( + _$StatusChangedImpl( + null == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$StatusChangedImpl implements _StatusChanged { + const _$StatusChangedImpl(this.status); + + @override + final String status; + + @override + String toString() { + return 'OrderLoaderEvent.statusChanged(status: $status)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$StatusChangedImpl && + (identical(other.status, status) || other.status == status)); + } + + @override + int get hashCode => Object.hash(runtimeType, status); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$StatusChangedImplCopyWith<_$StatusChangedImpl> get copyWith => + __$$StatusChangedImplCopyWithImpl<_$StatusChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String status) statusChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return statusChanged(status); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String status)? statusChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return statusChanged?.call(status); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String status)? statusChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (statusChanged != null) { + return statusChanged(status); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_StatusChanged value) statusChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return statusChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_StatusChanged value)? statusChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return statusChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_StatusChanged value)? statusChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (statusChanged != null) { + return statusChanged(this); + } + return orElse(); + } +} + +abstract class _StatusChanged implements OrderLoaderEvent { + const factory _StatusChanged(final String status) = _$StatusChangedImpl; + + String get status; + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$StatusChangedImplCopyWith<_$StatusChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$SearchChangedImplCopyWith<$Res> { + factory _$$SearchChangedImplCopyWith( + _$SearchChangedImpl value, + $Res Function(_$SearchChangedImpl) then, + ) = __$$SearchChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String search}); +} + +/// @nodoc +class __$$SearchChangedImplCopyWithImpl<$Res> + extends _$OrderLoaderEventCopyWithImpl<$Res, _$SearchChangedImpl> + implements _$$SearchChangedImplCopyWith<$Res> { + __$$SearchChangedImplCopyWithImpl( + _$SearchChangedImpl _value, + $Res Function(_$SearchChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? search = null}) { + return _then( + _$SearchChangedImpl( + null == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$SearchChangedImpl implements _SearchChanged { + const _$SearchChangedImpl(this.search); + + @override + final String search; + + @override + String toString() { + return 'OrderLoaderEvent.searchChanged(search: $search)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SearchChangedImpl && + (identical(other.search, search) || other.search == search)); + } + + @override + int get hashCode => Object.hash(runtimeType, search); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + __$$SearchChangedImplCopyWithImpl<_$SearchChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String status) statusChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return searchChanged(search); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String status)? statusChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return searchChanged?.call(search); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String status)? statusChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(search); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_StatusChanged value) statusChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return searchChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_StatusChanged value)? statusChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return searchChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_StatusChanged value)? statusChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(this); + } + return orElse(); + } +} + +abstract class _SearchChanged implements OrderLoaderEvent { + const factory _SearchChanged(final String search) = _$SearchChangedImpl; + + String get search; + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; + @useResult + $Res call({bool isRefresh}); +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$OrderLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? isRefresh = null}) { + return _then( + _$FetchedImpl( + isRefresh: null == isRefresh + ? _value.isRefresh + : isRefresh // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl({this.isRefresh = false}); + + @override + @JsonKey() + final bool isRefresh; + + @override + String toString() { + return 'OrderLoaderEvent.fetched(isRefresh: $isRefresh)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$FetchedImpl && + (identical(other.isRefresh, isRefresh) || + other.isRefresh == isRefresh)); + } + + @override + int get hashCode => Object.hash(runtimeType, isRefresh); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + __$$FetchedImplCopyWithImpl<_$FetchedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String status) statusChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return fetched(isRefresh); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String status)? statusChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return fetched?.call(isRefresh); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String status)? statusChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(isRefresh); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_StatusChanged value) statusChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_StatusChanged value)? statusChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_StatusChanged value)? statusChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements OrderLoaderEvent { + const factory _Fetched({final bool isRefresh}) = _$FetchedImpl; + + bool get isRefresh; + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$OrderLoaderState { + List get orders => throw _privateConstructorUsedError; + Option get failureOptionOrder => + throw _privateConstructorUsedError; + String? get status => throw _privateConstructorUsedError; + String? get search => throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + bool get hasReachedMax => throw _privateConstructorUsedError; + int get page => throw _privateConstructorUsedError; + + /// Create a copy of OrderLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OrderLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderLoaderStateCopyWith<$Res> { + factory $OrderLoaderStateCopyWith( + OrderLoaderState value, + $Res Function(OrderLoaderState) then, + ) = _$OrderLoaderStateCopyWithImpl<$Res, OrderLoaderState>; + @useResult + $Res call({ + List orders, + Option failureOptionOrder, + String? status, + String? search, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class _$OrderLoaderStateCopyWithImpl<$Res, $Val extends OrderLoaderState> + implements $OrderLoaderStateCopyWith<$Res> { + _$OrderLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? orders = null, + Object? failureOptionOrder = null, + Object? status = freezed, + Object? search = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _value.copyWith( + orders: null == orders + ? _value.orders + : orders // ignore: cast_nullable_to_non_nullable + as List, + failureOptionOrder: null == failureOptionOrder + ? _value.failureOptionOrder + : failureOptionOrder // ignore: cast_nullable_to_non_nullable + as Option, + status: freezed == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String?, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OrderLoaderStateImplCopyWith<$Res> + implements $OrderLoaderStateCopyWith<$Res> { + factory _$$OrderLoaderStateImplCopyWith( + _$OrderLoaderStateImpl value, + $Res Function(_$OrderLoaderStateImpl) then, + ) = __$$OrderLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + List orders, + Option failureOptionOrder, + String? status, + String? search, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class __$$OrderLoaderStateImplCopyWithImpl<$Res> + extends _$OrderLoaderStateCopyWithImpl<$Res, _$OrderLoaderStateImpl> + implements _$$OrderLoaderStateImplCopyWith<$Res> { + __$$OrderLoaderStateImplCopyWithImpl( + _$OrderLoaderStateImpl _value, + $Res Function(_$OrderLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? orders = null, + Object? failureOptionOrder = null, + Object? status = freezed, + Object? search = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _$OrderLoaderStateImpl( + orders: null == orders + ? _value._orders + : orders // ignore: cast_nullable_to_non_nullable + as List, + failureOptionOrder: null == failureOptionOrder + ? _value.failureOptionOrder + : failureOptionOrder // ignore: cast_nullable_to_non_nullable + as Option, + status: freezed == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String?, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$OrderLoaderStateImpl implements _OrderLoaderState { + const _$OrderLoaderStateImpl({ + required final List orders, + required this.failureOptionOrder, + this.status, + this.search, + this.isFetching = false, + this.hasReachedMax = false, + this.page = 1, + }) : _orders = orders; + + final List _orders; + @override + List get orders { + if (_orders is EqualUnmodifiableListView) return _orders; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_orders); + } + + @override + final Option failureOptionOrder; + @override + final String? status; + @override + final String? search; + @override + @JsonKey() + final bool isFetching; + @override + @JsonKey() + final bool hasReachedMax; + @override + @JsonKey() + final int page; + + @override + String toString() { + return 'OrderLoaderState(orders: $orders, failureOptionOrder: $failureOptionOrder, status: $status, search: $search, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OrderLoaderStateImpl && + const DeepCollectionEquality().equals(other._orders, _orders) && + (identical(other.failureOptionOrder, failureOptionOrder) || + other.failureOptionOrder == failureOptionOrder) && + (identical(other.status, status) || other.status == status) && + (identical(other.search, search) || other.search == search) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching) && + (identical(other.hasReachedMax, hasReachedMax) || + other.hasReachedMax == hasReachedMax) && + (identical(other.page, page) || other.page == page)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(_orders), + failureOptionOrder, + status, + search, + isFetching, + hasReachedMax, + page, + ); + + /// Create a copy of OrderLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OrderLoaderStateImplCopyWith<_$OrderLoaderStateImpl> get copyWith => + __$$OrderLoaderStateImplCopyWithImpl<_$OrderLoaderStateImpl>( + this, + _$identity, + ); +} + +abstract class _OrderLoaderState implements OrderLoaderState { + const factory _OrderLoaderState({ + required final List orders, + required final Option failureOptionOrder, + final String? status, + final String? search, + final bool isFetching, + final bool hasReachedMax, + final int page, + }) = _$OrderLoaderStateImpl; + + @override + List get orders; + @override + Option get failureOptionOrder; + @override + String? get status; + @override + String? get search; + @override + bool get isFetching; + @override + bool get hasReachedMax; + @override + int get page; + + /// Create a copy of OrderLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OrderLoaderStateImplCopyWith<_$OrderLoaderStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/order/order_loader/order_loader_event.dart b/lib/application/order/order_loader/order_loader_event.dart new file mode 100644 index 0000000..6b83945 --- /dev/null +++ b/lib/application/order/order_loader/order_loader_event.dart @@ -0,0 +1,9 @@ +part of 'order_loader_bloc.dart'; + +@freezed +class OrderLoaderEvent with _$OrderLoaderEvent { + const factory OrderLoaderEvent.statusChanged(String status) = _StatusChanged; + const factory OrderLoaderEvent.searchChanged(String search) = _SearchChanged; + const factory OrderLoaderEvent.fetched({@Default(false) bool isRefresh}) = + _Fetched; +} diff --git a/lib/application/order/order_loader/order_loader_state.dart b/lib/application/order/order_loader/order_loader_state.dart new file mode 100644 index 0000000..55e072a --- /dev/null +++ b/lib/application/order/order_loader/order_loader_state.dart @@ -0,0 +1,17 @@ +part of 'order_loader_bloc.dart'; + +@freezed +class OrderLoaderState with _$OrderLoaderState { + const factory OrderLoaderState({ + required List orders, + required Option failureOptionOrder, + String? status, + String? search, + @Default(false) bool isFetching, + @Default(false) bool hasReachedMax, + @Default(1) int page, + }) = _OrderLoaderState; + + factory OrderLoaderState.initial() => + OrderLoaderState(orders: [], failureOptionOrder: none()); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 20031cf..875d092 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -24,4 +24,7 @@ class ApiPath { // Customer static const String customer = '/api/v1/customers'; + + // Order + static const String order = '/api/v1/orders'; } diff --git a/lib/domain/order/entities/order_entity.dart b/lib/domain/order/entities/order_entity.dart new file mode 100644 index 0000000..f921570 --- /dev/null +++ b/lib/domain/order/entities/order_entity.dart @@ -0,0 +1,161 @@ +part of '../order.dart'; + +@freezed +class Order with _$Order { + const factory Order({ + required String id, + required String orderNumber, + required String outletId, + required String userId, + required String tableNumber, + required String orderType, + required String status, + required int subtotal, + required int taxAmount, + required int discountAmount, + required int totalAmount, + required int totalCost, + required int remainingAmount, + required String paymentStatus, + required int refundAmount, + required bool isVoid, + required bool isRefund, + required String notes, + required Map metadata, + required String createdAt, + required String updatedAt, + required List orderItems, + required List payments, + required int totalPaid, + required int paymentCount, + required String splitType, + }) = _Order; + + factory Order.empty() => Order( + id: '', + orderNumber: '', + outletId: '', + userId: '', + tableNumber: '', + orderType: '', + status: '', + subtotal: 0, + taxAmount: 0, + discountAmount: 0, + totalAmount: 0, + totalCost: 0, + remainingAmount: 0, + paymentStatus: '', + refundAmount: 0, + isVoid: false, + isRefund: false, + notes: '', + metadata: {}, + createdAt: '', + updatedAt: '', + orderItems: [], + payments: [], + totalPaid: 0, + paymentCount: 0, + splitType: '', + ); +} + +@freezed +class OrderItem with _$OrderItem { + const factory OrderItem({ + required String id, + required String orderId, + required String productId, + required String productName, + required int quantity, + required int price, + required int subtotal, + required int discountAmount, + required int total, + required int cost, + required Map metadata, + required String createdAt, + required String updatedAt, + }) = _OrderItem; + + factory OrderItem.empty() => OrderItem( + id: '', + orderId: '', + productId: '', + productName: '', + quantity: 0, + price: 0, + subtotal: 0, + discountAmount: 0, + total: 0, + cost: 0, + metadata: {}, + createdAt: '', + updatedAt: '', + ); +} + +@freezed +class OrderPayment with _$OrderPayment { + const factory OrderPayment({ + required String id, + required String orderId, + required String paymentMethodId, + required String paymentMethodName, + required String paymentMethodType, + required int amount, + required String status, + required int splitNumber, + required int splitTotal, + required String splitType, + required String splitDescription, + required int refundAmount, + required Map metadata, + required String createdAt, + required String updatedAt, + required List paymentOrderItems, + }) = _OrderPayment; + + factory OrderPayment.empty() => OrderPayment( + id: '', + orderId: '', + paymentMethodId: '', + paymentMethodName: '', + paymentMethodType: '', + amount: 0, + status: '', + splitNumber: 0, + splitTotal: 0, + splitType: '', + splitDescription: '', + refundAmount: 0, + metadata: {}, + createdAt: '', + updatedAt: '', + paymentOrderItems: [], + ); +} + +@freezed +class PaymentOrderItem with _$PaymentOrderItem { + const factory PaymentOrderItem({ + required String id, + required String orderPaymentId, + required String orderItemId, + required int amount, + required int refundAmount, + required String createdAt, + required String updatedAt, + }) = _PaymentOrderItem; + + factory PaymentOrderItem.empty() => PaymentOrderItem( + id: '', + orderPaymentId: '', + orderItemId: '', + amount: 0, + refundAmount: 0, + createdAt: '', + updatedAt: '', + ); +} diff --git a/lib/domain/order/failures/order_failure.dart b/lib/domain/order/failures/order_failure.dart new file mode 100644 index 0000000..ed26fe4 --- /dev/null +++ b/lib/domain/order/failures/order_failure.dart @@ -0,0 +1,10 @@ +part of '../order.dart'; + +@freezed +sealed class OrderFailure with _$OrderFailure { + const factory OrderFailure.serverError(ApiFailure failure) = _ServerError; + const factory OrderFailure.unexpectedError() = _UnexpectedError; + const factory OrderFailure.empty() = _Empty; + const factory OrderFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/order/order.dart b/lib/domain/order/order.dart new file mode 100644 index 0000000..73e8ed4 --- /dev/null +++ b/lib/domain/order/order.dart @@ -0,0 +1,10 @@ +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../common/api/api_failure.dart'; + +part 'order.freezed.dart'; + +part 'entities/order_entity.dart'; +part 'failures/order_failure.dart'; +part 'repositories/i_order_repository.dart'; diff --git a/lib/domain/order/order.freezed.dart b/lib/domain/order/order.freezed.dart new file mode 100644 index 0000000..3c8f628 --- /dev/null +++ b/lib/domain/order/order.freezed.dart @@ -0,0 +1,2538 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'order.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$Order { + String get id => throw _privateConstructorUsedError; + String get orderNumber => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get userId => throw _privateConstructorUsedError; + String get tableNumber => throw _privateConstructorUsedError; + String get orderType => throw _privateConstructorUsedError; + String get status => throw _privateConstructorUsedError; + int get subtotal => throw _privateConstructorUsedError; + int get taxAmount => throw _privateConstructorUsedError; + int get discountAmount => throw _privateConstructorUsedError; + int get totalAmount => throw _privateConstructorUsedError; + int get totalCost => throw _privateConstructorUsedError; + int get remainingAmount => throw _privateConstructorUsedError; + String get paymentStatus => throw _privateConstructorUsedError; + int get refundAmount => throw _privateConstructorUsedError; + bool get isVoid => throw _privateConstructorUsedError; + bool get isRefund => throw _privateConstructorUsedError; + String get notes => throw _privateConstructorUsedError; + Map get metadata => throw _privateConstructorUsedError; + String get createdAt => throw _privateConstructorUsedError; + String get updatedAt => throw _privateConstructorUsedError; + List get orderItems => throw _privateConstructorUsedError; + List get payments => throw _privateConstructorUsedError; + int get totalPaid => throw _privateConstructorUsedError; + int get paymentCount => throw _privateConstructorUsedError; + String get splitType => throw _privateConstructorUsedError; + + /// Create a copy of Order + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OrderCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderCopyWith<$Res> { + factory $OrderCopyWith(Order value, $Res Function(Order) then) = + _$OrderCopyWithImpl<$Res, Order>; + @useResult + $Res call({ + String id, + String orderNumber, + String outletId, + String userId, + String tableNumber, + String orderType, + String status, + int subtotal, + int taxAmount, + int discountAmount, + int totalAmount, + int totalCost, + int remainingAmount, + String paymentStatus, + int refundAmount, + bool isVoid, + bool isRefund, + String notes, + Map metadata, + String createdAt, + String updatedAt, + List orderItems, + List payments, + int totalPaid, + int paymentCount, + String splitType, + }); +} + +/// @nodoc +class _$OrderCopyWithImpl<$Res, $Val extends Order> + implements $OrderCopyWith<$Res> { + _$OrderCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Order + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderNumber = null, + Object? outletId = null, + Object? userId = null, + Object? tableNumber = null, + Object? orderType = null, + Object? status = null, + Object? subtotal = null, + Object? taxAmount = null, + Object? discountAmount = null, + Object? totalAmount = null, + Object? totalCost = null, + Object? remainingAmount = null, + Object? paymentStatus = null, + Object? refundAmount = null, + Object? isVoid = null, + Object? isRefund = null, + Object? notes = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + Object? orderItems = null, + Object? payments = null, + Object? totalPaid = null, + Object? paymentCount = null, + Object? splitType = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderNumber: null == orderNumber + ? _value.orderNumber + : orderNumber // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + userId: null == userId + ? _value.userId + : userId // ignore: cast_nullable_to_non_nullable + as String, + tableNumber: null == tableNumber + ? _value.tableNumber + : tableNumber // ignore: cast_nullable_to_non_nullable + as String, + orderType: null == orderType + ? _value.orderType + : orderType // ignore: cast_nullable_to_non_nullable + as String, + status: null == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String, + subtotal: null == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int, + taxAmount: null == taxAmount + ? _value.taxAmount + : taxAmount // ignore: cast_nullable_to_non_nullable + as int, + discountAmount: null == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int, + totalCost: null == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int, + remainingAmount: null == remainingAmount + ? _value.remainingAmount + : remainingAmount // ignore: cast_nullable_to_non_nullable + as int, + paymentStatus: null == paymentStatus + ? _value.paymentStatus + : paymentStatus // ignore: cast_nullable_to_non_nullable + as String, + refundAmount: null == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int, + isVoid: null == isVoid + ? _value.isVoid + : isVoid // ignore: cast_nullable_to_non_nullable + as bool, + isRefund: null == isRefund + ? _value.isRefund + : isRefund // ignore: cast_nullable_to_non_nullable + as bool, + notes: null == notes + ? _value.notes + : notes // ignore: cast_nullable_to_non_nullable + as String, + metadata: null == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + orderItems: null == orderItems + ? _value.orderItems + : orderItems // ignore: cast_nullable_to_non_nullable + as List, + payments: null == payments + ? _value.payments + : payments // ignore: cast_nullable_to_non_nullable + as List, + totalPaid: null == totalPaid + ? _value.totalPaid + : totalPaid // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + splitType: null == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OrderImplCopyWith<$Res> implements $OrderCopyWith<$Res> { + factory _$$OrderImplCopyWith( + _$OrderImpl value, + $Res Function(_$OrderImpl) then, + ) = __$$OrderImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String orderNumber, + String outletId, + String userId, + String tableNumber, + String orderType, + String status, + int subtotal, + int taxAmount, + int discountAmount, + int totalAmount, + int totalCost, + int remainingAmount, + String paymentStatus, + int refundAmount, + bool isVoid, + bool isRefund, + String notes, + Map metadata, + String createdAt, + String updatedAt, + List orderItems, + List payments, + int totalPaid, + int paymentCount, + String splitType, + }); +} + +/// @nodoc +class __$$OrderImplCopyWithImpl<$Res> + extends _$OrderCopyWithImpl<$Res, _$OrderImpl> + implements _$$OrderImplCopyWith<$Res> { + __$$OrderImplCopyWithImpl( + _$OrderImpl _value, + $Res Function(_$OrderImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Order + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderNumber = null, + Object? outletId = null, + Object? userId = null, + Object? tableNumber = null, + Object? orderType = null, + Object? status = null, + Object? subtotal = null, + Object? taxAmount = null, + Object? discountAmount = null, + Object? totalAmount = null, + Object? totalCost = null, + Object? remainingAmount = null, + Object? paymentStatus = null, + Object? refundAmount = null, + Object? isVoid = null, + Object? isRefund = null, + Object? notes = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + Object? orderItems = null, + Object? payments = null, + Object? totalPaid = null, + Object? paymentCount = null, + Object? splitType = null, + }) { + return _then( + _$OrderImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderNumber: null == orderNumber + ? _value.orderNumber + : orderNumber // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + userId: null == userId + ? _value.userId + : userId // ignore: cast_nullable_to_non_nullable + as String, + tableNumber: null == tableNumber + ? _value.tableNumber + : tableNumber // ignore: cast_nullable_to_non_nullable + as String, + orderType: null == orderType + ? _value.orderType + : orderType // ignore: cast_nullable_to_non_nullable + as String, + status: null == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String, + subtotal: null == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int, + taxAmount: null == taxAmount + ? _value.taxAmount + : taxAmount // ignore: cast_nullable_to_non_nullable + as int, + discountAmount: null == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int, + totalAmount: null == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int, + totalCost: null == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int, + remainingAmount: null == remainingAmount + ? _value.remainingAmount + : remainingAmount // ignore: cast_nullable_to_non_nullable + as int, + paymentStatus: null == paymentStatus + ? _value.paymentStatus + : paymentStatus // ignore: cast_nullable_to_non_nullable + as String, + refundAmount: null == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int, + isVoid: null == isVoid + ? _value.isVoid + : isVoid // ignore: cast_nullable_to_non_nullable + as bool, + isRefund: null == isRefund + ? _value.isRefund + : isRefund // ignore: cast_nullable_to_non_nullable + as bool, + notes: null == notes + ? _value.notes + : notes // ignore: cast_nullable_to_non_nullable + as String, + metadata: null == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + orderItems: null == orderItems + ? _value._orderItems + : orderItems // ignore: cast_nullable_to_non_nullable + as List, + payments: null == payments + ? _value._payments + : payments // ignore: cast_nullable_to_non_nullable + as List, + totalPaid: null == totalPaid + ? _value.totalPaid + : totalPaid // ignore: cast_nullable_to_non_nullable + as int, + paymentCount: null == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int, + splitType: null == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$OrderImpl implements _Order { + const _$OrderImpl({ + required this.id, + required this.orderNumber, + required this.outletId, + required this.userId, + required this.tableNumber, + required this.orderType, + required this.status, + required this.subtotal, + required this.taxAmount, + required this.discountAmount, + required this.totalAmount, + required this.totalCost, + required this.remainingAmount, + required this.paymentStatus, + required this.refundAmount, + required this.isVoid, + required this.isRefund, + required this.notes, + required final Map metadata, + required this.createdAt, + required this.updatedAt, + required final List orderItems, + required final List payments, + required this.totalPaid, + required this.paymentCount, + required this.splitType, + }) : _metadata = metadata, + _orderItems = orderItems, + _payments = payments; + + @override + final String id; + @override + final String orderNumber; + @override + final String outletId; + @override + final String userId; + @override + final String tableNumber; + @override + final String orderType; + @override + final String status; + @override + final int subtotal; + @override + final int taxAmount; + @override + final int discountAmount; + @override + final int totalAmount; + @override + final int totalCost; + @override + final int remainingAmount; + @override + final String paymentStatus; + @override + final int refundAmount; + @override + final bool isVoid; + @override + final bool isRefund; + @override + final String notes; + final Map _metadata; + @override + Map get metadata { + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_metadata); + } + + @override + final String createdAt; + @override + final String updatedAt; + final List _orderItems; + @override + List get orderItems { + if (_orderItems is EqualUnmodifiableListView) return _orderItems; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_orderItems); + } + + final List _payments; + @override + List get payments { + if (_payments is EqualUnmodifiableListView) return _payments; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_payments); + } + + @override + final int totalPaid; + @override + final int paymentCount; + @override + final String splitType; + + @override + String toString() { + return 'Order(id: $id, orderNumber: $orderNumber, outletId: $outletId, userId: $userId, tableNumber: $tableNumber, orderType: $orderType, status: $status, subtotal: $subtotal, taxAmount: $taxAmount, discountAmount: $discountAmount, totalAmount: $totalAmount, totalCost: $totalCost, remainingAmount: $remainingAmount, paymentStatus: $paymentStatus, refundAmount: $refundAmount, isVoid: $isVoid, isRefund: $isRefund, notes: $notes, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt, orderItems: $orderItems, payments: $payments, totalPaid: $totalPaid, paymentCount: $paymentCount, splitType: $splitType)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OrderImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderNumber, orderNumber) || + other.orderNumber == orderNumber) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.userId, userId) || other.userId == userId) && + (identical(other.tableNumber, tableNumber) || + other.tableNumber == tableNumber) && + (identical(other.orderType, orderType) || + other.orderType == orderType) && + (identical(other.status, status) || other.status == status) && + (identical(other.subtotal, subtotal) || + other.subtotal == subtotal) && + (identical(other.taxAmount, taxAmount) || + other.taxAmount == taxAmount) && + (identical(other.discountAmount, discountAmount) || + other.discountAmount == discountAmount) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.totalCost, totalCost) || + other.totalCost == totalCost) && + (identical(other.remainingAmount, remainingAmount) || + other.remainingAmount == remainingAmount) && + (identical(other.paymentStatus, paymentStatus) || + other.paymentStatus == paymentStatus) && + (identical(other.refundAmount, refundAmount) || + other.refundAmount == refundAmount) && + (identical(other.isVoid, isVoid) || other.isVoid == isVoid) && + (identical(other.isRefund, isRefund) || + other.isRefund == isRefund) && + (identical(other.notes, notes) || other.notes == notes) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt) && + const DeepCollectionEquality().equals( + other._orderItems, + _orderItems, + ) && + const DeepCollectionEquality().equals(other._payments, _payments) && + (identical(other.totalPaid, totalPaid) || + other.totalPaid == totalPaid) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.splitType, splitType) || + other.splitType == splitType)); + } + + @override + int get hashCode => Object.hashAll([ + runtimeType, + id, + orderNumber, + outletId, + userId, + tableNumber, + orderType, + status, + subtotal, + taxAmount, + discountAmount, + totalAmount, + totalCost, + remainingAmount, + paymentStatus, + refundAmount, + isVoid, + isRefund, + notes, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + const DeepCollectionEquality().hash(_orderItems), + const DeepCollectionEquality().hash(_payments), + totalPaid, + paymentCount, + splitType, + ]); + + /// Create a copy of Order + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OrderImplCopyWith<_$OrderImpl> get copyWith => + __$$OrderImplCopyWithImpl<_$OrderImpl>(this, _$identity); +} + +abstract class _Order implements Order { + const factory _Order({ + required final String id, + required final String orderNumber, + required final String outletId, + required final String userId, + required final String tableNumber, + required final String orderType, + required final String status, + required final int subtotal, + required final int taxAmount, + required final int discountAmount, + required final int totalAmount, + required final int totalCost, + required final int remainingAmount, + required final String paymentStatus, + required final int refundAmount, + required final bool isVoid, + required final bool isRefund, + required final String notes, + required final Map metadata, + required final String createdAt, + required final String updatedAt, + required final List orderItems, + required final List payments, + required final int totalPaid, + required final int paymentCount, + required final String splitType, + }) = _$OrderImpl; + + @override + String get id; + @override + String get orderNumber; + @override + String get outletId; + @override + String get userId; + @override + String get tableNumber; + @override + String get orderType; + @override + String get status; + @override + int get subtotal; + @override + int get taxAmount; + @override + int get discountAmount; + @override + int get totalAmount; + @override + int get totalCost; + @override + int get remainingAmount; + @override + String get paymentStatus; + @override + int get refundAmount; + @override + bool get isVoid; + @override + bool get isRefund; + @override + String get notes; + @override + Map get metadata; + @override + String get createdAt; + @override + String get updatedAt; + @override + List get orderItems; + @override + List get payments; + @override + int get totalPaid; + @override + int get paymentCount; + @override + String get splitType; + + /// Create a copy of Order + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OrderImplCopyWith<_$OrderImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$OrderItem { + String get id => throw _privateConstructorUsedError; + String get orderId => throw _privateConstructorUsedError; + String get productId => throw _privateConstructorUsedError; + String get productName => throw _privateConstructorUsedError; + int get quantity => throw _privateConstructorUsedError; + int get price => throw _privateConstructorUsedError; + int get subtotal => throw _privateConstructorUsedError; + int get discountAmount => throw _privateConstructorUsedError; + int get total => throw _privateConstructorUsedError; + int get cost => throw _privateConstructorUsedError; + Map get metadata => throw _privateConstructorUsedError; + String get createdAt => throw _privateConstructorUsedError; + String get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of OrderItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OrderItemCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderItemCopyWith<$Res> { + factory $OrderItemCopyWith(OrderItem value, $Res Function(OrderItem) then) = + _$OrderItemCopyWithImpl<$Res, OrderItem>; + @useResult + $Res call({ + String id, + String orderId, + String productId, + String productName, + int quantity, + int price, + int subtotal, + int discountAmount, + int total, + int cost, + Map metadata, + String createdAt, + String updatedAt, + }); +} + +/// @nodoc +class _$OrderItemCopyWithImpl<$Res, $Val extends OrderItem> + implements $OrderItemCopyWith<$Res> { + _$OrderItemCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderId = null, + Object? productId = null, + Object? productName = null, + Object? quantity = null, + Object? price = null, + Object? subtotal = null, + Object? discountAmount = null, + Object? total = null, + Object? cost = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderId: null == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String, + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + quantity: null == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int, + price: null == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int, + subtotal: null == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int, + discountAmount: null == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int, + total: null == total + ? _value.total + : total // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + metadata: null == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OrderItemImplCopyWith<$Res> + implements $OrderItemCopyWith<$Res> { + factory _$$OrderItemImplCopyWith( + _$OrderItemImpl value, + $Res Function(_$OrderItemImpl) then, + ) = __$$OrderItemImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String orderId, + String productId, + String productName, + int quantity, + int price, + int subtotal, + int discountAmount, + int total, + int cost, + Map metadata, + String createdAt, + String updatedAt, + }); +} + +/// @nodoc +class __$$OrderItemImplCopyWithImpl<$Res> + extends _$OrderItemCopyWithImpl<$Res, _$OrderItemImpl> + implements _$$OrderItemImplCopyWith<$Res> { + __$$OrderItemImplCopyWithImpl( + _$OrderItemImpl _value, + $Res Function(_$OrderItemImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderId = null, + Object? productId = null, + Object? productName = null, + Object? quantity = null, + Object? price = null, + Object? subtotal = null, + Object? discountAmount = null, + Object? total = null, + Object? cost = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _$OrderItemImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderId: null == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String, + productId: null == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String, + productName: null == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String, + quantity: null == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int, + price: null == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int, + subtotal: null == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int, + discountAmount: null == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int, + total: null == total + ? _value.total + : total // ignore: cast_nullable_to_non_nullable + as int, + cost: null == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int, + metadata: null == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$OrderItemImpl implements _OrderItem { + const _$OrderItemImpl({ + required this.id, + required this.orderId, + required this.productId, + required this.productName, + required this.quantity, + required this.price, + required this.subtotal, + required this.discountAmount, + required this.total, + required this.cost, + required final Map metadata, + required this.createdAt, + required this.updatedAt, + }) : _metadata = metadata; + + @override + final String id; + @override + final String orderId; + @override + final String productId; + @override + final String productName; + @override + final int quantity; + @override + final int price; + @override + final int subtotal; + @override + final int discountAmount; + @override + final int total; + @override + final int cost; + final Map _metadata; + @override + Map get metadata { + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_metadata); + } + + @override + final String createdAt; + @override + final String updatedAt; + + @override + String toString() { + return 'OrderItem(id: $id, orderId: $orderId, productId: $productId, productName: $productName, quantity: $quantity, price: $price, subtotal: $subtotal, discountAmount: $discountAmount, total: $total, cost: $cost, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OrderItemImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderId, orderId) || other.orderId == orderId) && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.quantity, quantity) || + other.quantity == quantity) && + (identical(other.price, price) || other.price == price) && + (identical(other.subtotal, subtotal) || + other.subtotal == subtotal) && + (identical(other.discountAmount, discountAmount) || + other.discountAmount == discountAmount) && + (identical(other.total, total) || other.total == total) && + (identical(other.cost, cost) || other.cost == cost) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + orderId, + productId, + productName, + quantity, + price, + subtotal, + discountAmount, + total, + cost, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of OrderItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OrderItemImplCopyWith<_$OrderItemImpl> get copyWith => + __$$OrderItemImplCopyWithImpl<_$OrderItemImpl>(this, _$identity); +} + +abstract class _OrderItem implements OrderItem { + const factory _OrderItem({ + required final String id, + required final String orderId, + required final String productId, + required final String productName, + required final int quantity, + required final int price, + required final int subtotal, + required final int discountAmount, + required final int total, + required final int cost, + required final Map metadata, + required final String createdAt, + required final String updatedAt, + }) = _$OrderItemImpl; + + @override + String get id; + @override + String get orderId; + @override + String get productId; + @override + String get productName; + @override + int get quantity; + @override + int get price; + @override + int get subtotal; + @override + int get discountAmount; + @override + int get total; + @override + int get cost; + @override + Map get metadata; + @override + String get createdAt; + @override + String get updatedAt; + + /// Create a copy of OrderItem + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OrderItemImplCopyWith<_$OrderItemImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$OrderPayment { + String get id => throw _privateConstructorUsedError; + String get orderId => throw _privateConstructorUsedError; + String get paymentMethodId => throw _privateConstructorUsedError; + String get paymentMethodName => throw _privateConstructorUsedError; + String get paymentMethodType => throw _privateConstructorUsedError; + int get amount => throw _privateConstructorUsedError; + String get status => throw _privateConstructorUsedError; + int get splitNumber => throw _privateConstructorUsedError; + int get splitTotal => throw _privateConstructorUsedError; + String get splitType => throw _privateConstructorUsedError; + String get splitDescription => throw _privateConstructorUsedError; + int get refundAmount => throw _privateConstructorUsedError; + Map get metadata => throw _privateConstructorUsedError; + String get createdAt => throw _privateConstructorUsedError; + String get updatedAt => throw _privateConstructorUsedError; + List get paymentOrderItems => + throw _privateConstructorUsedError; + + /// Create a copy of OrderPayment + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OrderPaymentCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderPaymentCopyWith<$Res> { + factory $OrderPaymentCopyWith( + OrderPayment value, + $Res Function(OrderPayment) then, + ) = _$OrderPaymentCopyWithImpl<$Res, OrderPayment>; + @useResult + $Res call({ + String id, + String orderId, + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + int amount, + String status, + int splitNumber, + int splitTotal, + String splitType, + String splitDescription, + int refundAmount, + Map metadata, + String createdAt, + String updatedAt, + List paymentOrderItems, + }); +} + +/// @nodoc +class _$OrderPaymentCopyWithImpl<$Res, $Val extends OrderPayment> + implements $OrderPaymentCopyWith<$Res> { + _$OrderPaymentCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderPayment + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderId = null, + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? amount = null, + Object? status = null, + Object? splitNumber = null, + Object? splitTotal = null, + Object? splitType = null, + Object? splitDescription = null, + Object? refundAmount = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + Object? paymentOrderItems = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderId: null == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + amount: null == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int, + status: null == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String, + splitNumber: null == splitNumber + ? _value.splitNumber + : splitNumber // ignore: cast_nullable_to_non_nullable + as int, + splitTotal: null == splitTotal + ? _value.splitTotal + : splitTotal // ignore: cast_nullable_to_non_nullable + as int, + splitType: null == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String, + splitDescription: null == splitDescription + ? _value.splitDescription + : splitDescription // ignore: cast_nullable_to_non_nullable + as String, + refundAmount: null == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int, + metadata: null == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + paymentOrderItems: null == paymentOrderItems + ? _value.paymentOrderItems + : paymentOrderItems // ignore: cast_nullable_to_non_nullable + as List, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OrderPaymentImplCopyWith<$Res> + implements $OrderPaymentCopyWith<$Res> { + factory _$$OrderPaymentImplCopyWith( + _$OrderPaymentImpl value, + $Res Function(_$OrderPaymentImpl) then, + ) = __$$OrderPaymentImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String orderId, + String paymentMethodId, + String paymentMethodName, + String paymentMethodType, + int amount, + String status, + int splitNumber, + int splitTotal, + String splitType, + String splitDescription, + int refundAmount, + Map metadata, + String createdAt, + String updatedAt, + List paymentOrderItems, + }); +} + +/// @nodoc +class __$$OrderPaymentImplCopyWithImpl<$Res> + extends _$OrderPaymentCopyWithImpl<$Res, _$OrderPaymentImpl> + implements _$$OrderPaymentImplCopyWith<$Res> { + __$$OrderPaymentImplCopyWithImpl( + _$OrderPaymentImpl _value, + $Res Function(_$OrderPaymentImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderPayment + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderId = null, + Object? paymentMethodId = null, + Object? paymentMethodName = null, + Object? paymentMethodType = null, + Object? amount = null, + Object? status = null, + Object? splitNumber = null, + Object? splitTotal = null, + Object? splitType = null, + Object? splitDescription = null, + Object? refundAmount = null, + Object? metadata = null, + Object? createdAt = null, + Object? updatedAt = null, + Object? paymentOrderItems = null, + }) { + return _then( + _$OrderPaymentImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderId: null == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodId: null == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodName: null == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String, + paymentMethodType: null == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String, + amount: null == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int, + status: null == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String, + splitNumber: null == splitNumber + ? _value.splitNumber + : splitNumber // ignore: cast_nullable_to_non_nullable + as int, + splitTotal: null == splitTotal + ? _value.splitTotal + : splitTotal // ignore: cast_nullable_to_non_nullable + as int, + splitType: null == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String, + splitDescription: null == splitDescription + ? _value.splitDescription + : splitDescription // ignore: cast_nullable_to_non_nullable + as String, + refundAmount: null == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int, + metadata: null == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + paymentOrderItems: null == paymentOrderItems + ? _value._paymentOrderItems + : paymentOrderItems // ignore: cast_nullable_to_non_nullable + as List, + ), + ); + } +} + +/// @nodoc + +class _$OrderPaymentImpl implements _OrderPayment { + const _$OrderPaymentImpl({ + required this.id, + required this.orderId, + required this.paymentMethodId, + required this.paymentMethodName, + required this.paymentMethodType, + required this.amount, + required this.status, + required this.splitNumber, + required this.splitTotal, + required this.splitType, + required this.splitDescription, + required this.refundAmount, + required final Map metadata, + required this.createdAt, + required this.updatedAt, + required final List paymentOrderItems, + }) : _metadata = metadata, + _paymentOrderItems = paymentOrderItems; + + @override + final String id; + @override + final String orderId; + @override + final String paymentMethodId; + @override + final String paymentMethodName; + @override + final String paymentMethodType; + @override + final int amount; + @override + final String status; + @override + final int splitNumber; + @override + final int splitTotal; + @override + final String splitType; + @override + final String splitDescription; + @override + final int refundAmount; + final Map _metadata; + @override + Map get metadata { + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_metadata); + } + + @override + final String createdAt; + @override + final String updatedAt; + final List _paymentOrderItems; + @override + List get paymentOrderItems { + if (_paymentOrderItems is EqualUnmodifiableListView) + return _paymentOrderItems; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_paymentOrderItems); + } + + @override + String toString() { + return 'OrderPayment(id: $id, orderId: $orderId, paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, amount: $amount, status: $status, splitNumber: $splitNumber, splitTotal: $splitTotal, splitType: $splitType, splitDescription: $splitDescription, refundAmount: $refundAmount, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt, paymentOrderItems: $paymentOrderItems)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OrderPaymentImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderId, orderId) || other.orderId == orderId) && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.amount, amount) || other.amount == amount) && + (identical(other.status, status) || other.status == status) && + (identical(other.splitNumber, splitNumber) || + other.splitNumber == splitNumber) && + (identical(other.splitTotal, splitTotal) || + other.splitTotal == splitTotal) && + (identical(other.splitType, splitType) || + other.splitType == splitType) && + (identical(other.splitDescription, splitDescription) || + other.splitDescription == splitDescription) && + (identical(other.refundAmount, refundAmount) || + other.refundAmount == refundAmount) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt) && + const DeepCollectionEquality().equals( + other._paymentOrderItems, + _paymentOrderItems, + )); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + orderId, + paymentMethodId, + paymentMethodName, + paymentMethodType, + amount, + status, + splitNumber, + splitTotal, + splitType, + splitDescription, + refundAmount, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + const DeepCollectionEquality().hash(_paymentOrderItems), + ); + + /// Create a copy of OrderPayment + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OrderPaymentImplCopyWith<_$OrderPaymentImpl> get copyWith => + __$$OrderPaymentImplCopyWithImpl<_$OrderPaymentImpl>(this, _$identity); +} + +abstract class _OrderPayment implements OrderPayment { + const factory _OrderPayment({ + required final String id, + required final String orderId, + required final String paymentMethodId, + required final String paymentMethodName, + required final String paymentMethodType, + required final int amount, + required final String status, + required final int splitNumber, + required final int splitTotal, + required final String splitType, + required final String splitDescription, + required final int refundAmount, + required final Map metadata, + required final String createdAt, + required final String updatedAt, + required final List paymentOrderItems, + }) = _$OrderPaymentImpl; + + @override + String get id; + @override + String get orderId; + @override + String get paymentMethodId; + @override + String get paymentMethodName; + @override + String get paymentMethodType; + @override + int get amount; + @override + String get status; + @override + int get splitNumber; + @override + int get splitTotal; + @override + String get splitType; + @override + String get splitDescription; + @override + int get refundAmount; + @override + Map get metadata; + @override + String get createdAt; + @override + String get updatedAt; + @override + List get paymentOrderItems; + + /// Create a copy of OrderPayment + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OrderPaymentImplCopyWith<_$OrderPaymentImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$PaymentOrderItem { + String get id => throw _privateConstructorUsedError; + String get orderPaymentId => throw _privateConstructorUsedError; + String get orderItemId => throw _privateConstructorUsedError; + int get amount => throw _privateConstructorUsedError; + int get refundAmount => throw _privateConstructorUsedError; + String get createdAt => throw _privateConstructorUsedError; + String get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of PaymentOrderItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentOrderItemCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentOrderItemCopyWith<$Res> { + factory $PaymentOrderItemCopyWith( + PaymentOrderItem value, + $Res Function(PaymentOrderItem) then, + ) = _$PaymentOrderItemCopyWithImpl<$Res, PaymentOrderItem>; + @useResult + $Res call({ + String id, + String orderPaymentId, + String orderItemId, + int amount, + int refundAmount, + String createdAt, + String updatedAt, + }); +} + +/// @nodoc +class _$PaymentOrderItemCopyWithImpl<$Res, $Val extends PaymentOrderItem> + implements $PaymentOrderItemCopyWith<$Res> { + _$PaymentOrderItemCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentOrderItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderPaymentId = null, + Object? orderItemId = null, + Object? amount = null, + Object? refundAmount = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderPaymentId: null == orderPaymentId + ? _value.orderPaymentId + : orderPaymentId // ignore: cast_nullable_to_non_nullable + as String, + orderItemId: null == orderItemId + ? _value.orderItemId + : orderItemId // ignore: cast_nullable_to_non_nullable + as String, + amount: null == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int, + refundAmount: null == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentOrderItemImplCopyWith<$Res> + implements $PaymentOrderItemCopyWith<$Res> { + factory _$$PaymentOrderItemImplCopyWith( + _$PaymentOrderItemImpl value, + $Res Function(_$PaymentOrderItemImpl) then, + ) = __$$PaymentOrderItemImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String orderPaymentId, + String orderItemId, + int amount, + int refundAmount, + String createdAt, + String updatedAt, + }); +} + +/// @nodoc +class __$$PaymentOrderItemImplCopyWithImpl<$Res> + extends _$PaymentOrderItemCopyWithImpl<$Res, _$PaymentOrderItemImpl> + implements _$$PaymentOrderItemImplCopyWith<$Res> { + __$$PaymentOrderItemImplCopyWithImpl( + _$PaymentOrderItemImpl _value, + $Res Function(_$PaymentOrderItemImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentOrderItem + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? orderPaymentId = null, + Object? orderItemId = null, + Object? amount = null, + Object? refundAmount = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _$PaymentOrderItemImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + orderPaymentId: null == orderPaymentId + ? _value.orderPaymentId + : orderPaymentId // ignore: cast_nullable_to_non_nullable + as String, + orderItemId: null == orderItemId + ? _value.orderItemId + : orderItemId // ignore: cast_nullable_to_non_nullable + as String, + amount: null == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int, + refundAmount: null == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$PaymentOrderItemImpl implements _PaymentOrderItem { + const _$PaymentOrderItemImpl({ + required this.id, + required this.orderPaymentId, + required this.orderItemId, + required this.amount, + required this.refundAmount, + required this.createdAt, + required this.updatedAt, + }); + + @override + final String id; + @override + final String orderPaymentId; + @override + final String orderItemId; + @override + final int amount; + @override + final int refundAmount; + @override + final String createdAt; + @override + final String updatedAt; + + @override + String toString() { + return 'PaymentOrderItem(id: $id, orderPaymentId: $orderPaymentId, orderItemId: $orderItemId, amount: $amount, refundAmount: $refundAmount, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentOrderItemImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderPaymentId, orderPaymentId) || + other.orderPaymentId == orderPaymentId) && + (identical(other.orderItemId, orderItemId) || + other.orderItemId == orderItemId) && + (identical(other.amount, amount) || other.amount == amount) && + (identical(other.refundAmount, refundAmount) || + other.refundAmount == refundAmount) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + orderPaymentId, + orderItemId, + amount, + refundAmount, + createdAt, + updatedAt, + ); + + /// Create a copy of PaymentOrderItem + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentOrderItemImplCopyWith<_$PaymentOrderItemImpl> get copyWith => + __$$PaymentOrderItemImplCopyWithImpl<_$PaymentOrderItemImpl>( + this, + _$identity, + ); +} + +abstract class _PaymentOrderItem implements PaymentOrderItem { + const factory _PaymentOrderItem({ + required final String id, + required final String orderPaymentId, + required final String orderItemId, + required final int amount, + required final int refundAmount, + required final String createdAt, + required final String updatedAt, + }) = _$PaymentOrderItemImpl; + + @override + String get id; + @override + String get orderPaymentId; + @override + String get orderItemId; + @override + int get amount; + @override + int get refundAmount; + @override + String get createdAt; + @override + String get updatedAt; + + /// Create a copy of PaymentOrderItem + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentOrderItemImplCopyWith<_$PaymentOrderItemImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$OrderFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderFailureCopyWith<$Res> { + factory $OrderFailureCopyWith( + OrderFailure value, + $Res Function(OrderFailure) then, + ) = _$OrderFailureCopyWithImpl<$Res, OrderFailure>; +} + +/// @nodoc +class _$OrderFailureCopyWithImpl<$Res, $Val extends OrderFailure> + implements $OrderFailureCopyWith<$Res> { + _$OrderFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$OrderFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'OrderFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements OrderFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$OrderFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'OrderFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements OrderFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$OrderFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'OrderFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements OrderFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$OrderFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'OrderFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements OrderFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of OrderFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/order/repositories/i_order_repository.dart b/lib/domain/order/repositories/i_order_repository.dart new file mode 100644 index 0000000..f36b198 --- /dev/null +++ b/lib/domain/order/repositories/i_order_repository.dart @@ -0,0 +1,10 @@ +part of '../order.dart'; + +abstract class IOrderRepository { + Future>> get({ + int page = 1, + int limit = 10, + String? status, + String? search, + }); +} diff --git a/lib/infrastructure/order/datasource/remote_data_provider.dart b/lib/infrastructure/order/datasource/remote_data_provider.dart new file mode 100644 index 0000000..bd787c7 --- /dev/null +++ b/lib/infrastructure/order/datasource/remote_data_provider.dart @@ -0,0 +1,57 @@ +import 'dart:developer'; + +import 'package:data_channel/data_channel.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/function/app_function.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/order/order.dart'; +import '../order_dtos.dart'; + +@injectable +class OrderRemoteDataProvider { + final ApiClient _apiClient; + final String _logName = 'OrderRemoteDataProvider'; + + OrderRemoteDataProvider(this._apiClient); + + Future>> fetch({ + int page = 1, + int limit = 10, + String? status, + String? search, + }) async { + try { + Map params = {'page': page, 'limit': limit}; + + if (status != null && status.isNotEmpty) { + params['status'] = status; + } + + if (search != null && search.isNotEmpty) { + params['search'] = search; + } + + final response = await _apiClient.get( + ApiPath.order, + params: params, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(OrderFailure.empty()); + } + + final dto = (response.data['data']['orders'] as List) + .map((item) => OrderDto.fromJson(item)) + .toList(); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchOrderError', name: _logName, error: e, stackTrace: s); + return DC.error(OrderFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/order/dto/order_dto.dart b/lib/infrastructure/order/dto/order_dto.dart new file mode 100644 index 0000000..56d5818 --- /dev/null +++ b/lib/infrastructure/order/dto/order_dto.dart @@ -0,0 +1,183 @@ +part of '../order_dtos.dart'; + +@freezed +class OrderDto with _$OrderDto { + const OrderDto._(); + + const factory OrderDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_number') String? orderNumber, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'user_id') String? userId, + @JsonKey(name: 'table_number') String? tableNumber, + @JsonKey(name: 'order_type') String? orderType, + @JsonKey(name: 'status') String? status, + @JsonKey(name: 'subtotal') int? subtotal, + @JsonKey(name: 'tax_amount') int? taxAmount, + @JsonKey(name: 'discount_amount') int? discountAmount, + @JsonKey(name: 'total_amount') int? totalAmount, + @JsonKey(name: 'total_cost') int? totalCost, + @JsonKey(name: 'remaining_amount') int? remainingAmount, + @JsonKey(name: 'payment_status') String? paymentStatus, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'is_void') bool? isVoid, + @JsonKey(name: 'is_refund') bool? isRefund, + @JsonKey(name: 'notes') String? notes, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + @JsonKey(name: 'order_items') List? orderItems, + @JsonKey(name: 'payments') List? payments, + @JsonKey(name: 'total_paid') int? totalPaid, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'split_type') String? splitType, + }) = _OrderDto; + + factory OrderDto.fromJson(Map json) => + _$OrderDtoFromJson(json); + + Order toDomain() => Order( + id: id ?? '', + orderNumber: orderNumber ?? '', + outletId: outletId ?? '', + userId: userId ?? '', + tableNumber: tableNumber ?? '', + orderType: orderType ?? '', + status: status ?? '', + subtotal: subtotal ?? 0, + taxAmount: taxAmount ?? 0, + discountAmount: discountAmount ?? 0, + totalAmount: totalAmount ?? 0, + totalCost: totalCost ?? 0, + remainingAmount: remainingAmount ?? 0, + paymentStatus: paymentStatus ?? '', + refundAmount: refundAmount ?? 0, + isVoid: isVoid ?? false, + isRefund: isRefund ?? false, + notes: notes ?? '', + metadata: metadata ?? {}, + createdAt: createdAt ?? '', + updatedAt: updatedAt ?? '', + orderItems: orderItems?.map((e) => e.toDomain()).toList() ?? [], + payments: payments?.map((e) => e.toDomain()).toList() ?? [], + totalPaid: totalPaid ?? 0, + paymentCount: paymentCount ?? 0, + splitType: splitType ?? '', + ); +} + +@freezed +class OrderItemDto with _$OrderItemDto { + const OrderItemDto._(); + + const factory OrderItemDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_id') String? orderId, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'quantity') int? quantity, + @JsonKey(name: 'price') int? price, + @JsonKey(name: 'subtotal') int? subtotal, + @JsonKey(name: 'discount_amount') int? discountAmount, + @JsonKey(name: 'total') int? total, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }) = _OrderItemDto; + + factory OrderItemDto.fromJson(Map json) => + _$OrderItemDtoFromJson(json); + + OrderItem toDomain() => OrderItem( + id: id ?? '', + orderId: orderId ?? '', + productId: productId ?? '', + productName: productName ?? '', + quantity: quantity ?? 0, + price: price ?? 0, + subtotal: subtotal ?? 0, + discountAmount: discountAmount ?? 0, + total: total ?? 0, + cost: cost ?? 0, + metadata: metadata ?? {}, + createdAt: createdAt ?? '', + updatedAt: updatedAt ?? '', + ); +} + +@freezed +class OrderPaymentDto with _$OrderPaymentDto { + const OrderPaymentDto._(); + + const factory OrderPaymentDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_id') String? orderId, + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'amount') int? amount, + @JsonKey(name: 'status') String? status, + @JsonKey(name: 'split_number') int? splitNumber, + @JsonKey(name: 'split_total') int? splitTotal, + @JsonKey(name: 'split_type') String? splitType, + @JsonKey(name: 'split_description') String? splitDescription, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + @JsonKey(name: 'payment_order_items') + List? paymentOrderItems, + }) = _OrderPaymentDto; + + factory OrderPaymentDto.fromJson(Map json) => + _$OrderPaymentDtoFromJson(json); + + OrderPayment toDomain() => OrderPayment( + id: id ?? '', + orderId: orderId ?? '', + paymentMethodId: paymentMethodId ?? '', + paymentMethodName: paymentMethodName ?? '', + paymentMethodType: paymentMethodType ?? '', + amount: amount ?? 0, + status: status ?? '', + splitNumber: splitNumber ?? 0, + splitTotal: splitTotal ?? 0, + splitType: splitType ?? '', + splitDescription: splitDescription ?? '', + refundAmount: refundAmount ?? 0, + metadata: metadata ?? {}, + createdAt: createdAt ?? '', + updatedAt: updatedAt ?? '', + paymentOrderItems: + paymentOrderItems?.map((e) => e.toDomain()).toList() ?? [], + ); +} + +@freezed +class PaymentOrderItemDto with _$PaymentOrderItemDto { + const PaymentOrderItemDto._(); + + const factory PaymentOrderItemDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_payment_id') String? orderPaymentId, + @JsonKey(name: 'order_item_id') String? orderItemId, + @JsonKey(name: 'amount') int? amount, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }) = _PaymentOrderItemDto; + + factory PaymentOrderItemDto.fromJson(Map json) => + _$PaymentOrderItemDtoFromJson(json); + + PaymentOrderItem toDomain() => PaymentOrderItem( + id: id ?? '', + orderPaymentId: orderPaymentId ?? '', + orderItemId: orderItemId ?? '', + amount: amount ?? 0, + refundAmount: refundAmount ?? 0, + createdAt: createdAt ?? '', + updatedAt: updatedAt ?? '', + ); +} diff --git a/lib/infrastructure/order/order_dtos.dart b/lib/infrastructure/order/order_dtos.dart new file mode 100644 index 0000000..9855ed4 --- /dev/null +++ b/lib/infrastructure/order/order_dtos.dart @@ -0,0 +1,8 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/order/order.dart'; + +part 'order_dtos.freezed.dart'; +part 'order_dtos.g.dart'; + +part 'dto/order_dto.dart'; diff --git a/lib/infrastructure/order/order_dtos.freezed.dart b/lib/infrastructure/order/order_dtos.freezed.dart new file mode 100644 index 0000000..7b4f88e --- /dev/null +++ b/lib/infrastructure/order/order_dtos.freezed.dart @@ -0,0 +1,2197 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'order_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +OrderDto _$OrderDtoFromJson(Map json) { + return _OrderDto.fromJson(json); +} + +/// @nodoc +mixin _$OrderDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'order_number') + String? get orderNumber => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'user_id') + String? get userId => throw _privateConstructorUsedError; + @JsonKey(name: 'table_number') + String? get tableNumber => throw _privateConstructorUsedError; + @JsonKey(name: 'order_type') + String? get orderType => throw _privateConstructorUsedError; + @JsonKey(name: 'status') + String? get status => throw _privateConstructorUsedError; + @JsonKey(name: 'subtotal') + int? get subtotal => throw _privateConstructorUsedError; + @JsonKey(name: 'tax_amount') + int? get taxAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'discount_amount') + int? get discountAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'total_amount') + int? get totalAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'total_cost') + int? get totalCost => throw _privateConstructorUsedError; + @JsonKey(name: 'remaining_amount') + int? get remainingAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_status') + String? get paymentStatus => throw _privateConstructorUsedError; + @JsonKey(name: 'refund_amount') + int? get refundAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'is_void') + bool? get isVoid => throw _privateConstructorUsedError; + @JsonKey(name: 'is_refund') + bool? get isRefund => throw _privateConstructorUsedError; + @JsonKey(name: 'notes') + String? get notes => throw _privateConstructorUsedError; + @JsonKey(name: 'metadata') + Map? get metadata => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + String? get updatedAt => throw _privateConstructorUsedError; + @JsonKey(name: 'order_items') + List? get orderItems => throw _privateConstructorUsedError; + @JsonKey(name: 'payments') + List? get payments => throw _privateConstructorUsedError; + @JsonKey(name: 'total_paid') + int? get totalPaid => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_count') + int? get paymentCount => throw _privateConstructorUsedError; + @JsonKey(name: 'split_type') + String? get splitType => throw _privateConstructorUsedError; + + /// Serializes this OrderDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of OrderDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OrderDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderDtoCopyWith<$Res> { + factory $OrderDtoCopyWith(OrderDto value, $Res Function(OrderDto) then) = + _$OrderDtoCopyWithImpl<$Res, OrderDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_number') String? orderNumber, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'user_id') String? userId, + @JsonKey(name: 'table_number') String? tableNumber, + @JsonKey(name: 'order_type') String? orderType, + @JsonKey(name: 'status') String? status, + @JsonKey(name: 'subtotal') int? subtotal, + @JsonKey(name: 'tax_amount') int? taxAmount, + @JsonKey(name: 'discount_amount') int? discountAmount, + @JsonKey(name: 'total_amount') int? totalAmount, + @JsonKey(name: 'total_cost') int? totalCost, + @JsonKey(name: 'remaining_amount') int? remainingAmount, + @JsonKey(name: 'payment_status') String? paymentStatus, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'is_void') bool? isVoid, + @JsonKey(name: 'is_refund') bool? isRefund, + @JsonKey(name: 'notes') String? notes, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + @JsonKey(name: 'order_items') List? orderItems, + @JsonKey(name: 'payments') List? payments, + @JsonKey(name: 'total_paid') int? totalPaid, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'split_type') String? splitType, + }); +} + +/// @nodoc +class _$OrderDtoCopyWithImpl<$Res, $Val extends OrderDto> + implements $OrderDtoCopyWith<$Res> { + _$OrderDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderNumber = freezed, + Object? outletId = freezed, + Object? userId = freezed, + Object? tableNumber = freezed, + Object? orderType = freezed, + Object? status = freezed, + Object? subtotal = freezed, + Object? taxAmount = freezed, + Object? discountAmount = freezed, + Object? totalAmount = freezed, + Object? totalCost = freezed, + Object? remainingAmount = freezed, + Object? paymentStatus = freezed, + Object? refundAmount = freezed, + Object? isVoid = freezed, + Object? isRefund = freezed, + Object? notes = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + Object? orderItems = freezed, + Object? payments = freezed, + Object? totalPaid = freezed, + Object? paymentCount = freezed, + Object? splitType = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderNumber: freezed == orderNumber + ? _value.orderNumber + : orderNumber // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + userId: freezed == userId + ? _value.userId + : userId // ignore: cast_nullable_to_non_nullable + as String?, + tableNumber: freezed == tableNumber + ? _value.tableNumber + : tableNumber // ignore: cast_nullable_to_non_nullable + as String?, + orderType: freezed == orderType + ? _value.orderType + : orderType // ignore: cast_nullable_to_non_nullable + as String?, + status: freezed == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String?, + subtotal: freezed == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int?, + taxAmount: freezed == taxAmount + ? _value.taxAmount + : taxAmount // ignore: cast_nullable_to_non_nullable + as int?, + discountAmount: freezed == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int?, + totalCost: freezed == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int?, + remainingAmount: freezed == remainingAmount + ? _value.remainingAmount + : remainingAmount // ignore: cast_nullable_to_non_nullable + as int?, + paymentStatus: freezed == paymentStatus + ? _value.paymentStatus + : paymentStatus // ignore: cast_nullable_to_non_nullable + as String?, + refundAmount: freezed == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int?, + isVoid: freezed == isVoid + ? _value.isVoid + : isVoid // ignore: cast_nullable_to_non_nullable + as bool?, + isRefund: freezed == isRefund + ? _value.isRefund + : isRefund // ignore: cast_nullable_to_non_nullable + as bool?, + notes: freezed == notes + ? _value.notes + : notes // ignore: cast_nullable_to_non_nullable + as String?, + metadata: freezed == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + orderItems: freezed == orderItems + ? _value.orderItems + : orderItems // ignore: cast_nullable_to_non_nullable + as List?, + payments: freezed == payments + ? _value.payments + : payments // ignore: cast_nullable_to_non_nullable + as List?, + totalPaid: freezed == totalPaid + ? _value.totalPaid + : totalPaid // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + splitType: freezed == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OrderDtoImplCopyWith<$Res> + implements $OrderDtoCopyWith<$Res> { + factory _$$OrderDtoImplCopyWith( + _$OrderDtoImpl value, + $Res Function(_$OrderDtoImpl) then, + ) = __$$OrderDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_number') String? orderNumber, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'user_id') String? userId, + @JsonKey(name: 'table_number') String? tableNumber, + @JsonKey(name: 'order_type') String? orderType, + @JsonKey(name: 'status') String? status, + @JsonKey(name: 'subtotal') int? subtotal, + @JsonKey(name: 'tax_amount') int? taxAmount, + @JsonKey(name: 'discount_amount') int? discountAmount, + @JsonKey(name: 'total_amount') int? totalAmount, + @JsonKey(name: 'total_cost') int? totalCost, + @JsonKey(name: 'remaining_amount') int? remainingAmount, + @JsonKey(name: 'payment_status') String? paymentStatus, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'is_void') bool? isVoid, + @JsonKey(name: 'is_refund') bool? isRefund, + @JsonKey(name: 'notes') String? notes, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + @JsonKey(name: 'order_items') List? orderItems, + @JsonKey(name: 'payments') List? payments, + @JsonKey(name: 'total_paid') int? totalPaid, + @JsonKey(name: 'payment_count') int? paymentCount, + @JsonKey(name: 'split_type') String? splitType, + }); +} + +/// @nodoc +class __$$OrderDtoImplCopyWithImpl<$Res> + extends _$OrderDtoCopyWithImpl<$Res, _$OrderDtoImpl> + implements _$$OrderDtoImplCopyWith<$Res> { + __$$OrderDtoImplCopyWithImpl( + _$OrderDtoImpl _value, + $Res Function(_$OrderDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderNumber = freezed, + Object? outletId = freezed, + Object? userId = freezed, + Object? tableNumber = freezed, + Object? orderType = freezed, + Object? status = freezed, + Object? subtotal = freezed, + Object? taxAmount = freezed, + Object? discountAmount = freezed, + Object? totalAmount = freezed, + Object? totalCost = freezed, + Object? remainingAmount = freezed, + Object? paymentStatus = freezed, + Object? refundAmount = freezed, + Object? isVoid = freezed, + Object? isRefund = freezed, + Object? notes = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + Object? orderItems = freezed, + Object? payments = freezed, + Object? totalPaid = freezed, + Object? paymentCount = freezed, + Object? splitType = freezed, + }) { + return _then( + _$OrderDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderNumber: freezed == orderNumber + ? _value.orderNumber + : orderNumber // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + userId: freezed == userId + ? _value.userId + : userId // ignore: cast_nullable_to_non_nullable + as String?, + tableNumber: freezed == tableNumber + ? _value.tableNumber + : tableNumber // ignore: cast_nullable_to_non_nullable + as String?, + orderType: freezed == orderType + ? _value.orderType + : orderType // ignore: cast_nullable_to_non_nullable + as String?, + status: freezed == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String?, + subtotal: freezed == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int?, + taxAmount: freezed == taxAmount + ? _value.taxAmount + : taxAmount // ignore: cast_nullable_to_non_nullable + as int?, + discountAmount: freezed == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int?, + totalAmount: freezed == totalAmount + ? _value.totalAmount + : totalAmount // ignore: cast_nullable_to_non_nullable + as int?, + totalCost: freezed == totalCost + ? _value.totalCost + : totalCost // ignore: cast_nullable_to_non_nullable + as int?, + remainingAmount: freezed == remainingAmount + ? _value.remainingAmount + : remainingAmount // ignore: cast_nullable_to_non_nullable + as int?, + paymentStatus: freezed == paymentStatus + ? _value.paymentStatus + : paymentStatus // ignore: cast_nullable_to_non_nullable + as String?, + refundAmount: freezed == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int?, + isVoid: freezed == isVoid + ? _value.isVoid + : isVoid // ignore: cast_nullable_to_non_nullable + as bool?, + isRefund: freezed == isRefund + ? _value.isRefund + : isRefund // ignore: cast_nullable_to_non_nullable + as bool?, + notes: freezed == notes + ? _value.notes + : notes // ignore: cast_nullable_to_non_nullable + as String?, + metadata: freezed == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + orderItems: freezed == orderItems + ? _value._orderItems + : orderItems // ignore: cast_nullable_to_non_nullable + as List?, + payments: freezed == payments + ? _value._payments + : payments // ignore: cast_nullable_to_non_nullable + as List?, + totalPaid: freezed == totalPaid + ? _value.totalPaid + : totalPaid // ignore: cast_nullable_to_non_nullable + as int?, + paymentCount: freezed == paymentCount + ? _value.paymentCount + : paymentCount // ignore: cast_nullable_to_non_nullable + as int?, + splitType: freezed == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$OrderDtoImpl extends _OrderDto { + const _$OrderDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'order_number') this.orderNumber, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'user_id') this.userId, + @JsonKey(name: 'table_number') this.tableNumber, + @JsonKey(name: 'order_type') this.orderType, + @JsonKey(name: 'status') this.status, + @JsonKey(name: 'subtotal') this.subtotal, + @JsonKey(name: 'tax_amount') this.taxAmount, + @JsonKey(name: 'discount_amount') this.discountAmount, + @JsonKey(name: 'total_amount') this.totalAmount, + @JsonKey(name: 'total_cost') this.totalCost, + @JsonKey(name: 'remaining_amount') this.remainingAmount, + @JsonKey(name: 'payment_status') this.paymentStatus, + @JsonKey(name: 'refund_amount') this.refundAmount, + @JsonKey(name: 'is_void') this.isVoid, + @JsonKey(name: 'is_refund') this.isRefund, + @JsonKey(name: 'notes') this.notes, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + @JsonKey(name: 'order_items') final List? orderItems, + @JsonKey(name: 'payments') final List? payments, + @JsonKey(name: 'total_paid') this.totalPaid, + @JsonKey(name: 'payment_count') this.paymentCount, + @JsonKey(name: 'split_type') this.splitType, + }) : _metadata = metadata, + _orderItems = orderItems, + _payments = payments, + super._(); + + factory _$OrderDtoImpl.fromJson(Map json) => + _$$OrderDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'order_number') + final String? orderNumber; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'user_id') + final String? userId; + @override + @JsonKey(name: 'table_number') + final String? tableNumber; + @override + @JsonKey(name: 'order_type') + final String? orderType; + @override + @JsonKey(name: 'status') + final String? status; + @override + @JsonKey(name: 'subtotal') + final int? subtotal; + @override + @JsonKey(name: 'tax_amount') + final int? taxAmount; + @override + @JsonKey(name: 'discount_amount') + final int? discountAmount; + @override + @JsonKey(name: 'total_amount') + final int? totalAmount; + @override + @JsonKey(name: 'total_cost') + final int? totalCost; + @override + @JsonKey(name: 'remaining_amount') + final int? remainingAmount; + @override + @JsonKey(name: 'payment_status') + final String? paymentStatus; + @override + @JsonKey(name: 'refund_amount') + final int? refundAmount; + @override + @JsonKey(name: 'is_void') + final bool? isVoid; + @override + @JsonKey(name: 'is_refund') + final bool? isRefund; + @override + @JsonKey(name: 'notes') + final String? notes; + final Map? _metadata; + @override + @JsonKey(name: 'metadata') + Map? get metadata { + final value = _metadata; + if (value == null) return null; + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'created_at') + final String? createdAt; + @override + @JsonKey(name: 'updated_at') + final String? updatedAt; + final List? _orderItems; + @override + @JsonKey(name: 'order_items') + List? get orderItems { + final value = _orderItems; + if (value == null) return null; + if (_orderItems is EqualUnmodifiableListView) return _orderItems; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + final List? _payments; + @override + @JsonKey(name: 'payments') + List? get payments { + final value = _payments; + if (value == null) return null; + if (_payments is EqualUnmodifiableListView) return _payments; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + @JsonKey(name: 'total_paid') + final int? totalPaid; + @override + @JsonKey(name: 'payment_count') + final int? paymentCount; + @override + @JsonKey(name: 'split_type') + final String? splitType; + + @override + String toString() { + return 'OrderDto(id: $id, orderNumber: $orderNumber, outletId: $outletId, userId: $userId, tableNumber: $tableNumber, orderType: $orderType, status: $status, subtotal: $subtotal, taxAmount: $taxAmount, discountAmount: $discountAmount, totalAmount: $totalAmount, totalCost: $totalCost, remainingAmount: $remainingAmount, paymentStatus: $paymentStatus, refundAmount: $refundAmount, isVoid: $isVoid, isRefund: $isRefund, notes: $notes, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt, orderItems: $orderItems, payments: $payments, totalPaid: $totalPaid, paymentCount: $paymentCount, splitType: $splitType)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OrderDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderNumber, orderNumber) || + other.orderNumber == orderNumber) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.userId, userId) || other.userId == userId) && + (identical(other.tableNumber, tableNumber) || + other.tableNumber == tableNumber) && + (identical(other.orderType, orderType) || + other.orderType == orderType) && + (identical(other.status, status) || other.status == status) && + (identical(other.subtotal, subtotal) || + other.subtotal == subtotal) && + (identical(other.taxAmount, taxAmount) || + other.taxAmount == taxAmount) && + (identical(other.discountAmount, discountAmount) || + other.discountAmount == discountAmount) && + (identical(other.totalAmount, totalAmount) || + other.totalAmount == totalAmount) && + (identical(other.totalCost, totalCost) || + other.totalCost == totalCost) && + (identical(other.remainingAmount, remainingAmount) || + other.remainingAmount == remainingAmount) && + (identical(other.paymentStatus, paymentStatus) || + other.paymentStatus == paymentStatus) && + (identical(other.refundAmount, refundAmount) || + other.refundAmount == refundAmount) && + (identical(other.isVoid, isVoid) || other.isVoid == isVoid) && + (identical(other.isRefund, isRefund) || + other.isRefund == isRefund) && + (identical(other.notes, notes) || other.notes == notes) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt) && + const DeepCollectionEquality().equals( + other._orderItems, + _orderItems, + ) && + const DeepCollectionEquality().equals(other._payments, _payments) && + (identical(other.totalPaid, totalPaid) || + other.totalPaid == totalPaid) && + (identical(other.paymentCount, paymentCount) || + other.paymentCount == paymentCount) && + (identical(other.splitType, splitType) || + other.splitType == splitType)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hashAll([ + runtimeType, + id, + orderNumber, + outletId, + userId, + tableNumber, + orderType, + status, + subtotal, + taxAmount, + discountAmount, + totalAmount, + totalCost, + remainingAmount, + paymentStatus, + refundAmount, + isVoid, + isRefund, + notes, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + const DeepCollectionEquality().hash(_orderItems), + const DeepCollectionEquality().hash(_payments), + totalPaid, + paymentCount, + splitType, + ]); + + /// Create a copy of OrderDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OrderDtoImplCopyWith<_$OrderDtoImpl> get copyWith => + __$$OrderDtoImplCopyWithImpl<_$OrderDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$OrderDtoImplToJson(this); + } +} + +abstract class _OrderDto extends OrderDto { + const factory _OrderDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'order_number') final String? orderNumber, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'user_id') final String? userId, + @JsonKey(name: 'table_number') final String? tableNumber, + @JsonKey(name: 'order_type') final String? orderType, + @JsonKey(name: 'status') final String? status, + @JsonKey(name: 'subtotal') final int? subtotal, + @JsonKey(name: 'tax_amount') final int? taxAmount, + @JsonKey(name: 'discount_amount') final int? discountAmount, + @JsonKey(name: 'total_amount') final int? totalAmount, + @JsonKey(name: 'total_cost') final int? totalCost, + @JsonKey(name: 'remaining_amount') final int? remainingAmount, + @JsonKey(name: 'payment_status') final String? paymentStatus, + @JsonKey(name: 'refund_amount') final int? refundAmount, + @JsonKey(name: 'is_void') final bool? isVoid, + @JsonKey(name: 'is_refund') final bool? isRefund, + @JsonKey(name: 'notes') final String? notes, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') final String? createdAt, + @JsonKey(name: 'updated_at') final String? updatedAt, + @JsonKey(name: 'order_items') final List? orderItems, + @JsonKey(name: 'payments') final List? payments, + @JsonKey(name: 'total_paid') final int? totalPaid, + @JsonKey(name: 'payment_count') final int? paymentCount, + @JsonKey(name: 'split_type') final String? splitType, + }) = _$OrderDtoImpl; + const _OrderDto._() : super._(); + + factory _OrderDto.fromJson(Map json) = + _$OrderDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'order_number') + String? get orderNumber; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'user_id') + String? get userId; + @override + @JsonKey(name: 'table_number') + String? get tableNumber; + @override + @JsonKey(name: 'order_type') + String? get orderType; + @override + @JsonKey(name: 'status') + String? get status; + @override + @JsonKey(name: 'subtotal') + int? get subtotal; + @override + @JsonKey(name: 'tax_amount') + int? get taxAmount; + @override + @JsonKey(name: 'discount_amount') + int? get discountAmount; + @override + @JsonKey(name: 'total_amount') + int? get totalAmount; + @override + @JsonKey(name: 'total_cost') + int? get totalCost; + @override + @JsonKey(name: 'remaining_amount') + int? get remainingAmount; + @override + @JsonKey(name: 'payment_status') + String? get paymentStatus; + @override + @JsonKey(name: 'refund_amount') + int? get refundAmount; + @override + @JsonKey(name: 'is_void') + bool? get isVoid; + @override + @JsonKey(name: 'is_refund') + bool? get isRefund; + @override + @JsonKey(name: 'notes') + String? get notes; + @override + @JsonKey(name: 'metadata') + Map? get metadata; + @override + @JsonKey(name: 'created_at') + String? get createdAt; + @override + @JsonKey(name: 'updated_at') + String? get updatedAt; + @override + @JsonKey(name: 'order_items') + List? get orderItems; + @override + @JsonKey(name: 'payments') + List? get payments; + @override + @JsonKey(name: 'total_paid') + int? get totalPaid; + @override + @JsonKey(name: 'payment_count') + int? get paymentCount; + @override + @JsonKey(name: 'split_type') + String? get splitType; + + /// Create a copy of OrderDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OrderDtoImplCopyWith<_$OrderDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +OrderItemDto _$OrderItemDtoFromJson(Map json) { + return _OrderItemDto.fromJson(json); +} + +/// @nodoc +mixin _$OrderItemDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'order_id') + String? get orderId => throw _privateConstructorUsedError; + @JsonKey(name: 'product_id') + String? get productId => throw _privateConstructorUsedError; + @JsonKey(name: 'product_name') + String? get productName => throw _privateConstructorUsedError; + @JsonKey(name: 'quantity') + int? get quantity => throw _privateConstructorUsedError; + @JsonKey(name: 'price') + int? get price => throw _privateConstructorUsedError; + @JsonKey(name: 'subtotal') + int? get subtotal => throw _privateConstructorUsedError; + @JsonKey(name: 'discount_amount') + int? get discountAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'total') + int? get total => throw _privateConstructorUsedError; + @JsonKey(name: 'cost') + int? get cost => throw _privateConstructorUsedError; + @JsonKey(name: 'metadata') + Map? get metadata => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this OrderItemDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of OrderItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OrderItemDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderItemDtoCopyWith<$Res> { + factory $OrderItemDtoCopyWith( + OrderItemDto value, + $Res Function(OrderItemDto) then, + ) = _$OrderItemDtoCopyWithImpl<$Res, OrderItemDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_id') String? orderId, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'quantity') int? quantity, + @JsonKey(name: 'price') int? price, + @JsonKey(name: 'subtotal') int? subtotal, + @JsonKey(name: 'discount_amount') int? discountAmount, + @JsonKey(name: 'total') int? total, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class _$OrderItemDtoCopyWithImpl<$Res, $Val extends OrderItemDto> + implements $OrderItemDtoCopyWith<$Res> { + _$OrderItemDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderId = freezed, + Object? productId = freezed, + Object? productName = freezed, + Object? quantity = freezed, + Object? price = freezed, + Object? subtotal = freezed, + Object? discountAmount = freezed, + Object? total = freezed, + Object? cost = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderId: freezed == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String?, + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + quantity: freezed == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int?, + price: freezed == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int?, + subtotal: freezed == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int?, + discountAmount: freezed == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int?, + total: freezed == total + ? _value.total + : total // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + metadata: freezed == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OrderItemDtoImplCopyWith<$Res> + implements $OrderItemDtoCopyWith<$Res> { + factory _$$OrderItemDtoImplCopyWith( + _$OrderItemDtoImpl value, + $Res Function(_$OrderItemDtoImpl) then, + ) = __$$OrderItemDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_id') String? orderId, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'quantity') int? quantity, + @JsonKey(name: 'price') int? price, + @JsonKey(name: 'subtotal') int? subtotal, + @JsonKey(name: 'discount_amount') int? discountAmount, + @JsonKey(name: 'total') int? total, + @JsonKey(name: 'cost') int? cost, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class __$$OrderItemDtoImplCopyWithImpl<$Res> + extends _$OrderItemDtoCopyWithImpl<$Res, _$OrderItemDtoImpl> + implements _$$OrderItemDtoImplCopyWith<$Res> { + __$$OrderItemDtoImplCopyWithImpl( + _$OrderItemDtoImpl _value, + $Res Function(_$OrderItemDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderId = freezed, + Object? productId = freezed, + Object? productName = freezed, + Object? quantity = freezed, + Object? price = freezed, + Object? subtotal = freezed, + Object? discountAmount = freezed, + Object? total = freezed, + Object? cost = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$OrderItemDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderId: freezed == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String?, + productId: freezed == productId + ? _value.productId + : productId // ignore: cast_nullable_to_non_nullable + as String?, + productName: freezed == productName + ? _value.productName + : productName // ignore: cast_nullable_to_non_nullable + as String?, + quantity: freezed == quantity + ? _value.quantity + : quantity // ignore: cast_nullable_to_non_nullable + as int?, + price: freezed == price + ? _value.price + : price // ignore: cast_nullable_to_non_nullable + as int?, + subtotal: freezed == subtotal + ? _value.subtotal + : subtotal // ignore: cast_nullable_to_non_nullable + as int?, + discountAmount: freezed == discountAmount + ? _value.discountAmount + : discountAmount // ignore: cast_nullable_to_non_nullable + as int?, + total: freezed == total + ? _value.total + : total // ignore: cast_nullable_to_non_nullable + as int?, + cost: freezed == cost + ? _value.cost + : cost // ignore: cast_nullable_to_non_nullable + as int?, + metadata: freezed == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$OrderItemDtoImpl extends _OrderItemDto { + const _$OrderItemDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'order_id') this.orderId, + @JsonKey(name: 'product_id') this.productId, + @JsonKey(name: 'product_name') this.productName, + @JsonKey(name: 'quantity') this.quantity, + @JsonKey(name: 'price') this.price, + @JsonKey(name: 'subtotal') this.subtotal, + @JsonKey(name: 'discount_amount') this.discountAmount, + @JsonKey(name: 'total') this.total, + @JsonKey(name: 'cost') this.cost, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + }) : _metadata = metadata, + super._(); + + factory _$OrderItemDtoImpl.fromJson(Map json) => + _$$OrderItemDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'order_id') + final String? orderId; + @override + @JsonKey(name: 'product_id') + final String? productId; + @override + @JsonKey(name: 'product_name') + final String? productName; + @override + @JsonKey(name: 'quantity') + final int? quantity; + @override + @JsonKey(name: 'price') + final int? price; + @override + @JsonKey(name: 'subtotal') + final int? subtotal; + @override + @JsonKey(name: 'discount_amount') + final int? discountAmount; + @override + @JsonKey(name: 'total') + final int? total; + @override + @JsonKey(name: 'cost') + final int? cost; + final Map? _metadata; + @override + @JsonKey(name: 'metadata') + Map? get metadata { + final value = _metadata; + if (value == null) return null; + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'created_at') + final String? createdAt; + @override + @JsonKey(name: 'updated_at') + final String? updatedAt; + + @override + String toString() { + return 'OrderItemDto(id: $id, orderId: $orderId, productId: $productId, productName: $productName, quantity: $quantity, price: $price, subtotal: $subtotal, discountAmount: $discountAmount, total: $total, cost: $cost, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OrderItemDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderId, orderId) || other.orderId == orderId) && + (identical(other.productId, productId) || + other.productId == productId) && + (identical(other.productName, productName) || + other.productName == productName) && + (identical(other.quantity, quantity) || + other.quantity == quantity) && + (identical(other.price, price) || other.price == price) && + (identical(other.subtotal, subtotal) || + other.subtotal == subtotal) && + (identical(other.discountAmount, discountAmount) || + other.discountAmount == discountAmount) && + (identical(other.total, total) || other.total == total) && + (identical(other.cost, cost) || other.cost == cost) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + orderId, + productId, + productName, + quantity, + price, + subtotal, + discountAmount, + total, + cost, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + ); + + /// Create a copy of OrderItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OrderItemDtoImplCopyWith<_$OrderItemDtoImpl> get copyWith => + __$$OrderItemDtoImplCopyWithImpl<_$OrderItemDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$OrderItemDtoImplToJson(this); + } +} + +abstract class _OrderItemDto extends OrderItemDto { + const factory _OrderItemDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'order_id') final String? orderId, + @JsonKey(name: 'product_id') final String? productId, + @JsonKey(name: 'product_name') final String? productName, + @JsonKey(name: 'quantity') final int? quantity, + @JsonKey(name: 'price') final int? price, + @JsonKey(name: 'subtotal') final int? subtotal, + @JsonKey(name: 'discount_amount') final int? discountAmount, + @JsonKey(name: 'total') final int? total, + @JsonKey(name: 'cost') final int? cost, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') final String? createdAt, + @JsonKey(name: 'updated_at') final String? updatedAt, + }) = _$OrderItemDtoImpl; + const _OrderItemDto._() : super._(); + + factory _OrderItemDto.fromJson(Map json) = + _$OrderItemDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'order_id') + String? get orderId; + @override + @JsonKey(name: 'product_id') + String? get productId; + @override + @JsonKey(name: 'product_name') + String? get productName; + @override + @JsonKey(name: 'quantity') + int? get quantity; + @override + @JsonKey(name: 'price') + int? get price; + @override + @JsonKey(name: 'subtotal') + int? get subtotal; + @override + @JsonKey(name: 'discount_amount') + int? get discountAmount; + @override + @JsonKey(name: 'total') + int? get total; + @override + @JsonKey(name: 'cost') + int? get cost; + @override + @JsonKey(name: 'metadata') + Map? get metadata; + @override + @JsonKey(name: 'created_at') + String? get createdAt; + @override + @JsonKey(name: 'updated_at') + String? get updatedAt; + + /// Create a copy of OrderItemDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OrderItemDtoImplCopyWith<_$OrderItemDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +OrderPaymentDto _$OrderPaymentDtoFromJson(Map json) { + return _OrderPaymentDto.fromJson(json); +} + +/// @nodoc +mixin _$OrderPaymentDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'order_id') + String? get orderId => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType => throw _privateConstructorUsedError; + @JsonKey(name: 'amount') + int? get amount => throw _privateConstructorUsedError; + @JsonKey(name: 'status') + String? get status => throw _privateConstructorUsedError; + @JsonKey(name: 'split_number') + int? get splitNumber => throw _privateConstructorUsedError; + @JsonKey(name: 'split_total') + int? get splitTotal => throw _privateConstructorUsedError; + @JsonKey(name: 'split_type') + String? get splitType => throw _privateConstructorUsedError; + @JsonKey(name: 'split_description') + String? get splitDescription => throw _privateConstructorUsedError; + @JsonKey(name: 'refund_amount') + int? get refundAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'metadata') + Map? get metadata => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + String? get updatedAt => throw _privateConstructorUsedError; + @JsonKey(name: 'payment_order_items') + List? get paymentOrderItems => + throw _privateConstructorUsedError; + + /// Serializes this OrderPaymentDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of OrderPaymentDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OrderPaymentDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OrderPaymentDtoCopyWith<$Res> { + factory $OrderPaymentDtoCopyWith( + OrderPaymentDto value, + $Res Function(OrderPaymentDto) then, + ) = _$OrderPaymentDtoCopyWithImpl<$Res, OrderPaymentDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_id') String? orderId, + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'amount') int? amount, + @JsonKey(name: 'status') String? status, + @JsonKey(name: 'split_number') int? splitNumber, + @JsonKey(name: 'split_total') int? splitTotal, + @JsonKey(name: 'split_type') String? splitType, + @JsonKey(name: 'split_description') String? splitDescription, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + @JsonKey(name: 'payment_order_items') + List? paymentOrderItems, + }); +} + +/// @nodoc +class _$OrderPaymentDtoCopyWithImpl<$Res, $Val extends OrderPaymentDto> + implements $OrderPaymentDtoCopyWith<$Res> { + _$OrderPaymentDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OrderPaymentDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderId = freezed, + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? amount = freezed, + Object? status = freezed, + Object? splitNumber = freezed, + Object? splitTotal = freezed, + Object? splitType = freezed, + Object? splitDescription = freezed, + Object? refundAmount = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + Object? paymentOrderItems = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderId: freezed == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + amount: freezed == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int?, + status: freezed == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String?, + splitNumber: freezed == splitNumber + ? _value.splitNumber + : splitNumber // ignore: cast_nullable_to_non_nullable + as int?, + splitTotal: freezed == splitTotal + ? _value.splitTotal + : splitTotal // ignore: cast_nullable_to_non_nullable + as int?, + splitType: freezed == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String?, + splitDescription: freezed == splitDescription + ? _value.splitDescription + : splitDescription // ignore: cast_nullable_to_non_nullable + as String?, + refundAmount: freezed == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int?, + metadata: freezed == metadata + ? _value.metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + paymentOrderItems: freezed == paymentOrderItems + ? _value.paymentOrderItems + : paymentOrderItems // ignore: cast_nullable_to_non_nullable + as List?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OrderPaymentDtoImplCopyWith<$Res> + implements $OrderPaymentDtoCopyWith<$Res> { + factory _$$OrderPaymentDtoImplCopyWith( + _$OrderPaymentDtoImpl value, + $Res Function(_$OrderPaymentDtoImpl) then, + ) = __$$OrderPaymentDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_id') String? orderId, + @JsonKey(name: 'payment_method_id') String? paymentMethodId, + @JsonKey(name: 'payment_method_name') String? paymentMethodName, + @JsonKey(name: 'payment_method_type') String? paymentMethodType, + @JsonKey(name: 'amount') int? amount, + @JsonKey(name: 'status') String? status, + @JsonKey(name: 'split_number') int? splitNumber, + @JsonKey(name: 'split_total') int? splitTotal, + @JsonKey(name: 'split_type') String? splitType, + @JsonKey(name: 'split_description') String? splitDescription, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'metadata') Map? metadata, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + @JsonKey(name: 'payment_order_items') + List? paymentOrderItems, + }); +} + +/// @nodoc +class __$$OrderPaymentDtoImplCopyWithImpl<$Res> + extends _$OrderPaymentDtoCopyWithImpl<$Res, _$OrderPaymentDtoImpl> + implements _$$OrderPaymentDtoImplCopyWith<$Res> { + __$$OrderPaymentDtoImplCopyWithImpl( + _$OrderPaymentDtoImpl _value, + $Res Function(_$OrderPaymentDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderPaymentDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderId = freezed, + Object? paymentMethodId = freezed, + Object? paymentMethodName = freezed, + Object? paymentMethodType = freezed, + Object? amount = freezed, + Object? status = freezed, + Object? splitNumber = freezed, + Object? splitTotal = freezed, + Object? splitType = freezed, + Object? splitDescription = freezed, + Object? refundAmount = freezed, + Object? metadata = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + Object? paymentOrderItems = freezed, + }) { + return _then( + _$OrderPaymentDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderId: freezed == orderId + ? _value.orderId + : orderId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodId: freezed == paymentMethodId + ? _value.paymentMethodId + : paymentMethodId // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodName: freezed == paymentMethodName + ? _value.paymentMethodName + : paymentMethodName // ignore: cast_nullable_to_non_nullable + as String?, + paymentMethodType: freezed == paymentMethodType + ? _value.paymentMethodType + : paymentMethodType // ignore: cast_nullable_to_non_nullable + as String?, + amount: freezed == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int?, + status: freezed == status + ? _value.status + : status // ignore: cast_nullable_to_non_nullable + as String?, + splitNumber: freezed == splitNumber + ? _value.splitNumber + : splitNumber // ignore: cast_nullable_to_non_nullable + as int?, + splitTotal: freezed == splitTotal + ? _value.splitTotal + : splitTotal // ignore: cast_nullable_to_non_nullable + as int?, + splitType: freezed == splitType + ? _value.splitType + : splitType // ignore: cast_nullable_to_non_nullable + as String?, + splitDescription: freezed == splitDescription + ? _value.splitDescription + : splitDescription // ignore: cast_nullable_to_non_nullable + as String?, + refundAmount: freezed == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int?, + metadata: freezed == metadata + ? _value._metadata + : metadata // ignore: cast_nullable_to_non_nullable + as Map?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + paymentOrderItems: freezed == paymentOrderItems + ? _value._paymentOrderItems + : paymentOrderItems // ignore: cast_nullable_to_non_nullable + as List?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$OrderPaymentDtoImpl extends _OrderPaymentDto { + const _$OrderPaymentDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'order_id') this.orderId, + @JsonKey(name: 'payment_method_id') this.paymentMethodId, + @JsonKey(name: 'payment_method_name') this.paymentMethodName, + @JsonKey(name: 'payment_method_type') this.paymentMethodType, + @JsonKey(name: 'amount') this.amount, + @JsonKey(name: 'status') this.status, + @JsonKey(name: 'split_number') this.splitNumber, + @JsonKey(name: 'split_total') this.splitTotal, + @JsonKey(name: 'split_type') this.splitType, + @JsonKey(name: 'split_description') this.splitDescription, + @JsonKey(name: 'refund_amount') this.refundAmount, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + @JsonKey(name: 'payment_order_items') + final List? paymentOrderItems, + }) : _metadata = metadata, + _paymentOrderItems = paymentOrderItems, + super._(); + + factory _$OrderPaymentDtoImpl.fromJson(Map json) => + _$$OrderPaymentDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'order_id') + final String? orderId; + @override + @JsonKey(name: 'payment_method_id') + final String? paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + final String? paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + final String? paymentMethodType; + @override + @JsonKey(name: 'amount') + final int? amount; + @override + @JsonKey(name: 'status') + final String? status; + @override + @JsonKey(name: 'split_number') + final int? splitNumber; + @override + @JsonKey(name: 'split_total') + final int? splitTotal; + @override + @JsonKey(name: 'split_type') + final String? splitType; + @override + @JsonKey(name: 'split_description') + final String? splitDescription; + @override + @JsonKey(name: 'refund_amount') + final int? refundAmount; + final Map? _metadata; + @override + @JsonKey(name: 'metadata') + Map? get metadata { + final value = _metadata; + if (value == null) return null; + if (_metadata is EqualUnmodifiableMapView) return _metadata; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'created_at') + final String? createdAt; + @override + @JsonKey(name: 'updated_at') + final String? updatedAt; + final List? _paymentOrderItems; + @override + @JsonKey(name: 'payment_order_items') + List? get paymentOrderItems { + final value = _paymentOrderItems; + if (value == null) return null; + if (_paymentOrderItems is EqualUnmodifiableListView) + return _paymentOrderItems; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(value); + } + + @override + String toString() { + return 'OrderPaymentDto(id: $id, orderId: $orderId, paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, amount: $amount, status: $status, splitNumber: $splitNumber, splitTotal: $splitTotal, splitType: $splitType, splitDescription: $splitDescription, refundAmount: $refundAmount, metadata: $metadata, createdAt: $createdAt, updatedAt: $updatedAt, paymentOrderItems: $paymentOrderItems)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OrderPaymentDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderId, orderId) || other.orderId == orderId) && + (identical(other.paymentMethodId, paymentMethodId) || + other.paymentMethodId == paymentMethodId) && + (identical(other.paymentMethodName, paymentMethodName) || + other.paymentMethodName == paymentMethodName) && + (identical(other.paymentMethodType, paymentMethodType) || + other.paymentMethodType == paymentMethodType) && + (identical(other.amount, amount) || other.amount == amount) && + (identical(other.status, status) || other.status == status) && + (identical(other.splitNumber, splitNumber) || + other.splitNumber == splitNumber) && + (identical(other.splitTotal, splitTotal) || + other.splitTotal == splitTotal) && + (identical(other.splitType, splitType) || + other.splitType == splitType) && + (identical(other.splitDescription, splitDescription) || + other.splitDescription == splitDescription) && + (identical(other.refundAmount, refundAmount) || + other.refundAmount == refundAmount) && + const DeepCollectionEquality().equals(other._metadata, _metadata) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt) && + const DeepCollectionEquality().equals( + other._paymentOrderItems, + _paymentOrderItems, + )); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + orderId, + paymentMethodId, + paymentMethodName, + paymentMethodType, + amount, + status, + splitNumber, + splitTotal, + splitType, + splitDescription, + refundAmount, + const DeepCollectionEquality().hash(_metadata), + createdAt, + updatedAt, + const DeepCollectionEquality().hash(_paymentOrderItems), + ); + + /// Create a copy of OrderPaymentDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OrderPaymentDtoImplCopyWith<_$OrderPaymentDtoImpl> get copyWith => + __$$OrderPaymentDtoImplCopyWithImpl<_$OrderPaymentDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$OrderPaymentDtoImplToJson(this); + } +} + +abstract class _OrderPaymentDto extends OrderPaymentDto { + const factory _OrderPaymentDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'order_id') final String? orderId, + @JsonKey(name: 'payment_method_id') final String? paymentMethodId, + @JsonKey(name: 'payment_method_name') final String? paymentMethodName, + @JsonKey(name: 'payment_method_type') final String? paymentMethodType, + @JsonKey(name: 'amount') final int? amount, + @JsonKey(name: 'status') final String? status, + @JsonKey(name: 'split_number') final int? splitNumber, + @JsonKey(name: 'split_total') final int? splitTotal, + @JsonKey(name: 'split_type') final String? splitType, + @JsonKey(name: 'split_description') final String? splitDescription, + @JsonKey(name: 'refund_amount') final int? refundAmount, + @JsonKey(name: 'metadata') final Map? metadata, + @JsonKey(name: 'created_at') final String? createdAt, + @JsonKey(name: 'updated_at') final String? updatedAt, + @JsonKey(name: 'payment_order_items') + final List? paymentOrderItems, + }) = _$OrderPaymentDtoImpl; + const _OrderPaymentDto._() : super._(); + + factory _OrderPaymentDto.fromJson(Map json) = + _$OrderPaymentDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'order_id') + String? get orderId; + @override + @JsonKey(name: 'payment_method_id') + String? get paymentMethodId; + @override + @JsonKey(name: 'payment_method_name') + String? get paymentMethodName; + @override + @JsonKey(name: 'payment_method_type') + String? get paymentMethodType; + @override + @JsonKey(name: 'amount') + int? get amount; + @override + @JsonKey(name: 'status') + String? get status; + @override + @JsonKey(name: 'split_number') + int? get splitNumber; + @override + @JsonKey(name: 'split_total') + int? get splitTotal; + @override + @JsonKey(name: 'split_type') + String? get splitType; + @override + @JsonKey(name: 'split_description') + String? get splitDescription; + @override + @JsonKey(name: 'refund_amount') + int? get refundAmount; + @override + @JsonKey(name: 'metadata') + Map? get metadata; + @override + @JsonKey(name: 'created_at') + String? get createdAt; + @override + @JsonKey(name: 'updated_at') + String? get updatedAt; + @override + @JsonKey(name: 'payment_order_items') + List? get paymentOrderItems; + + /// Create a copy of OrderPaymentDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OrderPaymentDtoImplCopyWith<_$OrderPaymentDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} + +PaymentOrderItemDto _$PaymentOrderItemDtoFromJson(Map json) { + return _PaymentOrderItemDto.fromJson(json); +} + +/// @nodoc +mixin _$PaymentOrderItemDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'order_payment_id') + String? get orderPaymentId => throw _privateConstructorUsedError; + @JsonKey(name: 'order_item_id') + String? get orderItemId => throw _privateConstructorUsedError; + @JsonKey(name: 'amount') + int? get amount => throw _privateConstructorUsedError; + @JsonKey(name: 'refund_amount') + int? get refundAmount => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this PaymentOrderItemDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of PaymentOrderItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PaymentOrderItemDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PaymentOrderItemDtoCopyWith<$Res> { + factory $PaymentOrderItemDtoCopyWith( + PaymentOrderItemDto value, + $Res Function(PaymentOrderItemDto) then, + ) = _$PaymentOrderItemDtoCopyWithImpl<$Res, PaymentOrderItemDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_payment_id') String? orderPaymentId, + @JsonKey(name: 'order_item_id') String? orderItemId, + @JsonKey(name: 'amount') int? amount, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class _$PaymentOrderItemDtoCopyWithImpl<$Res, $Val extends PaymentOrderItemDto> + implements $PaymentOrderItemDtoCopyWith<$Res> { + _$PaymentOrderItemDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PaymentOrderItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderPaymentId = freezed, + Object? orderItemId = freezed, + Object? amount = freezed, + Object? refundAmount = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderPaymentId: freezed == orderPaymentId + ? _value.orderPaymentId + : orderPaymentId // ignore: cast_nullable_to_non_nullable + as String?, + orderItemId: freezed == orderItemId + ? _value.orderItemId + : orderItemId // ignore: cast_nullable_to_non_nullable + as String?, + amount: freezed == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int?, + refundAmount: freezed == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$PaymentOrderItemDtoImplCopyWith<$Res> + implements $PaymentOrderItemDtoCopyWith<$Res> { + factory _$$PaymentOrderItemDtoImplCopyWith( + _$PaymentOrderItemDtoImpl value, + $Res Function(_$PaymentOrderItemDtoImpl) then, + ) = __$$PaymentOrderItemDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'order_payment_id') String? orderPaymentId, + @JsonKey(name: 'order_item_id') String? orderItemId, + @JsonKey(name: 'amount') int? amount, + @JsonKey(name: 'refund_amount') int? refundAmount, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class __$$PaymentOrderItemDtoImplCopyWithImpl<$Res> + extends _$PaymentOrderItemDtoCopyWithImpl<$Res, _$PaymentOrderItemDtoImpl> + implements _$$PaymentOrderItemDtoImplCopyWith<$Res> { + __$$PaymentOrderItemDtoImplCopyWithImpl( + _$PaymentOrderItemDtoImpl _value, + $Res Function(_$PaymentOrderItemDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of PaymentOrderItemDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? orderPaymentId = freezed, + Object? orderItemId = freezed, + Object? amount = freezed, + Object? refundAmount = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$PaymentOrderItemDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + orderPaymentId: freezed == orderPaymentId + ? _value.orderPaymentId + : orderPaymentId // ignore: cast_nullable_to_non_nullable + as String?, + orderItemId: freezed == orderItemId + ? _value.orderItemId + : orderItemId // ignore: cast_nullable_to_non_nullable + as String?, + amount: freezed == amount + ? _value.amount + : amount // ignore: cast_nullable_to_non_nullable + as int?, + refundAmount: freezed == refundAmount + ? _value.refundAmount + : refundAmount // ignore: cast_nullable_to_non_nullable + as int?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$PaymentOrderItemDtoImpl extends _PaymentOrderItemDto { + const _$PaymentOrderItemDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'order_payment_id') this.orderPaymentId, + @JsonKey(name: 'order_item_id') this.orderItemId, + @JsonKey(name: 'amount') this.amount, + @JsonKey(name: 'refund_amount') this.refundAmount, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + }) : super._(); + + factory _$PaymentOrderItemDtoImpl.fromJson(Map json) => + _$$PaymentOrderItemDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'order_payment_id') + final String? orderPaymentId; + @override + @JsonKey(name: 'order_item_id') + final String? orderItemId; + @override + @JsonKey(name: 'amount') + final int? amount; + @override + @JsonKey(name: 'refund_amount') + final int? refundAmount; + @override + @JsonKey(name: 'created_at') + final String? createdAt; + @override + @JsonKey(name: 'updated_at') + final String? updatedAt; + + @override + String toString() { + return 'PaymentOrderItemDto(id: $id, orderPaymentId: $orderPaymentId, orderItemId: $orderItemId, amount: $amount, refundAmount: $refundAmount, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PaymentOrderItemDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.orderPaymentId, orderPaymentId) || + other.orderPaymentId == orderPaymentId) && + (identical(other.orderItemId, orderItemId) || + other.orderItemId == orderItemId) && + (identical(other.amount, amount) || other.amount == amount) && + (identical(other.refundAmount, refundAmount) || + other.refundAmount == refundAmount) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + orderPaymentId, + orderItemId, + amount, + refundAmount, + createdAt, + updatedAt, + ); + + /// Create a copy of PaymentOrderItemDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PaymentOrderItemDtoImplCopyWith<_$PaymentOrderItemDtoImpl> get copyWith => + __$$PaymentOrderItemDtoImplCopyWithImpl<_$PaymentOrderItemDtoImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$PaymentOrderItemDtoImplToJson(this); + } +} + +abstract class _PaymentOrderItemDto extends PaymentOrderItemDto { + const factory _PaymentOrderItemDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'order_payment_id') final String? orderPaymentId, + @JsonKey(name: 'order_item_id') final String? orderItemId, + @JsonKey(name: 'amount') final int? amount, + @JsonKey(name: 'refund_amount') final int? refundAmount, + @JsonKey(name: 'created_at') final String? createdAt, + @JsonKey(name: 'updated_at') final String? updatedAt, + }) = _$PaymentOrderItemDtoImpl; + const _PaymentOrderItemDto._() : super._(); + + factory _PaymentOrderItemDto.fromJson(Map json) = + _$PaymentOrderItemDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'order_payment_id') + String? get orderPaymentId; + @override + @JsonKey(name: 'order_item_id') + String? get orderItemId; + @override + @JsonKey(name: 'amount') + int? get amount; + @override + @JsonKey(name: 'refund_amount') + int? get refundAmount; + @override + @JsonKey(name: 'created_at') + String? get createdAt; + @override + @JsonKey(name: 'updated_at') + String? get updatedAt; + + /// Create a copy of PaymentOrderItemDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PaymentOrderItemDtoImplCopyWith<_$PaymentOrderItemDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/order/order_dtos.g.dart b/lib/infrastructure/order/order_dtos.g.dart new file mode 100644 index 0000000..de95ff2 --- /dev/null +++ b/lib/infrastructure/order/order_dtos.g.dart @@ -0,0 +1,173 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'order_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$OrderDtoImpl _$$OrderDtoImplFromJson(Map json) => + _$OrderDtoImpl( + id: json['id'] as String?, + orderNumber: json['order_number'] as String?, + outletId: json['outlet_id'] as String?, + userId: json['user_id'] as String?, + tableNumber: json['table_number'] as String?, + orderType: json['order_type'] as String?, + status: json['status'] as String?, + subtotal: (json['subtotal'] as num?)?.toInt(), + taxAmount: (json['tax_amount'] as num?)?.toInt(), + discountAmount: (json['discount_amount'] as num?)?.toInt(), + totalAmount: (json['total_amount'] as num?)?.toInt(), + totalCost: (json['total_cost'] as num?)?.toInt(), + remainingAmount: (json['remaining_amount'] as num?)?.toInt(), + paymentStatus: json['payment_status'] as String?, + refundAmount: (json['refund_amount'] as num?)?.toInt(), + isVoid: json['is_void'] as bool?, + isRefund: json['is_refund'] as bool?, + notes: json['notes'] as String?, + metadata: json['metadata'] as Map?, + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, + orderItems: (json['order_items'] as List?) + ?.map((e) => OrderItemDto.fromJson(e as Map)) + .toList(), + payments: (json['payments'] as List?) + ?.map((e) => OrderPaymentDto.fromJson(e as Map)) + .toList(), + totalPaid: (json['total_paid'] as num?)?.toInt(), + paymentCount: (json['payment_count'] as num?)?.toInt(), + splitType: json['split_type'] as String?, + ); + +Map _$$OrderDtoImplToJson(_$OrderDtoImpl instance) => + { + 'id': instance.id, + 'order_number': instance.orderNumber, + 'outlet_id': instance.outletId, + 'user_id': instance.userId, + 'table_number': instance.tableNumber, + 'order_type': instance.orderType, + 'status': instance.status, + 'subtotal': instance.subtotal, + 'tax_amount': instance.taxAmount, + 'discount_amount': instance.discountAmount, + 'total_amount': instance.totalAmount, + 'total_cost': instance.totalCost, + 'remaining_amount': instance.remainingAmount, + 'payment_status': instance.paymentStatus, + 'refund_amount': instance.refundAmount, + 'is_void': instance.isVoid, + 'is_refund': instance.isRefund, + 'notes': instance.notes, + 'metadata': instance.metadata, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, + 'order_items': instance.orderItems, + 'payments': instance.payments, + 'total_paid': instance.totalPaid, + 'payment_count': instance.paymentCount, + 'split_type': instance.splitType, + }; + +_$OrderItemDtoImpl _$$OrderItemDtoImplFromJson(Map json) => + _$OrderItemDtoImpl( + id: json['id'] as String?, + orderId: json['order_id'] as String?, + productId: json['product_id'] as String?, + productName: json['product_name'] as String?, + quantity: (json['quantity'] as num?)?.toInt(), + price: (json['price'] as num?)?.toInt(), + subtotal: (json['subtotal'] as num?)?.toInt(), + discountAmount: (json['discount_amount'] as num?)?.toInt(), + total: (json['total'] as num?)?.toInt(), + cost: (json['cost'] as num?)?.toInt(), + metadata: json['metadata'] as Map?, + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, + ); + +Map _$$OrderItemDtoImplToJson(_$OrderItemDtoImpl instance) => + { + 'id': instance.id, + 'order_id': instance.orderId, + 'product_id': instance.productId, + 'product_name': instance.productName, + 'quantity': instance.quantity, + 'price': instance.price, + 'subtotal': instance.subtotal, + 'discount_amount': instance.discountAmount, + 'total': instance.total, + 'cost': instance.cost, + 'metadata': instance.metadata, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, + }; + +_$OrderPaymentDtoImpl _$$OrderPaymentDtoImplFromJson( + Map json, +) => _$OrderPaymentDtoImpl( + id: json['id'] as String?, + orderId: json['order_id'] as String?, + paymentMethodId: json['payment_method_id'] as String?, + paymentMethodName: json['payment_method_name'] as String?, + paymentMethodType: json['payment_method_type'] as String?, + amount: (json['amount'] as num?)?.toInt(), + status: json['status'] as String?, + splitNumber: (json['split_number'] as num?)?.toInt(), + splitTotal: (json['split_total'] as num?)?.toInt(), + splitType: json['split_type'] as String?, + splitDescription: json['split_description'] as String?, + refundAmount: (json['refund_amount'] as num?)?.toInt(), + metadata: json['metadata'] as Map?, + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, + paymentOrderItems: (json['payment_order_items'] as List?) + ?.map((e) => PaymentOrderItemDto.fromJson(e as Map)) + .toList(), +); + +Map _$$OrderPaymentDtoImplToJson( + _$OrderPaymentDtoImpl instance, +) => { + 'id': instance.id, + 'order_id': instance.orderId, + 'payment_method_id': instance.paymentMethodId, + 'payment_method_name': instance.paymentMethodName, + 'payment_method_type': instance.paymentMethodType, + 'amount': instance.amount, + 'status': instance.status, + 'split_number': instance.splitNumber, + 'split_total': instance.splitTotal, + 'split_type': instance.splitType, + 'split_description': instance.splitDescription, + 'refund_amount': instance.refundAmount, + 'metadata': instance.metadata, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, + 'payment_order_items': instance.paymentOrderItems, +}; + +_$PaymentOrderItemDtoImpl _$$PaymentOrderItemDtoImplFromJson( + Map json, +) => _$PaymentOrderItemDtoImpl( + id: json['id'] as String?, + orderPaymentId: json['order_payment_id'] as String?, + orderItemId: json['order_item_id'] as String?, + amount: (json['amount'] as num?)?.toInt(), + refundAmount: (json['refund_amount'] as num?)?.toInt(), + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, +); + +Map _$$PaymentOrderItemDtoImplToJson( + _$PaymentOrderItemDtoImpl instance, +) => { + 'id': instance.id, + 'order_payment_id': instance.orderPaymentId, + 'order_item_id': instance.orderItemId, + 'amount': instance.amount, + 'refund_amount': instance.refundAmount, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, +}; diff --git a/lib/infrastructure/order/repositories/order_repository.dart b/lib/infrastructure/order/repositories/order_repository.dart new file mode 100644 index 0000000..a80a321 --- /dev/null +++ b/lib/infrastructure/order/repositories/order_repository.dart @@ -0,0 +1,43 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart' hide Order; +import 'package:injectable/injectable.dart' hide Order; + +import '../../../domain/order/order.dart'; +import '../datasource/remote_data_provider.dart'; + +@Injectable(as: IOrderRepository) +class OrderRepository implements IOrderRepository { + final OrderRemoteDataProvider _dataProvider; + final String _logName = 'OrderRepository'; + + OrderRepository(this._dataProvider); + + @override + Future>> get({ + int page = 1, + int limit = 20, + String? status, + String? search, + }) async { + try { + final result = await _dataProvider.fetch( + page: page, + limit: limit, + status: status, + search: search, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.map((e) => e.toDomain()).toList(); + + return right(auth); + } catch (e, s) { + log('getOrderError', name: _logName, error: e, stackTrace: s); + return left(const OrderFailure.unexpectedError()); + } + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index ebc0cf1..78b31ec 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -34,6 +34,8 @@ import 'package:apskel_owner_flutter/application/customer/customer_loader/custom as _i972; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; +import 'package:apskel_owner_flutter/application/order/order_loader/order_loader_bloc.dart' + as _i1058; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; @@ -50,6 +52,7 @@ import 'package:apskel_owner_flutter/domain/analytic/repositories/i_analytic_rep import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; import 'package:apskel_owner_flutter/domain/category/category.dart' as _i1020; import 'package:apskel_owner_flutter/domain/customer/customer.dart' as _i48; +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i219; import 'package:apskel_owner_flutter/domain/product/product.dart' as _i419; import 'package:apskel_owner_flutter/env.dart' as _i6; import 'package:apskel_owner_flutter/infrastructure/analytic/datasource/remote_data_provider.dart' @@ -70,6 +73,10 @@ import 'package:apskel_owner_flutter/infrastructure/customer/datasources/remote_ as _i1006; import 'package:apskel_owner_flutter/infrastructure/customer/repositories/customer_repository.dart' as _i550; +import 'package:apskel_owner_flutter/infrastructure/order/datasource/remote_data_provider.dart' + as _i130; +import 'package:apskel_owner_flutter/infrastructure/order/repositories/order_repository.dart' + as _i641; import 'package:apskel_owner_flutter/infrastructure/product/datasources/remote_data_provider.dart' as _i823; import 'package:apskel_owner_flutter/infrastructure/product/repositories/product_repository.dart' @@ -138,9 +145,15 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1006.CustomerRemoteDataProvider>( () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i130.OrderRemoteDataProvider>( + () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), ); + gh.factory<_i219.IOrderRepository>( + () => _i641.OrderRepository(gh<_i130.OrderRemoteDataProvider>()), + ); gh.factory<_i49.IAuthRepository>( () => _i1035.AuthRepository( gh<_i991.AuthLocalDataProvider>(), @@ -200,6 +213,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i574.LogoutFormBloc>( () => _i574.LogoutFormBloc(gh<_i49.IAuthRepository>()), ); + gh.factory<_i1058.OrderLoaderBloc>( + () => _i1058.OrderLoaderBloc(gh<_i219.IOrderRepository>()), + ); return this; } } diff --git a/lib/presentation/pages/order/order_page.dart b/lib/presentation/pages/order/order_page.dart index 5d65e02..37bc786 100644 --- a/lib/presentation/pages/order/order_page.dart +++ b/lib/presentation/pages/order/order_page.dart @@ -1,20 +1,32 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../application/order/order_loader/order_loader_bloc.dart'; import '../../../common/theme/theme.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; +import '../../components/widgets/empty_widget.dart'; import 'widgets/status_tile.dart'; import 'widgets/order_tile.dart'; @RoutePage() -class OrderPage extends StatefulWidget { +class OrderPage extends StatefulWidget implements AutoRouteWrapper { const OrderPage({super.key}); @override State createState() => _OrderPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (_) => + getIt() + ..add(OrderLoaderEvent.fetched(isRefresh: true)), + child: this, + ); } class _OrderPageState extends State with TickerProviderStateMixin { @@ -22,15 +34,11 @@ class _OrderPageState extends State with TickerProviderStateMixin { late AnimationController _slideController; late Animation _fadeAnimation; late Animation _slideAnimation; + final ScrollController _scrollController = ScrollController(); // Filter state String selectedFilter = 'All'; - final List filterOptions = [ - 'All', - 'Completed', - 'Pending', - 'Refunded', - ]; + final List filterOptions = ['All', 'Completed', 'Pending']; @override void initState() { @@ -66,202 +74,168 @@ class _OrderPageState extends State with TickerProviderStateMixin { super.dispose(); } - final sampleTransactions = [ - Transaction( - id: 'TXN001', - customerName: 'John Doe', - date: DateTime.now().subtract(const Duration(hours: 2)), - totalAmount: 125000, - itemCount: 3, - paymentMethod: 'Cash', - status: TransactionStatus.completed, - receiptNumber: 'RCP-2024-001', - ), - Transaction( - id: 'TXN002', - customerName: 'Jane Smith', - date: DateTime.now().subtract(const Duration(hours: 5)), - totalAmount: 87500, - itemCount: 2, - paymentMethod: 'QRIS', - status: TransactionStatus.pending, - receiptNumber: 'RCP-2024-002', - ), - Transaction( - id: 'TXN003', - customerName: 'Bob Johnson', - date: DateTime.now().subtract(const Duration(days: 1)), - totalAmount: 250000, - itemCount: 5, - paymentMethod: 'Credit Card', - status: TransactionStatus.refunded, - receiptNumber: 'RCP-2024-003', - ), - ]; - - // Filter transactions based on selected status - List get filteredTransactions { - if (selectedFilter == 'All') { - return sampleTransactions; - } - - TransactionStatus? filterStatus; - switch (selectedFilter) { - case 'Completed': - filterStatus = TransactionStatus.completed; - break; - case 'Pending': - filterStatus = TransactionStatus.pending; - break; - case 'Refunded': - filterStatus = TransactionStatus.refunded; - break; - } - - return sampleTransactions - .where((transaction) => transaction.status == filterStatus) - .toList(); - } - - // Build filter chip - @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: CustomScrollView( - slivers: [ - // Custom App Bar with Hero Effect - SliverAppBar( - expandedHeight: 120, - floating: true, - pinned: true, - backgroundColor: AppColor.primary, - centerTitle: false, - flexibleSpace: CustomAppBar(title: 'Order', isBack: false), - actions: [ - ActionIconButton(onTap: () {}, icon: LineIcons.filter), - SpaceWidth(8), - ], - ), + body: BlocListener( + listenWhen: (p, c) => p.status != c.status, + listener: (context, state) { + context.read().add( + OrderLoaderEvent.fetched(isRefresh: true), + ); + }, + child: BlocBuilder( + builder: (context, state) { + return NotificationListener( + onNotification: (notification) { + if (notification is ScrollEndNotification && + _scrollController.position.extentAfter == 0) { + context.read().add( + OrderLoaderEvent.fetched(), + ); + return true; + } - // Pinned Filter Section - SliverPersistentHeader( - pinned: true, - delegate: _FilterHeaderDelegate( - child: Container( - color: AppColor.background, - padding: EdgeInsets.fromLTRB( - AppValue.padding, - 10, - AppValue.padding, - 10, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: filterOptions.map((option) { - final index = filterOptions.indexOf(option); - return Padding( - padding: EdgeInsets.only( - right: index < filterOptions.length - 1 ? 8 : 0, - ), - child: OrderStatusTile( - label: option, - isSelected: option == selectedFilter, - onSelected: (isSelected) { - if (isSelected) { - setState(() { - selectedFilter = option; - }); - } - }, - ), - ); - }).toList(), - ), - ), - ], - ), - ), - ), - ), + return true; + }, + child: CustomScrollView( + controller: _scrollController, + slivers: [ + // Custom App Bar with Hero Effect + SliverAppBar( + expandedHeight: 120, + floating: true, + pinned: true, + backgroundColor: AppColor.primary, + centerTitle: false, + flexibleSpace: CustomAppBar(title: 'Order', isBack: false), + actions: [ + ActionIconButton(onTap: () {}, icon: LineIcons.filter), + SpaceWidth(8), + ], + ), - // Content - SliverPadding( - padding: EdgeInsets.all(AppValue.padding), - sliver: SliverList( - delegate: SliverChildListDelegate([ - FadeTransition( - opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: Column( - children: [ - // Show filtered transaction count - if (selectedFilter != 'All') - Padding( - padding: const EdgeInsets.only(bottom: 16), - child: Row( - children: [ - Text( - '${filteredTransactions.length} ${selectedFilter.toLowerCase()} transaction${filteredTransactions.length != 1 ? 's' : ''}', - style: TextStyle( - color: AppColor.textSecondary, - fontSize: 14, - ), - ), - ], - ), - ), - - // Transaction List - filteredTransactions.isEmpty - ? Container( - padding: const EdgeInsets.symmetric( - vertical: 40, - ), - child: Column( - children: [ - Icon( - LineIcons.receipt, - size: 64, - color: AppColor.textSecondary.withOpacity( - 0.5, - ), + // Pinned Filter Section + SliverPersistentHeader( + pinned: true, + delegate: _FilterHeaderDelegate( + child: Container( + color: AppColor.background, + padding: EdgeInsets.fromLTRB( + AppValue.padding, + 10, + AppValue.padding, + 10, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: filterOptions.map((option) { + final index = filterOptions.indexOf(option); + return Padding( + padding: EdgeInsets.only( + right: index < filterOptions.length - 1 + ? 8 + : 0, ), - const SizedBox(height: 16), - Text( - 'No ${selectedFilter.toLowerCase()} transactions found', - style: TextStyle( - color: AppColor.textSecondary, - fontSize: 16, - ), + child: OrderStatusTile( + label: option, + isSelected: option == selectedFilter, + onSelected: (isSelected) { + if (isSelected) { + setState(() { + selectedFilter = option; + }); + if (option.toLowerCase() == 'all') { + context.read().add( + OrderLoaderEvent.statusChanged( + '', + ), + ); + } else { + context.read().add( + OrderLoaderEvent.statusChanged( + option.toLowerCase(), + ), + ); + } + } + }, ), - ], - ), - ) - : Column( - children: filteredTransactions.map(( - transaction, - ) { - return OrderTile( - transaction: transaction, - onTap: () {}, ); }).toList(), ), - ], + ), + ], + ), + ), ), ), - ), - ]), - ), - ), - ], + + // Content + SliverPadding( + padding: EdgeInsets.all(AppValue.padding), + sliver: SliverList( + delegate: SliverChildListDelegate([ + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + children: [ + // Show filtered transaction count + if (selectedFilter != 'All') + Padding( + padding: const EdgeInsets.only(bottom: 16), + child: Row( + children: [ + Text( + '${state.orders.length} ${selectedFilter.toLowerCase()} order${state.orders.length != 1 ? 's' : ''}', + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 14, + ), + ), + ], + ), + ), + + // Transaction List + state.orders.isEmpty + ? EmptyWidget( + title: 'Order', + message: + 'No ${selectedFilter.toLowerCase()} orders found', + ) + : ListView.builder( + itemCount: state.orders.length, + shrinkWrap: true, + physics: + const NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + itemBuilder: (context, index) { + return OrderTile( + onTap: () {}, + order: state.orders[index], + ); + }, + ), + ], + ), + ), + ), + ]), + ), + ), + ], + ), + ); + }, + ), ), ); } diff --git a/lib/presentation/pages/order/widgets/order_tile.dart b/lib/presentation/pages/order/widgets/order_tile.dart index f4e9a6a..f724262 100644 --- a/lib/presentation/pages/order/widgets/order_tile.dart +++ b/lib/presentation/pages/order/widgets/order_tile.dart @@ -2,41 +2,17 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import '../../../../common/theme/theme.dart'; - -// Model untuk Transaction -class Transaction { - final String id; - final String customerName; - final DateTime date; - final double totalAmount; - final int itemCount; - final String paymentMethod; - final TransactionStatus status; - final String? receiptNumber; - - Transaction({ - required this.id, - required this.customerName, - required this.date, - required this.totalAmount, - required this.itemCount, - required this.paymentMethod, - required this.status, - this.receiptNumber, - }); -} - -enum TransactionStatus { completed, pending, cancelled, refunded } +import '../../../../domain/order/order.dart'; class OrderTile extends StatelessWidget { - final Transaction transaction; + final Order order; final VoidCallback? onTap; final VoidCallback? onPrint; final VoidCallback? onRefund; const OrderTile({ super.key, - required this.transaction, + required this.order, this.onTap, this.onPrint, this.onRefund, @@ -73,8 +49,8 @@ class OrderTile extends StatelessWidget { _buildHeaderRow(), const SizedBox(height: 12), - // Transaction Info - _buildTransactionInfo(), + // Order Info + _buildOrderInfo(), const SizedBox(height: 16), // Amount Section @@ -99,7 +75,9 @@ class OrderTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - transaction.receiptNumber ?? 'TXN-${transaction.id}', + order.orderNumber.isNotEmpty + ? order.orderNumber + : 'ORD-${order.id}', style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, @@ -108,7 +86,7 @@ class OrderTile extends StatelessWidget { ), const SizedBox(height: 2), Text( - DateFormat('dd MMM yyyy, HH:mm').format(transaction.date), + _formatDate(order.createdAt), style: const TextStyle( fontSize: 12, color: AppColor.textSecondary, @@ -126,27 +104,38 @@ class OrderTile extends StatelessWidget { String statusText; IconData statusIcon; - switch (transaction.status) { - case TransactionStatus.completed: - statusColor = AppColor.success; - statusText = 'Completed'; - statusIcon = Icons.check_circle; - break; - case TransactionStatus.pending: - statusColor = AppColor.warning; - statusText = 'Pending'; - statusIcon = Icons.schedule; - break; - case TransactionStatus.cancelled: - statusColor = AppColor.error; - statusText = 'Cancelled'; - statusIcon = Icons.cancel; - break; - case TransactionStatus.refunded: - statusColor = AppColor.info; - statusText = 'Refunded'; - statusIcon = Icons.undo; - break; + // Check isVoid and isRefund first for display + if (order.isVoid) { + statusColor = AppColor.error; + statusText = 'Void'; + statusIcon = Icons.block; + } else if (order.isRefund) { + statusColor = AppColor.info; + statusText = 'Refunded'; + statusIcon = Icons.undo; + } else { + // Handle status values (only pending and completed) + switch (order.status.toLowerCase()) { + case 'completed': + case 'paid': + case 'finished': + statusColor = AppColor.success; + statusText = 'Completed'; + statusIcon = Icons.check_circle; + break; + case 'pending': + case 'waiting': + case 'processing': + statusColor = AppColor.warning; + statusText = 'Pending'; + statusIcon = Icons.schedule; + break; + default: + statusColor = AppColor.textSecondary; + statusText = order.status; + statusIcon = Icons.info; + break; + } } return Container( @@ -174,7 +163,7 @@ class OrderTile extends StatelessWidget { ); } - Widget _buildTransactionInfo() { + Widget _buildOrderInfo() { return Row( children: [ Expanded( @@ -184,11 +173,11 @@ class OrderTile extends StatelessWidget { children: [ Row( children: [ - Icon(Icons.person_outline, size: 16, color: AppColor.primary), + Icon(_getOrderInfoIcon(), size: 16, color: AppColor.primary), const SizedBox(width: 6), Expanded( child: Text( - transaction.customerName, + _getOrderInfoText(), style: const TextStyle( fontSize: 14, fontWeight: FontWeight.w600, @@ -209,7 +198,7 @@ class OrderTile extends StatelessWidget { ), const SizedBox(width: 6), Text( - '${transaction.itemCount} items', + '${order.orderItems.length} items', style: const TextStyle( fontSize: 13, color: AppColor.textSecondary, @@ -230,13 +219,13 @@ class OrderTile extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ Icon( - _getPaymentIcon(transaction.paymentMethod), + _getOrderTypeIcon(order.orderType), size: 16, color: AppColor.primary, ), const SizedBox(width: 6), Text( - transaction.paymentMethod, + order.orderType.isNotEmpty ? order.orderType : 'Dine In', style: const TextStyle( fontSize: 12, fontWeight: FontWeight.w500, @@ -285,13 +274,24 @@ class OrderTile extends StatelessWidget { ), const SizedBox(height: 4), Text( - 'Rp ${NumberFormat('#,###').format(transaction.totalAmount)}', + 'Rp ${NumberFormat('#,###').format(order.totalAmount)}', style: const TextStyle( fontSize: 24, fontWeight: FontWeight.bold, color: AppColor.textWhite, ), ), + if (order.remainingAmount > 0) ...[ + const SizedBox(height: 4), + Text( + 'Remaining: Rp ${NumberFormat('#,###').format(order.remainingAmount)}', + style: const TextStyle( + fontSize: 12, + color: AppColor.textWhite, + fontWeight: FontWeight.w400, + ), + ), + ], ], ), Container( @@ -300,8 +300,8 @@ class OrderTile extends StatelessWidget { color: AppColor.backgroundLight.withOpacity(0.2), shape: BoxShape.circle, ), - child: const Icon( - Icons.attach_money, + child: Icon( + _getPaymentStatusIcon(order.paymentStatus), color: AppColor.textWhite, size: 24, ), @@ -312,19 +312,32 @@ class OrderTile extends StatelessWidget { } Widget _buildFooterActions() { + // Don't show anything if order is void or refunded + if (order.isVoid || order.isRefund) { + return const SizedBox.shrink(); + } + return Row( children: [ Expanded( - child: Text( - 'ID: ${transaction.id}', - style: const TextStyle( - fontSize: 11, - color: AppColor.textLight, - fontWeight: FontWeight.w500, - ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (order.payments.isNotEmpty) ...[ + const SizedBox(height: 2), + Text( + 'Payment: ${_getPaymentMethods()}', + style: const TextStyle( + fontSize: 11, + color: AppColor.textLight, + fontWeight: FontWeight.w400, + ), + ), + ], + ], ), ), - if (transaction.status == TransactionStatus.completed) ...[ + if (order.status.toLowerCase() == 'completed') ...[ _buildActionButton( icon: Icons.print, label: 'Print', @@ -377,25 +390,90 @@ class OrderTile extends StatelessWidget { ); } - IconData _getPaymentIcon(String paymentMethod) { - switch (paymentMethod.toLowerCase()) { - case 'cash': - return Icons.payments; - case 'card': - case 'credit card': - case 'debit card': - return Icons.credit_card; - case 'qris': - case 'qr code': - return Icons.qr_code; - case 'transfer': - case 'bank transfer': - return Icons.account_balance; - case 'e-wallet': - case 'digital wallet': - return Icons.account_balance_wallet; + IconData _getOrderInfoIcon() { + switch (order.orderType.toLowerCase()) { + case 'dine in': + case 'dine_in': + return Icons.table_restaurant_outlined; + case 'takeaway': + case 'take_away': + case 'pickup': + return Icons.person_outline; + case 'delivery': + return Icons.location_on_outlined; default: - return Icons.payment; + return Icons.receipt_outlined; + } + } + + String _getOrderInfoText() { + switch (order.orderType.toLowerCase()) { + case 'dine in': + case 'dine_in': + return 'Table ${order.tableNumber.isNotEmpty ? order.tableNumber : 'N/A'}'; + case 'takeaway': + case 'take_away': + case 'pickup': + return 'Pickup Order'; + case 'delivery': + return 'Delivery Order'; + default: + return order.tableNumber.isNotEmpty + ? 'Table ${order.tableNumber}' + : 'Order ${order.orderNumber}'; + } + } + + IconData _getOrderTypeIcon(String orderType) { + switch (orderType.toLowerCase()) { + case 'dine in': + case 'dine_in': + return Icons.restaurant; + case 'takeaway': + case 'take_away': + case 'pickup': + return Icons.shopping_bag; + case 'delivery': + return Icons.delivery_dining; + default: + return Icons.restaurant_menu; + } + } + + IconData _getPaymentStatusIcon(String paymentStatus) { + switch (paymentStatus.toLowerCase()) { + case 'paid': + case 'completed': + return Icons.check_circle; + case 'pending': + case 'partial': + return Icons.schedule; + case 'failed': + case 'cancelled': + return Icons.error; + default: + return Icons.attach_money; + } + } + + String _getPaymentMethods() { + if (order.payments.isEmpty) return 'N/A'; + + // Get unique payment methods from payments + final methods = order.payments + .map((payment) => payment.paymentMethodName) + .toSet() + .join(', '); + + return methods.isEmpty ? 'N/A' : methods; + } + + String _formatDate(String dateString) { + try { + final date = DateTime.parse(dateString); + return DateFormat('dd MMM yyyy, HH:mm').format(date); + } catch (e) { + return dateString; } } } From c367bd2cd9b2a9bb3a3377ec757187584d40873f Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 14:26:56 +0700 Subject: [PATCH 066/108] feat: change structure order --- .../pages/order/{ => order_list}/order_page.dart | 14 +++++++------- .../order/{ => order_list}/widgets/order_tile.dart | 4 ++-- .../{ => order_list}/widgets/status_tile.dart | 2 +- lib/presentation/router/app_router.gr.dart | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) rename lib/presentation/pages/order/{ => order_list}/order_page.dart (96%) rename lib/presentation/pages/order/{ => order_list}/widgets/order_tile.dart (99%) rename lib/presentation/pages/order/{ => order_list}/widgets/status_tile.dart (95%) diff --git a/lib/presentation/pages/order/order_page.dart b/lib/presentation/pages/order/order_list/order_page.dart similarity index 96% rename from lib/presentation/pages/order/order_page.dart rename to lib/presentation/pages/order/order_list/order_page.dart index 37bc786..7e22051 100644 --- a/lib/presentation/pages/order/order_page.dart +++ b/lib/presentation/pages/order/order_list/order_page.dart @@ -3,13 +3,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; -import '../../../application/order/order_loader/order_loader_bloc.dart'; -import '../../../common/theme/theme.dart'; -import '../../../injection.dart'; -import '../../components/appbar/appbar.dart'; -import '../../components/button/button.dart'; -import '../../components/spacer/spacer.dart'; -import '../../components/widgets/empty_widget.dart'; +import '../../../../application/order/order_loader/order_loader_bloc.dart'; +import '../../../../common/theme/theme.dart'; +import '../../../../injection.dart'; +import '../../../components/appbar/appbar.dart'; +import '../../../components/button/button.dart'; +import '../../../components/spacer/spacer.dart'; +import '../../../components/widgets/empty_widget.dart'; import 'widgets/status_tile.dart'; import 'widgets/order_tile.dart'; diff --git a/lib/presentation/pages/order/widgets/order_tile.dart b/lib/presentation/pages/order/order_list/widgets/order_tile.dart similarity index 99% rename from lib/presentation/pages/order/widgets/order_tile.dart rename to lib/presentation/pages/order/order_list/widgets/order_tile.dart index f724262..77311a7 100644 --- a/lib/presentation/pages/order/widgets/order_tile.dart +++ b/lib/presentation/pages/order/order_list/widgets/order_tile.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import '../../../../common/theme/theme.dart'; -import '../../../../domain/order/order.dart'; +import '../../../../../common/theme/theme.dart'; +import '../../../../../domain/order/order.dart'; class OrderTile extends StatelessWidget { final Order order; diff --git a/lib/presentation/pages/order/widgets/status_tile.dart b/lib/presentation/pages/order/order_list/widgets/status_tile.dart similarity index 95% rename from lib/presentation/pages/order/widgets/status_tile.dart rename to lib/presentation/pages/order/order_list/widgets/status_tile.dart index e373de7..10f627e 100644 --- a/lib/presentation/pages/order/widgets/status_tile.dart +++ b/lib/presentation/pages/order/order_list/widgets/status_tile.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import '../../../../common/theme/theme.dart'; +import '../../../../../common/theme/theme.dart'; class OrderStatusTile extends StatelessWidget { final String label; diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 8c9e144..2101015 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -27,7 +27,7 @@ import 'package:apskel_owner_flutter/presentation/pages/language/language_page.d as _i7; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/order/order_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' as _i10; import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i11; @@ -263,7 +263,7 @@ class OrderRoute extends _i18.PageRouteInfo { static _i18.PageInfo page = _i18.PageInfo( name, builder: (data) { - return const _i10.OrderPage(); + return _i18.WrappedRoute(child: const _i10.OrderPage()); }, ); } From b4d2d859eb549513e3e48f827b11b8561996a7a5 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 15:30:34 +0700 Subject: [PATCH 067/108] feat: order detail --- .../order/order_detail/order_detail_page.dart | 1228 +++++++++++++++++ .../pages/order/order_list/order_page.dart | 7 +- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 218 +-- 4 files changed, 1366 insertions(+), 90 deletions(-) create mode 100644 lib/presentation/pages/order/order_detail/order_detail_page.dart diff --git a/lib/presentation/pages/order/order_detail/order_detail_page.dart b/lib/presentation/pages/order/order_detail/order_detail_page.dart new file mode 100644 index 0000000..b13c89f --- /dev/null +++ b/lib/presentation/pages/order/order_detail/order_detail_page.dart @@ -0,0 +1,1228 @@ +import 'package:flutter/material.dart'; +import 'package:auto_route/auto_route.dart'; +import 'dart:math' show cos, sin; + +import '../../../../common/theme/theme.dart'; +import '../../../../domain/order/order.dart'; +import '../../../components/appbar/appbar.dart'; + +@RoutePage() +class OrderDetailPage extends StatelessWidget { + final Order order; + + const OrderDetailPage({super.key, required this.order}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + SliverAppBar( + expandedHeight: 120, + pinned: true, + backgroundColor: AppColor.primary, + flexibleSpace: const CustomAppBar(title: "Detail Pesanan"), + elevation: 0, + ), + SliverToBoxAdapter( + child: Column( + children: [ + // Order Status Card + _buildOrderStatusCard(), + const SizedBox(height: 16), + + // Table Visual Card (for dine-in) + if (_isDineIn()) _buildTableVisualCard(), + + // Order Info Card + _buildOrderInfoCard(), + const SizedBox(height: 16), + + // Order Items Section + _buildOrderItemsSection(), + const SizedBox(height: 16), + + // Payment Summary Card + _buildPaymentSummaryCard(), + const SizedBox(height: 16), + + // Payment Methods Section + _buildPaymentMethodsSection(), + const SizedBox(height: 24), + ], + ), + ), + ], + ), + ); + } + + Widget _buildOrderStatusCard() { + Color statusColor = _getStatusColor(order.status); + return Container( + margin: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + statusColor.withOpacity(0.15), + statusColor.withOpacity(0.08), + Colors.white, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + stops: const [0.0, 0.5, 1.0], + ), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: statusColor.withOpacity(0.3), width: 1.5), + boxShadow: [ + BoxShadow( + color: statusColor.withOpacity(0.2), + blurRadius: 15, + offset: const Offset(0, 5), + ), + BoxShadow( + color: Colors.white, + blurRadius: 8, + offset: const Offset(-2, -2), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [statusColor, statusColor.withOpacity(0.8)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: statusColor.withOpacity(0.4), + blurRadius: 8, + offset: const Offset(0, 3), + ), + ], + ), + child: Icon( + _getStatusIcon(order.status), + color: Colors.white, + size: 28, + ), + ), + const SizedBox(width: 20), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Order Number', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Text( + order.orderNumber, + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ], + ), + ), + ], + ), + const SizedBox(height: 20), + Container( + padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 20), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.7), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: statusColor.withOpacity(0.2)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Status Pesanan', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [statusColor, statusColor.withOpacity(0.8)], + ), + borderRadius: BorderRadius.circular(25), + boxShadow: [ + BoxShadow( + color: statusColor.withOpacity(0.3), + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: Text( + order.status.toUpperCase(), + style: AppStyle.sm.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + letterSpacing: 0.5, + ), + ), + ), + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Total Amount', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Text( + 'Rp ${_formatCurrency(order.totalAmount)}', + style: AppStyle.xxl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + ], + ), + ], + ), + ), + ], + ), + ), + ); + } + + Widget _buildTableVisualCard() { + return Container( + margin: const EdgeInsets.fromLTRB(16, 0, 16, 16), + height: 220, // Increased height + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary, + AppColor.primaryLight, + AppColor.primary.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + stops: const [0.0, 0.5, 1.0], + ), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: ClipRRect( + // Prevent overflow + borderRadius: BorderRadius.circular(20), + child: Stack( + children: [ + // Background Pattern + Positioned.fill(child: CustomPaint(painter: TablePatternPainter())), + + // Content with proper spacing + Padding( + padding: const EdgeInsets.all(20), + child: Column( + children: [ + // Header + Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(15), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, + ), + ), + child: const Icon( + Icons.restaurant, + color: AppColor.white, + size: 24, + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Makan di Tempat', + style: AppStyle.sm.copyWith( + color: AppColor.white.withOpacity(0.9), + fontWeight: FontWeight.w500, + ), + ), + Text( + 'Dine In Experience', + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ], + ), + + const SizedBox(height: 20), // Fixed spacing + // Table Number Visual + Expanded( + child: Center( + child: Container( + width: 90, + height: 90, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: RadialGradient( + colors: [ + AppColor.white, + AppColor.white.withOpacity(0.9), + AppColor.white.withOpacity(0.7), + ], + stops: const [0.0, 0.7, 1.0], + ), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.2), + blurRadius: 15, + offset: const Offset(0, 5), + ), + ], + ), + child: Stack( + children: [ + // Table surface + Center( + child: Container( + width: 70, + height: 70, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white, + border: Border.all( + color: AppColor.primary.withOpacity(0.3), + width: 2, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'MEJA', + style: AppStyle.xs.copyWith( + color: AppColor.primary.withOpacity( + 0.7, + ), + fontWeight: FontWeight.w600, + letterSpacing: 1, + ), + ), + Text( + order.tableNumber, + style: AppStyle.xl.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ), + // Table legs (decorative) + ...List.generate(4, (index) { + final angle = (index * 90.0) * (3.14159 / 180); + return Positioned( + left: 45 + 30 * cos(angle) - 2, + top: 45 + 30 * sin(angle) - 8, + child: Container( + width: 4, + height: 16, + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.3), + borderRadius: BorderRadius.circular(2), + ), + ), + ); + }), + ], + ), + ), + ), + ), + + const SizedBox(height: 16), // Fixed spacing + // Bottom Info with flexible layout + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.people, + size: 16, + color: AppColor.white.withOpacity(0.9), + ), + const SizedBox(width: 6), + Text( + '${order.orderItems.length} Items', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), + const SizedBox(width: 12), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.2), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColor.success.withOpacity(0.3), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.schedule, + size: 16, + color: AppColor.white.withOpacity(0.9), + ), + const SizedBox(width: 6), + Text( + _formatDateTime(order.createdAt), + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ); + } + + Widget _buildOrderInfoCard() { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [Colors.white, Color(0xFFFAFBFF)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: AppColor.primary.withOpacity(0.1)), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.08), + blurRadius: 20, + offset: const Offset(0, 5), + ), + const BoxShadow( + color: Colors.white, + blurRadius: 6, + offset: Offset(-3, -3), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: AppColor.primaryGradient, + ), + borderRadius: BorderRadius.circular(12), + ), + child: const Icon( + Icons.info_outline, + color: Colors.white, + size: 24, + ), + ), + const SizedBox(width: 16), + Text( + 'Informasi Pesanan', + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + ], + ), + const SizedBox(height: 24), + if (_shouldShowTableNumber()) + _buildInfoRow(Icons.table_restaurant, 'Meja', order.tableNumber), + _buildInfoRow( + Icons.delivery_dining, + 'Tipe Pesanan', + order.orderType, + ), + _buildInfoRow( + Icons.payment, + 'Status Pembayaran', + order.paymentStatus, + ), + _buildInfoRow( + Icons.access_time, + 'Dibuat', + _formatDateTime(order.createdAt), + ), + if (order.notes.isNotEmpty) + _buildInfoRow(Icons.note, 'Catatan', order.notes), + ], + ), + ), + ); + } + + Widget _buildInfoRow(IconData icon, String label, String value) { + return Padding( + padding: const EdgeInsets.only(bottom: 12), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon(icon, size: 16, color: AppColor.primary), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + label, + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + const SizedBox(height: 2), + Text( + value, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildOrderItemsSection() { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(20, 20, 20, 0), + child: Row( + children: [ + Text( + 'Item Pesanan', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const Spacer(), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + '${order.orderItems.length} Item', + style: AppStyle.sm.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + ), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.all(20), + itemCount: order.orderItems.length, + separatorBuilder: (context, index) => const Divider(height: 24), + itemBuilder: (context, index) { + final item = order.orderItems[index]; + return _buildOrderItemCard(item); + }, + ), + ], + ), + ); + } + + Widget _buildOrderItemCard(OrderItem item) { + // Assume we add status to OrderItem model or determine from order status + String itemStatus = _getItemStatus(item); + Color itemStatusColor = _getItemStatusColor(itemStatus); + + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + itemStatusColor.withOpacity(0.05), + itemStatusColor.withOpacity(0.02), + Colors.white, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: itemStatusColor.withOpacity(0.3)), + boxShadow: [ + BoxShadow( + color: itemStatusColor.withOpacity(0.1), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + children: [ + Row( + children: [ + Container( + width: 60, + height: 60, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [itemStatusColor, itemStatusColor.withOpacity(0.8)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: itemStatusColor.withOpacity(0.3), + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: const Icon( + Icons.fastfood, + color: Colors.white, + size: 28, + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: Text( + item.productName, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: itemStatusColor.withOpacity(0.2), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + itemStatus, + style: AppStyle.xs.copyWith( + color: itemStatusColor, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Text( + 'Qty: ${item.quantity}', + style: AppStyle.xs.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.w600, + ), + ), + ), + const SizedBox(width: 8), + Text( + 'Rp ${_formatCurrency(item.price)} each', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + ), + ), + ], + ), + if (item.discountAmount > 0) ...[ + const SizedBox(height: 4), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 2, + ), + decoration: BoxDecoration( + color: AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(6), + ), + child: Text( + 'Diskon: -Rp ${_formatCurrency(item.discountAmount)}', + style: AppStyle.xs.copyWith( + color: AppColor.error, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ], + ), + ), + ], + ), + const SizedBox(height: 12), + Container( + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.7), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: itemStatusColor.withOpacity(0.2)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Total Item', + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Rp ${_formatCurrency(item.total)}', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + if (item.discountAmount > 0) + Text( + 'Rp ${_formatCurrency(item.subtotal)}', + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + decoration: TextDecoration.lineThrough, + ), + ), + ], + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildPaymentSummaryCard() { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary.withOpacity(0.05), + AppColor.primary.withOpacity(0.02), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.primary.withOpacity(0.2)), + ), + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Ringkasan Pembayaran', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + const SizedBox(height: 16), + _buildSummaryRow('Subtotal', order.subtotal), + if (order.discountAmount > 0) + _buildSummaryRow( + 'Diskon', + -order.discountAmount, + isDiscount: true, + ), + _buildSummaryRow('Pajak', order.taxAmount), + const Divider(height: 24), + _buildSummaryRow('Total', order.totalAmount, isTotal: true), + _buildSummaryRow('Dibayar', order.totalPaid, isSuccess: true), + if (order.remainingAmount > 0) + _buildSummaryRow('Sisa', order.remainingAmount, isError: true), + ], + ), + ), + ); + } + + Widget _buildSummaryRow( + String label, + int amount, { + bool isTotal = false, + bool isDiscount = false, + bool isSuccess = false, + bool isError = false, + }) { + Color textColor = AppColor.textPrimary; + if (isTotal) textColor = AppColor.primary; + if (isDiscount) textColor = AppColor.error; + if (isSuccess) textColor = AppColor.success; + if (isError) textColor = AppColor.error; + + return Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + label, + style: AppStyle.md.copyWith( + color: isTotal ? AppColor.primary : AppColor.textSecondary, + fontWeight: isTotal ? FontWeight.bold : FontWeight.normal, + ), + ), + Text( + '${amount < 0 ? '-' : ''}Rp ${_formatCurrency(amount.abs())}', + style: AppStyle.md.copyWith( + color: textColor, + fontWeight: isTotal ? FontWeight.bold : FontWeight.w600, + ), + ), + ], + ), + ); + } + + Widget _buildPaymentMethodsSection() { + if (order.payments.isEmpty) return const SizedBox(); + + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(20, 20, 20, 0), + child: Text( + 'Metode Pembayaran', + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.all(20), + itemCount: order.payments.length, + separatorBuilder: (context, index) => const SizedBox(height: 12), + itemBuilder: (context, index) { + final payment = order.payments[index]; + return _buildPaymentMethodCard(payment); + }, + ), + ], + ), + ); + } + + Widget _buildPaymentMethodCard(OrderPayment payment) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.success.withOpacity(0.05), + AppColor.success.withOpacity(0.02), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.success.withOpacity(0.3)), + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.success.withOpacity(0.2), + borderRadius: BorderRadius.circular(12), + ), + child: Icon( + _getPaymentIcon(payment.paymentMethodType), + color: AppColor.success, + size: 20, + ), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + payment.paymentMethodName, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 4), + Text( + payment.paymentMethodType, + style: AppStyle.sm.copyWith(color: AppColor.textSecondary), + ), + if (payment.splitType.isNotEmpty && payment.splitTotal > 1) ...[ + const SizedBox(height: 4), + Text( + 'Split ${payment.splitNumber}/${payment.splitTotal}', + style: AppStyle.xs.copyWith(color: AppColor.info), + ), + ], + ], + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text( + 'Rp ${_formatCurrency(payment.amount)}', + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.success, + ), + ), + Container( + margin: const EdgeInsets.only(top: 4), + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: _getPaymentStatusColor( + payment.status, + ).withOpacity(0.2), + borderRadius: BorderRadius.circular(10), + ), + child: Text( + payment.status, + style: AppStyle.xs.copyWith( + color: _getPaymentStatusColor(payment.status), + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + ], + ), + ); + } + + bool _isDineIn() { + final orderType = order.orderType + .toLowerCase() + .replaceAll('-', '') + .replaceAll('_', ''); + return orderType == 'dinein' || + orderType == 'dine' || + orderType.contains('dinein'); + } + + bool _shouldShowTableNumber() { + final orderType = order.orderType + .toLowerCase() + .replaceAll('-', '') + .replaceAll('_', '') + .replaceAll(' ', ''); + + // Don't show table number for these order types + final noTableTypes = [ + 'takeaway', + 'takeout', + 'pickup', + 'delivery', + 'dinein', + ]; + + return !noTableTypes.any((type) => orderType.contains(type)) && + order.tableNumber.isNotEmpty; + } + + String _formatCurrency(int amount) { + return amount.toString().replaceAllMapped( + RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), + (Match m) => '${m[1]}.', + ); + } + + String _formatDateTime(String dateTime) { + // Simple date formatting - you might want to use intl package for better formatting + return dateTime.split('T')[0]; + } + + Color _getStatusColor(String status) { + switch (status.toLowerCase()) { + case 'completed': + return AppColor.success; + case 'pending': + return AppColor.warning; + case 'cancelled': + return AppColor.error; + default: + return AppColor.info; + } + } + + IconData _getStatusIcon(String status) { + switch (status.toLowerCase()) { + case 'completed': + return Icons.check_circle; + case 'pending': + return Icons.access_time; + case 'cancelled': + return Icons.cancel; + default: + return Icons.info; + } + } + + IconData _getPaymentIcon(String type) { + switch (type.toLowerCase()) { + case 'cash': + return Icons.money; + case 'card': + return Icons.credit_card; + case 'digital': + return Icons.qr_code; + default: + return Icons.payment; + } + } + + Color _getPaymentStatusColor(String status) { + switch (status.toLowerCase()) { + case 'success': + return AppColor.success; + case 'pending': + return AppColor.warning; + case 'failed': + return AppColor.error; + default: + return AppColor.info; + } + } + + String _getItemStatus(OrderItem item) { + // Logic untuk menentukan status item berdasarkan: + // 1. Status order secara keseluruhan + // 2. Jika ada field status di OrderItem model + // 3. Waktu pembuatan vs waktu sekarang + + switch (order.status.toLowerCase()) { + case 'completed': + return 'Selesai'; + case 'pending': + return 'Menunggu'; + case 'cancelled': + return 'Dibatalkan'; + default: + return 'Menunggu'; + } + } + + Color _getItemStatusColor(String status) { + switch (status.toLowerCase()) { + case 'selesai': + return AppColor.success; + case 'diproses': + return AppColor.warning; + case 'dibatalkan': + return AppColor.error; + case 'siap': + return AppColor.info; + default: + return AppColor.primary; + } + } +} + +class TablePatternPainter extends CustomPainter { + @override + void paint(Canvas canvas, Size size) { + final paint = Paint() + ..color = AppColor.white.withOpacity(0.1) + ..strokeWidth = 1 + ..style = PaintingStyle.stroke; + + // Draw decorative pattern + for (int i = 0; i < 8; i++) { + final offset = i * 20.0; + canvas.drawLine( + Offset(offset, 0), + Offset(offset + size.height * 0.3, size.height), + paint, + ); + } + + // Draw subtle dots pattern + final dotPaint = Paint() + ..color = AppColor.white.withOpacity(0.05) + ..style = PaintingStyle.fill; + + for (int x = 0; x < size.width; x += 30) { + for (int y = 0; y < size.height; y += 30) { + canvas.drawCircle(Offset(x.toDouble(), y.toDouble()), 2, dotPaint); + } + } + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => false; +} diff --git a/lib/presentation/pages/order/order_list/order_page.dart b/lib/presentation/pages/order/order_list/order_page.dart index 7e22051..341e662 100644 --- a/lib/presentation/pages/order/order_list/order_page.dart +++ b/lib/presentation/pages/order/order_list/order_page.dart @@ -10,6 +10,7 @@ import '../../../components/appbar/appbar.dart'; import '../../../components/button/button.dart'; import '../../../components/spacer/spacer.dart'; import '../../../components/widgets/empty_widget.dart'; +import '../../../router/app_router.gr.dart'; import 'widgets/status_tile.dart'; import 'widgets/order_tile.dart'; @@ -219,7 +220,11 @@ class _OrderPageState extends State with TickerProviderStateMixin { padding: EdgeInsets.zero, itemBuilder: (context, index) { return OrderTile( - onTap: () {}, + onTap: () => context.router.push( + OrderDetailRoute( + order: state.orders[index], + ), + ), order: state.orders[index], ); }, diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 8a0c267..5096fcf 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -51,5 +51,8 @@ class AppRouter extends RootStackRouter { // Error AutoRoute(page: ErrorRoute.page), + + // Order + AutoRoute(page: OrderDetailRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 2101015..4019650 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,6 +9,7 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i21; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i8; import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' @@ -27,50 +28,52 @@ import 'package:apskel_owner_flutter/presentation/pages/language/language_page.d as _i7; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order_detail_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i17; -import 'package:auto_route/auto_route.dart' as _i18; -import 'package:flutter/material.dart' as _i19; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i18; +import 'package:auto_route/auto_route.dart' as _i19; +import 'package:flutter/material.dart' as _i20; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i18.PageRouteInfo { - const CustomerRoute({List<_i18.PageRouteInfo>? children}) +class CustomerRoute extends _i19.PageRouteInfo { + const CustomerRoute({List<_i19.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i1.CustomerPage()); + return _i19.WrappedRoute(child: const _i1.CustomerPage()); }, ); } /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i18.PageRouteInfo { - const DailyTasksFormRoute({List<_i18.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i19.PageRouteInfo { + const DailyTasksFormRoute({List<_i19.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -80,16 +83,16 @@ class DailyTasksFormRoute extends _i18.PageRouteInfo { /// generated route for /// [_i3.ErrorPage] -class ErrorRoute extends _i18.PageRouteInfo { +class ErrorRoute extends _i19.PageRouteInfo { ErrorRoute({ - _i19.Key? key, + _i20.Key? key, String? title, String? message, - _i19.VoidCallback? onRetry, - _i19.VoidCallback? onBack, + _i20.VoidCallback? onRetry, + _i20.VoidCallback? onBack, String? errorCode, - _i19.IconData? errorIcon, - List<_i18.PageRouteInfo>? children, + _i20.IconData? errorIcon, + List<_i19.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -106,7 +109,7 @@ class ErrorRoute extends _i18.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { final args = data.argsAs( @@ -136,19 +139,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i19.Key? key; + final _i20.Key? key; final String? title; final String? message; - final _i19.VoidCallback? onRetry; + final _i20.VoidCallback? onRetry; - final _i19.VoidCallback? onBack; + final _i20.VoidCallback? onBack; final String? errorCode; - final _i19.IconData? errorIcon; + final _i20.IconData? errorIcon; @override String toString() { @@ -158,29 +161,29 @@ class ErrorRouteArgs { /// generated route for /// [_i4.FinancePage] -class FinanceRoute extends _i18.PageRouteInfo { - const FinanceRoute({List<_i18.PageRouteInfo>? children}) +class FinanceRoute extends _i19.PageRouteInfo { + const FinanceRoute({List<_i19.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i4.FinancePage()); + return _i19.WrappedRoute(child: const _i4.FinancePage()); }, ); } /// generated route for /// [_i5.HomePage] -class HomeRoute extends _i18.PageRouteInfo { - const HomeRoute({List<_i18.PageRouteInfo>? children}) +class HomeRoute extends _i19.PageRouteInfo { + const HomeRoute({List<_i19.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { return const _i5.HomePage(); @@ -190,29 +193,29 @@ class HomeRoute extends _i18.PageRouteInfo { /// generated route for /// [_i6.InventoryPage] -class InventoryRoute extends _i18.PageRouteInfo { - const InventoryRoute({List<_i18.PageRouteInfo>? children}) +class InventoryRoute extends _i19.PageRouteInfo { + const InventoryRoute({List<_i19.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i6.InventoryPage()); + return _i19.WrappedRoute(child: const _i6.InventoryPage()); }, ); } /// generated route for /// [_i7.LanguagePage] -class LanguageRoute extends _i18.PageRouteInfo { - const LanguageRoute({List<_i18.PageRouteInfo>? children}) +class LanguageRoute extends _i19.PageRouteInfo { + const LanguageRoute({List<_i19.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { return const _i7.LanguagePage(); @@ -222,29 +225,29 @@ class LanguageRoute extends _i18.PageRouteInfo { /// generated route for /// [_i8.LoginPage] -class LoginRoute extends _i18.PageRouteInfo { - const LoginRoute({List<_i18.PageRouteInfo>? children}) +class LoginRoute extends _i19.PageRouteInfo { + const LoginRoute({List<_i19.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i8.LoginPage()); + return _i19.WrappedRoute(child: const _i8.LoginPage()); }, ); } /// generated route for /// [_i9.MainPage] -class MainRoute extends _i18.PageRouteInfo { - const MainRoute({List<_i18.PageRouteInfo>? children}) +class MainRoute extends _i19.PageRouteInfo { + const MainRoute({List<_i19.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { return const _i9.MainPage(); @@ -253,129 +256,166 @@ class MainRoute extends _i18.PageRouteInfo { } /// generated route for -/// [_i10.OrderPage] -class OrderRoute extends _i18.PageRouteInfo { - const OrderRoute({List<_i18.PageRouteInfo>? children}) +/// [_i10.OrderDetailPage] +class OrderDetailRoute extends _i19.PageRouteInfo { + OrderDetailRoute({ + _i20.Key? key, + required _i21.Order order, + List<_i19.PageRouteInfo>? children, + }) : super( + OrderDetailRoute.name, + args: OrderDetailRouteArgs(key: key, order: order), + initialChildren: children, + ); + + static const String name = 'OrderDetailRoute'; + + static _i19.PageInfo page = _i19.PageInfo( + name, + builder: (data) { + final args = data.argsAs(); + return _i10.OrderDetailPage(key: args.key, order: args.order); + }, + ); +} + +class OrderDetailRouteArgs { + const OrderDetailRouteArgs({this.key, required this.order}); + + final _i20.Key? key; + + final _i21.Order order; + + @override + String toString() { + return 'OrderDetailRouteArgs{key: $key, order: $order}'; + } +} + +/// generated route for +/// [_i11.OrderPage] +class OrderRoute extends _i19.PageRouteInfo { + const OrderRoute({List<_i19.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i10.OrderPage()); + return _i19.WrappedRoute(child: const _i11.OrderPage()); }, ); } /// generated route for -/// [_i11.ProductPage] -class ProductRoute extends _i18.PageRouteInfo { - const ProductRoute({List<_i18.PageRouteInfo>? children}) +/// [_i12.ProductPage] +class ProductRoute extends _i19.PageRouteInfo { + const ProductRoute({List<_i19.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i11.ProductPage()); + return _i19.WrappedRoute(child: const _i12.ProductPage()); }, ); } /// generated route for -/// [_i12.ProfilePage] -class ProfileRoute extends _i18.PageRouteInfo { - const ProfileRoute({List<_i18.PageRouteInfo>? children}) +/// [_i13.ProfilePage] +class ProfileRoute extends _i19.PageRouteInfo { + const ProfileRoute({List<_i19.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i12.ProfilePage()); + return _i19.WrappedRoute(child: const _i13.ProfilePage()); }, ); } /// generated route for -/// [_i13.PurchasePage] -class PurchaseRoute extends _i18.PageRouteInfo { - const PurchaseRoute({List<_i18.PageRouteInfo>? children}) +/// [_i14.PurchasePage] +class PurchaseRoute extends _i19.PageRouteInfo { + const PurchaseRoute({List<_i19.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return const _i13.PurchasePage(); + return const _i14.PurchasePage(); }, ); } /// generated route for -/// [_i14.ReportPage] -class ReportRoute extends _i18.PageRouteInfo { - const ReportRoute({List<_i18.PageRouteInfo>? children}) +/// [_i15.ReportPage] +class ReportRoute extends _i19.PageRouteInfo { + const ReportRoute({List<_i19.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i14.ReportPage()); + return _i19.WrappedRoute(child: const _i15.ReportPage()); }, ); } /// generated route for -/// [_i15.SalesPage] -class SalesRoute extends _i18.PageRouteInfo { - const SalesRoute({List<_i18.PageRouteInfo>? children}) +/// [_i16.SalesPage] +class SalesRoute extends _i19.PageRouteInfo { + const SalesRoute({List<_i19.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return _i18.WrappedRoute(child: const _i15.SalesPage()); + return _i19.WrappedRoute(child: const _i16.SalesPage()); }, ); } /// generated route for -/// [_i16.SchedulePage] -class ScheduleRoute extends _i18.PageRouteInfo { - const ScheduleRoute({List<_i18.PageRouteInfo>? children}) +/// [_i17.SchedulePage] +class ScheduleRoute extends _i19.PageRouteInfo { + const ScheduleRoute({List<_i19.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return const _i16.SchedulePage(); + return const _i17.SchedulePage(); }, ); } /// generated route for -/// [_i17.SplashPage] -class SplashRoute extends _i18.PageRouteInfo { - const SplashRoute({List<_i18.PageRouteInfo>? children}) +/// [_i18.SplashPage] +class SplashRoute extends _i19.PageRouteInfo { + const SplashRoute({List<_i19.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i18.PageInfo page = _i18.PageInfo( + static _i19.PageInfo page = _i19.PageInfo( name, builder: (data) { - return const _i17.SplashPage(); + return const _i18.SplashPage(); }, ); } From 2d25e153805c7424bb38ea91a699a66d91f8c29a Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 16:05:59 +0700 Subject: [PATCH 068/108] feat: product analytic page --- .../pages/home/widgets/feature.dart | 2 +- .../product_analytic_page.dart | 766 ++++++++++++++++++ lib/presentation/router/app_router.dart | 1 + lib/presentation/router/app_router.gr.dart | 208 ++--- 4 files changed, 881 insertions(+), 96 deletions(-) create mode 100644 lib/presentation/pages/product/product_analytic/product_analytic_page.dart diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 4d4f998..e9057a6 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -57,7 +57,7 @@ class HomeFeature extends StatelessWidget { title: 'Produk', color: const Color(0xFFFF9800), icon: LineIcons.box, - onTap: () => context.router.push(ProductRoute()), + onTap: () => context.router.push(ProductAnalyticRoute()), ), ], ), diff --git a/lib/presentation/pages/product/product_analytic/product_analytic_page.dart b/lib/presentation/pages/product/product_analytic/product_analytic_page.dart new file mode 100644 index 0000000..8d3e623 --- /dev/null +++ b/lib/presentation/pages/product/product_analytic/product_analytic_page.dart @@ -0,0 +1,766 @@ +import 'package:flutter/material.dart'; +import 'package:auto_route/auto_route.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; +import '../../../components/appbar/appbar.dart'; + +@RoutePage() +class ProductAnalyticPage extends StatefulWidget { + const ProductAnalyticPage({super.key}); + + @override + State createState() => _ProductAnalyticPageState(); +} + +class _ProductAnalyticPageState extends State + with TickerProviderStateMixin { + late AnimationController _animationController; + late AnimationController _cardAnimationController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + + // Sample data untuk demo + final ProductAnalytic sampleData = ProductAnalytic( + organizationId: "org_123", + outletId: "outlet_456", + dateFrom: "2024-01-01", + dateTo: "2024-01-31", + data: [ + ProductAnalyticData( + productId: "prod_1", + productName: "Nasi Goreng Spesial", + categoryId: "cat_1", + categoryName: "Makanan Utama", + quantitySold: 145, + revenue: 2175000.0, + averagePrice: 15000.0, + orderCount: 98, + ), + ProductAnalyticData( + productId: "prod_2", + productName: "Es Teh Manis", + categoryId: "cat_2", + categoryName: "Minuman", + quantitySold: 230, + revenue: 1150000.0, + averagePrice: 5000.0, + orderCount: 180, + ), + ProductAnalyticData( + productId: "prod_3", + productName: "Ayam Bakar", + categoryId: "cat_1", + categoryName: "Makanan Utama", + quantitySold: 89, + revenue: 2225000.0, + averagePrice: 25000.0, + orderCount: 75, + ), + ProductAnalyticData( + productId: "prod_4", + productName: "Cappuccino", + categoryId: "cat_2", + categoryName: "Minuman", + quantitySold: 67, + revenue: 1005000.0, + averagePrice: 15000.0, + orderCount: 52, + ), + ProductAnalyticData( + productId: "prod_5", + productName: "Pisang Goreng", + categoryId: "cat_3", + categoryName: "Snack", + quantitySold: 156, + revenue: 780000.0, + averagePrice: 5000.0, + orderCount: 134, + ), + ], + ); + + @override + void initState() { + super.initState(); + _initializeAnimations(); + } + + void _initializeAnimations() { + _animationController = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + _cardAnimationController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.0, 0.6, curve: Curves.easeOut), + ), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.2, 1.0, curve: Curves.easeOutCubic), + ), + ); + + _animationController.forward(); + _cardAnimationController.forward(); + } + + @override + void dispose() { + _animationController.dispose(); + _cardAnimationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + physics: const BouncingScrollPhysics(), + slivers: [ + _buildSliverAppBar(), + _buildSummarySection(), + _buildProductsList(), + ], + ), + ); + } + + // SLIVER APP BAR + Widget _buildSliverAppBar() { + return SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + elevation: 0, + backgroundColor: AppColor.primary, + flexibleSpace: FlexibleSpaceBar( + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: AppColor.primaryGradient, + ), + ), + child: const CustomAppBar(title: "Analisis Produk"), + ), + ), + ); + } + + // SUMMARY SECTION + Widget _buildSummarySection() { + return SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Container( + margin: const EdgeInsets.all(16), + child: _buildSummaryCards(sampleData.data), + ), + ), + ), + ); + } + + // PRODUCTS LIST + Widget _buildProductsList() { + return SliverPadding( + padding: const EdgeInsets.all(16), + sliver: SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + return AnimatedBuilder( + animation: _cardAnimationController, + builder: (context, child) { + final delay = index * 0.1; + final progress = (_cardAnimationController.value - delay).clamp( + 0.0, + 1.0, + ); + final animValue = Curves.easeOutCubic + .transform(progress) + .clamp(0.0, 1.0); + + return Transform.translate( + offset: Offset(0, 50 * (1 - animValue)), + child: Opacity( + opacity: animValue, + child: _buildProductCard(sampleData.data[index], index), + ), + ); + }, + ); + }, childCount: sampleData.data.length), + ), + ); + } + + // SUMMARY CARDS + Widget _buildSummaryCards(List data) { + final stats = _calculateSummaryStats(data); + + return Column( + children: [ + Row( + children: [ + Expanded( + child: _buildSummaryCard( + icon: Icons.monetization_on, + title: 'Total Pendapatan', + value: _formatCurrency(stats.totalRevenue), + color: AppColor.success, + ), + ), + const SizedBox(width: 12), + Expanded( + child: _buildSummaryCard( + icon: Icons.shopping_cart, + title: 'Total Terjual', + value: _formatNumber(stats.totalQuantity), + color: AppColor.info, + ), + ), + ], + ), + const SizedBox(height: 12), + Row( + children: [ + Expanded( + child: _buildSummaryCard( + icon: Icons.receipt_long, + title: 'Total Pesanan', + value: _formatNumber(stats.totalOrders), + color: AppColor.warning, + ), + ), + const SizedBox(width: 12), + Expanded( + child: _buildSummaryCard( + icon: Icons.trending_up, + title: 'Rata-rata Nilai', + value: _formatCurrency(stats.averageOrderValue), + color: AppColor.primary, + ), + ), + ], + ), + ], + ); + } + + Widget _buildSummaryCard({ + required IconData icon, + required String title, + required String value, + required Color color, + }) { + return TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: const Duration(milliseconds: 800), + curve: Curves.elasticOut, + builder: (context, animationValue, child) { + return Transform.scale( + scale: animationValue, + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.surface, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: color.withOpacity(0.1), + blurRadius: 15, + offset: const Offset(0, 5), + ), + ], + border: Border.all(color: color.withOpacity(0.2), width: 1.5), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [color.withOpacity(0.2), color.withOpacity(0.1)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(12), + ), + child: Icon(icon, color: color, size: 24), + ), + const SizedBox(height: 16), + Text( + title, + style: _getTextStyle( + AppStyle.md, + color: AppColor.textSecondary, + weight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Text( + value, + style: _getTextStyle( + AppStyle.xxl, + color: color, + weight: FontWeight.bold, + ), + ), + ], + ), + ), + ); + }, + ); + } + + // PRODUCT CARD - NEW CLEAN LAYOUT + Widget _buildProductCard(ProductAnalyticData product, int index) { + return TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: Duration(milliseconds: 600 + (index * 100)), + curve: Curves.easeOutBack, + builder: (context, animationValue, child) { + final clampedValue = animationValue.clamp(0.0, 1.0); + + return Transform.translate( + offset: Offset(0, 30 * (1 - clampedValue)), + child: Opacity( + opacity: clampedValue, + child: Container( + margin: EdgeInsets.only( + bottom: index == sampleData.data.length - 1 ? 0 : 16, + ), + child: _buildCardContent(product, index), + ), + ), + ); + }, + ); + } + + Widget _buildCardContent(ProductAnalyticData product, int index) { + return Container( + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(8), + bottomRight: Radius.circular(8), + ), + boxShadow: [ + BoxShadow( + color: _getCategoryColor(product.categoryName).withOpacity(0.08), + blurRadius: 24, + offset: const Offset(0, 12), + ), + BoxShadow( + color: Colors.black.withOpacity(0.04), + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: Material( + color: Colors.transparent, + child: InkWell( + borderRadius: BorderRadius.circular(8), + onTap: () => _onProductTap(product), + child: Column( + children: [ + _buildCardHeader(product, index), + _buildCardBody(product), + ], + ), + ), + ), + ); + } + + Widget _buildCardHeader(ProductAnalyticData product, int index) { + return Container( + width: double.infinity, + height: 4, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + _getCategoryColor(product.categoryName), + _getCategoryColor(product.categoryName).withOpacity(0.6), + ], + ), + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(8), + topRight: Radius.circular(8), + ), + ), + ); + } + + Widget _buildCardBody(ProductAnalyticData product) { + final index = sampleData.data.indexOf(product); + + return Padding( + padding: const EdgeInsets.all(24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildProductHeader(product, index), + const SizedBox(height: 20), + _buildStatsSection(product), + const SizedBox(height: 16), + _buildAveragePriceSection(product), + ], + ), + ); + } + + Widget _buildProductHeader(ProductAnalyticData product, int index) { + return Row( + children: [ + _buildCategoryIcon(product.categoryName), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + product.productName, + style: _getTextStyle(AppStyle.lg, weight: FontWeight.bold), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Text( + product.categoryName, + style: _getTextStyle( + AppStyle.sm, + color: _getCategoryColor(product.categoryName), + weight: FontWeight.w600, + ), + ), + ], + ), + ), + _buildRankingBadge(index), + ], + ); + } + + Widget _buildCategoryIcon(String categoryName) { + return Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + _getCategoryColor(categoryName).withOpacity(0.1), + _getCategoryColor(categoryName).withOpacity(0.05), + ], + ), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: _getCategoryColor(categoryName).withOpacity(0.2), + width: 1.5, + ), + ), + child: Icon( + _getCategoryIcon(categoryName), + color: _getCategoryColor(categoryName), + size: 28, + ), + ); + } + + Widget _buildRankingBadge(int index) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: _getRankingColor(index), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + '#${index + 1}', + style: _getTextStyle( + AppStyle.xs, + color: AppColor.white, + weight: FontWeight.bold, + ), + ), + ); + } + + Widget _buildStatsSection(ProductAnalyticData product) { + return Row( + children: [ + Expanded(flex: 3, child: _buildRevenueCard(product)), + const SizedBox(width: 12), + Expanded(flex: 2, child: _buildSecondaryStats(product)), + ], + ); + } + + Widget _buildRevenueCard(ProductAnalyticData product) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.success.withOpacity(0.1), + AppColor.success.withOpacity(0.05), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.success.withOpacity(0.2)), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon(Icons.trending_up, color: AppColor.success, size: 20), + const SizedBox(width: 8), + Text( + 'Pendapatan', + style: _getTextStyle( + AppStyle.sm, + color: AppColor.success, + weight: FontWeight.w600, + ), + ), + ], + ), + const SizedBox(height: 8), + Text( + _formatCurrency(product.revenue), + style: _getTextStyle( + AppStyle.xl, + color: AppColor.success, + weight: FontWeight.bold, + ), + ), + ], + ), + ); + } + + Widget _buildSecondaryStats(ProductAnalyticData product) { + return Column( + children: [ + _buildStatCard( + icon: Icons.shopping_cart_outlined, + value: '${product.quantitySold}', + label: 'Terjual', + color: AppColor.info, + ), + const SizedBox(height: 8), + _buildStatCard( + icon: Icons.receipt_outlined, + value: '${product.orderCount}', + label: 'Pesanan', + color: AppColor.warning, + ), + ], + ); + } + + Widget _buildStatCard({ + required IconData icon, + required String value, + required String label, + required Color color, + }) { + return Container( + width: double.infinity, + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.background.withOpacity(0.5), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.border.withOpacity(0.1)), + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(icon, color: color, size: 16), + const SizedBox(width: 4), + Text( + value, + style: _getTextStyle( + AppStyle.md, + color: color, + weight: FontWeight.bold, + ), + ), + ], + ), + const SizedBox(height: 2), + Text( + label, + style: _getTextStyle( + AppStyle.xs, + color: AppColor.textSecondary, + weight: FontWeight.w500, + ), + ), + ], + ), + ); + } + + Widget _buildAveragePriceSection(ProductAnalyticData product) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + _getCategoryColor(product.categoryName).withOpacity(0.05), + _getCategoryColor(product.categoryName).withOpacity(0.02), + ], + ), + borderRadius: BorderRadius.circular(12), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Harga Rata-rata', + style: _getTextStyle( + AppStyle.sm, + color: AppColor.textSecondary, + weight: FontWeight.w500, + ), + ), + Text( + _formatCurrency(product.averagePrice), + style: _getTextStyle( + AppStyle.sm, + color: _getCategoryColor(product.categoryName), + weight: FontWeight.bold, + ), + ), + ], + ), + ); + } + + // HELPER METHODS + SummaryStats _calculateSummaryStats(List data) { + final totalRevenue = data.fold( + 0, + (sum, item) => sum + item.revenue, + ); + final totalQuantity = data.fold( + 0, + (sum, item) => sum + item.quantitySold, + ); + final totalOrders = data.fold(0, (sum, item) => sum + item.orderCount); + final averageOrderValue = totalOrders > 0 ? totalRevenue / totalOrders : 0; + + return SummaryStats( + totalRevenue: totalRevenue, + totalQuantity: totalQuantity, + totalOrders: totalOrders, + averageOrderValue: averageOrderValue.roundToDouble(), + ); + } + + TextStyle _getTextStyle( + TextStyle? baseStyle, { + Color? color, + FontWeight? weight, + }) { + return baseStyle?.copyWith(color: color, fontWeight: weight) ?? + TextStyle(color: color, fontWeight: weight); + } + + void _onProductTap(ProductAnalyticData product) { + // Handle product detail navigation + } + + Color _getCategoryColor(String categoryName) { + switch (categoryName) { + case 'Makanan Utama': + return AppColor.primary; + case 'Minuman': + return AppColor.info; + case 'Snack': + return AppColor.warning; + default: + return AppColor.secondary; + } + } + + Color _getRankingColor(int index) { + switch (index) { + case 0: + return const Color(0xFFFFD700); // Gold + case 1: + return const Color(0xFFC0C0C0); // Silver + case 2: + return const Color(0xFFCD7F32); // Bronze + default: + return AppColor.primary; + } + } + + IconData _getCategoryIcon(String categoryName) { + switch (categoryName) { + case 'Makanan Utama': + return Icons.restaurant; + case 'Minuman': + return Icons.local_cafe; + case 'Snack': + return Icons.fastfood; + default: + return Icons.category; + } + } + + String _formatCurrency(double amount) { + if (amount >= 1000000) { + return 'Rp ${(amount / 1000000).toStringAsFixed(1)}jt'; + } else if (amount >= 1000) { + return 'Rp ${(amount / 1000).toStringAsFixed(0)}rb'; + } else { + return 'Rp ${amount.toStringAsFixed(0)}'; + } + } + + String _formatNumber(int number) { + if (number >= 1000) { + return '${(number / 1000).toStringAsFixed(1)}k'; + } + return number.toString(); + } +} + +// HELPER CLASS +class SummaryStats { + final double totalRevenue; + final int totalQuantity; + final int totalOrders; + final double averageOrderValue; + + SummaryStats({ + required this.totalRevenue, + required this.totalQuantity, + required this.totalOrders, + required this.averageOrderValue, + }); +} diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 5096fcf..f332f41 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -33,6 +33,7 @@ class AppRouter extends RootStackRouter { // Product AutoRoute(page: ProductRoute.page), + AutoRoute(page: ProductAnalyticRoute.page), // Customer AutoRoute(page: CustomerRoute.page), diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 4019650..91cc50f 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,7 +9,7 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/domain/order/order.dart' as _i21; +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i22; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i8; import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' @@ -32,48 +32,50 @@ import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order as _i10; import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i17; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i18; -import 'package:auto_route/auto_route.dart' as _i19; -import 'package:flutter/material.dart' as _i20; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i19; +import 'package:auto_route/auto_route.dart' as _i20; +import 'package:flutter/material.dart' as _i21; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i19.PageRouteInfo { - const CustomerRoute({List<_i19.PageRouteInfo>? children}) +class CustomerRoute extends _i20.PageRouteInfo { + const CustomerRoute({List<_i20.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i1.CustomerPage()); + return _i20.WrappedRoute(child: const _i1.CustomerPage()); }, ); } /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i19.PageRouteInfo { - const DailyTasksFormRoute({List<_i19.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i20.PageRouteInfo { + const DailyTasksFormRoute({List<_i20.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -83,16 +85,16 @@ class DailyTasksFormRoute extends _i19.PageRouteInfo { /// generated route for /// [_i3.ErrorPage] -class ErrorRoute extends _i19.PageRouteInfo { +class ErrorRoute extends _i20.PageRouteInfo { ErrorRoute({ - _i20.Key? key, + _i21.Key? key, String? title, String? message, - _i20.VoidCallback? onRetry, - _i20.VoidCallback? onBack, + _i21.VoidCallback? onRetry, + _i21.VoidCallback? onBack, String? errorCode, - _i20.IconData? errorIcon, - List<_i19.PageRouteInfo>? children, + _i21.IconData? errorIcon, + List<_i20.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -109,7 +111,7 @@ class ErrorRoute extends _i19.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { final args = data.argsAs( @@ -139,19 +141,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i20.Key? key; + final _i21.Key? key; final String? title; final String? message; - final _i20.VoidCallback? onRetry; + final _i21.VoidCallback? onRetry; - final _i20.VoidCallback? onBack; + final _i21.VoidCallback? onBack; final String? errorCode; - final _i20.IconData? errorIcon; + final _i21.IconData? errorIcon; @override String toString() { @@ -161,29 +163,29 @@ class ErrorRouteArgs { /// generated route for /// [_i4.FinancePage] -class FinanceRoute extends _i19.PageRouteInfo { - const FinanceRoute({List<_i19.PageRouteInfo>? children}) +class FinanceRoute extends _i20.PageRouteInfo { + const FinanceRoute({List<_i20.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i4.FinancePage()); + return _i20.WrappedRoute(child: const _i4.FinancePage()); }, ); } /// generated route for /// [_i5.HomePage] -class HomeRoute extends _i19.PageRouteInfo { - const HomeRoute({List<_i19.PageRouteInfo>? children}) +class HomeRoute extends _i20.PageRouteInfo { + const HomeRoute({List<_i20.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { return const _i5.HomePage(); @@ -193,29 +195,29 @@ class HomeRoute extends _i19.PageRouteInfo { /// generated route for /// [_i6.InventoryPage] -class InventoryRoute extends _i19.PageRouteInfo { - const InventoryRoute({List<_i19.PageRouteInfo>? children}) +class InventoryRoute extends _i20.PageRouteInfo { + const InventoryRoute({List<_i20.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i6.InventoryPage()); + return _i20.WrappedRoute(child: const _i6.InventoryPage()); }, ); } /// generated route for /// [_i7.LanguagePage] -class LanguageRoute extends _i19.PageRouteInfo { - const LanguageRoute({List<_i19.PageRouteInfo>? children}) +class LanguageRoute extends _i20.PageRouteInfo { + const LanguageRoute({List<_i20.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { return const _i7.LanguagePage(); @@ -225,29 +227,29 @@ class LanguageRoute extends _i19.PageRouteInfo { /// generated route for /// [_i8.LoginPage] -class LoginRoute extends _i19.PageRouteInfo { - const LoginRoute({List<_i19.PageRouteInfo>? children}) +class LoginRoute extends _i20.PageRouteInfo { + const LoginRoute({List<_i20.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i8.LoginPage()); + return _i20.WrappedRoute(child: const _i8.LoginPage()); }, ); } /// generated route for /// [_i9.MainPage] -class MainRoute extends _i19.PageRouteInfo { - const MainRoute({List<_i19.PageRouteInfo>? children}) +class MainRoute extends _i20.PageRouteInfo { + const MainRoute({List<_i20.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { return const _i9.MainPage(); @@ -257,11 +259,11 @@ class MainRoute extends _i19.PageRouteInfo { /// generated route for /// [_i10.OrderDetailPage] -class OrderDetailRoute extends _i19.PageRouteInfo { +class OrderDetailRoute extends _i20.PageRouteInfo { OrderDetailRoute({ - _i20.Key? key, - required _i21.Order order, - List<_i19.PageRouteInfo>? children, + _i21.Key? key, + required _i22.Order order, + List<_i20.PageRouteInfo>? children, }) : super( OrderDetailRoute.name, args: OrderDetailRouteArgs(key: key, order: order), @@ -270,7 +272,7 @@ class OrderDetailRoute extends _i19.PageRouteInfo { static const String name = 'OrderDetailRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -282,9 +284,9 @@ class OrderDetailRoute extends _i19.PageRouteInfo { class OrderDetailRouteArgs { const OrderDetailRouteArgs({this.key, required this.order}); - final _i20.Key? key; + final _i21.Key? key; - final _i21.Order order; + final _i22.Order order; @override String toString() { @@ -294,128 +296,144 @@ class OrderDetailRouteArgs { /// generated route for /// [_i11.OrderPage] -class OrderRoute extends _i19.PageRouteInfo { - const OrderRoute({List<_i19.PageRouteInfo>? children}) +class OrderRoute extends _i20.PageRouteInfo { + const OrderRoute({List<_i20.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i11.OrderPage()); + return _i20.WrappedRoute(child: const _i11.OrderPage()); }, ); } /// generated route for -/// [_i12.ProductPage] -class ProductRoute extends _i19.PageRouteInfo { - const ProductRoute({List<_i19.PageRouteInfo>? children}) +/// [_i12.ProductAnalyticPage] +class ProductAnalyticRoute extends _i20.PageRouteInfo { + const ProductAnalyticRoute({List<_i20.PageRouteInfo>? children}) + : super(ProductAnalyticRoute.name, initialChildren: children); + + static const String name = 'ProductAnalyticRoute'; + + static _i20.PageInfo page = _i20.PageInfo( + name, + builder: (data) { + return const _i12.ProductAnalyticPage(); + }, + ); +} + +/// generated route for +/// [_i13.ProductPage] +class ProductRoute extends _i20.PageRouteInfo { + const ProductRoute({List<_i20.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i12.ProductPage()); + return _i20.WrappedRoute(child: const _i13.ProductPage()); }, ); } /// generated route for -/// [_i13.ProfilePage] -class ProfileRoute extends _i19.PageRouteInfo { - const ProfileRoute({List<_i19.PageRouteInfo>? children}) +/// [_i14.ProfilePage] +class ProfileRoute extends _i20.PageRouteInfo { + const ProfileRoute({List<_i20.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i13.ProfilePage()); + return _i20.WrappedRoute(child: const _i14.ProfilePage()); }, ); } /// generated route for -/// [_i14.PurchasePage] -class PurchaseRoute extends _i19.PageRouteInfo { - const PurchaseRoute({List<_i19.PageRouteInfo>? children}) +/// [_i15.PurchasePage] +class PurchaseRoute extends _i20.PageRouteInfo { + const PurchaseRoute({List<_i20.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return const _i14.PurchasePage(); + return const _i15.PurchasePage(); }, ); } /// generated route for -/// [_i15.ReportPage] -class ReportRoute extends _i19.PageRouteInfo { - const ReportRoute({List<_i19.PageRouteInfo>? children}) +/// [_i16.ReportPage] +class ReportRoute extends _i20.PageRouteInfo { + const ReportRoute({List<_i20.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i15.ReportPage()); + return _i20.WrappedRoute(child: const _i16.ReportPage()); }, ); } /// generated route for -/// [_i16.SalesPage] -class SalesRoute extends _i19.PageRouteInfo { - const SalesRoute({List<_i19.PageRouteInfo>? children}) +/// [_i17.SalesPage] +class SalesRoute extends _i20.PageRouteInfo { + const SalesRoute({List<_i20.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return _i19.WrappedRoute(child: const _i16.SalesPage()); + return _i20.WrappedRoute(child: const _i17.SalesPage()); }, ); } /// generated route for -/// [_i17.SchedulePage] -class ScheduleRoute extends _i19.PageRouteInfo { - const ScheduleRoute({List<_i19.PageRouteInfo>? children}) +/// [_i18.SchedulePage] +class ScheduleRoute extends _i20.PageRouteInfo { + const ScheduleRoute({List<_i20.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return const _i17.SchedulePage(); + return const _i18.SchedulePage(); }, ); } /// generated route for -/// [_i18.SplashPage] -class SplashRoute extends _i19.PageRouteInfo { - const SplashRoute({List<_i19.PageRouteInfo>? children}) +/// [_i19.SplashPage] +class SplashRoute extends _i20.PageRouteInfo { + const SplashRoute({List<_i20.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i19.PageInfo page = _i19.PageInfo( + static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return const _i18.SplashPage(); + return const _i19.SplashPage(); }, ); } From 1f6e5e9a2ba5575fdffefbbe7da5bc3bfd8a9bf6 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 16:43:07 +0700 Subject: [PATCH 069/108] feat: sales range date --- .../sales_loader/sales_loader_bloc.dart | 31 +- .../sales_loader_bloc.freezed.dart | 227 +++++++- .../sales_loader/sales_loader_event.dart | 4 + .../sales_loader/sales_loader_state.dart | 4 + lib/injection.config.dart | 28 +- .../bottom_sheet/date_range_bottom_sheet.dart | 363 ++++++++++++ .../field/date_range_picker_field.dart | 531 ++++++++++++++++++ lib/presentation/pages/sales/sales_page.dart | 269 ++++----- pubspec.lock | 18 +- pubspec.yaml | 1 + 10 files changed, 1286 insertions(+), 190 deletions(-) create mode 100644 lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart create mode 100644 lib/presentation/components/field/date_range_picker_field.dart diff --git a/lib/application/analytic/sales_loader/sales_loader_bloc.dart b/lib/application/analytic/sales_loader/sales_loader_bloc.dart index 453002b..e30dde8 100644 --- a/lib/application/analytic/sales_loader/sales_loader_bloc.dart +++ b/lib/application/analytic/sales_loader/sales_loader_bloc.dart @@ -21,19 +21,26 @@ class SalesLoaderBloc extends Bloc { Future _onSalesLoaderEvent( SalesLoaderEvent event, Emitter emit, - ) async { - emit(state.copyWith(isFetching: true, failureOptionSales: none())); + ) { + return event.map( + rangeDateChanged: (e) async { + emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo)); + }, + fectched: (e) async { + emit(state.copyWith(isFetching: true, failureOptionSales: none())); - final result = await _analyticRepository.getSales( - dateFrom: DateTime.now().subtract(const Duration(days: 30)), - dateTo: DateTime.now(), + final result = await _analyticRepository.getSales( + dateFrom: state.dateFrom, + dateTo: state.dateTo, + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionSales: optionOf(f)), + (sales) => state.copyWith(sales: sales), + ); + + emit(data.copyWith(isFetching: false)); + }, ); - - var data = result.fold( - (f) => state.copyWith(failureOptionSales: optionOf(f)), - (sales) => state.copyWith(sales: sales), - ); - - emit(data.copyWith(isFetching: false)); } } diff --git a/lib/application/analytic/sales_loader/sales_loader_bloc.freezed.dart b/lib/application/analytic/sales_loader/sales_loader_bloc.freezed.dart index 0f7b470..e0ce519 100644 --- a/lib/application/analytic/sales_loader/sales_loader_bloc.freezed.dart +++ b/lib/application/analytic/sales_loader/sales_loader_bloc.freezed.dart @@ -19,27 +19,34 @@ final _privateConstructorUsedError = UnsupportedError( mixin _$SalesLoaderEvent { @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function() fectched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function()? fectched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fectched, required TResult orElse(), }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fectched value) fectched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fectched value)? fectched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fectched value)? fectched, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -67,6 +74,164 @@ class _$SalesLoaderEventCopyWithImpl<$Res, $Val extends SalesLoaderEvent> /// with the given fields replaced by the non-null parameter values. } +/// @nodoc +abstract class _$$RangeDateChangedImplCopyWith<$Res> { + factory _$$RangeDateChangedImplCopyWith( + _$RangeDateChangedImpl value, + $Res Function(_$RangeDateChangedImpl) then, + ) = __$$RangeDateChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$RangeDateChangedImplCopyWithImpl<$Res> + extends _$SalesLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl> + implements _$$RangeDateChangedImplCopyWith<$Res> { + __$$RangeDateChangedImplCopyWithImpl( + _$RangeDateChangedImpl _value, + $Res Function(_$RangeDateChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SalesLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$RangeDateChangedImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$RangeDateChangedImpl implements _RangeDateChanged { + const _$RangeDateChangedImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'SalesLoaderEvent.rangeDateChanged(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$RangeDateChangedImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of SalesLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + __$$RangeDateChangedImplCopyWithImpl<_$RangeDateChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fectched, + }) { + return rangeDateChanged(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fectched, + }) { + return rangeDateChanged?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult Function()? fectched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, + required TResult Function(_Fectched value) fectched, + }) { + return rangeDateChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, + TResult? Function(_Fectched value)? fectched, + }) { + return rangeDateChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, + TResult Function(_Fectched value)? fectched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(this); + } + return orElse(); + } +} + +abstract class _RangeDateChanged implements SalesLoaderEvent { + const factory _RangeDateChanged( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$RangeDateChangedImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of SalesLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$FectchedImplCopyWith<$Res> { factory _$$FectchedImplCopyWith( @@ -110,6 +275,8 @@ class _$FectchedImpl implements _Fectched { @override @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function() fectched, }) { return fectched(); @@ -118,6 +285,7 @@ class _$FectchedImpl implements _Fectched { @override @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function()? fectched, }) { return fectched?.call(); @@ -126,6 +294,7 @@ class _$FectchedImpl implements _Fectched { @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fectched, required TResult orElse(), }) { @@ -138,6 +307,7 @@ class _$FectchedImpl implements _Fectched { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fectched value) fectched, }) { return fectched(this); @@ -146,6 +316,7 @@ class _$FectchedImpl implements _Fectched { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fectched value)? fectched, }) { return fectched?.call(this); @@ -154,6 +325,7 @@ class _$FectchedImpl implements _Fectched { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fectched value)? fectched, required TResult orElse(), }) { @@ -174,6 +346,8 @@ mixin _$SalesLoaderState { Option get failureOptionSales => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; + DateTime get dateFrom => throw _privateConstructorUsedError; + DateTime get dateTo => throw _privateConstructorUsedError; /// Create a copy of SalesLoaderState /// with the given fields replaced by the non-null parameter values. @@ -193,6 +367,8 @@ abstract class $SalesLoaderStateCopyWith<$Res> { SalesAnalytic sales, Option failureOptionSales, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); $SalesAnalyticCopyWith<$Res> get sales; @@ -216,6 +392,8 @@ class _$SalesLoaderStateCopyWithImpl<$Res, $Val extends SalesLoaderState> Object? sales = null, Object? failureOptionSales = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _value.copyWith( @@ -231,6 +409,14 @@ class _$SalesLoaderStateCopyWithImpl<$Res, $Val extends SalesLoaderState> ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ) as $Val, ); @@ -260,6 +446,8 @@ abstract class _$$SalesLoaderStateImplCopyWith<$Res> SalesAnalytic sales, Option failureOptionSales, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); @override @@ -283,6 +471,8 @@ class __$$SalesLoaderStateImplCopyWithImpl<$Res> Object? sales = null, Object? failureOptionSales = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _$SalesLoaderStateImpl( @@ -298,6 +488,14 @@ class __$$SalesLoaderStateImplCopyWithImpl<$Res> ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ), ); } @@ -310,6 +508,8 @@ class _$SalesLoaderStateImpl implements _SalesLoaderState { required this.sales, required this.failureOptionSales, this.isFetching = false, + required this.dateFrom, + required this.dateTo, }); @override @@ -319,10 +519,14 @@ class _$SalesLoaderStateImpl implements _SalesLoaderState { @override @JsonKey() final bool isFetching; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; @override String toString() { - return 'SalesLoaderState(sales: $sales, failureOptionSales: $failureOptionSales, isFetching: $isFetching)'; + return 'SalesLoaderState(sales: $sales, failureOptionSales: $failureOptionSales, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -334,12 +538,21 @@ class _$SalesLoaderStateImpl implements _SalesLoaderState { (identical(other.failureOptionSales, failureOptionSales) || other.failureOptionSales == failureOptionSales) && (identical(other.isFetching, isFetching) || - other.isFetching == isFetching)); + other.isFetching == isFetching) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); } @override - int get hashCode => - Object.hash(runtimeType, sales, failureOptionSales, isFetching); + int get hashCode => Object.hash( + runtimeType, + sales, + failureOptionSales, + isFetching, + dateFrom, + dateTo, + ); /// Create a copy of SalesLoaderState /// with the given fields replaced by the non-null parameter values. @@ -358,6 +571,8 @@ abstract class _SalesLoaderState implements SalesLoaderState { required final SalesAnalytic sales, required final Option failureOptionSales, final bool isFetching, + required final DateTime dateFrom, + required final DateTime dateTo, }) = _$SalesLoaderStateImpl; @override @@ -366,6 +581,10 @@ abstract class _SalesLoaderState implements SalesLoaderState { Option get failureOptionSales; @override bool get isFetching; + @override + DateTime get dateFrom; + @override + DateTime get dateTo; /// Create a copy of SalesLoaderState /// with the given fields replaced by the non-null parameter values. diff --git a/lib/application/analytic/sales_loader/sales_loader_event.dart b/lib/application/analytic/sales_loader/sales_loader_event.dart index 4838c2e..a70390b 100644 --- a/lib/application/analytic/sales_loader/sales_loader_event.dart +++ b/lib/application/analytic/sales_loader/sales_loader_event.dart @@ -2,5 +2,9 @@ part of 'sales_loader_bloc.dart'; @freezed class SalesLoaderEvent with _$SalesLoaderEvent { + const factory SalesLoaderEvent.rangeDateChanged( + DateTime dateFrom, + DateTime dateTo, + ) = _RangeDateChanged; const factory SalesLoaderEvent.fectched() = _Fectched; } diff --git a/lib/application/analytic/sales_loader/sales_loader_state.dart b/lib/application/analytic/sales_loader/sales_loader_state.dart index 79cea6f..7cbe4f3 100644 --- a/lib/application/analytic/sales_loader/sales_loader_state.dart +++ b/lib/application/analytic/sales_loader/sales_loader_state.dart @@ -6,10 +6,14 @@ class SalesLoaderState with _$SalesLoaderState { required SalesAnalytic sales, required Option failureOptionSales, @Default(false) bool isFetching, + required DateTime dateFrom, + required DateTime dateTo, }) = _SalesLoaderState; factory SalesLoaderState.initial() => SalesLoaderState( sales: SalesAnalytic.empty(), failureOptionSales: none(), + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), ); } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 78b31ec..5864f04 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -130,6 +130,9 @@ extension GetItInjectableX on _i174.GetIt { () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); + gh.factory<_i130.OrderRemoteDataProvider>( + () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i333.CategoryRemoteDataProvider>( () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), ); @@ -145,9 +148,6 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1006.CustomerRemoteDataProvider>( () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i130.OrderRemoteDataProvider>( - () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), - ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), ); @@ -184,26 +184,26 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i889.SalesLoaderBloc>( () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); - gh.factory<_i11.ProfitLossLoaderBloc>( - () => _i11.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); - gh.factory<_i1038.CategoryAnalyticLoaderBloc>( - () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i221.ProductAnalyticLoaderBloc>( + () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i785.InventoryAnalyticLoaderBloc>( () => _i785.InventoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); - gh.factory<_i516.DashboardAnalyticLoaderBloc>( - () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); - gh.factory<_i221.ProductAnalyticLoaderBloc>( - () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); gh.factory<_i552.PaymentMethodAnalyticLoaderBloc>( () => _i552.PaymentMethodAnalyticLoaderBloc( gh<_i477.IAnalyticRepository>(), ), ); + gh.factory<_i1038.CategoryAnalyticLoaderBloc>( + () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); + gh.factory<_i11.ProfitLossLoaderBloc>( + () => _i11.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); + gh.factory<_i516.DashboardAnalyticLoaderBloc>( + () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); diff --git a/lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart b/lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart new file mode 100644 index 0000000..cb22eae --- /dev/null +++ b/lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart @@ -0,0 +1,363 @@ +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +class DateRangePickerBottomSheet { + static Future show({ + required BuildContext context, + String title = 'Pilih Rentang Tanggal', + DateTime? initialStartDate, + DateTime? initialEndDate, + DateTime? minDate, + DateTime? maxDate, + String confirmText = 'Pilih', + String cancelText = 'Batal', + Color primaryColor = Colors.blue, + Function(DateTime? startDate, DateTime? endDate)? onChanged, + }) async { + return await showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + isDismissible: false, + enableDrag: false, + builder: (BuildContext context) => _DateRangePickerBottomSheet( + title: title, + initialStartDate: initialStartDate, + initialEndDate: initialEndDate, + minDate: minDate, + maxDate: maxDate, + confirmText: confirmText, + cancelText: cancelText, + primaryColor: primaryColor, + onChanged: onChanged, + ), + ); + } +} + +class _DateRangePickerBottomSheet extends StatefulWidget { + final String title; + final DateTime? initialStartDate; + final DateTime? initialEndDate; + final DateTime? minDate; + final DateTime? maxDate; + final String confirmText; + final String cancelText; + final Color primaryColor; + final Function(DateTime? startDate, DateTime? endDate)? onChanged; + + const _DateRangePickerBottomSheet({ + required this.title, + this.initialStartDate, + this.initialEndDate, + this.minDate, + this.maxDate, + required this.confirmText, + required this.cancelText, + required this.primaryColor, + this.onChanged, + }); + + @override + State<_DateRangePickerBottomSheet> createState() => + _DateRangePickerBottomSheetState(); +} + +class _DateRangePickerBottomSheetState + extends State<_DateRangePickerBottomSheet> + with TickerProviderStateMixin { + DateRangePickerSelectionChangedArgs? _selectionChangedArgs; + late AnimationController _animationController; + late Animation _slideAnimation; + + @override + void initState() { + super.initState(); + _animationController = AnimationController( + duration: const Duration(milliseconds: 300), + vsync: this, + ); + _slideAnimation = Tween(begin: 1.0, end: 0.0).animate( + CurvedAnimation(parent: _animationController, curve: Curves.easeOutCubic), + ); + _animationController.forward(); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + void _onSelectionChanged(DateRangePickerSelectionChangedArgs args) { + setState(() { + _selectionChangedArgs = args; + }); + } + + String _getSelectionText() { + if (_selectionChangedArgs?.value is PickerDateRange) { + final PickerDateRange range = _selectionChangedArgs!.value; + if (range.startDate != null && range.endDate != null) { + return '${_formatDate(range.startDate!)} - ${_formatDate(range.endDate!)}'; + } else if (range.startDate != null) { + return _formatDate(range.startDate!); + } + } + return 'Belum ada tanggal dipilih'; + } + + String _formatDate(DateTime date) { + final months = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'Mei', + 'Jun', + 'Jul', + 'Agu', + 'Sep', + 'Okt', + 'Nov', + 'Des', + ]; + return '${date.day} ${months[date.month - 1]} ${date.year}'; + } + + bool get _isValidSelection { + if (_selectionChangedArgs?.value is PickerDateRange) { + final PickerDateRange range = _selectionChangedArgs!.value; + return range.startDate != null && range.endDate != null; + } + return false; + } + + @override + Widget build(BuildContext context) { + final screenHeight = MediaQuery.of(context).size.height; + final bottomSheetHeight = screenHeight * 0.75; + + return AnimatedBuilder( + animation: _animationController, + builder: (context, child) { + return Transform.translate( + offset: Offset(0, _slideAnimation.value * bottomSheetHeight), + child: Container( + height: bottomSheetHeight, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(24), + topRight: Radius.circular(24), + ), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Drag Handle + Container( + margin: const EdgeInsets.only(top: 12, bottom: 8), + width: 40, + height: 4, + decoration: BoxDecoration( + color: Colors.grey.shade300, + borderRadius: BorderRadius.circular(2), + ), + ), + + // Content + Expanded( + child: SingleChildScrollView( + padding: const EdgeInsets.all(20), + child: Column( + children: [ + // Selection Info + Container( + width: double.infinity, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: widget.primaryColor.withOpacity(0.08), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: widget.primaryColor.withOpacity(0.2), + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Tanggal Terpilih:', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: widget.primaryColor, + ), + ), + const SizedBox(height: 6), + Text( + _getSelectionText(), + style: const TextStyle( + fontSize: 15, + fontWeight: FontWeight.w600, + color: Colors.black87, + ), + ), + ], + ), + ), + + const SizedBox(height: 20), + + // Date Picker + Container( + height: 320, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: Colors.grey.withOpacity(0.2), + ), + ), + child: SfDateRangePicker( + onSelectionChanged: _onSelectionChanged, + selectionMode: DateRangePickerSelectionMode.range, + initialSelectedRange: + (widget.initialStartDate != null && + widget.initialEndDate != null) + ? PickerDateRange( + widget.initialStartDate, + widget.initialEndDate, + ) + : null, + minDate: widget.minDate, + maxDate: widget.maxDate, + startRangeSelectionColor: widget.primaryColor, + endRangeSelectionColor: widget.primaryColor, + rangeSelectionColor: widget.primaryColor + .withOpacity(0.2), + todayHighlightColor: widget.primaryColor, + headerStyle: DateRangePickerHeaderStyle( + backgroundColor: Colors.transparent, + textAlign: TextAlign.center, + textStyle: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + ), + monthViewSettings: DateRangePickerMonthViewSettings( + viewHeaderStyle: DateRangePickerViewHeaderStyle( + backgroundColor: Colors.grey.withOpacity(0.1), + textStyle: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: widget.primaryColor, + ), + ), + ), + selectionTextStyle: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 14, + ), + rangeTextStyle: TextStyle( + color: widget.primaryColor, + fontWeight: FontWeight.w500, + fontSize: 14, + ), + ), + ), + ], + ), + ), + ), + + // Bottom Fixed Action Buttons + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: Colors.white, + border: Border( + top: BorderSide( + color: Colors.grey.withOpacity(0.2), + width: 1, + ), + ), + ), + child: SafeArea( + child: Row( + children: [ + Expanded( + child: OutlinedButton( + onPressed: () => Navigator.of(context).pop(), + style: OutlinedButton.styleFrom( + padding: const EdgeInsets.symmetric(vertical: 16), + side: BorderSide(color: Colors.grey.shade400), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + child: Text( + widget.cancelText, + style: const TextStyle( + fontSize: 15, + fontWeight: FontWeight.w600, + color: Colors.grey, + ), + ), + ), + ), + const SizedBox(width: 16), + Expanded( + child: ElevatedButton( + onPressed: _isValidSelection + ? () { + // Call onChanged when confirm button is pressed + if (widget.onChanged != null && + _selectionChangedArgs?.value + is PickerDateRange) { + final PickerDateRange range = + _selectionChangedArgs!.value; + widget.onChanged!( + range.startDate, + range.endDate, + ); + } + Navigator.of( + context, + ).pop(_selectionChangedArgs); + } + : null, + style: ElevatedButton.styleFrom( + backgroundColor: widget.primaryColor, + padding: const EdgeInsets.symmetric(vertical: 16), + elevation: 2, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + disabledBackgroundColor: Colors.grey.shade300, + ), + child: Text( + widget.confirmText, + style: TextStyle( + fontSize: 15, + fontWeight: FontWeight.w600, + color: _isValidSelection + ? Colors.white + : Colors.grey.shade600, + ), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/lib/presentation/components/field/date_range_picker_field.dart b/lib/presentation/components/field/date_range_picker_field.dart new file mode 100644 index 0000000..bf495f9 --- /dev/null +++ b/lib/presentation/components/field/date_range_picker_field.dart @@ -0,0 +1,531 @@ +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_datepicker/datepicker.dart'; + +import '../../../common/theme/theme.dart'; +import '../bottom_sheet/date_range_bottom_sheet.dart'; + +class DateRangePickerField extends StatefulWidget { + final String? label; + final String placeholder; + final DateTime? startDate; + final DateTime? endDate; + final DateTime? minDate; + final DateTime? maxDate; + final Function(DateTime? startDate, DateTime? endDate)? onChanged; + final Color primaryColor; + final bool enabled; + final String? errorText; + final EdgeInsetsGeometry? padding; + final TextStyle? textStyle; + final TextStyle? placeholderStyle; + final BoxDecoration? decoration; + final double height; + + const DateRangePickerField({ + Key? key, + this.label, + this.placeholder = 'Pilih rentang tanggal', + this.startDate, + this.endDate, + this.minDate, + this.maxDate, + this.onChanged, + this.primaryColor = AppColor.primary, + this.enabled = true, + this.errorText, + this.padding, + this.textStyle, + this.placeholderStyle, + this.decoration, + this.height = 52.0, + }) : super(key: key); + + @override + State createState() => _DateRangePickerFieldState(); +} + +class _DateRangePickerFieldState extends State { + bool _isPressed = false; + + String get _displayText { + if (widget.startDate != null && widget.endDate != null) { + return '${_formatDate(widget.startDate!)} - ${_formatDate(widget.endDate!)}'; + } else if (widget.startDate != null) { + return _formatDate(widget.startDate!); + } + return widget.placeholder; + } + + bool get _hasValue { + return widget.startDate != null || widget.endDate != null; + } + + String _formatDate(DateTime date) { + final months = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'Mei', + 'Jun', + 'Jul', + 'Agu', + 'Sep', + 'Okt', + 'Nov', + 'Des', + ]; + return '${date.day} ${months[date.month - 1]} ${date.year}'; + } + + Future _showDateRangePicker() async { + if (!widget.enabled) return; + + final result = await DateRangePickerBottomSheet.show( + context: context, + title: widget.label ?? 'Pilih Rentang Tanggal', + initialStartDate: widget.startDate, + initialEndDate: widget.endDate, + minDate: widget.minDate, + maxDate: widget.maxDate, + primaryColor: widget.primaryColor, + onChanged: widget.onChanged, + ); + + if (result != null && widget.onChanged != null) { + if (result.value is PickerDateRange) { + final PickerDateRange range = result.value; + widget.onChanged!(range.startDate, range.endDate); + } + } + } + + @override + Widget build(BuildContext context) { + final hasError = widget.errorText != null && widget.errorText!.isNotEmpty; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + // Label + if (widget.label != null) ...[ + Text( + widget.label!, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + color: hasError ? AppColor.error : AppColor.textSecondary, + ), + ), + const SizedBox(height: 8), + ], + + // Input Field + GestureDetector( + onTap: _showDateRangePicker, + onTapDown: widget.enabled + ? (_) => setState(() => _isPressed = true) + : null, + onTapUp: widget.enabled + ? (_) => setState(() => _isPressed = false) + : null, + onTapCancel: widget.enabled + ? () => setState(() => _isPressed = false) + : null, + child: AnimatedContainer( + duration: const Duration(milliseconds: 150), + height: widget.height, + padding: + widget.padding ?? const EdgeInsets.symmetric(horizontal: 16), + decoration: + widget.decoration ?? + BoxDecoration( + color: widget.enabled + ? (_isPressed ? AppColor.backgroundLight : AppColor.white) + : AppColor.background, + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: hasError + ? AppColor.error + : (_isPressed ? widget.primaryColor : AppColor.border), + width: _isPressed ? 2 : 1, + ), + boxShadow: _isPressed && widget.enabled + ? [ + BoxShadow( + color: widget.primaryColor.withOpacity(0.1), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ] + : null, + ), + child: Row( + children: [ + // Date Text + Expanded( + child: Text( + _displayText, + style: + widget.textStyle ?? + TextStyle( + fontSize: 15, + fontWeight: _hasValue + ? FontWeight.w500 + : FontWeight.w400, + color: widget.enabled + ? (_hasValue + ? AppColor.textPrimary + : AppColor.textSecondary) + : AppColor.textLight, + ), + ), + ), + + // Calendar Icon + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: widget.primaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + Icons.calendar_today_rounded, + size: 20, + color: widget.enabled + ? widget.primaryColor + : AppColor.textLight, + ), + ), + ], + ), + ), + ), + + // Error Text + if (hasError) ...[ + const SizedBox(height: 6), + Text( + widget.errorText!, + style: TextStyle( + fontSize: 12, + color: AppColor.error, + fontWeight: FontWeight.w400, + ), + ), + ], + ], + ); + } +} + +// Variasi dengan style yang berbeda +class DateRangePickerFieldOutlined extends StatefulWidget { + final String? label; + final String placeholder; + final DateTime? startDate; + final DateTime? endDate; + final DateTime? minDate; + final DateTime? maxDate; + final Function(DateTime? startDate, DateTime? endDate)? onChanged; + final Color primaryColor; + final bool enabled; + final String? errorText; + + const DateRangePickerFieldOutlined({ + Key? key, + this.label, + this.placeholder = 'Pilih rentang tanggal', + this.startDate, + this.endDate, + this.minDate, + this.maxDate, + this.onChanged, + this.primaryColor = AppColor.primary, + this.enabled = true, + this.errorText, + }) : super(key: key); + + @override + State createState() => + _DateRangePickerFieldOutlinedState(); +} + +class _DateRangePickerFieldOutlinedState + extends State { + bool _isFocused = false; + + String get _displayText { + if (widget.startDate != null && widget.endDate != null) { + return '${_formatDate(widget.startDate!)} - ${_formatDate(widget.endDate!)}'; + } else if (widget.startDate != null) { + return _formatDate(widget.startDate!); + } + return widget.placeholder; + } + + bool get _hasValue { + return widget.startDate != null || widget.endDate != null; + } + + String _formatDate(DateTime date) { + final months = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'Mei', + 'Jun', + 'Jul', + 'Agu', + 'Sep', + 'Okt', + 'Nov', + 'Des', + ]; + return '${date.day} ${months[date.month - 1]} ${date.year}'; + } + + Future _showDateRangePicker() async { + if (!widget.enabled) return; + + setState(() => _isFocused = true); + + final result = await DateRangePickerBottomSheet.show( + context: context, + title: widget.label ?? 'Pilih Rentang Tanggal', + initialStartDate: widget.startDate, + initialEndDate: widget.endDate, + minDate: widget.minDate, + maxDate: widget.maxDate, + primaryColor: widget.primaryColor, + onChanged: widget.onChanged, + ); + + setState(() => _isFocused = false); + + if (result != null && widget.onChanged != null) { + if (result.value is PickerDateRange) { + final PickerDateRange range = result.value; + widget.onChanged!(range.startDate, range.endDate); + } + } + } + + @override + Widget build(BuildContext context) { + final hasError = widget.errorText != null && widget.errorText!.isNotEmpty; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + GestureDetector( + onTap: _showDateRangePicker, + child: Container( + height: 56, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: hasError + ? AppColor.error + : (_isFocused || _hasValue + ? widget.primaryColor + : AppColor.border), + width: _isFocused ? 2 : 1, + ), + ), + child: Row( + children: [ + const SizedBox(width: 16), + + // Date Text + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (widget.label != null && (_isFocused || _hasValue)) + Text( + widget.label!, + style: TextStyle( + fontSize: 12, + color: hasError + ? AppColor.error + : widget.primaryColor, + fontWeight: FontWeight.w500, + ), + ), + Text( + _hasValue + ? _displayText + : (widget.label ?? widget.placeholder), + style: TextStyle( + fontSize: _hasValue ? 16 : 16, + fontWeight: FontWeight.w400, + color: widget.enabled + ? (_hasValue + ? AppColor.textPrimary + : AppColor.textSecondary) + : AppColor.textLight, + ), + ), + ], + ), + ), + + // Calendar Icon + Padding( + padding: const EdgeInsets.only(right: 16), + child: Icon( + Icons.calendar_today_rounded, + size: 24, + color: widget.enabled + ? (_isFocused + ? widget.primaryColor + : AppColor.textSecondary) + : AppColor.textLight, + ), + ), + ], + ), + ), + ), + + // Error Text + if (hasError) ...[ + const SizedBox(height: 6), + Padding( + padding: const EdgeInsets.only(left: 16), + child: Text( + widget.errorText!, + style: TextStyle( + fontSize: 12, + color: AppColor.error, + fontWeight: FontWeight.w400, + ), + ), + ), + ], + ], + ); + } +} + +// Usage Example Widget +class DateRangePickerExample extends StatefulWidget { + @override + _DateRangePickerExampleState createState() => _DateRangePickerExampleState(); +} + +class _DateRangePickerExampleState extends State { + DateTime? _startDate; + DateTime? _endDate; + DateTime? _startDate2; + DateTime? _endDate2; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Date Range Picker Example'), + backgroundColor: AppColor.primary, + foregroundColor: AppColor.white, + ), + body: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Default Style', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 16), + + DateRangePickerField( + label: 'Periode Laporan', + placeholder: 'Pilih tanggal mulai - selesai', + startDate: _startDate, + endDate: _endDate, + primaryColor: AppColor.primary, + onChanged: (start, end) { + setState(() { + _startDate = start; + _endDate = end; + }); + }, + ), + + const SizedBox(height: 32), + + Text( + 'Outlined Style', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SizedBox(height: 16), + + DateRangePickerFieldOutlined( + label: 'Rentang Waktu', + placeholder: 'Pilih rentang tanggal', + startDate: _startDate2, + endDate: _endDate2, + primaryColor: AppColor.secondary, + onChanged: (start, end) { + setState(() { + _startDate2 = start; + _endDate2 = end; + }); + }, + ), + + const SizedBox(height: 24), + + // Display selected dates + if (_startDate != null || + _endDate != null || + _startDate2 != null || + _endDate2 != null) + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(8), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Selected Dates:', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, + ), + ), + const SizedBox(height: 8), + if (_startDate != null) + Text( + 'Default: ${_startDate!} - ${_endDate ?? 'Not selected'}', + ), + if (_startDate2 != null) + Text( + 'Outlined: ${_startDate2!} - ${_endDate2 ?? 'Not selected'}', + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart index 2b70f1f..70a0a64 100644 --- a/lib/presentation/pages/sales/sales_page.dart +++ b/lib/presentation/pages/sales/sales_page.dart @@ -10,6 +10,7 @@ import '../../../common/theme/theme.dart'; import '../../../domain/analytic/analytic.dart'; import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; +import '../../components/field/date_range_picker_field.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/summary_card.dart'; @@ -79,143 +80,125 @@ class _SalesPageState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: BlocBuilder( - builder: (context, state) { - return CustomScrollView( - slivers: [ - // App Bar - SliverAppBar( - expandedHeight: 120, - floating: false, - pinned: true, - backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Penjualan'), - ), - - // Date Range Header - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: state.isFetching - ? _buildDateRangeShimmer() - : _buildDateRangeHeader(), - ), + body: BlocListener( + listenWhen: (previous, current) => + previous.dateFrom != current.dateFrom && + previous.dateTo != current.dateTo, + listener: (context, state) { + context.read().add(SalesLoaderEvent.fectched()); + }, + child: BlocBuilder( + builder: (context, state) { + return CustomScrollView( + slivers: [ + // App Bar + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + flexibleSpace: CustomAppBar(title: 'Penjualan'), ), - ), - // Summary Cards - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Summary', - style: AppStyle.xxl.copyWith( - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), - ), - const SpaceHeight(16), - state.isFetching - ? _buildSummaryShimmer() - : _buildSummaryCards(state), - ], - ), - ), - ), - ), - ), - - // Net Sales Card - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: state.isFetching - ? _buildNetSalesShimmer() - : _buildNetSalesCard(state), - ), - ), - ), - - // Daily Sales Section Header - SliverToBoxAdapter( - child: SlideTransition( - position: slideAnimation, - child: FadeTransition( - opacity: fadeAnimation, - child: Padding( - padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), - child: Text( - 'Daily Breakdown', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, + // Date Range Header + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: DateRangePickerField( + maxDate: DateTime.now(), + startDate: state.dateFrom, + endDate: state.dateTo, + onChanged: (startDate, endDate) { + context.read().add( + SalesLoaderEvent.rangeDateChanged( + startDate!, + endDate!, + ), + ); + }, ), ), ), ), ), - ), - // Daily Sales List - state.isFetching - ? _buildDailySalesShimmer() - : _buildDailySalesList(state), - - // Bottom Padding - const SliverToBoxAdapter(child: SpaceHeight(32)), - ], - ); - }, - ), - ); - } - - // Shimmer Components - Widget _buildDateRangeShimmer() { - return Container( - margin: const EdgeInsets.all(16), - child: Shimmer.fromColors( - baseColor: Colors.grey[300]!, - highlightColor: Colors.grey[100]!, - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - ), - child: Row( - children: [ - Container( - width: 20, - height: 20, - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(4), + // Summary Cards + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Summary', + style: AppStyle.xxl.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + const SpaceHeight(16), + state.isFetching + ? _buildSummaryShimmer() + : _buildSummaryCards(state), + ], + ), + ), + ), + ), ), - ), - SpaceWidth(8), - Container( - width: 150, - height: 16, - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(4), + + // Net Sales Card + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: state.isFetching + ? _buildNetSalesShimmer() + : _buildNetSalesCard(state), + ), + ), ), - ), - ], - ), + + // Daily Sales Section Header + SliverToBoxAdapter( + child: SlideTransition( + position: slideAnimation, + child: FadeTransition( + opacity: fadeAnimation, + child: Padding( + padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), + child: Text( + 'Daily Breakdown', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ), + ), + ), + ), + + // Daily Sales List + state.isFetching + ? _buildDailySalesShimmer() + : _buildDailySalesList(state), + + // Bottom Padding + const SliverToBoxAdapter(child: SpaceHeight(32)), + ], + ); + }, ), ), ); @@ -415,38 +398,6 @@ class _SalesPageState extends State with TickerProviderStateMixin { ); } - // Original Components (preserved) - Widget _buildDateRangeHeader() { - return Container( - margin: const EdgeInsets.all(16), - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), - decoration: BoxDecoration( - color: AppColor.surface, - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.05), - blurRadius: 10, - offset: const Offset(0, 2), - ), - ], - ), - child: Row( - children: [ - Icon(Icons.date_range, color: AppColor.primary, size: 20), - SpaceWidth(8), - Text( - 'Aug 1 - Aug 15, 2025', - style: AppStyle.md.copyWith( - color: AppColor.textPrimary, - fontWeight: FontWeight.w500, - ), - ), - ], - ), - ); - } - Widget _buildSummaryCards(SalesLoaderState state) { return Column( children: [ diff --git a/pubspec.lock b/pubspec.lock index 40534f0..48ae405 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1218,6 +1218,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" + syncfusion_flutter_core: + dependency: transitive + description: + name: syncfusion_flutter_core + sha256: ce02ce65f51db8e29edc9d2225872d927e001bd2b13c2490d176563bbb046fc7 + url: "https://pub.dev" + source: hosted + version: "30.2.5" + syncfusion_flutter_datepicker: + dependency: "direct main" + description: + name: syncfusion_flutter_datepicker + sha256: e8df9f4777df15db11929f20cbe98e4249fe08208e7107bcb4ad889aa1ba2bbf + url: "https://pub.dev" + source: hosted + version: "30.2.5" synchronized: dependency: transitive description: @@ -1388,4 +1404,4 @@ packages: version: "3.1.3" sdks: dart: ">=3.8.1 <4.0.0" - flutter: ">=3.27.4" + flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 33a7a21..95f72d6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -42,6 +42,7 @@ dependencies: loader_overlay: ^5.0.0 shimmer: ^3.0.0 cached_network_image: ^3.4.1 + syncfusion_flutter_datepicker: ^30.2.5 dev_dependencies: flutter_test: From ac8c2c0f54b577f58b87040230404a8e2cb2883c Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 16:48:35 +0700 Subject: [PATCH 070/108] feat: profit loss range date --- .../profit_loss_loader_bloc.dart | 7 +- .../profit_loss_loader_bloc.freezed.dart | 235 +++++++++++++++++- .../profit_loss_loader_event.dart | 4 + .../profit_loss_loader_state.dart | 4 + .../pages/finance/finance_page.dart | 227 +++++++---------- 5 files changed, 338 insertions(+), 139 deletions(-) diff --git a/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart index 85758ce..a16ffd7 100644 --- a/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart +++ b/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.dart @@ -24,12 +24,15 @@ class ProfitLossLoaderBloc Emitter emit, ) { return event.map( + rangeDateChanged: (e) async { + emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo)); + }, fetched: (e) async { emit(state.copyWith(isFetching: true, failureOptionProfitLoss: none())); final result = await _repository.getProfitLoss( - dateFrom: DateTime.now().subtract(const Duration(days: 30)), - dateTo: DateTime.now(), + dateFrom: state.dateFrom, + dateTo: state.dateTo, ); var data = result.fold( diff --git a/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.freezed.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.freezed.dart index 2fb5db5..601e958 100644 --- a/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.freezed.dart +++ b/lib/application/analytic/profit_loss_loader/profit_loss_loader_bloc.freezed.dart @@ -19,27 +19,34 @@ final _privateConstructorUsedError = UnsupportedError( mixin _$ProfitLossLoaderEvent { @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function() fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function()? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -70,6 +77,164 @@ class _$ProfitLossLoaderEventCopyWithImpl< /// with the given fields replaced by the non-null parameter values. } +/// @nodoc +abstract class _$$RangeDateChangedImplCopyWith<$Res> { + factory _$$RangeDateChangedImplCopyWith( + _$RangeDateChangedImpl value, + $Res Function(_$RangeDateChangedImpl) then, + ) = __$$RangeDateChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$RangeDateChangedImplCopyWithImpl<$Res> + extends _$ProfitLossLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl> + implements _$$RangeDateChangedImplCopyWith<$Res> { + __$$RangeDateChangedImplCopyWithImpl( + _$RangeDateChangedImpl _value, + $Res Function(_$RangeDateChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProfitLossLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$RangeDateChangedImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$RangeDateChangedImpl implements _RangeDateChanged { + const _$RangeDateChangedImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'ProfitLossLoaderEvent.rangeDateChanged(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$RangeDateChangedImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of ProfitLossLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + __$$RangeDateChangedImplCopyWithImpl<_$RangeDateChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { + return rangeDateChanged(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { + return rangeDateChanged?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult Function()? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, + required TResult Function(_Fetched value) fetched, + }) { + return rangeDateChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return rangeDateChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(this); + } + return orElse(); + } +} + +abstract class _RangeDateChanged implements ProfitLossLoaderEvent { + const factory _RangeDateChanged( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$RangeDateChangedImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of ProfitLossLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$FetchedImplCopyWith<$Res> { factory _$$FetchedImplCopyWith( @@ -112,19 +277,27 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs - TResult when({required TResult Function() fetched}) { + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { return fetched(); } @override @optionalTypeArgs - TResult? whenOrNull({TResult? Function()? fetched}) { + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { return fetched?.call(); } @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) { @@ -137,6 +310,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) { return fetched(this); @@ -145,6 +319,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) { return fetched?.call(this); @@ -153,6 +328,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -173,6 +349,8 @@ mixin _$ProfitLossLoaderState { Option get failureOptionProfitLoss => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; + DateTime get dateFrom => throw _privateConstructorUsedError; + DateTime get dateTo => throw _privateConstructorUsedError; /// Create a copy of ProfitLossLoaderState /// with the given fields replaced by the non-null parameter values. @@ -192,6 +370,8 @@ abstract class $ProfitLossLoaderStateCopyWith<$Res> { ProfitLossAnalytic profitLoss, Option failureOptionProfitLoss, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); $ProfitLossAnalyticCopyWith<$Res> get profitLoss; @@ -218,6 +398,8 @@ class _$ProfitLossLoaderStateCopyWithImpl< Object? profitLoss = null, Object? failureOptionProfitLoss = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _value.copyWith( @@ -233,6 +415,14 @@ class _$ProfitLossLoaderStateCopyWithImpl< ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ) as $Val, ); @@ -262,6 +452,8 @@ abstract class _$$ProfitLossLoaderStateImplCopyWith<$Res> ProfitLossAnalytic profitLoss, Option failureOptionProfitLoss, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); @override @@ -286,6 +478,8 @@ class __$$ProfitLossLoaderStateImplCopyWithImpl<$Res> Object? profitLoss = null, Object? failureOptionProfitLoss = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _$ProfitLossLoaderStateImpl( @@ -301,6 +495,14 @@ class __$$ProfitLossLoaderStateImplCopyWithImpl<$Res> ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ), ); } @@ -313,6 +515,8 @@ class _$ProfitLossLoaderStateImpl implements _ProfitLossLoaderState { required this.profitLoss, required this.failureOptionProfitLoss, this.isFetching = false, + required this.dateFrom, + required this.dateTo, }); @override @@ -322,10 +526,14 @@ class _$ProfitLossLoaderStateImpl implements _ProfitLossLoaderState { @override @JsonKey() final bool isFetching; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; @override String toString() { - return 'ProfitLossLoaderState(profitLoss: $profitLoss, failureOptionProfitLoss: $failureOptionProfitLoss, isFetching: $isFetching)'; + return 'ProfitLossLoaderState(profitLoss: $profitLoss, failureOptionProfitLoss: $failureOptionProfitLoss, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -341,12 +549,21 @@ class _$ProfitLossLoaderStateImpl implements _ProfitLossLoaderState { ) || other.failureOptionProfitLoss == failureOptionProfitLoss) && (identical(other.isFetching, isFetching) || - other.isFetching == isFetching)); + other.isFetching == isFetching) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); } @override - int get hashCode => - Object.hash(runtimeType, profitLoss, failureOptionProfitLoss, isFetching); + int get hashCode => Object.hash( + runtimeType, + profitLoss, + failureOptionProfitLoss, + isFetching, + dateFrom, + dateTo, + ); /// Create a copy of ProfitLossLoaderState /// with the given fields replaced by the non-null parameter values. @@ -366,6 +583,8 @@ abstract class _ProfitLossLoaderState implements ProfitLossLoaderState { required final ProfitLossAnalytic profitLoss, required final Option failureOptionProfitLoss, final bool isFetching, + required final DateTime dateFrom, + required final DateTime dateTo, }) = _$ProfitLossLoaderStateImpl; @override @@ -374,6 +593,10 @@ abstract class _ProfitLossLoaderState implements ProfitLossLoaderState { Option get failureOptionProfitLoss; @override bool get isFetching; + @override + DateTime get dateFrom; + @override + DateTime get dateTo; /// Create a copy of ProfitLossLoaderState /// with the given fields replaced by the non-null parameter values. diff --git a/lib/application/analytic/profit_loss_loader/profit_loss_loader_event.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_event.dart index 2a69fcc..5164378 100644 --- a/lib/application/analytic/profit_loss_loader/profit_loss_loader_event.dart +++ b/lib/application/analytic/profit_loss_loader/profit_loss_loader_event.dart @@ -2,5 +2,9 @@ part of 'profit_loss_loader_bloc.dart'; @freezed class ProfitLossLoaderEvent with _$ProfitLossLoaderEvent { + const factory ProfitLossLoaderEvent.rangeDateChanged( + DateTime dateFrom, + DateTime dateTo, + ) = _RangeDateChanged; const factory ProfitLossLoaderEvent.fetched() = _Fetched; } diff --git a/lib/application/analytic/profit_loss_loader/profit_loss_loader_state.dart b/lib/application/analytic/profit_loss_loader/profit_loss_loader_state.dart index 783bfe4..1465648 100644 --- a/lib/application/analytic/profit_loss_loader/profit_loss_loader_state.dart +++ b/lib/application/analytic/profit_loss_loader/profit_loss_loader_state.dart @@ -6,10 +6,14 @@ class ProfitLossLoaderState with _$ProfitLossLoaderState { required ProfitLossAnalytic profitLoss, required Option failureOptionProfitLoss, @Default(false) bool isFetching, + required DateTime dateFrom, + required DateTime dateTo, }) = _ProfitLossLoaderState; factory ProfitLossLoaderState.initial() => ProfitLossLoaderState( profitLoss: ProfitLossAnalytic.empty(), failureOptionProfitLoss: none(), + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), ); } diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index b165172..9a99ad0 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -10,6 +10,7 @@ import '../../../common/theme/theme.dart'; import '../../../domain/analytic/analytic.dart'; import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; +import '../../components/field/date_range_picker_field.dart'; import 'widgets/cash_flow.dart'; import 'widgets/category.dart'; import 'widgets/product.dart'; @@ -50,14 +51,6 @@ class _FinancePageState extends State late Animation _fadeAnimation; late Animation _scaleAnimation; - String selectedPeriod = 'Hari ini'; - final List periods = [ - 'Hari ini', - 'Minggu ini', - 'Bulan ini', - 'Tahun ini', - ]; - @override void initState() { super.initState(); @@ -113,136 +106,108 @@ class _FinancePageState extends State Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: BlocBuilder( - builder: (context, state) { - return CustomScrollView( - slivers: [ - // SliverAppBar with animated background - SliverAppBar( - expandedHeight: 120, - floating: false, - pinned: true, - backgroundColor: AppColor.primary, - elevation: 0, - flexibleSpace: CustomAppBar(title: 'Keuangan'), - ), - - // Header dengan filter periode - SliverToBoxAdapter( - child: FadeTransition( - opacity: _fadeAnimation, - child: _buildPeriodSelector(), - ), - ), - - // Summary Cards - SliverToBoxAdapter( - child: SlideTransition( - position: _slideAnimation, - child: _buildSummaryCards(state.profitLoss.summary), - ), - ), - - // Cash Flow Analysis - SliverToBoxAdapter( - child: ScaleTransition( - scale: _scaleAnimation, - child: FinanceCashFlow(dailyData: state.profitLoss.data), - ), - ), - - // Profit Loss Detail - SliverToBoxAdapter( - child: FadeTransition( - opacity: _fadeAnimation, - child: FinanceProfitLoss(data: state.profitLoss.summary), - ), - ), - - BlocBuilder< - CategoryAnalyticLoaderBloc, - CategoryAnalyticLoaderState - >( - builder: (context, stateCategory) { - return SliverToBoxAdapter( - child: SlideTransition( - position: _slideAnimation, - child: FinanceCategory( - categories: stateCategory.categoryAnalytic.data, - ), - ), - ); - }, - ), - - // Product Analysis Section - SliverToBoxAdapter( - child: SlideTransition( - position: _slideAnimation, - child: _buildProductAnalysis(state.profitLoss.productData), - ), - ), - - // Transaction Categories - - // Bottom spacing - const SliverToBoxAdapter(child: SizedBox(height: 100)), - ], + body: BlocListener( + listenWhen: (previous, current) => + previous.dateFrom != current.dateFrom && + previous.dateTo != current.dateTo, + listener: (context, state) { + context.read().add( + ProfitLossLoaderEvent.fetched(), ); }, - ), - ); - } + child: BlocBuilder( + builder: (context, state) { + return CustomScrollView( + slivers: [ + // SliverAppBar with animated background + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + elevation: 0, + flexibleSpace: CustomAppBar(title: 'Keuangan'), + ), - Widget _buildPeriodSelector() { - return Container( - padding: const EdgeInsets.all(16), - child: Row( - children: [ - Expanded( - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 16), - decoration: BoxDecoration( - color: AppColor.white, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: AppColor.border), - ), - child: DropdownButtonHideUnderline( - child: DropdownButton( - value: selectedPeriod, - isExpanded: true, - icon: const Icon( - LineIcons.angleDown, - color: AppColor.primary, + // Header dengan filter periode + SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: DateRangePickerField( + maxDate: DateTime.now(), + startDate: state.dateFrom, + endDate: state.dateTo, + onChanged: (startDate, endDate) { + context.read().add( + ProfitLossLoaderEvent.rangeDateChanged( + startDate!, + endDate!, + ), + ); + }, + ), + ), ), - style: AppStyle.md, - items: periods.map((String period) { - return DropdownMenuItem( - value: period, - child: Text(period), + ), + + // Summary Cards + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: _buildSummaryCards(state.profitLoss.summary), + ), + ), + + // Cash Flow Analysis + SliverToBoxAdapter( + child: ScaleTransition( + scale: _scaleAnimation, + child: FinanceCashFlow(dailyData: state.profitLoss.data), + ), + ), + + // Profit Loss Detail + SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: FinanceProfitLoss(data: state.profitLoss.summary), + ), + ), + + BlocBuilder< + CategoryAnalyticLoaderBloc, + CategoryAnalyticLoaderState + >( + builder: (context, stateCategory) { + return SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: FinanceCategory( + categories: stateCategory.categoryAnalytic.data, + ), + ), ); - }).toList(), - onChanged: (String? newValue) { - setState(() { - selectedPeriod = newValue!; - }); }, ), - ), - ), - ), - const SizedBox(width: 12), - Container( - decoration: BoxDecoration( - color: AppColor.primary, - borderRadius: BorderRadius.circular(12), - ), - child: IconButton( - onPressed: () {}, - icon: const Icon(LineIcons.calendar, color: AppColor.white), - ), - ), - ], + + // Product Analysis Section + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: _buildProductAnalysis(state.profitLoss.productData), + ), + ), + + // Transaction Categories + + // Bottom spacing + const SliverToBoxAdapter(child: SizedBox(height: 100)), + ], + ); + }, + ), ), ); } From a61b19e45c004e76d5d66957805f5f64a79058cd Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 17:06:41 +0700 Subject: [PATCH 071/108] feat: product analytic range date --- .../product_analytic_loader_bloc.dart | 7 +- .../product_analytic_loader_bloc.freezed.dart | 228 +++++++++++- .../product_analytic_loader_event.dart | 4 + .../product_analytic_loader_state.dart | 4 + lib/domain/analytic/analytic.freezed.dart | 16 +- .../entities/product_analytic_entity.dart | 4 +- .../analytic/analytic_dtos.freezed.dart | 350 +++++++++--------- .../analytic/analytic_dtos.g.dart | 28 +- .../analytic/dto/product_analytic_dto.dart | 52 +-- .../product_analytic_page.dart | 168 +++++---- lib/presentation/router/app_router.gr.dart | 2 +- 11 files changed, 554 insertions(+), 309 deletions(-) diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart index 877407c..f793510 100644 --- a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart @@ -24,6 +24,9 @@ class ProductAnalyticLoaderBloc Emitter emit, ) { return event.map( + rangeDateChanged: (e) async { + emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo)); + }, fetched: (e) async { emit( state.copyWith( @@ -33,8 +36,8 @@ class ProductAnalyticLoaderBloc ); final result = await _repository.getProduct( - dateFrom: DateTime.now().subtract(const Duration(days: 30)), - dateTo: DateTime.now(), + dateFrom: state.dateFrom, + dateTo: state.dateTo, ); var data = result.fold( diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart index 9a7fc21..05fec87 100644 --- a/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_bloc.freezed.dart @@ -19,27 +19,34 @@ final _privateConstructorUsedError = UnsupportedError( mixin _$ProductAnalyticLoaderEvent { @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function() fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function()? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -74,6 +81,165 @@ class _$ProductAnalyticLoaderEventCopyWithImpl< /// with the given fields replaced by the non-null parameter values. } +/// @nodoc +abstract class _$$RangeDateChangedImplCopyWith<$Res> { + factory _$$RangeDateChangedImplCopyWith( + _$RangeDateChangedImpl value, + $Res Function(_$RangeDateChangedImpl) then, + ) = __$$RangeDateChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$RangeDateChangedImplCopyWithImpl<$Res> + extends + _$ProductAnalyticLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl> + implements _$$RangeDateChangedImplCopyWith<$Res> { + __$$RangeDateChangedImplCopyWithImpl( + _$RangeDateChangedImpl _value, + $Res Function(_$RangeDateChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ProductAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$RangeDateChangedImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$RangeDateChangedImpl implements _RangeDateChanged { + const _$RangeDateChangedImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'ProductAnalyticLoaderEvent.rangeDateChanged(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$RangeDateChangedImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of ProductAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + __$$RangeDateChangedImplCopyWithImpl<_$RangeDateChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { + return rangeDateChanged(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { + return rangeDateChanged?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult Function()? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, + required TResult Function(_Fetched value) fetched, + }) { + return rangeDateChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return rangeDateChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(this); + } + return orElse(); + } +} + +abstract class _RangeDateChanged implements ProductAnalyticLoaderEvent { + const factory _RangeDateChanged( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$RangeDateChangedImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of ProductAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$FetchedImplCopyWith<$Res> { factory _$$FetchedImplCopyWith( @@ -116,19 +282,27 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs - TResult when({required TResult Function() fetched}) { + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { return fetched(); } @override @optionalTypeArgs - TResult? whenOrNull({TResult? Function()? fetched}) { + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { return fetched?.call(); } @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) { @@ -141,6 +315,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) { return fetched(this); @@ -149,6 +324,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) { return fetched?.call(this); @@ -157,6 +333,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -177,6 +354,8 @@ mixin _$ProductAnalyticLoaderState { Option get failureOptionProductAnalytic => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; + DateTime get dateFrom => throw _privateConstructorUsedError; + DateTime get dateTo => throw _privateConstructorUsedError; /// Create a copy of ProductAnalyticLoaderState /// with the given fields replaced by the non-null parameter values. @@ -200,6 +379,8 @@ abstract class $ProductAnalyticLoaderStateCopyWith<$Res> { ProductAnalytic productAnalytic, Option failureOptionProductAnalytic, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); $ProductAnalyticCopyWith<$Res> get productAnalytic; @@ -226,6 +407,8 @@ class _$ProductAnalyticLoaderStateCopyWithImpl< Object? productAnalytic = null, Object? failureOptionProductAnalytic = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _value.copyWith( @@ -241,6 +424,14 @@ class _$ProductAnalyticLoaderStateCopyWithImpl< ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ) as $Val, ); @@ -270,6 +461,8 @@ abstract class _$$ProductAnalyticLoaderStateImplCopyWith<$Res> ProductAnalytic productAnalytic, Option failureOptionProductAnalytic, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); @override @@ -297,6 +490,8 @@ class __$$ProductAnalyticLoaderStateImplCopyWithImpl<$Res> Object? productAnalytic = null, Object? failureOptionProductAnalytic = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _$ProductAnalyticLoaderStateImpl( @@ -312,6 +507,14 @@ class __$$ProductAnalyticLoaderStateImplCopyWithImpl<$Res> ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ), ); } @@ -324,6 +527,8 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { required this.productAnalytic, required this.failureOptionProductAnalytic, this.isFetching = false, + required this.dateFrom, + required this.dateTo, }); @override @@ -333,10 +538,14 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { @override @JsonKey() final bool isFetching; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; @override String toString() { - return 'ProductAnalyticLoaderState(productAnalytic: $productAnalytic, failureOptionProductAnalytic: $failureOptionProductAnalytic, isFetching: $isFetching)'; + return 'ProductAnalyticLoaderState(productAnalytic: $productAnalytic, failureOptionProductAnalytic: $failureOptionProductAnalytic, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -353,7 +562,10 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { other.failureOptionProductAnalytic == failureOptionProductAnalytic) && (identical(other.isFetching, isFetching) || - other.isFetching == isFetching)); + other.isFetching == isFetching) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); } @override @@ -362,6 +574,8 @@ class _$ProductAnalyticLoaderStateImpl implements _ProductAnalyticLoaderState { productAnalytic, failureOptionProductAnalytic, isFetching, + dateFrom, + dateTo, ); /// Create a copy of ProductAnalyticLoaderState @@ -382,6 +596,8 @@ abstract class _ProductAnalyticLoaderState required final ProductAnalytic productAnalytic, required final Option failureOptionProductAnalytic, final bool isFetching, + required final DateTime dateFrom, + required final DateTime dateTo, }) = _$ProductAnalyticLoaderStateImpl; @override @@ -390,6 +606,10 @@ abstract class _ProductAnalyticLoaderState Option get failureOptionProductAnalytic; @override bool get isFetching; + @override + DateTime get dateFrom; + @override + DateTime get dateTo; /// Create a copy of ProductAnalyticLoaderState /// with the given fields replaced by the non-null parameter values. diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart index 58e9c7f..b707a93 100644 --- a/lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_event.dart @@ -2,5 +2,9 @@ part of 'product_analytic_loader_bloc.dart'; @freezed class ProductAnalyticLoaderEvent with _$ProductAnalyticLoaderEvent { + const factory ProductAnalyticLoaderEvent.rangeDateChanged( + DateTime dateFrom, + DateTime dateTo, + ) = _RangeDateChanged; const factory ProductAnalyticLoaderEvent.fetched() = _Fetched; } diff --git a/lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart b/lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart index 23dfa16..94b349a 100644 --- a/lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart +++ b/lib/application/analytic/product_analytic_loader/product_analytic_loader_state.dart @@ -6,10 +6,14 @@ class ProductAnalyticLoaderState with _$ProductAnalyticLoaderState { required ProductAnalytic productAnalytic, required Option failureOptionProductAnalytic, @Default(false) bool isFetching, + required DateTime dateFrom, + required DateTime dateTo, }) = _ProductAnalyticLoaderState; factory ProductAnalyticLoaderState.initial() => ProductAnalyticLoaderState( productAnalytic: ProductAnalytic.empty(), failureOptionProductAnalytic: none(), + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), ); } diff --git a/lib/domain/analytic/analytic.freezed.dart b/lib/domain/analytic/analytic.freezed.dart index ac7fd5b..5cd5ff1 100644 --- a/lib/domain/analytic/analytic.freezed.dart +++ b/lib/domain/analytic/analytic.freezed.dart @@ -5972,7 +5972,7 @@ mixin _$ProductAnalyticData { String get categoryId => throw _privateConstructorUsedError; String get categoryName => throw _privateConstructorUsedError; int get quantitySold => throw _privateConstructorUsedError; - double get revenue => throw _privateConstructorUsedError; + int get revenue => throw _privateConstructorUsedError; double get averagePrice => throw _privateConstructorUsedError; int get orderCount => throw _privateConstructorUsedError; @@ -5996,7 +5996,7 @@ abstract class $ProductAnalyticDataCopyWith<$Res> { String categoryId, String categoryName, int quantitySold, - double revenue, + int revenue, double averagePrice, int orderCount, }); @@ -6051,7 +6051,7 @@ class _$ProductAnalyticDataCopyWithImpl<$Res, $Val extends ProductAnalyticData> revenue: null == revenue ? _value.revenue : revenue // ignore: cast_nullable_to_non_nullable - as double, + as int, averagePrice: null == averagePrice ? _value.averagePrice : averagePrice // ignore: cast_nullable_to_non_nullable @@ -6081,7 +6081,7 @@ abstract class _$$ProductAnalyticDataImplCopyWith<$Res> String categoryId, String categoryName, int quantitySold, - double revenue, + int revenue, double averagePrice, int orderCount, }); @@ -6135,7 +6135,7 @@ class __$$ProductAnalyticDataImplCopyWithImpl<$Res> revenue: null == revenue ? _value.revenue : revenue // ignore: cast_nullable_to_non_nullable - as double, + as int, averagePrice: null == averagePrice ? _value.averagePrice : averagePrice // ignore: cast_nullable_to_non_nullable @@ -6174,7 +6174,7 @@ class _$ProductAnalyticDataImpl implements _ProductAnalyticData { @override final int quantitySold; @override - final double revenue; + final int revenue; @override final double averagePrice; @override @@ -6239,7 +6239,7 @@ abstract class _ProductAnalyticData implements ProductAnalyticData { required final String categoryId, required final String categoryName, required final int quantitySold, - required final double revenue, + required final int revenue, required final double averagePrice, required final int orderCount, }) = _$ProductAnalyticDataImpl; @@ -6255,7 +6255,7 @@ abstract class _ProductAnalyticData implements ProductAnalyticData { @override int get quantitySold; @override - double get revenue; + int get revenue; @override double get averagePrice; @override diff --git a/lib/domain/analytic/entities/product_analytic_entity.dart b/lib/domain/analytic/entities/product_analytic_entity.dart index 1b57062..33b8c3a 100644 --- a/lib/domain/analytic/entities/product_analytic_entity.dart +++ b/lib/domain/analytic/entities/product_analytic_entity.dart @@ -27,7 +27,7 @@ class ProductAnalyticData with _$ProductAnalyticData { required String categoryId, required String categoryName, required int quantitySold, - required double revenue, + required int revenue, required double averagePrice, required int orderCount, }) = _ProductAnalyticData; @@ -38,7 +38,7 @@ class ProductAnalyticData with _$ProductAnalyticData { categoryId: '', categoryName: '', quantitySold: 0, - revenue: 0.0, + revenue: 0, averagePrice: 0.0, orderCount: 0, ); diff --git a/lib/infrastructure/analytic/analytic_dtos.freezed.dart b/lib/infrastructure/analytic/analytic_dtos.freezed.dart index 199c7a8..f5f56fd 100644 --- a/lib/infrastructure/analytic/analytic_dtos.freezed.dart +++ b/lib/infrastructure/analytic/analytic_dtos.freezed.dart @@ -6661,14 +6661,15 @@ ProductAnalyticDto _$ProductAnalyticDtoFromJson(Map json) { /// @nodoc mixin _$ProductAnalyticDto { @JsonKey(name: 'organization_id') - String get organizationId => throw _privateConstructorUsedError; + String? get organizationId => throw _privateConstructorUsedError; @JsonKey(name: 'outlet_id') - String get outletId => throw _privateConstructorUsedError; + String? get outletId => throw _privateConstructorUsedError; @JsonKey(name: 'date_from') - String get dateFrom => throw _privateConstructorUsedError; + String? get dateFrom => throw _privateConstructorUsedError; @JsonKey(name: 'date_to') - String get dateTo => throw _privateConstructorUsedError; - List get data => throw _privateConstructorUsedError; + String? get dateTo => throw _privateConstructorUsedError; + @JsonKey(name: 'data') + List? get data => throw _privateConstructorUsedError; /// Serializes this ProductAnalyticDto to a JSON map. Map toJson() => throw _privateConstructorUsedError; @@ -6688,11 +6689,11 @@ abstract class $ProductAnalyticDtoCopyWith<$Res> { ) = _$ProductAnalyticDtoCopyWithImpl<$Res, ProductAnalyticDto>; @useResult $Res call({ - @JsonKey(name: 'organization_id') String organizationId, - @JsonKey(name: 'outlet_id') String outletId, - @JsonKey(name: 'date_from') String dateFrom, - @JsonKey(name: 'date_to') String dateTo, - List data, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'data') List? data, }); } @@ -6711,34 +6712,34 @@ class _$ProductAnalyticDtoCopyWithImpl<$Res, $Val extends ProductAnalyticDto> @pragma('vm:prefer-inline') @override $Res call({ - Object? organizationId = null, - Object? outletId = null, - Object? dateFrom = null, - Object? dateTo = null, - Object? data = null, + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? data = freezed, }) { return _then( _value.copyWith( - organizationId: null == organizationId + organizationId: freezed == organizationId ? _value.organizationId : organizationId // ignore: cast_nullable_to_non_nullable - as String, - outletId: null == outletId + as String?, + outletId: freezed == outletId ? _value.outletId : outletId // ignore: cast_nullable_to_non_nullable - as String, - dateFrom: null == dateFrom + as String?, + dateFrom: freezed == dateFrom ? _value.dateFrom : dateFrom // ignore: cast_nullable_to_non_nullable - as String, - dateTo: null == dateTo + as String?, + dateTo: freezed == dateTo ? _value.dateTo : dateTo // ignore: cast_nullable_to_non_nullable - as String, - data: null == data + as String?, + data: freezed == data ? _value.data : data // ignore: cast_nullable_to_non_nullable - as List, + as List?, ) as $Val, ); @@ -6755,11 +6756,11 @@ abstract class _$$ProductAnalyticDtoImplCopyWith<$Res> @override @useResult $Res call({ - @JsonKey(name: 'organization_id') String organizationId, - @JsonKey(name: 'outlet_id') String outletId, - @JsonKey(name: 'date_from') String dateFrom, - @JsonKey(name: 'date_to') String dateTo, - List data, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'data') List? data, }); } @@ -6777,34 +6778,34 @@ class __$$ProductAnalyticDtoImplCopyWithImpl<$Res> @pragma('vm:prefer-inline') @override $Res call({ - Object? organizationId = null, - Object? outletId = null, - Object? dateFrom = null, - Object? dateTo = null, - Object? data = null, + Object? organizationId = freezed, + Object? outletId = freezed, + Object? dateFrom = freezed, + Object? dateTo = freezed, + Object? data = freezed, }) { return _then( _$ProductAnalyticDtoImpl( - organizationId: null == organizationId + organizationId: freezed == organizationId ? _value.organizationId : organizationId // ignore: cast_nullable_to_non_nullable - as String, - outletId: null == outletId + as String?, + outletId: freezed == outletId ? _value.outletId : outletId // ignore: cast_nullable_to_non_nullable - as String, - dateFrom: null == dateFrom + as String?, + dateFrom: freezed == dateFrom ? _value.dateFrom : dateFrom // ignore: cast_nullable_to_non_nullable - as String, - dateTo: null == dateTo + as String?, + dateTo: freezed == dateTo ? _value.dateTo : dateTo // ignore: cast_nullable_to_non_nullable - as String, - data: null == data + as String?, + data: freezed == data ? _value._data : data // ignore: cast_nullable_to_non_nullable - as List, + as List?, ), ); } @@ -6814,11 +6815,11 @@ class __$$ProductAnalyticDtoImplCopyWithImpl<$Res> @JsonSerializable() class _$ProductAnalyticDtoImpl extends _ProductAnalyticDto { const _$ProductAnalyticDtoImpl({ - @JsonKey(name: 'organization_id') required this.organizationId, - @JsonKey(name: 'outlet_id') required this.outletId, - @JsonKey(name: 'date_from') required this.dateFrom, - @JsonKey(name: 'date_to') required this.dateTo, - required final List data, + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'date_from') this.dateFrom, + @JsonKey(name: 'date_to') this.dateTo, + @JsonKey(name: 'data') final List? data, }) : _data = data, super._(); @@ -6827,22 +6828,25 @@ class _$ProductAnalyticDtoImpl extends _ProductAnalyticDto { @override @JsonKey(name: 'organization_id') - final String organizationId; + final String? organizationId; @override @JsonKey(name: 'outlet_id') - final String outletId; + final String? outletId; @override @JsonKey(name: 'date_from') - final String dateFrom; + final String? dateFrom; @override @JsonKey(name: 'date_to') - final String dateTo; - final List _data; + final String? dateTo; + final List? _data; @override - List get data { + @JsonKey(name: 'data') + List? get data { + final value = _data; + if (value == null) return null; if (_data is EqualUnmodifiableListView) return _data; // ignore: implicit_dynamic_type - return EqualUnmodifiableListView(_data); + return EqualUnmodifiableListView(value); } @override @@ -6895,11 +6899,11 @@ class _$ProductAnalyticDtoImpl extends _ProductAnalyticDto { abstract class _ProductAnalyticDto extends ProductAnalyticDto { const factory _ProductAnalyticDto({ - @JsonKey(name: 'organization_id') required final String organizationId, - @JsonKey(name: 'outlet_id') required final String outletId, - @JsonKey(name: 'date_from') required final String dateFrom, - @JsonKey(name: 'date_to') required final String dateTo, - required final List data, + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'date_from') final String? dateFrom, + @JsonKey(name: 'date_to') final String? dateTo, + @JsonKey(name: 'data') final List? data, }) = _$ProductAnalyticDtoImpl; const _ProductAnalyticDto._() : super._(); @@ -6908,18 +6912,19 @@ abstract class _ProductAnalyticDto extends ProductAnalyticDto { @override @JsonKey(name: 'organization_id') - String get organizationId; + String? get organizationId; @override @JsonKey(name: 'outlet_id') - String get outletId; + String? get outletId; @override @JsonKey(name: 'date_from') - String get dateFrom; + String? get dateFrom; @override @JsonKey(name: 'date_to') - String get dateTo; + String? get dateTo; @override - List get data; + @JsonKey(name: 'data') + List? get data; /// Create a copy of ProductAnalyticDto /// with the given fields replaced by the non-null parameter values. @@ -6938,20 +6943,21 @@ ProductAnalyticDataDto _$ProductAnalyticDataDtoFromJson( /// @nodoc mixin _$ProductAnalyticDataDto { @JsonKey(name: 'product_id') - String get productId => throw _privateConstructorUsedError; + String? get productId => throw _privateConstructorUsedError; @JsonKey(name: 'product_name') - String get productName => throw _privateConstructorUsedError; + String? get productName => throw _privateConstructorUsedError; @JsonKey(name: 'category_id') - String get categoryId => throw _privateConstructorUsedError; + String? get categoryId => throw _privateConstructorUsedError; @JsonKey(name: 'category_name') - String get categoryName => throw _privateConstructorUsedError; + String? get categoryName => throw _privateConstructorUsedError; @JsonKey(name: 'quantity_sold') - int get quantitySold => throw _privateConstructorUsedError; - double get revenue => throw _privateConstructorUsedError; + int? get quantitySold => throw _privateConstructorUsedError; + @JsonKey(name: 'revenue') + int? get revenue => throw _privateConstructorUsedError; @JsonKey(name: 'average_price') - double get averagePrice => throw _privateConstructorUsedError; + double? get averagePrice => throw _privateConstructorUsedError; @JsonKey(name: 'order_count') - int get orderCount => throw _privateConstructorUsedError; + int? get orderCount => throw _privateConstructorUsedError; /// Serializes this ProductAnalyticDataDto to a JSON map. Map toJson() => throw _privateConstructorUsedError; @@ -6971,14 +6977,14 @@ abstract class $ProductAnalyticDataDtoCopyWith<$Res> { ) = _$ProductAnalyticDataDtoCopyWithImpl<$Res, ProductAnalyticDataDto>; @useResult $Res call({ - @JsonKey(name: 'product_id') String productId, - @JsonKey(name: 'product_name') String productName, - @JsonKey(name: 'category_id') String categoryId, - @JsonKey(name: 'category_name') String categoryName, - @JsonKey(name: 'quantity_sold') int quantitySold, - double revenue, - @JsonKey(name: 'average_price') double averagePrice, - @JsonKey(name: 'order_count') int orderCount, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'average_price') double? averagePrice, + @JsonKey(name: 'order_count') int? orderCount, }); } @@ -7000,49 +7006,49 @@ class _$ProductAnalyticDataDtoCopyWithImpl< @pragma('vm:prefer-inline') @override $Res call({ - Object? productId = null, - Object? productName = null, - Object? categoryId = null, - Object? categoryName = null, - Object? quantitySold = null, - Object? revenue = null, - Object? averagePrice = null, - Object? orderCount = null, + Object? productId = freezed, + Object? productName = freezed, + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? quantitySold = freezed, + Object? revenue = freezed, + Object? averagePrice = freezed, + Object? orderCount = freezed, }) { return _then( _value.copyWith( - productId: null == productId + productId: freezed == productId ? _value.productId : productId // ignore: cast_nullable_to_non_nullable - as String, - productName: null == productName + as String?, + productName: freezed == productName ? _value.productName : productName // ignore: cast_nullable_to_non_nullable - as String, - categoryId: null == categoryId + as String?, + categoryId: freezed == categoryId ? _value.categoryId : categoryId // ignore: cast_nullable_to_non_nullable - as String, - categoryName: null == categoryName + as String?, + categoryName: freezed == categoryName ? _value.categoryName : categoryName // ignore: cast_nullable_to_non_nullable - as String, - quantitySold: null == quantitySold + as String?, + quantitySold: freezed == quantitySold ? _value.quantitySold : quantitySold // ignore: cast_nullable_to_non_nullable - as int, - revenue: null == revenue + as int?, + revenue: freezed == revenue ? _value.revenue : revenue // ignore: cast_nullable_to_non_nullable - as double, - averagePrice: null == averagePrice + as int?, + averagePrice: freezed == averagePrice ? _value.averagePrice : averagePrice // ignore: cast_nullable_to_non_nullable - as double, - orderCount: null == orderCount + as double?, + orderCount: freezed == orderCount ? _value.orderCount : orderCount // ignore: cast_nullable_to_non_nullable - as int, + as int?, ) as $Val, ); @@ -7059,14 +7065,14 @@ abstract class _$$ProductAnalyticDataDtoImplCopyWith<$Res> @override @useResult $Res call({ - @JsonKey(name: 'product_id') String productId, - @JsonKey(name: 'product_name') String productName, - @JsonKey(name: 'category_id') String categoryId, - @JsonKey(name: 'category_name') String categoryName, - @JsonKey(name: 'quantity_sold') int quantitySold, - double revenue, - @JsonKey(name: 'average_price') double averagePrice, - @JsonKey(name: 'order_count') int orderCount, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'average_price') double? averagePrice, + @JsonKey(name: 'order_count') int? orderCount, }); } @@ -7085,49 +7091,49 @@ class __$$ProductAnalyticDataDtoImplCopyWithImpl<$Res> @pragma('vm:prefer-inline') @override $Res call({ - Object? productId = null, - Object? productName = null, - Object? categoryId = null, - Object? categoryName = null, - Object? quantitySold = null, - Object? revenue = null, - Object? averagePrice = null, - Object? orderCount = null, + Object? productId = freezed, + Object? productName = freezed, + Object? categoryId = freezed, + Object? categoryName = freezed, + Object? quantitySold = freezed, + Object? revenue = freezed, + Object? averagePrice = freezed, + Object? orderCount = freezed, }) { return _then( _$ProductAnalyticDataDtoImpl( - productId: null == productId + productId: freezed == productId ? _value.productId : productId // ignore: cast_nullable_to_non_nullable - as String, - productName: null == productName + as String?, + productName: freezed == productName ? _value.productName : productName // ignore: cast_nullable_to_non_nullable - as String, - categoryId: null == categoryId + as String?, + categoryId: freezed == categoryId ? _value.categoryId : categoryId // ignore: cast_nullable_to_non_nullable - as String, - categoryName: null == categoryName + as String?, + categoryName: freezed == categoryName ? _value.categoryName : categoryName // ignore: cast_nullable_to_non_nullable - as String, - quantitySold: null == quantitySold + as String?, + quantitySold: freezed == quantitySold ? _value.quantitySold : quantitySold // ignore: cast_nullable_to_non_nullable - as int, - revenue: null == revenue + as int?, + revenue: freezed == revenue ? _value.revenue : revenue // ignore: cast_nullable_to_non_nullable - as double, - averagePrice: null == averagePrice + as int?, + averagePrice: freezed == averagePrice ? _value.averagePrice : averagePrice // ignore: cast_nullable_to_non_nullable - as double, - orderCount: null == orderCount + as double?, + orderCount: freezed == orderCount ? _value.orderCount : orderCount // ignore: cast_nullable_to_non_nullable - as int, + as int?, ), ); } @@ -7137,14 +7143,14 @@ class __$$ProductAnalyticDataDtoImplCopyWithImpl<$Res> @JsonSerializable() class _$ProductAnalyticDataDtoImpl extends _ProductAnalyticDataDto { const _$ProductAnalyticDataDtoImpl({ - @JsonKey(name: 'product_id') required this.productId, - @JsonKey(name: 'product_name') required this.productName, - @JsonKey(name: 'category_id') required this.categoryId, - @JsonKey(name: 'category_name') required this.categoryName, - @JsonKey(name: 'quantity_sold') required this.quantitySold, - required this.revenue, - @JsonKey(name: 'average_price') required this.averagePrice, - @JsonKey(name: 'order_count') required this.orderCount, + @JsonKey(name: 'product_id') this.productId, + @JsonKey(name: 'product_name') this.productName, + @JsonKey(name: 'category_id') this.categoryId, + @JsonKey(name: 'category_name') this.categoryName, + @JsonKey(name: 'quantity_sold') this.quantitySold, + @JsonKey(name: 'revenue') this.revenue, + @JsonKey(name: 'average_price') this.averagePrice, + @JsonKey(name: 'order_count') this.orderCount, }) : super._(); factory _$ProductAnalyticDataDtoImpl.fromJson(Map json) => @@ -7152,27 +7158,28 @@ class _$ProductAnalyticDataDtoImpl extends _ProductAnalyticDataDto { @override @JsonKey(name: 'product_id') - final String productId; + final String? productId; @override @JsonKey(name: 'product_name') - final String productName; + final String? productName; @override @JsonKey(name: 'category_id') - final String categoryId; + final String? categoryId; @override @JsonKey(name: 'category_name') - final String categoryName; + final String? categoryName; @override @JsonKey(name: 'quantity_sold') - final int quantitySold; + final int? quantitySold; @override - final double revenue; + @JsonKey(name: 'revenue') + final int? revenue; @override @JsonKey(name: 'average_price') - final double averagePrice; + final double? averagePrice; @override @JsonKey(name: 'order_count') - final int orderCount; + final int? orderCount; @override String toString() { @@ -7235,14 +7242,14 @@ class _$ProductAnalyticDataDtoImpl extends _ProductAnalyticDataDto { abstract class _ProductAnalyticDataDto extends ProductAnalyticDataDto { const factory _ProductAnalyticDataDto({ - @JsonKey(name: 'product_id') required final String productId, - @JsonKey(name: 'product_name') required final String productName, - @JsonKey(name: 'category_id') required final String categoryId, - @JsonKey(name: 'category_name') required final String categoryName, - @JsonKey(name: 'quantity_sold') required final int quantitySold, - required final double revenue, - @JsonKey(name: 'average_price') required final double averagePrice, - @JsonKey(name: 'order_count') required final int orderCount, + @JsonKey(name: 'product_id') final String? productId, + @JsonKey(name: 'product_name') final String? productName, + @JsonKey(name: 'category_id') final String? categoryId, + @JsonKey(name: 'category_name') final String? categoryName, + @JsonKey(name: 'quantity_sold') final int? quantitySold, + @JsonKey(name: 'revenue') final int? revenue, + @JsonKey(name: 'average_price') final double? averagePrice, + @JsonKey(name: 'order_count') final int? orderCount, }) = _$ProductAnalyticDataDtoImpl; const _ProductAnalyticDataDto._() : super._(); @@ -7251,27 +7258,28 @@ abstract class _ProductAnalyticDataDto extends ProductAnalyticDataDto { @override @JsonKey(name: 'product_id') - String get productId; + String? get productId; @override @JsonKey(name: 'product_name') - String get productName; + String? get productName; @override @JsonKey(name: 'category_id') - String get categoryId; + String? get categoryId; @override @JsonKey(name: 'category_name') - String get categoryName; + String? get categoryName; @override @JsonKey(name: 'quantity_sold') - int get quantitySold; + int? get quantitySold; @override - double get revenue; + @JsonKey(name: 'revenue') + int? get revenue; @override @JsonKey(name: 'average_price') - double get averagePrice; + double? get averagePrice; @override @JsonKey(name: 'order_count') - int get orderCount; + int? get orderCount; /// Create a copy of ProductAnalyticDataDto /// with the given fields replaced by the non-null parameter values. diff --git a/lib/infrastructure/analytic/analytic_dtos.g.dart b/lib/infrastructure/analytic/analytic_dtos.g.dart index f29e863..fbdd5a6 100644 --- a/lib/infrastructure/analytic/analytic_dtos.g.dart +++ b/lib/infrastructure/analytic/analytic_dtos.g.dart @@ -521,12 +521,12 @@ Map _$$DashboardRecentSaleDtoImplToJson( _$ProductAnalyticDtoImpl _$$ProductAnalyticDtoImplFromJson( Map json, ) => _$ProductAnalyticDtoImpl( - organizationId: json['organization_id'] as String, - outletId: json['outlet_id'] as String, - dateFrom: json['date_from'] as String, - dateTo: json['date_to'] as String, - data: (json['data'] as List) - .map((e) => ProductAnalyticDataDto.fromJson(e as Map)) + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + dateFrom: json['date_from'] as String?, + dateTo: json['date_to'] as String?, + data: (json['data'] as List?) + ?.map((e) => ProductAnalyticDataDto.fromJson(e as Map)) .toList(), ); @@ -543,14 +543,14 @@ Map _$$ProductAnalyticDtoImplToJson( _$ProductAnalyticDataDtoImpl _$$ProductAnalyticDataDtoImplFromJson( Map json, ) => _$ProductAnalyticDataDtoImpl( - productId: json['product_id'] as String, - productName: json['product_name'] as String, - categoryId: json['category_id'] as String, - categoryName: json['category_name'] as String, - quantitySold: (json['quantity_sold'] as num).toInt(), - revenue: (json['revenue'] as num).toDouble(), - averagePrice: (json['average_price'] as num).toDouble(), - orderCount: (json['order_count'] as num).toInt(), + productId: json['product_id'] as String?, + productName: json['product_name'] as String?, + categoryId: json['category_id'] as String?, + categoryName: json['category_name'] as String?, + quantitySold: (json['quantity_sold'] as num?)?.toInt(), + revenue: (json['revenue'] as num?)?.toInt(), + averagePrice: (json['average_price'] as num?)?.toDouble(), + orderCount: (json['order_count'] as num?)?.toInt(), ); Map _$$ProductAnalyticDataDtoImplToJson( diff --git a/lib/infrastructure/analytic/dto/product_analytic_dto.dart b/lib/infrastructure/analytic/dto/product_analytic_dto.dart index 68eb722..b143e1e 100644 --- a/lib/infrastructure/analytic/dto/product_analytic_dto.dart +++ b/lib/infrastructure/analytic/dto/product_analytic_dto.dart @@ -5,22 +5,22 @@ class ProductAnalyticDto with _$ProductAnalyticDto { const ProductAnalyticDto._(); const factory ProductAnalyticDto({ - @JsonKey(name: 'organization_id') required String organizationId, - @JsonKey(name: 'outlet_id') required String outletId, - @JsonKey(name: 'date_from') required String dateFrom, - @JsonKey(name: 'date_to') required String dateTo, - required List data, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'date_from') String? dateFrom, + @JsonKey(name: 'date_to') String? dateTo, + @JsonKey(name: 'data') List? data, }) = _ProductAnalyticDto; factory ProductAnalyticDto.fromJson(Map json) => _$ProductAnalyticDtoFromJson(json); ProductAnalytic toDomain() => ProductAnalytic( - organizationId: organizationId, - outletId: outletId, - dateFrom: dateFrom, - dateTo: dateTo, - data: data.map((e) => e.toDomain()).toList(), + organizationId: organizationId ?? "", + outletId: outletId ?? "", + dateFrom: dateFrom ?? "", + dateTo: dateTo ?? "", + data: data?.map((e) => e.toDomain()).toList() ?? [], ); } @@ -29,27 +29,27 @@ class ProductAnalyticDataDto with _$ProductAnalyticDataDto { const ProductAnalyticDataDto._(); const factory ProductAnalyticDataDto({ - @JsonKey(name: 'product_id') required String productId, - @JsonKey(name: 'product_name') required String productName, - @JsonKey(name: 'category_id') required String categoryId, - @JsonKey(name: 'category_name') required String categoryName, - @JsonKey(name: 'quantity_sold') required int quantitySold, - required double revenue, - @JsonKey(name: 'average_price') required double averagePrice, - @JsonKey(name: 'order_count') required int orderCount, + @JsonKey(name: 'product_id') String? productId, + @JsonKey(name: 'product_name') String? productName, + @JsonKey(name: 'category_id') String? categoryId, + @JsonKey(name: 'category_name') String? categoryName, + @JsonKey(name: 'quantity_sold') int? quantitySold, + @JsonKey(name: 'revenue') int? revenue, + @JsonKey(name: 'average_price') double? averagePrice, + @JsonKey(name: 'order_count') int? orderCount, }) = _ProductAnalyticDataDto; factory ProductAnalyticDataDto.fromJson(Map json) => _$ProductAnalyticDataDtoFromJson(json); ProductAnalyticData toDomain() => ProductAnalyticData( - productId: productId, - productName: productName, - categoryId: categoryId, - categoryName: categoryName, - quantitySold: quantitySold, - revenue: revenue, - averagePrice: averagePrice, - orderCount: orderCount, + productId: productId ?? "", + productName: productName ?? "", + categoryId: categoryId ?? "", + categoryName: categoryName ?? "", + quantitySold: quantitySold ?? 0, + revenue: revenue ?? 0, + averagePrice: averagePrice ?? 0, + orderCount: orderCount ?? 0, ); } diff --git a/lib/presentation/pages/product/product_analytic/product_analytic_page.dart b/lib/presentation/pages/product/product_analytic/product_analytic_page.dart index 8d3e623..853c4c2 100644 --- a/lib/presentation/pages/product/product_analytic/product_analytic_page.dart +++ b/lib/presentation/pages/product/product_analytic/product_analytic_page.dart @@ -1,16 +1,28 @@ import 'package:flutter/material.dart'; import 'package:auto_route/auto_route.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../../application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/analytic/analytic.dart'; +import '../../../../injection.dart'; import '../../../components/appbar/appbar.dart'; +import '../../../components/field/date_range_picker_field.dart'; @RoutePage() -class ProductAnalyticPage extends StatefulWidget { +class ProductAnalyticPage extends StatefulWidget implements AutoRouteWrapper { const ProductAnalyticPage({super.key}); @override State createState() => _ProductAnalyticPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => + getIt() + ..add(ProductAnalyticLoaderEvent.fetched()), + child: this, + ); } class _ProductAnalyticPageState extends State @@ -20,66 +32,6 @@ class _ProductAnalyticPageState extends State late Animation _fadeAnimation; late Animation _slideAnimation; - // Sample data untuk demo - final ProductAnalytic sampleData = ProductAnalytic( - organizationId: "org_123", - outletId: "outlet_456", - dateFrom: "2024-01-01", - dateTo: "2024-01-31", - data: [ - ProductAnalyticData( - productId: "prod_1", - productName: "Nasi Goreng Spesial", - categoryId: "cat_1", - categoryName: "Makanan Utama", - quantitySold: 145, - revenue: 2175000.0, - averagePrice: 15000.0, - orderCount: 98, - ), - ProductAnalyticData( - productId: "prod_2", - productName: "Es Teh Manis", - categoryId: "cat_2", - categoryName: "Minuman", - quantitySold: 230, - revenue: 1150000.0, - averagePrice: 5000.0, - orderCount: 180, - ), - ProductAnalyticData( - productId: "prod_3", - productName: "Ayam Bakar", - categoryId: "cat_1", - categoryName: "Makanan Utama", - quantitySold: 89, - revenue: 2225000.0, - averagePrice: 25000.0, - orderCount: 75, - ), - ProductAnalyticData( - productId: "prod_4", - productName: "Cappuccino", - categoryId: "cat_2", - categoryName: "Minuman", - quantitySold: 67, - revenue: 1005000.0, - averagePrice: 15000.0, - orderCount: 52, - ), - ProductAnalyticData( - productId: "prod_5", - productName: "Pisang Goreng", - categoryId: "cat_3", - categoryName: "Snack", - quantitySold: 156, - revenue: 780000.0, - averagePrice: 5000.0, - orderCount: 134, - ), - ], - ); - @override void initState() { super.initState(); @@ -126,13 +78,52 @@ class _ProductAnalyticPageState extends State Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: CustomScrollView( - physics: const BouncingScrollPhysics(), - slivers: [ - _buildSliverAppBar(), - _buildSummarySection(), - _buildProductsList(), - ], + body: BlocListener( + listenWhen: (previous, current) => + previous.dateFrom != current.dateFrom || + previous.dateTo != current.dateTo, + listener: (context, state) { + context.read().add( + ProductAnalyticLoaderEvent.fetched(), + ); + }, + child: + BlocBuilder( + builder: (context, state) { + return CustomScrollView( + physics: const BouncingScrollPhysics(), + slivers: [ + _buildSliverAppBar(), + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: FadeTransition( + opacity: _fadeAnimation, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: DateRangePickerField( + maxDate: DateTime.now(), + startDate: state.dateFrom, + endDate: state.dateTo, + onChanged: (startDate, endDate) { + context.read().add( + ProductAnalyticLoaderEvent.rangeDateChanged( + startDate!, + endDate!, + ), + ); + }, + ), + ), + ), + ), + ), + _buildSummarySection(state.productAnalytic), + _buildProductsList(state.productAnalytic), + ], + ); + }, + ), ), ); } @@ -161,7 +152,7 @@ class _ProductAnalyticPageState extends State } // SUMMARY SECTION - Widget _buildSummarySection() { + Widget _buildSummarySection(ProductAnalytic productAnalytic) { return SliverToBoxAdapter( child: FadeTransition( opacity: _fadeAnimation, @@ -169,7 +160,7 @@ class _ProductAnalyticPageState extends State position: _slideAnimation, child: Container( margin: const EdgeInsets.all(16), - child: _buildSummaryCards(sampleData.data), + child: _buildSummaryCards(productAnalytic.data), ), ), ), @@ -177,7 +168,7 @@ class _ProductAnalyticPageState extends State } // PRODUCTS LIST - Widget _buildProductsList() { + Widget _buildProductsList(ProductAnalytic productAnalytic) { return SliverPadding( padding: const EdgeInsets.all(16), sliver: SliverList( @@ -198,12 +189,16 @@ class _ProductAnalyticPageState extends State offset: Offset(0, 50 * (1 - animValue)), child: Opacity( opacity: animValue, - child: _buildProductCard(sampleData.data[index], index), + child: _buildProductCard( + productAnalytic, + productAnalytic.data[index], + index, + ), ), ); }, ); - }, childCount: sampleData.data.length), + }, childCount: productAnalytic.data.length), ), ); } @@ -330,7 +325,11 @@ class _ProductAnalyticPageState extends State } // PRODUCT CARD - NEW CLEAN LAYOUT - Widget _buildProductCard(ProductAnalyticData product, int index) { + Widget _buildProductCard( + ProductAnalytic productAnalytic, + ProductAnalyticData product, + int index, + ) { return TweenAnimationBuilder( tween: Tween(begin: 0.0, end: 1.0), duration: Duration(milliseconds: 600 + (index * 100)), @@ -344,9 +343,9 @@ class _ProductAnalyticPageState extends State opacity: clampedValue, child: Container( margin: EdgeInsets.only( - bottom: index == sampleData.data.length - 1 ? 0 : 16, + bottom: index == productAnalytic.data.length - 1 ? 0 : 16, ), - child: _buildCardContent(product, index), + child: _buildCardContent(productAnalytic, product, index), ), ), ); @@ -354,7 +353,11 @@ class _ProductAnalyticPageState extends State ); } - Widget _buildCardContent(ProductAnalyticData product, int index) { + Widget _buildCardContent( + ProductAnalytic productAnalytic, + ProductAnalyticData product, + int index, + ) { return Container( decoration: BoxDecoration( color: AppColor.white, @@ -383,7 +386,7 @@ class _ProductAnalyticPageState extends State child: Column( children: [ _buildCardHeader(product, index), - _buildCardBody(product), + _buildCardBody(productAnalytic, product), ], ), ), @@ -410,8 +413,11 @@ class _ProductAnalyticPageState extends State ); } - Widget _buildCardBody(ProductAnalyticData product) { - final index = sampleData.data.indexOf(product); + Widget _buildCardBody( + ProductAnalytic productAnalytic, + ProductAnalyticData product, + ) { + final index = productAnalytic.data.indexOf(product); return Padding( padding: const EdgeInsets.all(24), @@ -546,7 +552,7 @@ class _ProductAnalyticPageState extends State ), const SizedBox(height: 8), Text( - _formatCurrency(product.revenue), + _formatCurrency(product.revenue.toDouble()), style: _getTextStyle( AppStyle.xl, color: AppColor.success, diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 91cc50f..939877e 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -321,7 +321,7 @@ class ProductAnalyticRoute extends _i20.PageRouteInfo { static _i20.PageInfo page = _i20.PageInfo( name, builder: (data) { - return const _i12.ProductAnalyticPage(); + return _i20.WrappedRoute(child: const _i12.ProductAnalyticPage()); }, ); } From fb2309ddb3943d07c71ba1acddd753444b126758 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 17:07:15 +0700 Subject: [PATCH 072/108] fix: range date --- lib/presentation/pages/finance/finance_page.dart | 2 +- lib/presentation/pages/sales/sales_page.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index 9a99ad0..aa9f981 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -108,7 +108,7 @@ class _FinancePageState extends State backgroundColor: AppColor.background, body: BlocListener( listenWhen: (previous, current) => - previous.dateFrom != current.dateFrom && + previous.dateFrom != current.dateFrom || previous.dateTo != current.dateTo, listener: (context, state) { context.read().add( diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart index 70a0a64..a54d53f 100644 --- a/lib/presentation/pages/sales/sales_page.dart +++ b/lib/presentation/pages/sales/sales_page.dart @@ -82,7 +82,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { backgroundColor: AppColor.background, body: BlocListener( listenWhen: (previous, current) => - previous.dateFrom != current.dateFrom && + previous.dateFrom != current.dateFrom || previous.dateTo != current.dateTo, listener: (context, state) { context.read().add(SalesLoaderEvent.fectched()); From aac3eecf953d3c67f2f960cf1e39a6e125a8a422 Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 17:27:36 +0700 Subject: [PATCH 073/108] feat: invetory range date --- .../inventory_analytic_loader_bloc.dart | 7 +- ...nventory_analytic_loader_bloc.freezed.dart | 228 ++++++++++++++++- .../inventory_analytic_loader_event.dart | 4 + .../inventory_analytic_loader_state.dart | 4 + .../pages/inventory/inventory_page.dart | 235 ++++++++++-------- .../inventory/widgets/tabbar_delegate.dart | 53 +++- 6 files changed, 406 insertions(+), 125 deletions(-) diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart index 3848d7e..65dc0a8 100644 --- a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart @@ -24,6 +24,9 @@ class InventoryAnalyticLoaderBloc Emitter emit, ) { return event.map( + rangeDateChanged: (e) async { + emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo)); + }, fetched: (e) async { emit( state.copyWith( @@ -33,8 +36,8 @@ class InventoryAnalyticLoaderBloc ); final result = await _repository.getInventory( - dateFrom: DateTime.now().subtract(const Duration(days: 30)), - dateTo: DateTime.now(), + dateFrom: state.dateFrom, + dateTo: state.dateTo, ); var data = result.fold( diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart index a069165..9a6d650 100644 --- a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.freezed.dart @@ -19,27 +19,34 @@ final _privateConstructorUsedError = UnsupportedError( mixin _$InventoryAnalyticLoaderEvent { @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function() fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function()? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -74,6 +81,165 @@ class _$InventoryAnalyticLoaderEventCopyWithImpl< /// with the given fields replaced by the non-null parameter values. } +/// @nodoc +abstract class _$$RangeDateChangedImplCopyWith<$Res> { + factory _$$RangeDateChangedImplCopyWith( + _$RangeDateChangedImpl value, + $Res Function(_$RangeDateChangedImpl) then, + ) = __$$RangeDateChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$RangeDateChangedImplCopyWithImpl<$Res> + extends + _$InventoryAnalyticLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl> + implements _$$RangeDateChangedImplCopyWith<$Res> { + __$$RangeDateChangedImplCopyWithImpl( + _$RangeDateChangedImpl _value, + $Res Function(_$RangeDateChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$RangeDateChangedImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$RangeDateChangedImpl implements _RangeDateChanged { + const _$RangeDateChangedImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'InventoryAnalyticLoaderEvent.rangeDateChanged(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$RangeDateChangedImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of InventoryAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + __$$RangeDateChangedImplCopyWithImpl<_$RangeDateChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { + return rangeDateChanged(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { + return rangeDateChanged?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult Function()? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, + required TResult Function(_Fetched value) fetched, + }) { + return rangeDateChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return rangeDateChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(this); + } + return orElse(); + } +} + +abstract class _RangeDateChanged implements InventoryAnalyticLoaderEvent { + const factory _RangeDateChanged( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$RangeDateChangedImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of InventoryAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$FetchedImplCopyWith<$Res> { factory _$$FetchedImplCopyWith( @@ -116,19 +282,27 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs - TResult when({required TResult Function() fetched}) { + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { return fetched(); } @override @optionalTypeArgs - TResult? whenOrNull({TResult? Function()? fetched}) { + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { return fetched?.call(); } @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) { @@ -141,6 +315,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) { return fetched(this); @@ -149,6 +324,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) { return fetched?.call(this); @@ -157,6 +333,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -177,6 +354,8 @@ mixin _$InventoryAnalyticLoaderState { Option get failureOptionInventoryAnalytic => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; + DateTime get dateFrom => throw _privateConstructorUsedError; + DateTime get dateTo => throw _privateConstructorUsedError; /// Create a copy of InventoryAnalyticLoaderState /// with the given fields replaced by the non-null parameter values. @@ -200,6 +379,8 @@ abstract class $InventoryAnalyticLoaderStateCopyWith<$Res> { InventoryAnalytic inventoryAnalytic, Option failureOptionInventoryAnalytic, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); $InventoryAnalyticCopyWith<$Res> get inventoryAnalytic; @@ -226,6 +407,8 @@ class _$InventoryAnalyticLoaderStateCopyWithImpl< Object? inventoryAnalytic = null, Object? failureOptionInventoryAnalytic = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _value.copyWith( @@ -242,6 +425,14 @@ class _$InventoryAnalyticLoaderStateCopyWithImpl< ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ) as $Val, ); @@ -271,6 +462,8 @@ abstract class _$$InventoryAnalyticLoaderStateImplCopyWith<$Res> InventoryAnalytic inventoryAnalytic, Option failureOptionInventoryAnalytic, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); @override @@ -298,6 +491,8 @@ class __$$InventoryAnalyticLoaderStateImplCopyWithImpl<$Res> Object? inventoryAnalytic = null, Object? failureOptionInventoryAnalytic = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _$InventoryAnalyticLoaderStateImpl( @@ -313,6 +508,14 @@ class __$$InventoryAnalyticLoaderStateImplCopyWithImpl<$Res> ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ), ); } @@ -326,6 +529,8 @@ class _$InventoryAnalyticLoaderStateImpl required this.inventoryAnalytic, required this.failureOptionInventoryAnalytic, this.isFetching = false, + required this.dateFrom, + required this.dateTo, }); @override @@ -335,10 +540,14 @@ class _$InventoryAnalyticLoaderStateImpl @override @JsonKey() final bool isFetching; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; @override String toString() { - return 'InventoryAnalyticLoaderState(inventoryAnalytic: $inventoryAnalytic, failureOptionInventoryAnalytic: $failureOptionInventoryAnalytic, isFetching: $isFetching)'; + return 'InventoryAnalyticLoaderState(inventoryAnalytic: $inventoryAnalytic, failureOptionInventoryAnalytic: $failureOptionInventoryAnalytic, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -355,7 +564,10 @@ class _$InventoryAnalyticLoaderStateImpl other.failureOptionInventoryAnalytic == failureOptionInventoryAnalytic) && (identical(other.isFetching, isFetching) || - other.isFetching == isFetching)); + other.isFetching == isFetching) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); } @override @@ -364,6 +576,8 @@ class _$InventoryAnalyticLoaderStateImpl inventoryAnalytic, failureOptionInventoryAnalytic, isFetching, + dateFrom, + dateTo, ); /// Create a copy of InventoryAnalyticLoaderState @@ -386,6 +600,8 @@ abstract class _InventoryAnalyticLoaderState required final InventoryAnalytic inventoryAnalytic, required final Option failureOptionInventoryAnalytic, final bool isFetching, + required final DateTime dateFrom, + required final DateTime dateTo, }) = _$InventoryAnalyticLoaderStateImpl; @override @@ -394,6 +610,10 @@ abstract class _InventoryAnalyticLoaderState Option get failureOptionInventoryAnalytic; @override bool get isFetching; + @override + DateTime get dateFrom; + @override + DateTime get dateTo; /// Create a copy of InventoryAnalyticLoaderState /// with the given fields replaced by the non-null parameter values. diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart index 121d123..5d9a844 100644 --- a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_event.dart @@ -2,5 +2,9 @@ part of 'inventory_analytic_loader_bloc.dart'; @freezed class InventoryAnalyticLoaderEvent with _$InventoryAnalyticLoaderEvent { + const factory InventoryAnalyticLoaderEvent.rangeDateChanged( + DateTime dateFrom, + DateTime dateTo, + ) = _RangeDateChanged; const factory InventoryAnalyticLoaderEvent.fetched() = _Fetched; } diff --git a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart index a4f7fb3..b71a7dc 100644 --- a/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart +++ b/lib/application/analytic/inventory_analytic_loader/inventory_analytic_loader_state.dart @@ -6,11 +6,15 @@ class InventoryAnalyticLoaderState with _$InventoryAnalyticLoaderState { required InventoryAnalytic inventoryAnalytic, required Option failureOptionInventoryAnalytic, @Default(false) bool isFetching, + required DateTime dateFrom, + required DateTime dateTo, }) = _InventoryAnalyticLoaderState; factory InventoryAnalyticLoaderState.initial() => InventoryAnalyticLoaderState( inventoryAnalytic: InventoryAnalytic.empty(), failureOptionInventoryAnalytic: none(), + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), ); } diff --git a/lib/presentation/pages/inventory/inventory_page.dart b/lib/presentation/pages/inventory/inventory_page.dart index f91b0f4..c864417 100644 --- a/lib/presentation/pages/inventory/inventory_page.dart +++ b/lib/presentation/pages/inventory/inventory_page.dart @@ -107,120 +107,143 @@ class _InventoryPageState extends State @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColor.background, - body: - BlocBuilder< - InventoryAnalyticLoaderBloc, - InventoryAnalyticLoaderState - >( - builder: (context, state) { - return FadeTransition( - opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: NestedScrollView( - headerSliverBuilder: (context, innerBoxIsScrolled) { - return [ - _buildSliverAppBar(), - SliverPersistentHeader( - pinned: true, - delegate: InventorySliverTabBarDelegate( - tabBar: TabBar( - controller: _tabController, - indicator: BoxDecoration( - gradient: LinearGradient( - colors: AppColor.primaryGradient, - begin: Alignment.topLeft, - end: Alignment.bottomRight, + return BlocListener< + InventoryAnalyticLoaderBloc, + InventoryAnalyticLoaderState + >( + listenWhen: (previous, current) => + previous.dateFrom != current.dateFrom || + previous.dateTo != current.dateTo, + listener: (context, state) { + context.read().add( + InventoryAnalyticLoaderEvent.fetched(), + ); + }, + child: Scaffold( + backgroundColor: AppColor.background, + body: + BlocBuilder< + InventoryAnalyticLoaderBloc, + InventoryAnalyticLoaderState + >( + builder: (context, state) { + return FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: NestedScrollView( + headerSliverBuilder: (context, innerBoxIsScrolled) { + return [ + _buildSliverAppBar(), + SliverPersistentHeader( + pinned: true, + delegate: InventorySliverTabBarDelegate( + startDate: state.dateFrom, + endDate: state.dateTo, + onDateRangeChanged: (startDate, endDate) { + context.read().add( + InventoryAnalyticLoaderEvent.rangeDateChanged( + startDate!, + endDate!, + ), + ); + }, + tabBar: TabBar( + controller: _tabController, + indicator: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(25), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], ), - borderRadius: BorderRadius.circular(25), - boxShadow: [ - BoxShadow( - color: AppColor.primary.withOpacity(0.3), - blurRadius: 12, - offset: const Offset(0, 4), + indicatorSize: TabBarIndicatorSize.tab, + indicatorPadding: const EdgeInsets.all(6), + labelColor: AppColor.textWhite, + unselectedLabelColor: AppColor.textSecondary, + labelStyle: const TextStyle( + fontWeight: FontWeight.w700, + fontSize: 13, + ), + unselectedLabelStyle: const TextStyle( + fontWeight: FontWeight.w500, + fontSize: 13, + ), + dividerColor: Colors.transparent, + splashFactory: NoSplash.splashFactory, + overlayColor: MaterialStateProperty.all( + Colors.transparent, + ), + tabs: [ + Tab( + height: 40, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + ), + child: const Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Icon( + Icons.inventory_2_rounded, + size: 16, + ), + SizedBox(width: 6), + Text('Produk'), + ], + ), + ), + ), + Tab( + height: 40, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + ), + child: const Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Icon( + Icons.restaurant_menu_rounded, + size: 16, + ), + SizedBox(width: 6), + Text('Bahan'), + ], + ), + ), ), ], ), - indicatorSize: TabBarIndicatorSize.tab, - indicatorPadding: const EdgeInsets.all(6), - labelColor: AppColor.textWhite, - unselectedLabelColor: AppColor.textSecondary, - labelStyle: const TextStyle( - fontWeight: FontWeight.w700, - fontSize: 13, - ), - unselectedLabelStyle: const TextStyle( - fontWeight: FontWeight.w500, - fontSize: 13, - ), - dividerColor: Colors.transparent, - splashFactory: NoSplash.splashFactory, - overlayColor: MaterialStateProperty.all( - Colors.transparent, - ), - tabs: [ - Tab( - height: 40, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - ), - child: const Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Icon( - Icons.inventory_2_rounded, - size: 16, - ), - SizedBox(width: 6), - Text('Produk'), - ], - ), - ), - ), - Tab( - height: 40, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - ), - child: const Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Icon( - Icons.restaurant_menu_rounded, - size: 16, - ), - SizedBox(width: 6), - Text('Bahan'), - ], - ), - ), - ), - ], ), ), - ), - ]; - }, - body: TabBarView( - controller: _tabController, - children: [ - _buildProductTab(state.inventoryAnalytic), - _buildIngredientTab(state.inventoryAnalytic), - ], + ]; + }, + body: TabBarView( + controller: _tabController, + children: [ + _buildProductTab(state.inventoryAnalytic), + _buildIngredientTab(state.inventoryAnalytic), + ], + ), ), ), - ), - ); - }, - ), + ); + }, + ), + ), ); } diff --git a/lib/presentation/pages/inventory/widgets/tabbar_delegate.dart b/lib/presentation/pages/inventory/widgets/tabbar_delegate.dart index 22a92e3..8814d96 100644 --- a/lib/presentation/pages/inventory/widgets/tabbar_delegate.dart +++ b/lib/presentation/pages/inventory/widgets/tabbar_delegate.dart @@ -1,17 +1,26 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; +import '../../../components/field/date_range_picker_field.dart'; class InventorySliverTabBarDelegate extends SliverPersistentHeaderDelegate { final TabBar tabBar; + final DateTime? startDate; + final DateTime? endDate; + final Function(DateTime?, DateTime?)? onDateRangeChanged; - InventorySliverTabBarDelegate({required this.tabBar}); + InventorySliverTabBarDelegate({ + required this.tabBar, + this.startDate, + this.endDate, + this.onDateRangeChanged, + }); @override - double get minExtent => 60; + double get minExtent => 120; // Increased height to accommodate date picker @override - double get maxExtent => 60; + double get maxExtent => 120; @override Widget build( @@ -31,22 +40,40 @@ class InventorySliverTabBarDelegate extends SliverPersistentHeaderDelegate { ], ), padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), - child: Container( - decoration: BoxDecoration( - color: AppColor.background, - borderRadius: BorderRadius.circular(30), - border: Border.all( - color: AppColor.primary.withOpacity(0.1), - width: 1, + child: Column( + children: [ + // Date Range Picker Section + if (onDateRangeChanged != null) + Expanded( + child: DateRangePickerField( + maxDate: DateTime.now(), + startDate: startDate, + endDate: endDate, + onChanged: onDateRangeChanged!, + ), + ), + const SizedBox(height: 8), + // Tab Bar Section + Container( + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(30), + border: Border.all( + color: AppColor.primary.withOpacity(0.1), + width: 1, + ), + ), + child: tabBar, ), - ), - child: tabBar, + ], ), ); } @override bool shouldRebuild(InventorySliverTabBarDelegate oldDelegate) { - return false; + return oldDelegate.startDate != startDate || + oldDelegate.endDate != endDate || + oldDelegate.tabBar != tabBar; } } From 06d777290d4c4ef40f99239c91d87238fd9ddb8a Mon Sep 17 00:00:00 2001 From: efrilm Date: Mon, 18 Aug 2025 17:35:03 +0700 Subject: [PATCH 074/108] feat: dashboard analytic range date --- .../dashboard_analytic_loader_bloc.dart | 7 +- ...ashboard_analytic_loader_bloc.freezed.dart | 228 +++++++++++++++++- .../dashboard_analytic_loader_event.dart | 4 + .../dashboard_analytic_loader_state.dart | 4 + .../pages/report/report_page.dart | 173 ++++++++----- 5 files changed, 345 insertions(+), 71 deletions(-) diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart index d3e7383..264695b 100644 --- a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart @@ -24,6 +24,9 @@ class DashboardAnalyticLoaderBloc Emitter emit, ) { return event.map( + rangeDateChanged: (e) async { + emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo)); + }, fetched: (e) async { emit( state.copyWith( @@ -33,8 +36,8 @@ class DashboardAnalyticLoaderBloc ); final result = await _repository.getDashboard( - dateFrom: DateTime.now().subtract(const Duration(days: 30)), - dateTo: DateTime.now(), + dateFrom: state.dateFrom, + dateTo: state.dateTo, ); var data = result.fold( diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart index 4976136..a11d71d 100644 --- a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.freezed.dart @@ -19,27 +19,34 @@ final _privateConstructorUsedError = UnsupportedError( mixin _$DashboardAnalyticLoaderEvent { @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function() fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function()? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -74,6 +81,165 @@ class _$DashboardAnalyticLoaderEventCopyWithImpl< /// with the given fields replaced by the non-null parameter values. } +/// @nodoc +abstract class _$$RangeDateChangedImplCopyWith<$Res> { + factory _$$RangeDateChangedImplCopyWith( + _$RangeDateChangedImpl value, + $Res Function(_$RangeDateChangedImpl) then, + ) = __$$RangeDateChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$RangeDateChangedImplCopyWithImpl<$Res> + extends + _$DashboardAnalyticLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl> + implements _$$RangeDateChangedImplCopyWith<$Res> { + __$$RangeDateChangedImplCopyWithImpl( + _$RangeDateChangedImpl _value, + $Res Function(_$RangeDateChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of DashboardAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$RangeDateChangedImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$RangeDateChangedImpl implements _RangeDateChanged { + const _$RangeDateChangedImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'DashboardAnalyticLoaderEvent.rangeDateChanged(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$RangeDateChangedImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of DashboardAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + __$$RangeDateChangedImplCopyWithImpl<_$RangeDateChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { + return rangeDateChanged(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { + return rangeDateChanged?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult Function()? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, + required TResult Function(_Fetched value) fetched, + }) { + return rangeDateChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return rangeDateChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(this); + } + return orElse(); + } +} + +abstract class _RangeDateChanged implements DashboardAnalyticLoaderEvent { + const factory _RangeDateChanged( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$RangeDateChangedImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of DashboardAnalyticLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$FetchedImplCopyWith<$Res> { factory _$$FetchedImplCopyWith( @@ -116,19 +282,27 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs - TResult when({required TResult Function() fetched}) { + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function() fetched, + }) { return fetched(); } @override @optionalTypeArgs - TResult? whenOrNull({TResult? Function()? fetched}) { + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function()? fetched, + }) { return fetched?.call(); } @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function()? fetched, required TResult orElse(), }) { @@ -141,6 +315,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_Fetched value) fetched, }) { return fetched(this); @@ -149,6 +324,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_Fetched value)? fetched, }) { return fetched?.call(this); @@ -157,6 +333,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -177,6 +354,8 @@ mixin _$DashboardAnalyticLoaderState { Option get failureOptionDashboardAnalytic => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; + DateTime get dateFrom => throw _privateConstructorUsedError; + DateTime get dateTo => throw _privateConstructorUsedError; /// Create a copy of DashboardAnalyticLoaderState /// with the given fields replaced by the non-null parameter values. @@ -200,6 +379,8 @@ abstract class $DashboardAnalyticLoaderStateCopyWith<$Res> { DashboardAnalytic dashboardAnalytic, Option failureOptionDashboardAnalytic, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); $DashboardAnalyticCopyWith<$Res> get dashboardAnalytic; @@ -226,6 +407,8 @@ class _$DashboardAnalyticLoaderStateCopyWithImpl< Object? dashboardAnalytic = null, Object? failureOptionDashboardAnalytic = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _value.copyWith( @@ -242,6 +425,14 @@ class _$DashboardAnalyticLoaderStateCopyWithImpl< ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ) as $Val, ); @@ -271,6 +462,8 @@ abstract class _$$DashboardAnalyticLoaderStateImplCopyWith<$Res> DashboardAnalytic dashboardAnalytic, Option failureOptionDashboardAnalytic, bool isFetching, + DateTime dateFrom, + DateTime dateTo, }); @override @@ -298,6 +491,8 @@ class __$$DashboardAnalyticLoaderStateImplCopyWithImpl<$Res> Object? dashboardAnalytic = null, Object? failureOptionDashboardAnalytic = null, Object? isFetching = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _$DashboardAnalyticLoaderStateImpl( @@ -313,6 +508,14 @@ class __$$DashboardAnalyticLoaderStateImplCopyWithImpl<$Res> ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable as bool, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ), ); } @@ -326,6 +529,8 @@ class _$DashboardAnalyticLoaderStateImpl required this.dashboardAnalytic, required this.failureOptionDashboardAnalytic, this.isFetching = false, + required this.dateFrom, + required this.dateTo, }); @override @@ -335,10 +540,14 @@ class _$DashboardAnalyticLoaderStateImpl @override @JsonKey() final bool isFetching; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; @override String toString() { - return 'DashboardAnalyticLoaderState(dashboardAnalytic: $dashboardAnalytic, failureOptionDashboardAnalytic: $failureOptionDashboardAnalytic, isFetching: $isFetching)'; + return 'DashboardAnalyticLoaderState(dashboardAnalytic: $dashboardAnalytic, failureOptionDashboardAnalytic: $failureOptionDashboardAnalytic, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -355,7 +564,10 @@ class _$DashboardAnalyticLoaderStateImpl other.failureOptionDashboardAnalytic == failureOptionDashboardAnalytic) && (identical(other.isFetching, isFetching) || - other.isFetching == isFetching)); + other.isFetching == isFetching) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); } @override @@ -364,6 +576,8 @@ class _$DashboardAnalyticLoaderStateImpl dashboardAnalytic, failureOptionDashboardAnalytic, isFetching, + dateFrom, + dateTo, ); /// Create a copy of DashboardAnalyticLoaderState @@ -386,6 +600,8 @@ abstract class _DashboardAnalyticLoaderState required final DashboardAnalytic dashboardAnalytic, required final Option failureOptionDashboardAnalytic, final bool isFetching, + required final DateTime dateFrom, + required final DateTime dateTo, }) = _$DashboardAnalyticLoaderStateImpl; @override @@ -394,6 +610,10 @@ abstract class _DashboardAnalyticLoaderState Option get failureOptionDashboardAnalytic; @override bool get isFetching; + @override + DateTime get dateFrom; + @override + DateTime get dateTo; /// Create a copy of DashboardAnalyticLoaderState /// with the given fields replaced by the non-null parameter values. diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart index 4ac3dbd..5787cbe 100644 --- a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_event.dart @@ -2,5 +2,9 @@ part of 'dashboard_analytic_loader_bloc.dart'; @freezed class DashboardAnalyticLoaderEvent with _$DashboardAnalyticLoaderEvent { + const factory DashboardAnalyticLoaderEvent.rangeDateChanged( + DateTime dateFrom, + DateTime dateTo, + ) = _RangeDateChanged; const factory DashboardAnalyticLoaderEvent.fetched() = _Fetched; } diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart index 07937ae..b0a3917 100644 --- a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart @@ -6,11 +6,15 @@ class DashboardAnalyticLoaderState with _$DashboardAnalyticLoaderState { required DashboardAnalytic dashboardAnalytic, required Option failureOptionDashboardAnalytic, @Default(false) bool isFetching, + required DateTime dateFrom, + required DateTime dateTo, }) = _DashboardAnalyticLoaderState; factory DashboardAnalyticLoaderState.initial() => DashboardAnalyticLoaderState( dashboardAnalytic: DashboardAnalytic.empty(), failureOptionDashboardAnalytic: none(), + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), ); } diff --git a/lib/presentation/pages/report/report_page.dart b/lib/presentation/pages/report/report_page.dart index 60be8f5..64b99e8 100644 --- a/lib/presentation/pages/report/report_page.dart +++ b/lib/presentation/pages/report/report_page.dart @@ -9,6 +9,7 @@ import '../../../common/theme/theme.dart'; import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/button/button.dart'; +import '../../components/field/date_range_picker_field.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/payment_method.dart'; import 'widgets/quick_stats.dart'; @@ -87,78 +88,120 @@ class _ReportPageState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColor.background, - body: - BlocBuilder< - DashboardAnalyticLoaderBloc, - DashboardAnalyticLoaderState - >( - builder: (context, state) { - return CustomScrollView( - slivers: [ - SliverAppBar( - expandedHeight: 120, - floating: false, - pinned: true, - backgroundColor: AppColor.primary, - centerTitle: false, - flexibleSpace: CustomAppBar( - title: 'Laporan', - isBack: false, + return BlocListener< + DashboardAnalyticLoaderBloc, + DashboardAnalyticLoaderState + >( + listenWhen: (previous, current) => + previous.dateFrom != current.dateFrom || + previous.dateTo != current.dateTo, + listener: (context, state) { + context.read().add( + DashboardAnalyticLoaderEvent.fetched(), + ); + }, + child: Scaffold( + backgroundColor: AppColor.background, + body: + BlocBuilder< + DashboardAnalyticLoaderBloc, + DashboardAnalyticLoaderState + >( + builder: (context, state) { + return CustomScrollView( + slivers: [ + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + backgroundColor: AppColor.primary, + centerTitle: false, + flexibleSpace: CustomAppBar( + title: 'Laporan', + isBack: false, + ), + actions: [ + ActionIconButton( + onTap: () {}, + icon: LineIcons.download, + ), + ActionIconButton(onTap: () {}, icon: LineIcons.filter), + SpaceWidth(8), + ], ), - actions: [ - ActionIconButton(onTap: () {}, icon: LineIcons.download), - ActionIconButton(onTap: () {}, icon: LineIcons.filter), - SpaceWidth(8), - ], - ), - // Content - SliverPadding( - padding: EdgeInsets.all(AppValue.padding), - sliver: SliverList( - delegate: SliverChildListDelegate([ - FadeTransition( + SliverToBoxAdapter( + child: SlideTransition( + position: _slideAnimation, + child: FadeTransition( opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: Column( - children: [ - ReportRevenueSummary( - overview: state.dashboardAnalytic.overview, - rotationAnimation: _rotationAnimation, - ), - const SpaceHeight(24), - ReportQuickStats( - overview: state.dashboardAnalytic.overview, - ), - const SpaceHeight(24), - ReportSales( - salesData: - state.dashboardAnalytic.recentSales, - ), - const SpaceHeight(24), - ReportPaymentMethod( - paymentMethods: - state.dashboardAnalytic.paymentMethods, - ), - const SpaceHeight(24), - ReportTopProduct( - products: state.dashboardAnalytic.topProducts, - ), - const SpaceHeight(24), - ], + child: Padding( + padding: const EdgeInsets.all(16.0), + child: DateRangePickerField( + maxDate: DateTime.now(), + startDate: state.dateFrom, + endDate: state.dateTo, + onChanged: (startDate, endDate) { + context.read().add( + DashboardAnalyticLoaderEvent.rangeDateChanged( + startDate!, + endDate!, + ), + ); + }, ), ), ), - ]), + ), ), - ), - ], - ); - }, - ), + + // Content + SliverPadding( + padding: EdgeInsets.all(AppValue.padding), + sliver: SliverList( + delegate: SliverChildListDelegate([ + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + children: [ + ReportRevenueSummary( + overview: state.dashboardAnalytic.overview, + rotationAnimation: _rotationAnimation, + ), + const SpaceHeight(24), + ReportQuickStats( + overview: state.dashboardAnalytic.overview, + ), + const SpaceHeight(24), + ReportSales( + salesData: + state.dashboardAnalytic.recentSales, + ), + const SpaceHeight(24), + ReportPaymentMethod( + paymentMethods: + state.dashboardAnalytic.paymentMethods, + ), + const SpaceHeight(24), + ReportTopProduct( + products: + state.dashboardAnalytic.topProducts, + ), + const SpaceHeight(24), + ], + ), + ), + ), + ]), + ), + ), + ], + ); + }, + ), + ), ); } } From de11c1243cce4256a7de923f705b60085cac334b Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 10:10:12 +0700 Subject: [PATCH 075/108] feat: update profile page --- .../pages/profile/widgets/account_info.dart | 8 ++++++ .../profile/widgets/business_setting.dart | 27 ++++++------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/lib/presentation/pages/profile/widgets/account_info.dart b/lib/presentation/pages/profile/widgets/account_info.dart index 778408c..f135f67 100644 --- a/lib/presentation/pages/profile/widgets/account_info.dart +++ b/lib/presentation/pages/profile/widgets/account_info.dart @@ -58,6 +58,14 @@ class ProfileAccountInfo extends StatelessWidget { subtitle: user.createdAt.toDate, showArrow: false, ), + ProfileDivider(), + + ProfileTile( + icon: LineIcons.userEdit, + title: 'Ubah Profil', + subtitle: 'Ubah profil kamu', + showArrow: false, + ), ], ), ); diff --git a/lib/presentation/pages/profile/widgets/business_setting.dart b/lib/presentation/pages/profile/widgets/business_setting.dart index c29d58d..8ba3cc4 100644 --- a/lib/presentation/pages/profile/widgets/business_setting.dart +++ b/lib/presentation/pages/profile/widgets/business_setting.dart @@ -1,6 +1,8 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; +import '../../../router/app_router.gr.dart'; import 'divider.dart'; import 'profile_tile.dart'; @@ -39,8 +41,8 @@ class ProfileBusinessSetting extends StatelessWidget { ProfileTile( icon: Icons.business_outlined, - title: 'Business Information', - subtitle: 'Manage your business details', + title: 'Outlet Information', + subtitle: 'Manage your Outlet details', onTap: () { // Navigate to business info }, @@ -71,23 +73,10 @@ class ProfileBusinessSetting extends StatelessWidget { ProfileDivider(), ProfileTile( - icon: Icons.receipt_long_outlined, - title: 'Tax Settings', - subtitle: 'Configure tax rates and policies', - onTap: () { - // Navigate to tax settings - }, - ), - - ProfileDivider(), - - ProfileTile( - icon: Icons.print_outlined, - title: 'Receipt & Print Settings', - subtitle: 'Configure receipt templates', - onTap: () { - // Navigate to print settings - }, + icon: Icons.inventory_2_outlined, + title: 'Product', + subtitle: 'Manage your products', + onTap: () => context.router.push(ProductRoute()), ), ], ), From 590bb3329c01da159bfcc456a382365ad50233dc Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 11:08:33 +0700 Subject: [PATCH 076/108] feat: outlet information page --- .../current_outlet_loader_bloc.dart | 40 + .../current_outlet_loader_bloc.freezed.dart | 382 +++++++ .../current_outlet_loader_event.dart | 6 + .../current_outlet_loader_state.dart | 15 + lib/common/url/api_path.dart | 3 + lib/domain/outlet/entities/outlet_entity.dart | 32 + .../outlet/failures/outlet_failure.dart | 10 + lib/domain/outlet/outlet.dart | 10 + lib/domain/outlet/outlet.freezed.dart | 1009 +++++++++++++++++ .../repositories/i_outlet_repository.dart | 5 + .../datasource/remote_data_provider.dart | 39 + lib/infrastructure/outlet/dto/outlet_dto.dart | 44 + lib/infrastructure/outlet/outlet_dtos.dart | 8 + .../outlet/outlet_dtos.freezed.dart | 431 +++++++ lib/infrastructure/outlet/outlet_dtos.g.dart | 37 + .../repositories/outlet_repository.dart | 36 + lib/injection.config.dart | 19 + .../pages/outlet/outlet_information_page.dart | 403 +++++++ .../profile/widgets/business_setting.dart | 4 +- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 220 ++-- 21 files changed, 2652 insertions(+), 104 deletions(-) create mode 100644 lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart create mode 100644 lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.freezed.dart create mode 100644 lib/application/outlet/current_outlet_loader/current_outlet_loader_event.dart create mode 100644 lib/application/outlet/current_outlet_loader/current_outlet_loader_state.dart create mode 100644 lib/domain/outlet/entities/outlet_entity.dart create mode 100644 lib/domain/outlet/failures/outlet_failure.dart create mode 100644 lib/domain/outlet/outlet.dart create mode 100644 lib/domain/outlet/outlet.freezed.dart create mode 100644 lib/domain/outlet/repositories/i_outlet_repository.dart create mode 100644 lib/infrastructure/outlet/datasource/remote_data_provider.dart create mode 100644 lib/infrastructure/outlet/dto/outlet_dto.dart create mode 100644 lib/infrastructure/outlet/outlet_dtos.dart create mode 100644 lib/infrastructure/outlet/outlet_dtos.freezed.dart create mode 100644 lib/infrastructure/outlet/outlet_dtos.g.dart create mode 100644 lib/infrastructure/outlet/repositories/outlet_repository.dart create mode 100644 lib/presentation/pages/outlet/outlet_information_page.dart diff --git a/lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart b/lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart new file mode 100644 index 0000000..943ed23 --- /dev/null +++ b/lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart @@ -0,0 +1,40 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/outlet/outlet.dart'; + +part 'current_outlet_loader_event.dart'; +part 'current_outlet_loader_state.dart'; +part 'current_outlet_loader_bloc.freezed.dart'; + +@injectable +class CurrentOutletLoaderBloc + extends Bloc { + final IOutletRepository _repository; + CurrentOutletLoaderBloc(this._repository) + : super(CurrentOutletLoaderState.initial()) { + on(_onCurrentOutletLoaderEvent); + } + + Future _onCurrentOutletLoaderEvent( + CurrentOutletLoaderEvent event, + Emitter emit, + ) { + return event.map( + fetched: (e) async { + emit(state.copyWith(isFetching: true, failureOptionOutlet: none())); + + final result = await _repository.currentOutlet(); + + var data = result.fold( + (f) => state.copyWith(failureOptionOutlet: optionOf(f)), + (currentOutlet) => state.copyWith(outlet: currentOutlet), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.freezed.dart b/lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.freezed.dart new file mode 100644 index 0000000..e78ce9f --- /dev/null +++ b/lib/application/outlet/current_outlet_loader/current_outlet_loader_bloc.freezed.dart @@ -0,0 +1,382 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'current_outlet_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$CurrentOutletLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CurrentOutletLoaderEventCopyWith<$Res> { + factory $CurrentOutletLoaderEventCopyWith( + CurrentOutletLoaderEvent value, + $Res Function(CurrentOutletLoaderEvent) then, + ) = _$CurrentOutletLoaderEventCopyWithImpl<$Res, CurrentOutletLoaderEvent>; +} + +/// @nodoc +class _$CurrentOutletLoaderEventCopyWithImpl< + $Res, + $Val extends CurrentOutletLoaderEvent +> + implements $CurrentOutletLoaderEventCopyWith<$Res> { + _$CurrentOutletLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CurrentOutletLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$CurrentOutletLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CurrentOutletLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl(); + + @override + String toString() { + return 'CurrentOutletLoaderEvent.fetched()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({required TResult Function() fetched}) { + return fetched(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({TResult? Function()? fetched}) { + return fetched?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements CurrentOutletLoaderEvent { + const factory _Fetched() = _$FetchedImpl; +} + +/// @nodoc +mixin _$CurrentOutletLoaderState { + Outlet get outlet => throw _privateConstructorUsedError; + Option get failureOptionOutlet => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of CurrentOutletLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $CurrentOutletLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $CurrentOutletLoaderStateCopyWith<$Res> { + factory $CurrentOutletLoaderStateCopyWith( + CurrentOutletLoaderState value, + $Res Function(CurrentOutletLoaderState) then, + ) = _$CurrentOutletLoaderStateCopyWithImpl<$Res, CurrentOutletLoaderState>; + @useResult + $Res call({ + Outlet outlet, + Option failureOptionOutlet, + bool isFetching, + }); + + $OutletCopyWith<$Res> get outlet; +} + +/// @nodoc +class _$CurrentOutletLoaderStateCopyWithImpl< + $Res, + $Val extends CurrentOutletLoaderState +> + implements $CurrentOutletLoaderStateCopyWith<$Res> { + _$CurrentOutletLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of CurrentOutletLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? outlet = null, + Object? failureOptionOutlet = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + outlet: null == outlet + ? _value.outlet + : outlet // ignore: cast_nullable_to_non_nullable + as Outlet, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of CurrentOutletLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $OutletCopyWith<$Res> get outlet { + return $OutletCopyWith<$Res>(_value.outlet, (value) { + return _then(_value.copyWith(outlet: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$CurrentOutletLoaderStateImplCopyWith<$Res> + implements $CurrentOutletLoaderStateCopyWith<$Res> { + factory _$$CurrentOutletLoaderStateImplCopyWith( + _$CurrentOutletLoaderStateImpl value, + $Res Function(_$CurrentOutletLoaderStateImpl) then, + ) = __$$CurrentOutletLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + Outlet outlet, + Option failureOptionOutlet, + bool isFetching, + }); + + @override + $OutletCopyWith<$Res> get outlet; +} + +/// @nodoc +class __$$CurrentOutletLoaderStateImplCopyWithImpl<$Res> + extends + _$CurrentOutletLoaderStateCopyWithImpl< + $Res, + _$CurrentOutletLoaderStateImpl + > + implements _$$CurrentOutletLoaderStateImplCopyWith<$Res> { + __$$CurrentOutletLoaderStateImplCopyWithImpl( + _$CurrentOutletLoaderStateImpl _value, + $Res Function(_$CurrentOutletLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of CurrentOutletLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? outlet = null, + Object? failureOptionOutlet = null, + Object? isFetching = null, + }) { + return _then( + _$CurrentOutletLoaderStateImpl( + outlet: null == outlet + ? _value.outlet + : outlet // ignore: cast_nullable_to_non_nullable + as Outlet, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$CurrentOutletLoaderStateImpl implements _CurrentOutletLoaderState { + const _$CurrentOutletLoaderStateImpl({ + required this.outlet, + required this.failureOptionOutlet, + this.isFetching = false, + }); + + @override + final Outlet outlet; + @override + final Option failureOptionOutlet; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'CurrentOutletLoaderState(outlet: $outlet, failureOptionOutlet: $failureOptionOutlet, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CurrentOutletLoaderStateImpl && + (identical(other.outlet, outlet) || other.outlet == outlet) && + (identical(other.failureOptionOutlet, failureOptionOutlet) || + other.failureOptionOutlet == failureOptionOutlet) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => + Object.hash(runtimeType, outlet, failureOptionOutlet, isFetching); + + /// Create a copy of CurrentOutletLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CurrentOutletLoaderStateImplCopyWith<_$CurrentOutletLoaderStateImpl> + get copyWith => + __$$CurrentOutletLoaderStateImplCopyWithImpl< + _$CurrentOutletLoaderStateImpl + >(this, _$identity); +} + +abstract class _CurrentOutletLoaderState implements CurrentOutletLoaderState { + const factory _CurrentOutletLoaderState({ + required final Outlet outlet, + required final Option failureOptionOutlet, + final bool isFetching, + }) = _$CurrentOutletLoaderStateImpl; + + @override + Outlet get outlet; + @override + Option get failureOptionOutlet; + @override + bool get isFetching; + + /// Create a copy of CurrentOutletLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CurrentOutletLoaderStateImplCopyWith<_$CurrentOutletLoaderStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/outlet/current_outlet_loader/current_outlet_loader_event.dart b/lib/application/outlet/current_outlet_loader/current_outlet_loader_event.dart new file mode 100644 index 0000000..4a536c8 --- /dev/null +++ b/lib/application/outlet/current_outlet_loader/current_outlet_loader_event.dart @@ -0,0 +1,6 @@ +part of 'current_outlet_loader_bloc.dart'; + +@freezed +class CurrentOutletLoaderEvent with _$CurrentOutletLoaderEvent { + const factory CurrentOutletLoaderEvent.fetched() = _Fetched; +} diff --git a/lib/application/outlet/current_outlet_loader/current_outlet_loader_state.dart b/lib/application/outlet/current_outlet_loader/current_outlet_loader_state.dart new file mode 100644 index 0000000..658ef89 --- /dev/null +++ b/lib/application/outlet/current_outlet_loader/current_outlet_loader_state.dart @@ -0,0 +1,15 @@ +part of 'current_outlet_loader_bloc.dart'; + +@freezed +class CurrentOutletLoaderState with _$CurrentOutletLoaderState { + const factory CurrentOutletLoaderState({ + required Outlet outlet, + required Option failureOptionOutlet, + @Default(false) bool isFetching, + }) = _CurrentOutletLoaderState; + + factory CurrentOutletLoaderState.initial() => CurrentOutletLoaderState( + outlet: Outlet.empty(), + failureOptionOutlet: none(), + ); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index 875d092..a3cdc1b 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -27,4 +27,7 @@ class ApiPath { // Order static const String order = '/api/v1/orders'; + + // Outlet + static const String outlet = '/api/v1/outlets'; } diff --git a/lib/domain/outlet/entities/outlet_entity.dart b/lib/domain/outlet/entities/outlet_entity.dart new file mode 100644 index 0000000..fcca16c --- /dev/null +++ b/lib/domain/outlet/entities/outlet_entity.dart @@ -0,0 +1,32 @@ +part of '../outlet.dart'; + +@freezed +class Outlet with _$Outlet { + const factory Outlet({ + required String id, + required String organizationId, + required String name, + required String address, + required String phoneNumber, + required String businessType, + required String currency, + required int taxRate, + required bool isActive, + required DateTime createdAt, + required DateTime updatedAt, + }) = _Outlet; + + factory Outlet.empty() => Outlet( + id: '', + organizationId: '', + name: '', + address: '', + phoneNumber: '', + businessType: '', + currency: '', + taxRate: 0, + isActive: false, + createdAt: DateTime(1970), + updatedAt: DateTime(1970), + ); +} diff --git a/lib/domain/outlet/failures/outlet_failure.dart b/lib/domain/outlet/failures/outlet_failure.dart new file mode 100644 index 0000000..1f53408 --- /dev/null +++ b/lib/domain/outlet/failures/outlet_failure.dart @@ -0,0 +1,10 @@ +part of '../outlet.dart'; + +@freezed +sealed class OutletFailure with _$OutletFailure { + const factory OutletFailure.serverError(ApiFailure failure) = _ServerError; + const factory OutletFailure.unexpectedError() = _UnexpectedError; + const factory OutletFailure.empty() = _Empty; + const factory OutletFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/outlet/outlet.dart b/lib/domain/outlet/outlet.dart new file mode 100644 index 0000000..32c2ff4 --- /dev/null +++ b/lib/domain/outlet/outlet.dart @@ -0,0 +1,10 @@ +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../common/api/api_failure.dart'; + +part 'outlet.freezed.dart'; + +part 'entities/outlet_entity.dart'; +part 'failures/outlet_failure.dart'; +part 'repositories/i_outlet_repository.dart'; diff --git a/lib/domain/outlet/outlet.freezed.dart b/lib/domain/outlet/outlet.freezed.dart new file mode 100644 index 0000000..d8d857e --- /dev/null +++ b/lib/domain/outlet/outlet.freezed.dart @@ -0,0 +1,1009 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'outlet.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$Outlet { + String get id => throw _privateConstructorUsedError; + String get organizationId => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + String get address => throw _privateConstructorUsedError; + String get phoneNumber => throw _privateConstructorUsedError; + String get businessType => throw _privateConstructorUsedError; + String get currency => throw _privateConstructorUsedError; + int get taxRate => throw _privateConstructorUsedError; + bool get isActive => throw _privateConstructorUsedError; + DateTime get createdAt => throw _privateConstructorUsedError; + DateTime get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of Outlet + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OutletCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OutletCopyWith<$Res> { + factory $OutletCopyWith(Outlet value, $Res Function(Outlet) then) = + _$OutletCopyWithImpl<$Res, Outlet>; + @useResult + $Res call({ + String id, + String organizationId, + String name, + String address, + String phoneNumber, + String businessType, + String currency, + int taxRate, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class _$OutletCopyWithImpl<$Res, $Val extends Outlet> + implements $OutletCopyWith<$Res> { + _$OutletCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Outlet + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? name = null, + Object? address = null, + Object? phoneNumber = null, + Object? businessType = null, + Object? currency = null, + Object? taxRate = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + phoneNumber: null == phoneNumber + ? _value.phoneNumber + : phoneNumber // ignore: cast_nullable_to_non_nullable + as String, + businessType: null == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String, + currency: null == currency + ? _value.currency + : currency // ignore: cast_nullable_to_non_nullable + as String, + taxRate: null == taxRate + ? _value.taxRate + : taxRate // ignore: cast_nullable_to_non_nullable + as int, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OutletImplCopyWith<$Res> implements $OutletCopyWith<$Res> { + factory _$$OutletImplCopyWith( + _$OutletImpl value, + $Res Function(_$OutletImpl) then, + ) = __$$OutletImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String organizationId, + String name, + String address, + String phoneNumber, + String businessType, + String currency, + int taxRate, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class __$$OutletImplCopyWithImpl<$Res> + extends _$OutletCopyWithImpl<$Res, _$OutletImpl> + implements _$$OutletImplCopyWith<$Res> { + __$$OutletImplCopyWithImpl( + _$OutletImpl _value, + $Res Function(_$OutletImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Outlet + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? name = null, + Object? address = null, + Object? phoneNumber = null, + Object? businessType = null, + Object? currency = null, + Object? taxRate = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _$OutletImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + phoneNumber: null == phoneNumber + ? _value.phoneNumber + : phoneNumber // ignore: cast_nullable_to_non_nullable + as String, + businessType: null == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String, + currency: null == currency + ? _value.currency + : currency // ignore: cast_nullable_to_non_nullable + as String, + taxRate: null == taxRate + ? _value.taxRate + : taxRate // ignore: cast_nullable_to_non_nullable + as int, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$OutletImpl implements _Outlet { + const _$OutletImpl({ + required this.id, + required this.organizationId, + required this.name, + required this.address, + required this.phoneNumber, + required this.businessType, + required this.currency, + required this.taxRate, + required this.isActive, + required this.createdAt, + required this.updatedAt, + }); + + @override + final String id; + @override + final String organizationId; + @override + final String name; + @override + final String address; + @override + final String phoneNumber; + @override + final String businessType; + @override + final String currency; + @override + final int taxRate; + @override + final bool isActive; + @override + final DateTime createdAt; + @override + final DateTime updatedAt; + + @override + String toString() { + return 'Outlet(id: $id, organizationId: $organizationId, name: $name, address: $address, phoneNumber: $phoneNumber, businessType: $businessType, currency: $currency, taxRate: $taxRate, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OutletImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.name, name) || other.name == name) && + (identical(other.address, address) || other.address == address) && + (identical(other.phoneNumber, phoneNumber) || + other.phoneNumber == phoneNumber) && + (identical(other.businessType, businessType) || + other.businessType == businessType) && + (identical(other.currency, currency) || + other.currency == currency) && + (identical(other.taxRate, taxRate) || other.taxRate == taxRate) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + name, + address, + phoneNumber, + businessType, + currency, + taxRate, + isActive, + createdAt, + updatedAt, + ); + + /// Create a copy of Outlet + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OutletImplCopyWith<_$OutletImpl> get copyWith => + __$$OutletImplCopyWithImpl<_$OutletImpl>(this, _$identity); +} + +abstract class _Outlet implements Outlet { + const factory _Outlet({ + required final String id, + required final String organizationId, + required final String name, + required final String address, + required final String phoneNumber, + required final String businessType, + required final String currency, + required final int taxRate, + required final bool isActive, + required final DateTime createdAt, + required final DateTime updatedAt, + }) = _$OutletImpl; + + @override + String get id; + @override + String get organizationId; + @override + String get name; + @override + String get address; + @override + String get phoneNumber; + @override + String get businessType; + @override + String get currency; + @override + int get taxRate; + @override + bool get isActive; + @override + DateTime get createdAt; + @override + DateTime get updatedAt; + + /// Create a copy of Outlet + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OutletImplCopyWith<_$OutletImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$OutletFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OutletFailureCopyWith<$Res> { + factory $OutletFailureCopyWith( + OutletFailure value, + $Res Function(OutletFailure) then, + ) = _$OutletFailureCopyWithImpl<$Res, OutletFailure>; +} + +/// @nodoc +class _$OutletFailureCopyWithImpl<$Res, $Val extends OutletFailure> + implements $OutletFailureCopyWith<$Res> { + _$OutletFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$OutletFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'OutletFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements OutletFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$OutletFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'OutletFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements OutletFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$OutletFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'OutletFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements OutletFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$OutletFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'OutletFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements OutletFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of OutletFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/domain/outlet/repositories/i_outlet_repository.dart b/lib/domain/outlet/repositories/i_outlet_repository.dart new file mode 100644 index 0000000..9514707 --- /dev/null +++ b/lib/domain/outlet/repositories/i_outlet_repository.dart @@ -0,0 +1,5 @@ +part of '../outlet.dart'; + +abstract class IOutletRepository { + Future> currentOutlet(); +} diff --git a/lib/infrastructure/outlet/datasource/remote_data_provider.dart b/lib/infrastructure/outlet/datasource/remote_data_provider.dart new file mode 100644 index 0000000..622c548 --- /dev/null +++ b/lib/infrastructure/outlet/datasource/remote_data_provider.dart @@ -0,0 +1,39 @@ +import 'dart:developer'; + +import 'package:data_channel/data_channel.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/function/app_function.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/outlet/outlet.dart'; +import '../outlet_dtos.dart'; + +@injectable +class OutletRemoteDataProvider { + final ApiClient _apiClient; + final String _logName = 'OutletRemoteDataProvider'; + + OutletRemoteDataProvider(this._apiClient); + + Future> fetchById({required outletId}) async { + try { + final response = await _apiClient.get( + '${ApiPath.outlet}/detail/$outletId', + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(OutletFailure.empty()); + } + + final dto = OutletDto.fromJson(response.data['data']); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchOutletByIdError', name: _logName, error: e, stackTrace: s); + return DC.error(OutletFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/outlet/dto/outlet_dto.dart b/lib/infrastructure/outlet/dto/outlet_dto.dart new file mode 100644 index 0000000..2e46eeb --- /dev/null +++ b/lib/infrastructure/outlet/dto/outlet_dto.dart @@ -0,0 +1,44 @@ +part of '../outlet_dtos.dart'; + +@freezed +class OutletDto with _$OutletDto { + const OutletDto._(); + + const factory OutletDto({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'address') String? address, + @JsonKey(name: 'phone_number') String? phoneNumber, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'currency') String? currency, + @JsonKey(name: 'tax_rate') int? taxRate, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }) = _OutletDto; + + factory OutletDto.fromJson(Map json) => + _$OutletDtoFromJson(json); + + /// Mapper ke domain + Outlet toDomain() { + return Outlet( + id: id ?? '', + organizationId: organizationId ?? '', + name: name ?? '', + address: address ?? '', + phoneNumber: phoneNumber ?? '', + businessType: businessType ?? '', + currency: currency ?? '', + taxRate: taxRate ?? 0, + isActive: isActive ?? false, + createdAt: createdAt != null + ? DateTime.tryParse(createdAt!) ?? DateTime(1970) + : DateTime(1970), + updatedAt: updatedAt != null + ? DateTime.tryParse(updatedAt!) ?? DateTime(1970) + : DateTime(1970), + ); + } +} diff --git a/lib/infrastructure/outlet/outlet_dtos.dart b/lib/infrastructure/outlet/outlet_dtos.dart new file mode 100644 index 0000000..b028073 --- /dev/null +++ b/lib/infrastructure/outlet/outlet_dtos.dart @@ -0,0 +1,8 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/outlet/outlet.dart'; + +part 'outlet_dtos.freezed.dart'; +part 'outlet_dtos.g.dart'; + +part 'dto/outlet_dto.dart'; diff --git a/lib/infrastructure/outlet/outlet_dtos.freezed.dart b/lib/infrastructure/outlet/outlet_dtos.freezed.dart new file mode 100644 index 0000000..97b4392 --- /dev/null +++ b/lib/infrastructure/outlet/outlet_dtos.freezed.dart @@ -0,0 +1,431 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'outlet_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +OutletDto _$OutletDtoFromJson(Map json) { + return _OutletDto.fromJson(json); +} + +/// @nodoc +mixin _$OutletDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'name') + String? get name => throw _privateConstructorUsedError; + @JsonKey(name: 'address') + String? get address => throw _privateConstructorUsedError; + @JsonKey(name: 'phone_number') + String? get phoneNumber => throw _privateConstructorUsedError; + @JsonKey(name: 'business_type') + String? get businessType => throw _privateConstructorUsedError; + @JsonKey(name: 'currency') + String? get currency => throw _privateConstructorUsedError; + @JsonKey(name: 'tax_rate') + int? get taxRate => throw _privateConstructorUsedError; + @JsonKey(name: 'is_active') + bool? get isActive => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this OutletDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of OutletDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OutletDtoCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OutletDtoCopyWith<$Res> { + factory $OutletDtoCopyWith(OutletDto value, $Res Function(OutletDto) then) = + _$OutletDtoCopyWithImpl<$Res, OutletDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'address') String? address, + @JsonKey(name: 'phone_number') String? phoneNumber, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'currency') String? currency, + @JsonKey(name: 'tax_rate') int? taxRate, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class _$OutletDtoCopyWithImpl<$Res, $Val extends OutletDto> + implements $OutletDtoCopyWith<$Res> { + _$OutletDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OutletDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? name = freezed, + Object? address = freezed, + Object? phoneNumber = freezed, + Object? businessType = freezed, + Object? currency = freezed, + Object? taxRate = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + address: freezed == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String?, + phoneNumber: freezed == phoneNumber + ? _value.phoneNumber + : phoneNumber // ignore: cast_nullable_to_non_nullable + as String?, + businessType: freezed == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String?, + currency: freezed == currency + ? _value.currency + : currency // ignore: cast_nullable_to_non_nullable + as String?, + taxRate: freezed == taxRate + ? _value.taxRate + : taxRate // ignore: cast_nullable_to_non_nullable + as int?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OutletDtoImplCopyWith<$Res> + implements $OutletDtoCopyWith<$Res> { + factory _$$OutletDtoImplCopyWith( + _$OutletDtoImpl value, + $Res Function(_$OutletDtoImpl) then, + ) = __$$OutletDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'address') String? address, + @JsonKey(name: 'phone_number') String? phoneNumber, + @JsonKey(name: 'business_type') String? businessType, + @JsonKey(name: 'currency') String? currency, + @JsonKey(name: 'tax_rate') int? taxRate, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class __$$OutletDtoImplCopyWithImpl<$Res> + extends _$OutletDtoCopyWithImpl<$Res, _$OutletDtoImpl> + implements _$$OutletDtoImplCopyWith<$Res> { + __$$OutletDtoImplCopyWithImpl( + _$OutletDtoImpl _value, + $Res Function(_$OutletDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? name = freezed, + Object? address = freezed, + Object? phoneNumber = freezed, + Object? businessType = freezed, + Object? currency = freezed, + Object? taxRate = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$OutletDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + address: freezed == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String?, + phoneNumber: freezed == phoneNumber + ? _value.phoneNumber + : phoneNumber // ignore: cast_nullable_to_non_nullable + as String?, + businessType: freezed == businessType + ? _value.businessType + : businessType // ignore: cast_nullable_to_non_nullable + as String?, + currency: freezed == currency + ? _value.currency + : currency // ignore: cast_nullable_to_non_nullable + as String?, + taxRate: freezed == taxRate + ? _value.taxRate + : taxRate // ignore: cast_nullable_to_non_nullable + as int?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$OutletDtoImpl extends _OutletDto { + const _$OutletDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'name') this.name, + @JsonKey(name: 'address') this.address, + @JsonKey(name: 'phone_number') this.phoneNumber, + @JsonKey(name: 'business_type') this.businessType, + @JsonKey(name: 'currency') this.currency, + @JsonKey(name: 'tax_rate') this.taxRate, + @JsonKey(name: 'is_active') this.isActive, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + }) : super._(); + + factory _$OutletDtoImpl.fromJson(Map json) => + _$$OutletDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'name') + final String? name; + @override + @JsonKey(name: 'address') + final String? address; + @override + @JsonKey(name: 'phone_number') + final String? phoneNumber; + @override + @JsonKey(name: 'business_type') + final String? businessType; + @override + @JsonKey(name: 'currency') + final String? currency; + @override + @JsonKey(name: 'tax_rate') + final int? taxRate; + @override + @JsonKey(name: 'is_active') + final bool? isActive; + @override + @JsonKey(name: 'created_at') + final String? createdAt; + @override + @JsonKey(name: 'updated_at') + final String? updatedAt; + + @override + String toString() { + return 'OutletDto(id: $id, organizationId: $organizationId, name: $name, address: $address, phoneNumber: $phoneNumber, businessType: $businessType, currency: $currency, taxRate: $taxRate, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OutletDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.name, name) || other.name == name) && + (identical(other.address, address) || other.address == address) && + (identical(other.phoneNumber, phoneNumber) || + other.phoneNumber == phoneNumber) && + (identical(other.businessType, businessType) || + other.businessType == businessType) && + (identical(other.currency, currency) || + other.currency == currency) && + (identical(other.taxRate, taxRate) || other.taxRate == taxRate) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + name, + address, + phoneNumber, + businessType, + currency, + taxRate, + isActive, + createdAt, + updatedAt, + ); + + /// Create a copy of OutletDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OutletDtoImplCopyWith<_$OutletDtoImpl> get copyWith => + __$$OutletDtoImplCopyWithImpl<_$OutletDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$OutletDtoImplToJson(this); + } +} + +abstract class _OutletDto extends OutletDto { + const factory _OutletDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'name') final String? name, + @JsonKey(name: 'address') final String? address, + @JsonKey(name: 'phone_number') final String? phoneNumber, + @JsonKey(name: 'business_type') final String? businessType, + @JsonKey(name: 'currency') final String? currency, + @JsonKey(name: 'tax_rate') final int? taxRate, + @JsonKey(name: 'is_active') final bool? isActive, + @JsonKey(name: 'created_at') final String? createdAt, + @JsonKey(name: 'updated_at') final String? updatedAt, + }) = _$OutletDtoImpl; + const _OutletDto._() : super._(); + + factory _OutletDto.fromJson(Map json) = + _$OutletDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'name') + String? get name; + @override + @JsonKey(name: 'address') + String? get address; + @override + @JsonKey(name: 'phone_number') + String? get phoneNumber; + @override + @JsonKey(name: 'business_type') + String? get businessType; + @override + @JsonKey(name: 'currency') + String? get currency; + @override + @JsonKey(name: 'tax_rate') + int? get taxRate; + @override + @JsonKey(name: 'is_active') + bool? get isActive; + @override + @JsonKey(name: 'created_at') + String? get createdAt; + @override + @JsonKey(name: 'updated_at') + String? get updatedAt; + + /// Create a copy of OutletDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OutletDtoImplCopyWith<_$OutletDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/outlet/outlet_dtos.g.dart b/lib/infrastructure/outlet/outlet_dtos.g.dart new file mode 100644 index 0000000..0c125d3 --- /dev/null +++ b/lib/infrastructure/outlet/outlet_dtos.g.dart @@ -0,0 +1,37 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'outlet_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$OutletDtoImpl _$$OutletDtoImplFromJson(Map json) => + _$OutletDtoImpl( + id: json['id'] as String?, + organizationId: json['organization_id'] as String?, + name: json['name'] as String?, + address: json['address'] as String?, + phoneNumber: json['phone_number'] as String?, + businessType: json['business_type'] as String?, + currency: json['currency'] as String?, + taxRate: (json['tax_rate'] as num?)?.toInt(), + isActive: json['is_active'] as bool?, + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, + ); + +Map _$$OutletDtoImplToJson(_$OutletDtoImpl instance) => + { + 'id': instance.id, + 'organization_id': instance.organizationId, + 'name': instance.name, + 'address': instance.address, + 'phone_number': instance.phoneNumber, + 'business_type': instance.businessType, + 'currency': instance.currency, + 'tax_rate': instance.taxRate, + 'is_active': instance.isActive, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, + }; diff --git a/lib/infrastructure/outlet/repositories/outlet_repository.dart b/lib/infrastructure/outlet/repositories/outlet_repository.dart new file mode 100644 index 0000000..a3cc1a1 --- /dev/null +++ b/lib/infrastructure/outlet/repositories/outlet_repository.dart @@ -0,0 +1,36 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/outlet/outlet.dart'; +import '../../auth/datasources/local_data_provider.dart'; +import '../datasource/remote_data_provider.dart'; + +@Injectable(as: IOutletRepository) +class OutletRepository implements IOutletRepository { + final OutletRemoteDataProvider _dataProvider; + final AuthLocalDataProvider _authLocalDataProvider; + final String _logName = 'OutletRepository'; + + OutletRepository(this._dataProvider, this._authLocalDataProvider); + + @override + Future> currentOutlet() async { + try { + final authData = await _authLocalDataProvider.currentUser(); + final result = await _dataProvider.fetchById(outletId: authData.outletId); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + return right(auth); + } catch (e, s) { + log('currentOutletError', name: _logName, error: e, stackTrace: s); + return left(const OutletFailure.unexpectedError()); + } + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 5864f04..4e24815 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -36,6 +36,8 @@ import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/application/order/order_loader/order_loader_bloc.dart' as _i1058; +import 'package:apskel_owner_flutter/application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart' + as _i337; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; @@ -53,6 +55,7 @@ import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; import 'package:apskel_owner_flutter/domain/category/category.dart' as _i1020; import 'package:apskel_owner_flutter/domain/customer/customer.dart' as _i48; import 'package:apskel_owner_flutter/domain/order/order.dart' as _i219; +import 'package:apskel_owner_flutter/domain/outlet/outlet.dart' as _i197; import 'package:apskel_owner_flutter/domain/product/product.dart' as _i419; import 'package:apskel_owner_flutter/env.dart' as _i6; import 'package:apskel_owner_flutter/infrastructure/analytic/datasource/remote_data_provider.dart' @@ -77,6 +80,10 @@ import 'package:apskel_owner_flutter/infrastructure/order/datasource/remote_data as _i130; import 'package:apskel_owner_flutter/infrastructure/order/repositories/order_repository.dart' as _i641; +import 'package:apskel_owner_flutter/infrastructure/outlet/datasource/remote_data_provider.dart' + as _i27; +import 'package:apskel_owner_flutter/infrastructure/outlet/repositories/outlet_repository.dart' + as _i13; import 'package:apskel_owner_flutter/infrastructure/product/datasources/remote_data_provider.dart' as _i823; import 'package:apskel_owner_flutter/infrastructure/product/repositories/product_repository.dart' @@ -148,6 +155,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1006.CustomerRemoteDataProvider>( () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i27.OutletRemoteDataProvider>( + () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), ); @@ -175,6 +185,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1020.ICategoryRepository>( () => _i869.CategoryRepository(gh<_i333.CategoryRemoteDataProvider>()), ); + gh.factory<_i197.IOutletRepository>( + () => _i13.OutletRepository( + gh<_i27.OutletRemoteDataProvider>(), + gh<_i991.AuthLocalDataProvider>(), + ), + ); gh.factory<_i458.ProductLoaderBloc>( () => _i458.ProductLoaderBloc(gh<_i419.IProductRepository>()), ); @@ -184,6 +200,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i889.SalesLoaderBloc>( () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i337.CurrentOutletLoaderBloc>( + () => _i337.CurrentOutletLoaderBloc(gh<_i197.IOutletRepository>()), + ); gh.factory<_i221.ProductAnalyticLoaderBloc>( () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); diff --git a/lib/presentation/pages/outlet/outlet_information_page.dart b/lib/presentation/pages/outlet/outlet_information_page.dart new file mode 100644 index 0000000..49e122a --- /dev/null +++ b/lib/presentation/pages/outlet/outlet_information_page.dart @@ -0,0 +1,403 @@ +import 'package:flutter/material.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart'; +import '../../../common/theme/theme.dart'; +import '../../../domain/outlet/outlet.dart'; +import '../../../injection.dart'; +import '../../components/appbar/appbar.dart'; + +// Outlet Information Page +@RoutePage() +class OutletInformationPage extends StatefulWidget implements AutoRouteWrapper { + const OutletInformationPage({super.key}); + + @override + State createState() => _OutletInformationPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (_) => + getIt() + ..add(CurrentOutletLoaderEvent.fetched()), + child: this, + ); +} + +class _OutletInformationPageState extends State + with TickerProviderStateMixin { + late ScrollController _scrollController; + late AnimationController _fadeController; + late AnimationController _slideController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + + @override + void initState() { + super.initState(); + _scrollController = ScrollController(); + _fadeController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + _slideController = AnimationController( + duration: const Duration(milliseconds: 600), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.easeOutBack), + ); + + // Start animations + _fadeController.forward(); + _slideController.forward(); + } + + @override + void dispose() { + _scrollController.dispose(); + _fadeController.dispose(); + _slideController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + controller: _scrollController, + slivers: [ + SliverAppBar( + expandedHeight: 120.0, + floating: false, + pinned: true, + flexibleSpace: CustomAppBar(title: 'Outlet Information'), + ), + SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: _buildContent(), + ), + ), + ), + ], + ), + ); + } + + Widget _buildContent() { + return BlocBuilder( + builder: (context, state) { + return Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeaderCard(state.outlet), + const SizedBox(height: 20), + _buildInfoSection(state.outlet), + const SizedBox(height: 20), + _buildContactSection(state.outlet), + const SizedBox(height: 20), + _buildBusinessSection(state.outlet), + const SizedBox(height: 20), + _buildStatusSection(state.outlet), + const SizedBox(height: 20), + _buildTimestampSection(state.outlet), + ], + ), + ); + }, + ); + } + + Widget _buildHeaderCard(Outlet outlet) { + return TweenAnimationBuilder( + duration: const Duration(milliseconds: 800), + tween: Tween(begin: 0.0, end: 1.0), + builder: (context, value, child) { + return Transform.scale( + scale: 0.8 + (0.2 * value), + child: Container( + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: AppColor.primaryGradient, + ), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(12), + ), + child: Icon(Icons.store, color: AppColor.white, size: 24), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + outlet.name, + style: AppStyle.h5.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 4), + Text( + outlet.businessType, + style: AppStyle.md.copyWith( + color: AppColor.white.withOpacity(0.9), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } + + Widget _buildInfoSection(Outlet outlet) { + return _buildAnimatedCard( + delay: 200, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildSectionTitle('General Information', Icons.info_outline), + const SizedBox(height: 16), + _buildInfoRow('Outlet ID', outlet.id, Icons.fingerprint), + _buildInfoRow( + 'Organization ID', + outlet.organizationId, + Icons.business, + ), + _buildInfoRow('Address', outlet.address, Icons.location_on), + ], + ), + ); + } + + Widget _buildContactSection(Outlet outlet) { + return _buildAnimatedCard( + delay: 400, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildSectionTitle('Contact Information', Icons.contact_phone), + const SizedBox(height: 16), + _buildInfoRow('Phone Number', outlet.phoneNumber, Icons.phone), + ], + ), + ); + } + + Widget _buildBusinessSection(Outlet outlet) { + return _buildAnimatedCard( + delay: 600, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildSectionTitle('Business Settings', Icons.settings_applications), + const SizedBox(height: 16), + _buildInfoRow('Currency', outlet.currency, Icons.monetization_on), + _buildInfoRow('Tax Rate', '${outlet.taxRate}%', Icons.percent), + ], + ), + ); + } + + Widget _buildStatusSection(Outlet outlet) { + return _buildAnimatedCard( + delay: 800, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildSectionTitle('Status', Icons.toggle_on), + const SizedBox(height: 16), + Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: BoxDecoration( + color: outlet.isActive + ? AppColor.success.withOpacity(0.1) + : AppColor.error.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: outlet.isActive + ? AppColor.success.withOpacity(0.3) + : AppColor.error.withOpacity(0.3), + ), + ), + child: Row( + children: [ + Container( + width: 8, + height: 8, + decoration: BoxDecoration( + color: outlet.isActive ? AppColor.success : AppColor.error, + shape: BoxShape.circle, + ), + ), + const SizedBox(width: 12), + Text( + outlet.isActive ? 'Active' : 'Inactive', + style: AppStyle.md.copyWith( + color: outlet.isActive ? AppColor.success : AppColor.error, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildTimestampSection(Outlet outlet) { + return _buildAnimatedCard( + delay: 1000, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildSectionTitle('Timestamps', Icons.schedule), + const SizedBox(height: 16), + _buildInfoRow( + 'Created At', + _formatDateTime(outlet.createdAt), + Icons.add_circle_outline, + ), + _buildInfoRow( + 'Updated At', + _formatDateTime(outlet.updatedAt), + Icons.update, + ), + ], + ), + ); + } + + Widget _buildAnimatedCard({required Widget child, required int delay}) { + return TweenAnimationBuilder( + duration: Duration(milliseconds: 600 + delay), + tween: Tween(begin: 0.0, end: 1.0), + builder: (context, value, _) { + return Transform.translate( + offset: Offset(0, 30 * (1 - value)), + child: Opacity( + opacity: value, + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 5), + ), + ], + ), + child: child, + ), + ), + ); + }, + ); + } + + Widget _buildSectionTitle(String title, IconData icon) { + return Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon(icon, color: AppColor.primary, size: 20), + ), + const SizedBox(width: 12), + Text( + title, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.textPrimary, + ), + ), + ], + ); + } + + Widget _buildInfoRow(String label, String value, IconData icon) { + return Padding( + padding: const EdgeInsets.only(bottom: 16), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(icon, color: AppColor.textSecondary, size: 20), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + label, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + Text( + value, + style: AppStyle.md.copyWith( + color: AppColor.textPrimary, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ], + ), + ); + } + + String _formatDateTime(DateTime dateTime) { + return '${dateTime.day}/${dateTime.month}/${dateTime.year} ${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}'; + } +} diff --git a/lib/presentation/pages/profile/widgets/business_setting.dart b/lib/presentation/pages/profile/widgets/business_setting.dart index 8ba3cc4..12383e8 100644 --- a/lib/presentation/pages/profile/widgets/business_setting.dart +++ b/lib/presentation/pages/profile/widgets/business_setting.dart @@ -43,9 +43,7 @@ class ProfileBusinessSetting extends StatelessWidget { icon: Icons.business_outlined, title: 'Outlet Information', subtitle: 'Manage your Outlet details', - onTap: () { - // Navigate to business info - }, + onTap: () => context.router.push(OutletInformationRoute()), ), ProfileDivider(), diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index f332f41..40c4015 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -55,5 +55,8 @@ class AppRouter extends RootStackRouter { // Order AutoRoute(page: OrderDetailRoute.page), + + // Outlet + AutoRoute(page: OutletInformationRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 939877e..c1ab17b 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,7 +9,7 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/domain/order/order.dart' as _i22; +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i23; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i8; import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' @@ -32,50 +32,52 @@ import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order as _i10; import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/outlet/outlet_information_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i17; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i18; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i19; -import 'package:auto_route/auto_route.dart' as _i20; -import 'package:flutter/material.dart' as _i21; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i20; +import 'package:auto_route/auto_route.dart' as _i21; +import 'package:flutter/material.dart' as _i22; /// generated route for /// [_i1.CustomerPage] -class CustomerRoute extends _i20.PageRouteInfo { - const CustomerRoute({List<_i20.PageRouteInfo>? children}) +class CustomerRoute extends _i21.PageRouteInfo { + const CustomerRoute({List<_i21.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i1.CustomerPage()); + return _i21.WrappedRoute(child: const _i1.CustomerPage()); }, ); } /// generated route for /// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i20.PageRouteInfo { - const DailyTasksFormRoute({List<_i20.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i21.PageRouteInfo { + const DailyTasksFormRoute({List<_i21.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { return const _i2.DailyTasksFormPage(); @@ -85,16 +87,16 @@ class DailyTasksFormRoute extends _i20.PageRouteInfo { /// generated route for /// [_i3.ErrorPage] -class ErrorRoute extends _i20.PageRouteInfo { +class ErrorRoute extends _i21.PageRouteInfo { ErrorRoute({ - _i21.Key? key, + _i22.Key? key, String? title, String? message, - _i21.VoidCallback? onRetry, - _i21.VoidCallback? onBack, + _i22.VoidCallback? onRetry, + _i22.VoidCallback? onBack, String? errorCode, - _i21.IconData? errorIcon, - List<_i20.PageRouteInfo>? children, + _i22.IconData? errorIcon, + List<_i21.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -111,7 +113,7 @@ class ErrorRoute extends _i20.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { final args = data.argsAs( @@ -141,19 +143,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i21.Key? key; + final _i22.Key? key; final String? title; final String? message; - final _i21.VoidCallback? onRetry; + final _i22.VoidCallback? onRetry; - final _i21.VoidCallback? onBack; + final _i22.VoidCallback? onBack; final String? errorCode; - final _i21.IconData? errorIcon; + final _i22.IconData? errorIcon; @override String toString() { @@ -163,29 +165,29 @@ class ErrorRouteArgs { /// generated route for /// [_i4.FinancePage] -class FinanceRoute extends _i20.PageRouteInfo { - const FinanceRoute({List<_i20.PageRouteInfo>? children}) +class FinanceRoute extends _i21.PageRouteInfo { + const FinanceRoute({List<_i21.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i4.FinancePage()); + return _i21.WrappedRoute(child: const _i4.FinancePage()); }, ); } /// generated route for /// [_i5.HomePage] -class HomeRoute extends _i20.PageRouteInfo { - const HomeRoute({List<_i20.PageRouteInfo>? children}) +class HomeRoute extends _i21.PageRouteInfo { + const HomeRoute({List<_i21.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { return const _i5.HomePage(); @@ -195,29 +197,29 @@ class HomeRoute extends _i20.PageRouteInfo { /// generated route for /// [_i6.InventoryPage] -class InventoryRoute extends _i20.PageRouteInfo { - const InventoryRoute({List<_i20.PageRouteInfo>? children}) +class InventoryRoute extends _i21.PageRouteInfo { + const InventoryRoute({List<_i21.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i6.InventoryPage()); + return _i21.WrappedRoute(child: const _i6.InventoryPage()); }, ); } /// generated route for /// [_i7.LanguagePage] -class LanguageRoute extends _i20.PageRouteInfo { - const LanguageRoute({List<_i20.PageRouteInfo>? children}) +class LanguageRoute extends _i21.PageRouteInfo { + const LanguageRoute({List<_i21.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { return const _i7.LanguagePage(); @@ -227,29 +229,29 @@ class LanguageRoute extends _i20.PageRouteInfo { /// generated route for /// [_i8.LoginPage] -class LoginRoute extends _i20.PageRouteInfo { - const LoginRoute({List<_i20.PageRouteInfo>? children}) +class LoginRoute extends _i21.PageRouteInfo { + const LoginRoute({List<_i21.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i8.LoginPage()); + return _i21.WrappedRoute(child: const _i8.LoginPage()); }, ); } /// generated route for /// [_i9.MainPage] -class MainRoute extends _i20.PageRouteInfo { - const MainRoute({List<_i20.PageRouteInfo>? children}) +class MainRoute extends _i21.PageRouteInfo { + const MainRoute({List<_i21.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { return const _i9.MainPage(); @@ -259,11 +261,11 @@ class MainRoute extends _i20.PageRouteInfo { /// generated route for /// [_i10.OrderDetailPage] -class OrderDetailRoute extends _i20.PageRouteInfo { +class OrderDetailRoute extends _i21.PageRouteInfo { OrderDetailRoute({ - _i21.Key? key, - required _i22.Order order, - List<_i20.PageRouteInfo>? children, + _i22.Key? key, + required _i23.Order order, + List<_i21.PageRouteInfo>? children, }) : super( OrderDetailRoute.name, args: OrderDetailRouteArgs(key: key, order: order), @@ -272,7 +274,7 @@ class OrderDetailRoute extends _i20.PageRouteInfo { static const String name = 'OrderDetailRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -284,9 +286,9 @@ class OrderDetailRoute extends _i20.PageRouteInfo { class OrderDetailRouteArgs { const OrderDetailRouteArgs({this.key, required this.order}); - final _i21.Key? key; + final _i22.Key? key; - final _i22.Order order; + final _i23.Order order; @override String toString() { @@ -296,144 +298,160 @@ class OrderDetailRouteArgs { /// generated route for /// [_i11.OrderPage] -class OrderRoute extends _i20.PageRouteInfo { - const OrderRoute({List<_i20.PageRouteInfo>? children}) +class OrderRoute extends _i21.PageRouteInfo { + const OrderRoute({List<_i21.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i11.OrderPage()); + return _i21.WrappedRoute(child: const _i11.OrderPage()); }, ); } /// generated route for -/// [_i12.ProductAnalyticPage] -class ProductAnalyticRoute extends _i20.PageRouteInfo { - const ProductAnalyticRoute({List<_i20.PageRouteInfo>? children}) +/// [_i12.OutletInformationPage] +class OutletInformationRoute extends _i21.PageRouteInfo { + const OutletInformationRoute({List<_i21.PageRouteInfo>? children}) + : super(OutletInformationRoute.name, initialChildren: children); + + static const String name = 'OutletInformationRoute'; + + static _i21.PageInfo page = _i21.PageInfo( + name, + builder: (data) { + return _i21.WrappedRoute(child: const _i12.OutletInformationPage()); + }, + ); +} + +/// generated route for +/// [_i13.ProductAnalyticPage] +class ProductAnalyticRoute extends _i21.PageRouteInfo { + const ProductAnalyticRoute({List<_i21.PageRouteInfo>? children}) : super(ProductAnalyticRoute.name, initialChildren: children); static const String name = 'ProductAnalyticRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i12.ProductAnalyticPage()); + return _i21.WrappedRoute(child: const _i13.ProductAnalyticPage()); }, ); } /// generated route for -/// [_i13.ProductPage] -class ProductRoute extends _i20.PageRouteInfo { - const ProductRoute({List<_i20.PageRouteInfo>? children}) +/// [_i14.ProductPage] +class ProductRoute extends _i21.PageRouteInfo { + const ProductRoute({List<_i21.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i13.ProductPage()); + return _i21.WrappedRoute(child: const _i14.ProductPage()); }, ); } /// generated route for -/// [_i14.ProfilePage] -class ProfileRoute extends _i20.PageRouteInfo { - const ProfileRoute({List<_i20.PageRouteInfo>? children}) +/// [_i15.ProfilePage] +class ProfileRoute extends _i21.PageRouteInfo { + const ProfileRoute({List<_i21.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i14.ProfilePage()); + return _i21.WrappedRoute(child: const _i15.ProfilePage()); }, ); } /// generated route for -/// [_i15.PurchasePage] -class PurchaseRoute extends _i20.PageRouteInfo { - const PurchaseRoute({List<_i20.PageRouteInfo>? children}) +/// [_i16.PurchasePage] +class PurchaseRoute extends _i21.PageRouteInfo { + const PurchaseRoute({List<_i21.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return const _i15.PurchasePage(); + return const _i16.PurchasePage(); }, ); } /// generated route for -/// [_i16.ReportPage] -class ReportRoute extends _i20.PageRouteInfo { - const ReportRoute({List<_i20.PageRouteInfo>? children}) +/// [_i17.ReportPage] +class ReportRoute extends _i21.PageRouteInfo { + const ReportRoute({List<_i21.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i16.ReportPage()); + return _i21.WrappedRoute(child: const _i17.ReportPage()); }, ); } /// generated route for -/// [_i17.SalesPage] -class SalesRoute extends _i20.PageRouteInfo { - const SalesRoute({List<_i20.PageRouteInfo>? children}) +/// [_i18.SalesPage] +class SalesRoute extends _i21.PageRouteInfo { + const SalesRoute({List<_i21.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return _i20.WrappedRoute(child: const _i17.SalesPage()); + return _i21.WrappedRoute(child: const _i18.SalesPage()); }, ); } /// generated route for -/// [_i18.SchedulePage] -class ScheduleRoute extends _i20.PageRouteInfo { - const ScheduleRoute({List<_i20.PageRouteInfo>? children}) +/// [_i19.SchedulePage] +class ScheduleRoute extends _i21.PageRouteInfo { + const ScheduleRoute({List<_i21.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return const _i18.SchedulePage(); + return const _i19.SchedulePage(); }, ); } /// generated route for -/// [_i19.SplashPage] -class SplashRoute extends _i20.PageRouteInfo { - const SplashRoute({List<_i20.PageRouteInfo>? children}) +/// [_i20.SplashPage] +class SplashRoute extends _i21.PageRouteInfo { + const SplashRoute({List<_i21.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i20.PageInfo page = _i20.PageInfo( + static _i21.PageInfo page = _i21.PageInfo( name, builder: (data) { - return const _i19.SplashPage(); + return const _i20.SplashPage(); }, ); } From 5b91b5978f0c55bb0cea5101949853c194876156 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 11:42:26 +0700 Subject: [PATCH 077/108] feat: order range date filter --- .../order/order_loader/order_loader_bloc.dart | 7 +- .../order_loader_bloc.freezed.dart | 271 +++++++++++++++++- .../order_loader/order_loader_event.dart | 4 + .../order_loader/order_loader_state.dart | 13 +- .../repositories/i_order_repository.dart | 2 + .../datasource/remote_data_provider.dart | 10 +- .../order/repositories/order_repository.dart | 4 + .../pages/order/order_list/order_page.dart | 146 ++++------ .../widgets/filter_header_delegate.dart | 99 +++++++ 9 files changed, 446 insertions(+), 110 deletions(-) create mode 100644 lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart diff --git a/lib/application/order/order_loader/order_loader_bloc.dart b/lib/application/order/order_loader/order_loader_bloc.dart index ee3589a..5c2777b 100644 --- a/lib/application/order/order_loader/order_loader_bloc.dart +++ b/lib/application/order/order_loader/order_loader_bloc.dart @@ -21,6 +21,9 @@ class OrderLoaderBloc extends Bloc { Emitter emit, ) { return event.map( + rangeDateChanged: (e) async { + emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo)); + }, statusChanged: (e) async { emit(state.copyWith(status: e.status)); }, @@ -63,9 +66,11 @@ class OrderLoaderBloc extends Bloc { } final failureOrOrder = await _repository.get( - status: state.status, + status: state.status == 'all' ? null : state.status, page: state.page, search: state.search, + dateFrom: state.dateFrom, + dateTo: state.dateTo, ); state = failureOrOrder.fold( diff --git a/lib/application/order/order_loader/order_loader_bloc.freezed.dart b/lib/application/order/order_loader/order_loader_bloc.freezed.dart index 4aed4c0..185cea5 100644 --- a/lib/application/order/order_loader/order_loader_bloc.freezed.dart +++ b/lib/application/order/order_loader/order_loader_bloc.freezed.dart @@ -19,18 +19,22 @@ final _privateConstructorUsedError = UnsupportedError( mixin _$OrderLoaderEvent { @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, required TResult Function(bool isRefresh) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, TResult? Function(bool isRefresh)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, TResult Function(bool isRefresh)? fetched, @@ -38,18 +42,21 @@ mixin _$OrderLoaderEvent { }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, required TResult Function(_Fetched value) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, TResult? Function(_Fetched value)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, TResult Function(_Fetched value)? fetched, @@ -79,6 +86,176 @@ class _$OrderLoaderEventCopyWithImpl<$Res, $Val extends OrderLoaderEvent> /// with the given fields replaced by the non-null parameter values. } +/// @nodoc +abstract class _$$RangeDateChangedImplCopyWith<$Res> { + factory _$$RangeDateChangedImplCopyWith( + _$RangeDateChangedImpl value, + $Res Function(_$RangeDateChangedImpl) then, + ) = __$$RangeDateChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$RangeDateChangedImplCopyWithImpl<$Res> + extends _$OrderLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl> + implements _$$RangeDateChangedImplCopyWith<$Res> { + __$$RangeDateChangedImplCopyWithImpl( + _$RangeDateChangedImpl _value, + $Res Function(_$RangeDateChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$RangeDateChangedImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$RangeDateChangedImpl implements _RangeDateChanged { + const _$RangeDateChangedImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'OrderLoaderEvent.rangeDateChanged(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$RangeDateChangedImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + __$$RangeDateChangedImplCopyWithImpl<_$RangeDateChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function(String status) statusChanged, + required TResult Function(String search) searchChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return rangeDateChanged(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function(String status)? statusChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return rangeDateChanged?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult Function(String status)? statusChanged, + TResult Function(String search)? searchChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, + required TResult Function(_StatusChanged value) statusChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_Fetched value) fetched, + }) { + return rangeDateChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, + TResult? Function(_StatusChanged value)? statusChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return rangeDateChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, + TResult Function(_StatusChanged value)? statusChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (rangeDateChanged != null) { + return rangeDateChanged(this); + } + return orElse(); + } +} + +abstract class _RangeDateChanged implements OrderLoaderEvent { + const factory _RangeDateChanged( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$RangeDateChangedImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$StatusChangedImplCopyWith<$Res> { factory _$$StatusChangedImplCopyWith( @@ -149,6 +326,8 @@ class _$StatusChangedImpl implements _StatusChanged { @override @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, required TResult Function(bool isRefresh) fetched, @@ -159,6 +338,7 @@ class _$StatusChangedImpl implements _StatusChanged { @override @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, TResult? Function(bool isRefresh)? fetched, @@ -169,6 +349,7 @@ class _$StatusChangedImpl implements _StatusChanged { @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, TResult Function(bool isRefresh)? fetched, @@ -183,6 +364,7 @@ class _$StatusChangedImpl implements _StatusChanged { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, required TResult Function(_Fetched value) fetched, @@ -193,6 +375,7 @@ class _$StatusChangedImpl implements _StatusChanged { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, TResult? Function(_Fetched value)? fetched, @@ -203,6 +386,7 @@ class _$StatusChangedImpl implements _StatusChanged { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, TResult Function(_Fetched value)? fetched, @@ -297,6 +481,8 @@ class _$SearchChangedImpl implements _SearchChanged { @override @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, required TResult Function(bool isRefresh) fetched, @@ -307,6 +493,7 @@ class _$SearchChangedImpl implements _SearchChanged { @override @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, TResult? Function(bool isRefresh)? fetched, @@ -317,6 +504,7 @@ class _$SearchChangedImpl implements _SearchChanged { @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, TResult Function(bool isRefresh)? fetched, @@ -331,6 +519,7 @@ class _$SearchChangedImpl implements _SearchChanged { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, required TResult Function(_Fetched value) fetched, @@ -341,6 +530,7 @@ class _$SearchChangedImpl implements _SearchChanged { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, TResult? Function(_Fetched value)? fetched, @@ -351,6 +541,7 @@ class _$SearchChangedImpl implements _SearchChanged { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, TResult Function(_Fetched value)? fetched, @@ -447,6 +638,8 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, required TResult Function(bool isRefresh) fetched, @@ -457,6 +650,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, TResult? Function(bool isRefresh)? fetched, @@ -467,6 +661,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, TResult Function(bool isRefresh)? fetched, @@ -481,6 +676,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, required TResult Function(_Fetched value) fetched, @@ -491,6 +687,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, TResult? Function(_Fetched value)? fetched, @@ -501,6 +698,7 @@ class _$FetchedImpl implements _Fetched { @override @optionalTypeArgs TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, TResult Function(_Fetched value)? fetched, @@ -530,11 +728,13 @@ mixin _$OrderLoaderState { List get orders => throw _privateConstructorUsedError; Option get failureOptionOrder => throw _privateConstructorUsedError; - String? get status => throw _privateConstructorUsedError; + String get status => throw _privateConstructorUsedError; String? get search => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; bool get hasReachedMax => throw _privateConstructorUsedError; int get page => throw _privateConstructorUsedError; + DateTime get dateFrom => throw _privateConstructorUsedError; + DateTime get dateTo => throw _privateConstructorUsedError; /// Create a copy of OrderLoaderState /// with the given fields replaced by the non-null parameter values. @@ -553,11 +753,13 @@ abstract class $OrderLoaderStateCopyWith<$Res> { $Res call({ List orders, Option failureOptionOrder, - String? status, + String status, String? search, bool isFetching, bool hasReachedMax, int page, + DateTime dateFrom, + DateTime dateTo, }); } @@ -578,11 +780,13 @@ class _$OrderLoaderStateCopyWithImpl<$Res, $Val extends OrderLoaderState> $Res call({ Object? orders = null, Object? failureOptionOrder = null, - Object? status = freezed, + Object? status = null, Object? search = freezed, Object? isFetching = null, Object? hasReachedMax = null, Object? page = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _value.copyWith( @@ -594,10 +798,10 @@ class _$OrderLoaderStateCopyWithImpl<$Res, $Val extends OrderLoaderState> ? _value.failureOptionOrder : failureOptionOrder // ignore: cast_nullable_to_non_nullable as Option, - status: freezed == status + status: null == status ? _value.status : status // ignore: cast_nullable_to_non_nullable - as String?, + as String, search: freezed == search ? _value.search : search // ignore: cast_nullable_to_non_nullable @@ -614,6 +818,14 @@ class _$OrderLoaderStateCopyWithImpl<$Res, $Val extends OrderLoaderState> ? _value.page : page // ignore: cast_nullable_to_non_nullable as int, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ) as $Val, ); @@ -632,11 +844,13 @@ abstract class _$$OrderLoaderStateImplCopyWith<$Res> $Res call({ List orders, Option failureOptionOrder, - String? status, + String status, String? search, bool isFetching, bool hasReachedMax, int page, + DateTime dateFrom, + DateTime dateTo, }); } @@ -656,11 +870,13 @@ class __$$OrderLoaderStateImplCopyWithImpl<$Res> $Res call({ Object? orders = null, Object? failureOptionOrder = null, - Object? status = freezed, + Object? status = null, Object? search = freezed, Object? isFetching = null, Object? hasReachedMax = null, Object? page = null, + Object? dateFrom = null, + Object? dateTo = null, }) { return _then( _$OrderLoaderStateImpl( @@ -672,10 +888,10 @@ class __$$OrderLoaderStateImplCopyWithImpl<$Res> ? _value.failureOptionOrder : failureOptionOrder // ignore: cast_nullable_to_non_nullable as Option, - status: freezed == status + status: null == status ? _value.status : status // ignore: cast_nullable_to_non_nullable - as String?, + as String, search: freezed == search ? _value.search : search // ignore: cast_nullable_to_non_nullable @@ -692,6 +908,14 @@ class __$$OrderLoaderStateImplCopyWithImpl<$Res> ? _value.page : page // ignore: cast_nullable_to_non_nullable as int, + dateFrom: null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + dateTo: null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, ), ); } @@ -703,11 +927,13 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { const _$OrderLoaderStateImpl({ required final List orders, required this.failureOptionOrder, - this.status, + required this.status, this.search, this.isFetching = false, this.hasReachedMax = false, this.page = 1, + required this.dateFrom, + required this.dateTo, }) : _orders = orders; final List _orders; @@ -721,7 +947,7 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { @override final Option failureOptionOrder; @override - final String? status; + final String status; @override final String? search; @override @@ -733,10 +959,14 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { @override @JsonKey() final int page; + @override + final DateTime dateFrom; + @override + final DateTime dateTo; @override String toString() { - return 'OrderLoaderState(orders: $orders, failureOptionOrder: $failureOptionOrder, status: $status, search: $search, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page)'; + return 'OrderLoaderState(orders: $orders, failureOptionOrder: $failureOptionOrder, status: $status, search: $search, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -753,7 +983,10 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { other.isFetching == isFetching) && (identical(other.hasReachedMax, hasReachedMax) || other.hasReachedMax == hasReachedMax) && - (identical(other.page, page) || other.page == page)); + (identical(other.page, page) || other.page == page) && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); } @override @@ -766,6 +999,8 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { isFetching, hasReachedMax, page, + dateFrom, + dateTo, ); /// Create a copy of OrderLoaderState @@ -784,11 +1019,13 @@ abstract class _OrderLoaderState implements OrderLoaderState { const factory _OrderLoaderState({ required final List orders, required final Option failureOptionOrder, - final String? status, + required final String status, final String? search, final bool isFetching, final bool hasReachedMax, final int page, + required final DateTime dateFrom, + required final DateTime dateTo, }) = _$OrderLoaderStateImpl; @override @@ -796,7 +1033,7 @@ abstract class _OrderLoaderState implements OrderLoaderState { @override Option get failureOptionOrder; @override - String? get status; + String get status; @override String? get search; @override @@ -805,6 +1042,10 @@ abstract class _OrderLoaderState implements OrderLoaderState { bool get hasReachedMax; @override int get page; + @override + DateTime get dateFrom; + @override + DateTime get dateTo; /// Create a copy of OrderLoaderState /// with the given fields replaced by the non-null parameter values. diff --git a/lib/application/order/order_loader/order_loader_event.dart b/lib/application/order/order_loader/order_loader_event.dart index 6b83945..307589b 100644 --- a/lib/application/order/order_loader/order_loader_event.dart +++ b/lib/application/order/order_loader/order_loader_event.dart @@ -2,6 +2,10 @@ part of 'order_loader_bloc.dart'; @freezed class OrderLoaderEvent with _$OrderLoaderEvent { + const factory OrderLoaderEvent.rangeDateChanged( + DateTime dateFrom, + DateTime dateTo, + ) = _RangeDateChanged; const factory OrderLoaderEvent.statusChanged(String status) = _StatusChanged; const factory OrderLoaderEvent.searchChanged(String search) = _SearchChanged; const factory OrderLoaderEvent.fetched({@Default(false) bool isRefresh}) = diff --git a/lib/application/order/order_loader/order_loader_state.dart b/lib/application/order/order_loader/order_loader_state.dart index 55e072a..cd0802a 100644 --- a/lib/application/order/order_loader/order_loader_state.dart +++ b/lib/application/order/order_loader/order_loader_state.dart @@ -5,13 +5,20 @@ class OrderLoaderState with _$OrderLoaderState { const factory OrderLoaderState({ required List orders, required Option failureOptionOrder, - String? status, + required String status, String? search, @Default(false) bool isFetching, @Default(false) bool hasReachedMax, @Default(1) int page, + required DateTime dateFrom, + required DateTime dateTo, }) = _OrderLoaderState; - factory OrderLoaderState.initial() => - OrderLoaderState(orders: [], failureOptionOrder: none()); + factory OrderLoaderState.initial() => OrderLoaderState( + orders: [], + failureOptionOrder: none(), + dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateTo: DateTime.now(), + status: 'all', + ); } diff --git a/lib/domain/order/repositories/i_order_repository.dart b/lib/domain/order/repositories/i_order_repository.dart index f36b198..8e3d008 100644 --- a/lib/domain/order/repositories/i_order_repository.dart +++ b/lib/domain/order/repositories/i_order_repository.dart @@ -6,5 +6,7 @@ abstract class IOrderRepository { int limit = 10, String? status, String? search, + required DateTime dateFrom, + required DateTime dateTo, }); } diff --git a/lib/infrastructure/order/datasource/remote_data_provider.dart b/lib/infrastructure/order/datasource/remote_data_provider.dart index bd787c7..834ac05 100644 --- a/lib/infrastructure/order/datasource/remote_data_provider.dart +++ b/lib/infrastructure/order/datasource/remote_data_provider.dart @@ -5,6 +5,7 @@ import 'package:injectable/injectable.dart'; import '../../../common/api/api_client.dart'; import '../../../common/api/api_failure.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/function/app_function.dart'; import '../../../common/url/api_path.dart'; import '../../../domain/order/order.dart'; @@ -22,9 +23,16 @@ class OrderRemoteDataProvider { int limit = 10, String? status, String? search, + required DateTime dateFrom, + required DateTime dateTo, }) async { try { - Map params = {'page': page, 'limit': limit}; + Map params = { + 'page': page, + 'limit': limit, + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }; if (status != null && status.isNotEmpty) { params['status'] = status; diff --git a/lib/infrastructure/order/repositories/order_repository.dart b/lib/infrastructure/order/repositories/order_repository.dart index a80a321..bac3e8c 100644 --- a/lib/infrastructure/order/repositories/order_repository.dart +++ b/lib/infrastructure/order/repositories/order_repository.dart @@ -19,6 +19,8 @@ class OrderRepository implements IOrderRepository { int limit = 20, String? status, String? search, + required DateTime dateFrom, + required DateTime dateTo, }) async { try { final result = await _dataProvider.fetch( @@ -26,6 +28,8 @@ class OrderRepository implements IOrderRepository { limit: limit, status: status, search: search, + dateFrom: dateFrom, + dateTo: dateTo, ); if (result.hasError) { diff --git a/lib/presentation/pages/order/order_list/order_page.dart b/lib/presentation/pages/order/order_list/order_page.dart index 341e662..93f8e7b 100644 --- a/lib/presentation/pages/order/order_list/order_page.dart +++ b/lib/presentation/pages/order/order_list/order_page.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -11,7 +13,7 @@ import '../../../components/button/button.dart'; import '../../../components/spacer/spacer.dart'; import '../../../components/widgets/empty_widget.dart'; import '../../../router/app_router.gr.dart'; -import 'widgets/status_tile.dart'; +import 'widgets/filter_header_delegate.dart'; import 'widgets/order_tile.dart'; @RoutePage() @@ -38,7 +40,6 @@ class _OrderPageState extends State with TickerProviderStateMixin { final ScrollController _scrollController = ScrollController(); // Filter state - String selectedFilter = 'All'; final List filterOptions = ['All', 'Completed', 'Pending']; @override @@ -79,13 +80,27 @@ class _OrderPageState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: BlocListener( - listenWhen: (p, c) => p.status != c.status, - listener: (context, state) { - context.read().add( - OrderLoaderEvent.fetched(isRefresh: true), - ); - }, + body: MultiBlocListener( + listeners: [ + BlocListener( + listenWhen: (p, c) => p.status != c.status, + listener: (context, state) { + context.read().add( + OrderLoaderEvent.fetched(isRefresh: true), + ); + }, + ), + BlocListener( + listenWhen: (previous, current) => + previous.dateFrom != current.dateFrom || + previous.dateTo != current.dateTo, + listener: (context, state) { + context.read().add( + OrderLoaderEvent.fetched(isRefresh: true), + ); + }, + ), + ], child: BlocBuilder( builder: (context, state) { return NotificationListener( @@ -120,60 +135,36 @@ class _OrderPageState extends State with TickerProviderStateMixin { // Pinned Filter Section SliverPersistentHeader( pinned: true, - delegate: _FilterHeaderDelegate( - child: Container( - color: AppColor.background, - padding: EdgeInsets.fromLTRB( - AppValue.padding, - 10, - AppValue.padding, - 10, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: filterOptions.map((option) { - final index = filterOptions.indexOf(option); - return Padding( - padding: EdgeInsets.only( - right: index < filterOptions.length - 1 - ? 8 - : 0, - ), - child: OrderStatusTile( - label: option, - isSelected: option == selectedFilter, - onSelected: (isSelected) { - if (isSelected) { - setState(() { - selectedFilter = option; - }); - if (option.toLowerCase() == 'all') { - context.read().add( - OrderLoaderEvent.statusChanged( - '', - ), - ); - } else { - context.read().add( - OrderLoaderEvent.statusChanged( - option.toLowerCase(), - ), - ); - } - } - }, - ), - ); - }).toList(), - ), - ), - ], - ), + delegate: FilterHeaderDelegate( + backgroundColor: AppColor.background, + padding: EdgeInsets.fromLTRB( + AppValue.padding, + 10, + AppValue.padding, + 10, ), + startDate: state.dateFrom, + endDate: state.dateTo, + filterOptions: filterOptions, + selectedFilter: state.status, + onDateChanged: (startDate, endDate) { + if (startDate != null && endDate != null) { + log('Date changed'); + context.read().add( + OrderLoaderEvent.rangeDateChanged( + startDate, + endDate, + ), + ); + } + }, + onFilterChanged: (filter) { + final status = filter.toLowerCase(); + + context.read().add( + OrderLoaderEvent.statusChanged(status), + ); + }, ), ), @@ -189,13 +180,13 @@ class _OrderPageState extends State with TickerProviderStateMixin { child: Column( children: [ // Show filtered transaction count - if (selectedFilter != 'All') + if (state.status != 'all') Padding( padding: const EdgeInsets.only(bottom: 16), child: Row( children: [ Text( - '${state.orders.length} ${selectedFilter.toLowerCase()} order${state.orders.length != 1 ? 's' : ''}', + '${state.orders.length} ${state.status.toLowerCase()} order${state.orders.length != 1 ? 's' : ''}', style: TextStyle( color: AppColor.textSecondary, fontSize: 14, @@ -210,7 +201,7 @@ class _OrderPageState extends State with TickerProviderStateMixin { ? EmptyWidget( title: 'Order', message: - 'No ${selectedFilter.toLowerCase()} orders found', + 'No ${state.status.toLowerCase()} orders found', ) : ListView.builder( itemCount: state.orders.length, @@ -247,28 +238,3 @@ class _OrderPageState extends State with TickerProviderStateMixin { } // Custom delegate for pinned filter header -class _FilterHeaderDelegate extends SliverPersistentHeaderDelegate { - final Widget child; - - _FilterHeaderDelegate({required this.child}); - - @override - double get minExtent => 70; // Minimum height when collapsed - - @override - double get maxExtent => 70; // Maximum height when expanded - - @override - Widget build( - BuildContext context, - double shrinkOffset, - bool overlapsContent, - ) { - return child; - } - - @override - bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) { - return false; - } -} diff --git a/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart b/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart new file mode 100644 index 0000000..1d562fb --- /dev/null +++ b/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; + +import '../../../../components/field/date_range_picker_field.dart'; +import 'status_tile.dart'; + +class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { + final Color backgroundColor; + final EdgeInsets padding; + final DateTime? startDate; + final DateTime? endDate; + final List filterOptions; + final String selectedFilter; + final Function(DateTime?, DateTime?) onDateChanged; + final Function(String) onFilterChanged; + + FilterHeaderDelegate({ + required this.backgroundColor, + required this.padding, + required this.startDate, + required this.endDate, + required this.filterOptions, + required this.selectedFilter, + required this.onDateChanged, + required this.onFilterChanged, + }); + + @override + double get minExtent => 130; + + @override + double get maxExtent => 130; + + @override + Widget build( + BuildContext context, + double shrinkOffset, + bool overlapsContent, + ) { + print('FilterHeaderDelegate build called'); // Debug log + return Container( + color: backgroundColor, + padding: padding, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: DateRangePickerField( + maxDate: DateTime.now(), + startDate: startDate, + endDate: endDate, + onChanged: (start, end) { + print( + 'onChanged called in FilterHeaderDelegate: $start - $end', + ); // Debug log + onDateChanged(start, end); + }, + ), + ), + Expanded( + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: filterOptions.asMap().entries.map((entry) { + final index = entry.key; + final option = entry.value; + + return Padding( + padding: EdgeInsets.only( + right: index < filterOptions.length - 1 ? 8 : 0, + ), + child: OrderStatusTile( + label: option, + isSelected: option == selectedFilter, + onSelected: (isSelected) { + if (isSelected) { + onFilterChanged(option); + } + }, + ), + ); + }).toList(), + ), + ), + ), + ], + ), + ); + } + + @override + bool shouldRebuild(covariant FilterHeaderDelegate oldDelegate) { + return oldDelegate.startDate != startDate || + oldDelegate.endDate != endDate || + oldDelegate.selectedFilter != selectedFilter || + oldDelegate.filterOptions.length != filterOptions.length || + oldDelegate.backgroundColor != backgroundColor; + } +} From 9b51bf2beec9abd033f25c86af2badcf196db45c Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 11:44:50 +0700 Subject: [PATCH 078/108] feat: order shimmer --- .../pages/order/order_list/order_page.dart | 152 +++++++++++++++--- 1 file changed, 126 insertions(+), 26 deletions(-) diff --git a/lib/presentation/pages/order/order_list/order_page.dart b/lib/presentation/pages/order/order_list/order_page.dart index 93f8e7b..8e00948 100644 --- a/lib/presentation/pages/order/order_list/order_page.dart +++ b/lib/presentation/pages/order/order_list/order_page.dart @@ -4,6 +4,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import 'package:shimmer/shimmer.dart'; import '../../../../application/order/order_loader/order_loader_bloc.dart'; import '../../../../common/theme/theme.dart'; @@ -76,6 +77,104 @@ class _OrderPageState extends State with TickerProviderStateMixin { super.dispose(); } + Widget _buildShimmerOrderCard() { + return Shimmer.fromColors( + baseColor: Colors.grey[300]!, + highlightColor: Colors.grey[100]!, + child: Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + width: 120, + height: 16, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + Container( + width: 60, + height: 20, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + ), + ), + ], + ), + const SizedBox(height: 8), + Container( + width: double.infinity, + height: 14, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + const SizedBox(height: 6), + Container( + width: 200, + height: 14, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + width: 80, + height: 14, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + Container( + width: 100, + height: 16, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(4), + ), + ), + ], + ), + ], + ), + ), + ); + } + + Widget _buildShimmerList() { + return ListView.builder( + itemCount: 5, // Show 5 shimmer cards + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + itemBuilder: (context, index) => _buildShimmerOrderCard(), + ); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -180,7 +279,7 @@ class _OrderPageState extends State with TickerProviderStateMixin { child: Column( children: [ // Show filtered transaction count - if (state.status != 'all') + if (state.status != 'all' && !state.isFetching) Padding( padding: const EdgeInsets.only(bottom: 16), child: Row( @@ -196,30 +295,33 @@ class _OrderPageState extends State with TickerProviderStateMixin { ), ), - // Transaction List - state.orders.isEmpty - ? EmptyWidget( - title: 'Order', - message: - 'No ${state.status.toLowerCase()} orders found', - ) - : ListView.builder( - itemCount: state.orders.length, - shrinkWrap: true, - physics: - const NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - itemBuilder: (context, index) { - return OrderTile( - onTap: () => context.router.push( - OrderDetailRoute( - order: state.orders[index], - ), - ), + // Order List with Shimmer Loading + if (state.isFetching) + _buildShimmerList() + else if (state.orders.isEmpty) + EmptyWidget( + title: 'Order', + message: + 'No ${state.status.toLowerCase()} orders found', + ) + else + ListView.builder( + itemCount: state.orders.length, + shrinkWrap: true, + physics: + const NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + itemBuilder: (context, index) { + return OrderTile( + onTap: () => context.router.push( + OrderDetailRoute( order: state.orders[index], - ); - }, - ), + ), + ), + order: state.orders[index], + ); + }, + ), ], ), ), @@ -236,5 +338,3 @@ class _OrderPageState extends State with TickerProviderStateMixin { ); } } - -// Custom delegate for pinned filter header From b731704a3dfddc80f349959650d84d5c8b25144b Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 12:23:53 +0700 Subject: [PATCH 079/108] feat: home bloc --- lib/application/home/home_bloc.dart | 38 ++ lib/application/home/home_bloc.freezed.dart | 370 ++++++++++++++++++ lib/application/home/home_event.dart | 6 + lib/application/home/home_state.dart | 15 + lib/injection.config.dart | 4 + lib/presentation/pages/home/home_page.dart | 218 ++++++----- .../pages/home/widgets/activity.dart | 95 ----- .../pages/home/widgets/activity_tile.dart | 103 ----- .../pages/home/widgets/header.dart | 5 +- .../pages/home/widgets/performance.dart | 281 ------------- .../pages/home/widgets/stats.dart | 96 ++--- .../pages/home/widgets/stats_tile.dart | 16 - .../pages/home/widgets/title.dart | 25 ++ .../pages/home/widgets/top_product.dart | 39 ++ .../pages/home/widgets/top_product_tile.dart | 287 ++++++++++++++ 15 files changed, 934 insertions(+), 664 deletions(-) create mode 100644 lib/application/home/home_bloc.dart create mode 100644 lib/application/home/home_bloc.freezed.dart create mode 100644 lib/application/home/home_event.dart create mode 100644 lib/application/home/home_state.dart delete mode 100644 lib/presentation/pages/home/widgets/activity.dart delete mode 100644 lib/presentation/pages/home/widgets/activity_tile.dart delete mode 100644 lib/presentation/pages/home/widgets/performance.dart create mode 100644 lib/presentation/pages/home/widgets/title.dart create mode 100644 lib/presentation/pages/home/widgets/top_product.dart create mode 100644 lib/presentation/pages/home/widgets/top_product_tile.dart diff --git a/lib/application/home/home_bloc.dart b/lib/application/home/home_bloc.dart new file mode 100644 index 0000000..fc0e385 --- /dev/null +++ b/lib/application/home/home_bloc.dart @@ -0,0 +1,38 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../domain/analytic/analytic.dart'; +import '../../domain/analytic/repositories/i_analytic_repository.dart'; + +part 'home_event.dart'; +part 'home_state.dart'; +part 'home_bloc.freezed.dart'; + +@injectable +class HomeBloc extends Bloc { + final IAnalyticRepository _analyticRepository; + HomeBloc(this._analyticRepository) : super(HomeState.initial()) { + on(_onHomeEvent); + } + Future _onHomeEvent(HomeEvent event, Emitter emit) { + return event.map( + fetchedDashboard: (e) async { + emit(state.copyWith(isFetching: true, failureOptionDashboard: none())); + + final result = await _analyticRepository.getDashboard( + dateFrom: DateTime.now(), + dateTo: DateTime.now(), + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionDashboard: optionOf(f)), + (dashboard) => state.copyWith(dashboard: dashboard), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/home/home_bloc.freezed.dart b/lib/application/home/home_bloc.freezed.dart new file mode 100644 index 0000000..6ad0699 --- /dev/null +++ b/lib/application/home/home_bloc.freezed.dart @@ -0,0 +1,370 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'home_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$HomeEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedDashboard, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedDashboard, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedDashboard, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedDashboard value) fetchedDashboard, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedDashboard value)? fetchedDashboard, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedDashboard value)? fetchedDashboard, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $HomeEventCopyWith<$Res> { + factory $HomeEventCopyWith(HomeEvent value, $Res Function(HomeEvent) then) = + _$HomeEventCopyWithImpl<$Res, HomeEvent>; +} + +/// @nodoc +class _$HomeEventCopyWithImpl<$Res, $Val extends HomeEvent> + implements $HomeEventCopyWith<$Res> { + _$HomeEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of HomeEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedDashboardImplCopyWith<$Res> { + factory _$$FetchedDashboardImplCopyWith( + _$FetchedDashboardImpl value, + $Res Function(_$FetchedDashboardImpl) then, + ) = __$$FetchedDashboardImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedDashboardImplCopyWithImpl<$Res> + extends _$HomeEventCopyWithImpl<$Res, _$FetchedDashboardImpl> + implements _$$FetchedDashboardImplCopyWith<$Res> { + __$$FetchedDashboardImplCopyWithImpl( + _$FetchedDashboardImpl _value, + $Res Function(_$FetchedDashboardImpl) _then, + ) : super(_value, _then); + + /// Create a copy of HomeEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedDashboardImpl implements _FetchedDashboard { + const _$FetchedDashboardImpl(); + + @override + String toString() { + return 'HomeEvent.fetchedDashboard()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedDashboardImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedDashboard, + }) { + return fetchedDashboard(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedDashboard, + }) { + return fetchedDashboard?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedDashboard, + required TResult orElse(), + }) { + if (fetchedDashboard != null) { + return fetchedDashboard(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedDashboard value) fetchedDashboard, + }) { + return fetchedDashboard(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedDashboard value)? fetchedDashboard, + }) { + return fetchedDashboard?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedDashboard value)? fetchedDashboard, + required TResult orElse(), + }) { + if (fetchedDashboard != null) { + return fetchedDashboard(this); + } + return orElse(); + } +} + +abstract class _FetchedDashboard implements HomeEvent { + const factory _FetchedDashboard() = _$FetchedDashboardImpl; +} + +/// @nodoc +mixin _$HomeState { + DashboardAnalytic get dashboard => throw _privateConstructorUsedError; + Option get failureOptionDashboard => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + + /// Create a copy of HomeState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $HomeStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $HomeStateCopyWith<$Res> { + factory $HomeStateCopyWith(HomeState value, $Res Function(HomeState) then) = + _$HomeStateCopyWithImpl<$Res, HomeState>; + @useResult + $Res call({ + DashboardAnalytic dashboard, + Option failureOptionDashboard, + bool isFetching, + }); + + $DashboardAnalyticCopyWith<$Res> get dashboard; +} + +/// @nodoc +class _$HomeStateCopyWithImpl<$Res, $Val extends HomeState> + implements $HomeStateCopyWith<$Res> { + _$HomeStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of HomeState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? dashboard = null, + Object? failureOptionDashboard = null, + Object? isFetching = null, + }) { + return _then( + _value.copyWith( + dashboard: null == dashboard + ? _value.dashboard + : dashboard // ignore: cast_nullable_to_non_nullable + as DashboardAnalytic, + failureOptionDashboard: null == failureOptionDashboard + ? _value.failureOptionDashboard + : failureOptionDashboard // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of HomeState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $DashboardAnalyticCopyWith<$Res> get dashboard { + return $DashboardAnalyticCopyWith<$Res>(_value.dashboard, (value) { + return _then(_value.copyWith(dashboard: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$HomeStateImplCopyWith<$Res> + implements $HomeStateCopyWith<$Res> { + factory _$$HomeStateImplCopyWith( + _$HomeStateImpl value, + $Res Function(_$HomeStateImpl) then, + ) = __$$HomeStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + DashboardAnalytic dashboard, + Option failureOptionDashboard, + bool isFetching, + }); + + @override + $DashboardAnalyticCopyWith<$Res> get dashboard; +} + +/// @nodoc +class __$$HomeStateImplCopyWithImpl<$Res> + extends _$HomeStateCopyWithImpl<$Res, _$HomeStateImpl> + implements _$$HomeStateImplCopyWith<$Res> { + __$$HomeStateImplCopyWithImpl( + _$HomeStateImpl _value, + $Res Function(_$HomeStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of HomeState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? dashboard = null, + Object? failureOptionDashboard = null, + Object? isFetching = null, + }) { + return _then( + _$HomeStateImpl( + dashboard: null == dashboard + ? _value.dashboard + : dashboard // ignore: cast_nullable_to_non_nullable + as DashboardAnalytic, + failureOptionDashboard: null == failureOptionDashboard + ? _value.failureOptionDashboard + : failureOptionDashboard // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$HomeStateImpl implements _HomeState { + const _$HomeStateImpl({ + required this.dashboard, + required this.failureOptionDashboard, + this.isFetching = false, + }); + + @override + final DashboardAnalytic dashboard; + @override + final Option failureOptionDashboard; + @override + @JsonKey() + final bool isFetching; + + @override + String toString() { + return 'HomeState(dashboard: $dashboard, failureOptionDashboard: $failureOptionDashboard, isFetching: $isFetching)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$HomeStateImpl && + (identical(other.dashboard, dashboard) || + other.dashboard == dashboard) && + (identical(other.failureOptionDashboard, failureOptionDashboard) || + other.failureOptionDashboard == failureOptionDashboard) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching)); + } + + @override + int get hashCode => + Object.hash(runtimeType, dashboard, failureOptionDashboard, isFetching); + + /// Create a copy of HomeState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$HomeStateImplCopyWith<_$HomeStateImpl> get copyWith => + __$$HomeStateImplCopyWithImpl<_$HomeStateImpl>(this, _$identity); +} + +abstract class _HomeState implements HomeState { + const factory _HomeState({ + required final DashboardAnalytic dashboard, + required final Option failureOptionDashboard, + final bool isFetching, + }) = _$HomeStateImpl; + + @override + DashboardAnalytic get dashboard; + @override + Option get failureOptionDashboard; + @override + bool get isFetching; + + /// Create a copy of HomeState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$HomeStateImplCopyWith<_$HomeStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/home/home_event.dart b/lib/application/home/home_event.dart new file mode 100644 index 0000000..5f3909d --- /dev/null +++ b/lib/application/home/home_event.dart @@ -0,0 +1,6 @@ +part of 'home_bloc.dart'; + +@freezed +class HomeEvent with _$HomeEvent { + const factory HomeEvent.fetchedDashboard() = _FetchedDashboard; +} diff --git a/lib/application/home/home_state.dart b/lib/application/home/home_state.dart new file mode 100644 index 0000000..7b0901a --- /dev/null +++ b/lib/application/home/home_state.dart @@ -0,0 +1,15 @@ +part of 'home_bloc.dart'; + +@freezed +class HomeState with _$HomeState { + const factory HomeState({ + required DashboardAnalytic dashboard, + required Option failureOptionDashboard, + @Default(false) bool isFetching, + }) = _HomeState; + + factory HomeState.initial() => HomeState( + dashboard: DashboardAnalytic.empty(), + failureOptionDashboard: none(), + ); +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 4e24815..581d9e7 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -32,6 +32,7 @@ import 'package:apskel_owner_flutter/application/category/category_loader/catego as _i183; import 'package:apskel_owner_flutter/application/customer/customer_loader/customer_loader_bloc.dart' as _i972; +import 'package:apskel_owner_flutter/application/home/home_bloc.dart' as _i473; import 'package:apskel_owner_flutter/application/language/language_bloc.dart' as _i455; import 'package:apskel_owner_flutter/application/order/order_loader/order_loader_bloc.dart' @@ -200,6 +201,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i889.SalesLoaderBloc>( () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i473.HomeBloc>( + () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i337.CurrentOutletLoaderBloc>( () => _i337.CurrentOutletLoaderBloc(gh<_i197.IOutletRepository>()), ); diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 8eebf3e..78ba82e 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -1,22 +1,31 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../application/home/home_bloc.dart'; +import '../../../common/constant/app_constant.dart'; import '../../../common/theme/theme.dart'; +import '../../../injection.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; -import 'widgets/activity.dart'; import 'widgets/feature.dart'; import 'widgets/header.dart'; -import 'widgets/performance.dart'; import 'widgets/stats.dart'; +import 'widgets/top_product.dart'; @RoutePage() -class HomePage extends StatefulWidget { +class HomePage extends StatefulWidget implements AutoRouteWrapper { const HomePage({super.key}); @override State createState() => _HomePageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => getIt()..add(HomeEvent.fetchedDashboard()), + child: this, + ); } class _HomePageState extends State with TickerProviderStateMixin { @@ -58,106 +67,119 @@ class _HomePageState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: CustomScrollView( - physics: const BouncingScrollPhysics(parent: ClampingScrollPhysics()), - slivers: [ - // SliverAppBar with HomeHeader as background - SliverAppBar( - expandedHeight: 260, // Adjust based on HomeHeader height - floating: true, - pinned: true, - snap: true, - elevation: 0, - scrolledUnderElevation: 8, - backgroundColor: AppColor.primary, - surfaceTintColor: Colors.transparent, - flexibleSpace: LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) { - // Calculate collapse progress (0.0 = expanded, 1.0 = collapsed) - final double expandedHeight = 200; - final double collapsedHeight = - kToolbarHeight + MediaQuery.of(context).padding.top; - final double currentHeight = constraints.maxHeight; + body: BlocBuilder( + builder: (context, state) { + return CustomScrollView( + physics: const BouncingScrollPhysics( + parent: ClampingScrollPhysics(), + ), + slivers: [ + // SliverAppBar with HomeHeader as background + SliverAppBar( + expandedHeight: 260, // Adjust based on HomeHeader height + floating: true, + pinned: true, + snap: true, + elevation: 0, + scrolledUnderElevation: 8, + backgroundColor: AppColor.primary, + surfaceTintColor: Colors.transparent, + flexibleSpace: LayoutBuilder( + builder: (BuildContext context, BoxConstraints constraints) { + // Calculate collapse progress (0.0 = expanded, 1.0 = collapsed) + final double expandedHeight = 200; + final double collapsedHeight = + kToolbarHeight + MediaQuery.of(context).padding.top; + final double currentHeight = constraints.maxHeight; - double collapseProgress = - 1.0 - - ((currentHeight - collapsedHeight) / - (expandedHeight - collapsedHeight)); - collapseProgress = collapseProgress.clamp(0.0, 1.0); + double collapseProgress = + 1.0 - + ((currentHeight - collapsedHeight) / + (expandedHeight - collapsedHeight)); + collapseProgress = collapseProgress.clamp(0.0, 1.0); - return FlexibleSpaceBar( - title: Opacity( - opacity: collapseProgress, // Title muncul saat collapse - child: Row( - children: [ - Expanded( - child: Text( - 'AppSkel POS Owner', - style: AppStyle.xl.copyWith( - fontWeight: FontWeight.w700, - fontSize: 18, - letterSpacing: -0.5, - color: AppColor.white, + return FlexibleSpaceBar( + title: Opacity( + opacity: collapseProgress, // Title muncul saat collapse + child: Row( + children: [ + Expanded( + child: Text( + AppConstant.appName, + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.w700, + fontSize: 18, + letterSpacing: -0.5, + color: AppColor.white, + ), + ), ), - ), + ActionIconButton( + onTap: () {}, + icon: LineIcons.bell, + ), + ], ), - ActionIconButton(onTap: () {}, icon: LineIcons.bell), - ], - ), - ), - titlePadding: const EdgeInsets.only( - left: 20, - right: 12, - bottom: 16, - ), - background: AnimatedBuilder( - animation: _headerAnimationController, - builder: (context, child) { - return Transform.translate( - offset: Offset( - 0, - 50 * (1 - _headerAnimationController.value), - ), - child: Opacity( - opacity: _headerAnimationController.value, - child: HomeHeader(), - ), - ); - }, - ), - ); - }, - ), - ), + ), + titlePadding: const EdgeInsets.only( + left: 20, + right: 12, + bottom: 16, + ), + background: AnimatedBuilder( + animation: _headerAnimationController, + builder: (context, child) { + return Transform.translate( + offset: Offset( + 0, + 50 * (1 - _headerAnimationController.value), + ), + child: Opacity( + opacity: _headerAnimationController.value, + child: HomeHeader( + totalRevenue: + state.dashboard.overview.totalSales, + ), + ), + ); + }, + ), + ); + }, + ), + ), - // Main Content - SliverToBoxAdapter( - child: AnimatedBuilder( - animation: _contentAnimationController, - builder: (context, child) { - return Transform.translate( - offset: Offset( - 0, - 30 * (1 - _contentAnimationController.value), - ), - child: Opacity( - opacity: _contentAnimationController.value, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - HomeFeature(), - HomeStats(), - HomeActivity(), - HomePerformance(), - const SpaceHeight(40), - ], - ), - ), - ); - }, - ), - ), - ], + // Main Content + SliverToBoxAdapter( + child: AnimatedBuilder( + animation: _contentAnimationController, + builder: (context, child) { + return Transform.translate( + offset: Offset( + 0, + 30 * (1 - _contentAnimationController.value), + ), + child: Opacity( + opacity: _contentAnimationController.value, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HomeFeature(), + HomeStats(overview: state.dashboard.overview), + HomeTopProduct( + products: state.dashboard.topProducts, + ), + const SpaceHeight(40), + ], + ), + ), + ); + }, + ), + ), + ], + ); + }, ), ); } diff --git a/lib/presentation/pages/home/widgets/activity.dart b/lib/presentation/pages/home/widgets/activity.dart deleted file mode 100644 index dfa5b7e..0000000 --- a/lib/presentation/pages/home/widgets/activity.dart +++ /dev/null @@ -1,95 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; -import '../../../components/spacer/spacer.dart'; -import 'activity_tile.dart'; - -class HomeActivity extends StatelessWidget { - const HomeActivity({super.key}); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric( - vertical: 24, - horizontal: AppValue.padding, - ).copyWith(bottom: 0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - 'Aktivitas Terkini', - style: TextStyle( - fontSize: 22, - fontWeight: FontWeight.w700, - color: AppColor.textPrimary, - letterSpacing: -0.5, - ), - ), - TextButton.icon( - onPressed: () {}, - icon: const Icon(Icons.arrow_forward_rounded, size: 16), - label: const Text('Lihat Semua'), - style: TextButton.styleFrom( - foregroundColor: AppColor.primary, - textStyle: const TextStyle( - fontWeight: FontWeight.w600, - fontSize: 14, - ), - ), - ), - ], - ), - const SpaceHeight(16), - Container( - decoration: BoxDecoration( - color: AppColor.white, - borderRadius: BorderRadius.circular(16), - border: Border.all(color: AppColor.border.withOpacity(0.5)), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.04), - blurRadius: 20, - offset: const Offset(0, 8), - ), - ], - ), - child: Column( - children: [ - HomeActivityTile( - title: 'Transaksi Berhasil', - subtitle: 'Kasir-01 โ€ข Rp 125.000', - time: '2 menit lalu', - icon: Icons.check_circle_rounded, - color: AppColor.success, - isHighlighted: true, - ), - const Divider(height: 1, color: AppColor.border), - HomeActivityTile( - title: 'Stok Menipis', - subtitle: 'Kopi Arabica โ€ข 5 unit tersisa', - time: '15 menit lalu', - icon: Icons.warning_amber_rounded, - color: AppColor.warning, - isHighlighted: false, - ), - const Divider(height: 1, color: AppColor.border), - HomeActivityTile( - title: 'Login Kasir', - subtitle: 'Sari masuk shift pagi', - time: '1 Jam lalu', - icon: Icons.login_rounded, - color: AppColor.info, - isHighlighted: false, - ), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/home/widgets/activity_tile.dart b/lib/presentation/pages/home/widgets/activity_tile.dart deleted file mode 100644 index 75ec095..0000000 --- a/lib/presentation/pages/home/widgets/activity_tile.dart +++ /dev/null @@ -1,103 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; -import '../../../components/spacer/spacer.dart'; - -class HomeActivityTile extends StatelessWidget { - final String title; - final String subtitle; - final String time; - final IconData icon; - final Color color; - final bool isHighlighted; - const HomeActivityTile({ - super.key, - required this.title, - required this.subtitle, - required this.time, - required this.icon, - required this.color, - required this.isHighlighted, - }); - - @override - Widget build(BuildContext context) { - return Container( - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - color: isHighlighted ? color.withOpacity(0.02) : Colors.transparent, - borderRadius: isHighlighted ? BorderRadius.circular(16) : null, - ), - child: Row( - children: [ - Container( - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [color.withOpacity(0.1), color.withOpacity(0.05)], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(12), - border: Border.all(color: color.withOpacity(0.2), width: 1), - ), - child: Icon(icon, color: color, size: 20), - ), - const SpaceWidth(16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - title, - style: AppStyle.md.copyWith( - fontWeight: FontWeight.w600, - color: AppColor.textPrimary, - letterSpacing: -0.2, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - const SpaceHeight(4), - Text( - subtitle, - style: AppStyle.sm.copyWith( - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ], - ), - ), - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Text( - time, - style: AppStyle.xs.copyWith( - fontSize: 11, - color: AppColor.textLight, - fontWeight: FontWeight.w500, - ), - ), - if (isHighlighted) ...[ - const SpaceHeight(4), - Container( - width: 6, - height: 6, - decoration: BoxDecoration( - color: color, - shape: BoxShape.circle, - ), - ), - ], - ], - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart index dc74720..7139811 100644 --- a/lib/presentation/pages/home/widgets/header.dart +++ b/lib/presentation/pages/home/widgets/header.dart @@ -11,7 +11,8 @@ import '../../../../domain/auth/auth.dart'; import '../../../components/spacer/spacer.dart'; class HomeHeader extends StatefulWidget { - const HomeHeader({super.key}); + final int totalRevenue; + const HomeHeader({super.key, required this.totalRevenue}); @override State createState() => _HomeHeaderState(); @@ -467,7 +468,7 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ), const SizedBox(width: 6), Text( - '${context.lang.sales_today} +25%', + '${context.lang.sales_today} ${widget.totalRevenue.currencyFormatRp}', style: AppStyle.sm.copyWith( color: AppColor.white, fontWeight: FontWeight.w600, diff --git a/lib/presentation/pages/home/widgets/performance.dart b/lib/presentation/pages/home/widgets/performance.dart deleted file mode 100644 index f128625..0000000 --- a/lib/presentation/pages/home/widgets/performance.dart +++ /dev/null @@ -1,281 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../../common/theme/theme.dart'; -import '../../../components/spacer/spacer.dart'; - -class HomePerformance extends StatelessWidget { - const HomePerformance({super.key}); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric( - vertical: 24, - horizontal: AppValue.padding, - ).copyWith(bottom: 0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Performa Minggu Ini', - style: AppStyle.h6.copyWith( - fontWeight: FontWeight.w700, - color: AppColor.textPrimary, - letterSpacing: -0.5, - ), - ), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.success.withOpacity(0.1), - AppColor.success.withOpacity(0.05), - ], - ), - borderRadius: BorderRadius.circular(20), - border: Border.all( - color: AppColor.success.withOpacity(0.2), - width: 1, - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.arrow_upward_rounded, - color: AppColor.success, - size: 14, - ), - const SpaceWidth(4), - Text( - '89%', - style: AppStyle.sm.copyWith( - color: AppColor.success, - fontSize: 12, - fontWeight: FontWeight.w700, - ), - ), - ], - ), - ), - ], - ), - const SpaceHeight(20), - Container( - padding: const EdgeInsets.all(24), - decoration: BoxDecoration( - color: AppColor.white, - borderRadius: BorderRadius.circular(16), - border: Border.all(color: AppColor.border.withOpacity(0.5)), - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.04), - blurRadius: 20, - offset: const Offset(0, 8), - ), - ], - ), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _buildPerformanceBar( - 'Sen', - 0.8, - AppColor.primary, - 'Rp 2.1M', - ), - _buildPerformanceBar( - 'Sel', - 0.6, - AppColor.primary, - 'Rp 1.8M', - ), - _buildPerformanceBar( - 'Rab', - 0.9, - AppColor.success, - 'Rp 2.4M', - ), - _buildPerformanceBar( - 'Kam', - 0.7, - AppColor.primary, - 'Rp 1.9M', - ), - _buildPerformanceBar( - 'Jum', - 1.0, - AppColor.success, - 'Rp 2.5M', - ), - _buildPerformanceBar( - 'Sab', - 0.85, - AppColor.success, - 'Rp 2.2M', - ), - _buildPerformanceBar( - 'Min', - 0.4, - AppColor.textLight, - 'Rp 1.2M', - ), - ], - ), - const SpaceHeight(24), - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.primary.withOpacity(0.05), - AppColor.primary.withOpacity(0.02), - ], - ), - borderRadius: BorderRadius.circular(12), - border: Border.all( - color: AppColor.primary.withOpacity(0.1), - width: 1, - ), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Target Minggu Ini', - style: TextStyle( - fontSize: 12, - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - ), - ), - const SpaceHeight(4), - Text( - 'Rp 15.000.000', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w700, - color: AppColor.textPrimary, - ), - ), - ], - ), - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Text( - 'Tercapai', - style: TextStyle( - fontSize: 12, - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - ), - ), - const SpaceHeight(4), - Row( - children: [ - Text( - '89%', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w700, - color: AppColor.success, - ), - ), - const SpaceWidth(4), - Icon( - Icons.trending_up_rounded, - color: AppColor.success, - size: 16, - ), - ], - ), - ], - ), - ], - ), - ), - ], - ), - ), - ], - ), - ); - } - - Widget _buildPerformanceBar( - String day, - double percentage, - Color color, - String amount, - ) { - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - // Amount label - Text( - amount, - style: AppStyle.xs.copyWith( - fontSize: 10, - fontWeight: FontWeight.w600, - color: AppColor.textSecondary, - ), - ), - const SpaceHeight(8), - // Performance bar - Container( - height: 80, - width: 12, - decoration: BoxDecoration( - color: AppColor.border.withOpacity(0.3), - borderRadius: BorderRadius.circular(6), - ), - child: Align( - alignment: Alignment.bottomCenter, - child: AnimatedContainer( - duration: Duration(milliseconds: 800 + (day.hashCode % 400)), - curve: Curves.easeOutCubic, - height: 80 * percentage, - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [color, color.withOpacity(0.7)], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - borderRadius: BorderRadius.circular(6), - boxShadow: [ - BoxShadow( - color: color.withOpacity(0.3), - blurRadius: 4, - offset: const Offset(0, 2), - ), - ], - ), - ), - ), - ), - const SpaceHeight(12), - // Day label - Text( - day, - style: AppStyle.xs.copyWith( - color: AppColor.textSecondary, - fontWeight: FontWeight.w600, - ), - ), - ], - ); - } -} diff --git a/lib/presentation/pages/home/widgets/stats.dart b/lib/presentation/pages/home/widgets/stats.dart index 721b78e..6a1f612 100644 --- a/lib/presentation/pages/home/widgets/stats.dart +++ b/lib/presentation/pages/home/widgets/stats.dart @@ -1,11 +1,15 @@ import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; import 'stats_tile.dart'; +import 'title.dart'; class HomeStats extends StatelessWidget { - const HomeStats({super.key}); + final DashboardOverview overview; + const HomeStats({super.key, required this.overview}); @override Widget build(BuildContext context) { @@ -17,74 +21,30 @@ class HomeStats extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - 'Ringkasan Hari Ini', - style: AppStyle.h6.copyWith( - fontWeight: FontWeight.w700, - color: AppColor.textPrimary, - letterSpacing: -0.5, - ), - ), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - color: AppColor.success.withOpacity(0.1), - borderRadius: BorderRadius.circular(20), - border: Border.all( - color: AppColor.success.withOpacity(0.2), - width: 1, - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.trending_up_rounded, - color: AppColor.success, - size: 14, - ), - const SpaceWidth(4), - Text( - 'Live', - style: AppStyle.sm.copyWith( - color: AppColor.success, - fontWeight: FontWeight.w600, - ), - ), - ], - ), - ), - ], - ), + HomeTitle(title: 'Ringkasan Hari Ini'), const SpaceHeight(20), Row( children: [ Expanded( child: HomeStatsTile( - title: 'Total Penjualan', - value: 'Rp 2.450.000', - icon: Icons.trending_up_rounded, - color: AppColor.success, - change: '+12%', - subtitle: 'dari kemarin', + title: 'Pesanan', + value: overview.totalOrders.toString(), + icon: Icons.receipt_long_rounded, + color: AppColor.info, + subtitle: 'Hari ini', ), ), const SpaceWidth(16), Expanded( child: HomeStatsTile( - title: 'Transaksi', - value: '85', - icon: Icons.receipt_long_rounded, - color: AppColor.info, - change: '+8%', - subtitle: 'lebih tinggi', + title: 'Pelanggan Baru', + value: overview.totalCustomers.toString(), + icon: Icons.person_add_outlined, + color: AppColor.primary, + subtitle: overview.totalCustomers < 1 + ? 'Hari ini' + : 'bertambah', ), ), ], @@ -94,23 +54,21 @@ class HomeStats extends StatelessWidget { children: [ Expanded( child: HomeStatsTile( - title: 'Profit Bersih', - value: 'Rp 735.000', - icon: Icons.account_balance_wallet_rounded, + title: 'Refund', + value: overview.refundedOrders.toString(), + icon: LineIcons.alternateExchange, color: AppColor.warning, - change: '+15%', - subtitle: 'margin sehat', + subtitle: 'Hari ini', ), ), const SpaceWidth(16), Expanded( child: HomeStatsTile( - title: 'Pelanggan Baru', - value: '42', - icon: Icons.person_add_rounded, - color: AppColor.primary, - change: '+3%', - subtitle: 'bertambah', + title: 'Void', + value: overview.voidedOrders.toString(), + icon: Icons.cancel_rounded, + color: AppColor.error, + subtitle: 'Hari ini', ), ), ], diff --git a/lib/presentation/pages/home/widgets/stats_tile.dart b/lib/presentation/pages/home/widgets/stats_tile.dart index fa61461..054163b 100644 --- a/lib/presentation/pages/home/widgets/stats_tile.dart +++ b/lib/presentation/pages/home/widgets/stats_tile.dart @@ -8,7 +8,6 @@ class HomeStatsTile extends StatelessWidget { final String value; final IconData icon; final Color color; - final String change; final String subtitle; const HomeStatsTile({ super.key, @@ -16,7 +15,6 @@ class HomeStatsTile extends StatelessWidget { required this.value, required this.icon, required this.color, - required this.change, required this.subtitle, }); @@ -56,20 +54,6 @@ class HomeStatsTile extends StatelessWidget { ), child: Icon(icon, color: color, size: 20), ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - color: AppColor.success.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: Text( - change, - style: AppStyle.xs.copyWith( - color: AppColor.success, - fontWeight: FontWeight.w700, - ), - ), - ), ], ), const SpaceHeight(16), diff --git a/lib/presentation/pages/home/widgets/title.dart b/lib/presentation/pages/home/widgets/title.dart new file mode 100644 index 0000000..10cc2e8 --- /dev/null +++ b/lib/presentation/pages/home/widgets/title.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; + +class HomeTitle extends StatelessWidget { + final String title; + const HomeTitle({super.key, required this.title}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + title, + style: AppStyle.h6.copyWith( + fontWeight: FontWeight.w700, + color: AppColor.textPrimary, + letterSpacing: -0.5, + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/home/widgets/top_product.dart b/lib/presentation/pages/home/widgets/top_product.dart new file mode 100644 index 0000000..9e8f436 --- /dev/null +++ b/lib/presentation/pages/home/widgets/top_product.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; +import '../../../components/spacer/spacer.dart'; +import 'title.dart'; +import 'top_product_tile.dart'; + +class HomeTopProduct extends StatelessWidget { + final List products; + const HomeTopProduct({super.key, required this.products}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 24, + horizontal: AppValue.padding, + ).copyWith(bottom: 0), + child: Column( + children: [ + HomeTitle(title: 'Product Terlaris Hari Ini'), + SpaceHeight(20), + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: products.length, + itemBuilder: (context, index) { + return HomeTopProductTile( + product: products[index], + ranking: index + 1, + ); + }, + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/home/widgets/top_product_tile.dart b/lib/presentation/pages/home/widgets/top_product_tile.dart new file mode 100644 index 0000000..841d68e --- /dev/null +++ b/lib/presentation/pages/home/widgets/top_product_tile.dart @@ -0,0 +1,287 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/extension/extension.dart'; +import '../../../../common/theme/theme.dart'; +import '../../../../domain/analytic/analytic.dart'; + +class HomeTopProductTile extends StatelessWidget { + final DashboardTopProduct product; + final int ranking; + final VoidCallback? onTap; + + const HomeTopProductTile({ + super.key, + required this.product, + required this.ranking, + this.onTap, + }); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.only(bottom: 12), + child: Material( + elevation: 2, + borderRadius: BorderRadius.circular(16), + shadowColor: AppColor.primary.withOpacity(0.1), + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(16), + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [AppColor.white, AppColor.backgroundLight], + ), + border: Border.all(color: AppColor.borderLight, width: 1), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header Row - Ranking dan Revenue + Row( + children: [ + _buildRankingBadge(), + const Spacer(), + _buildRevenueDisplay(), + ], + ), + + const SizedBox(height: 12), + + // Product Name + Text( + product.productName, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textPrimary, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + + const SizedBox(height: 8), + + // Category + _buildCategoryChip(), + + const SizedBox(height: 12), + + // Metrics dalam Grid 2x2 + _buildMetricsGrid(), + ], + ), + ), + ), + ), + ); + } + + Widget _buildRankingBadge() { + Color badgeColor; + IconData icon; + + switch (ranking) { + case 1: + badgeColor = const Color(0xFFFFD700); // Gold + icon = Icons.emoji_events; + break; + case 2: + badgeColor = const Color(0xFFC0C0C0); // Silver + icon = Icons.emoji_events; + break; + case 3: + badgeColor = const Color(0xFFCD7F32); // Bronze + icon = Icons.emoji_events; + break; + default: + badgeColor = AppColor.primary; + icon = Icons.star; + } + + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: badgeColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: badgeColor.withOpacity(0.3), width: 1.5), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, color: badgeColor, size: 16), + const SizedBox(width: 6), + Text( + 'Rank #$ranking', + style: AppStyle.sm.copyWith( + color: badgeColor, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } + + Widget _buildCategoryChip() { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), + decoration: BoxDecoration( + color: AppColor.secondary.withOpacity(0.1), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColor.secondary.withOpacity(0.3), + width: 1, + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.category_outlined, size: 14, color: AppColor.secondary), + const SizedBox(width: 6), + Flexible( + child: Text( + product.categoryName, + style: AppStyle.sm.copyWith( + color: AppColor.secondary, + fontWeight: FontWeight.w500, + ), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + ); + } + + Widget _buildMetricsGrid() { + return Row( + children: [ + Expanded( + child: Column( + children: [ + _buildMetricCard( + icon: Icons.shopping_cart_outlined, + label: 'Quantity Sold', + value: product.quantitySold.toString(), + color: AppColor.info, + ), + const SizedBox(height: 8), + _buildMetricCard( + icon: Icons.attach_money, + label: 'Average Price', + value: product.averagePrice.round().currencyFormatRp, + color: AppColor.success, + ), + ], + ), + ), + const SizedBox(width: 8), + Expanded( + child: Column( + children: [ + _buildMetricCard( + icon: Icons.receipt_outlined, + label: 'Total Orders', + value: product.orderCount.toString(), + color: AppColor.warning, + ), + const SizedBox(height: 8), + _buildMetricCard( + icon: Icons.trending_up, + label: 'Performance', + value: 'Top $ranking', + color: AppColor.primary, + ), + ], + ), + ), + ], + ); + } + + Widget _buildMetricCard({ + required IconData icon, + required String label, + required String value, + required Color color, + }) { + return Container( + width: double.infinity, + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: color.withOpacity(0.05), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withOpacity(0.2), width: 1), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon(icon, size: 16, color: color), + const SizedBox(width: 6), + Expanded( + child: Text( + label, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + const SizedBox(height: 6), + Text( + value, + style: AppStyle.md.copyWith( + color: color, + fontWeight: FontWeight.bold, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ); + } + + Widget _buildRevenueDisplay() { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: AppColor.primaryGradient, + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + product.revenue.currencyFormatRp, + style: AppStyle.md.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } +} From 811ac4b202f863e4667fb125dbe72c1c1401a604 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 12:48:06 +0700 Subject: [PATCH 080/108] feat: comming page --- .../pages/coming_soon/coming_soon_page.dart | 186 +++++++++++ .../profile/widgets/business_setting.dart | 15 +- lib/presentation/router/app_router.dart | 9 +- lib/presentation/router/app_router.gr.dart | 302 ++++++++++-------- 4 files changed, 353 insertions(+), 159 deletions(-) create mode 100644 lib/presentation/pages/coming_soon/coming_soon_page.dart diff --git a/lib/presentation/pages/coming_soon/coming_soon_page.dart b/lib/presentation/pages/coming_soon/coming_soon_page.dart new file mode 100644 index 0000000..4215c2d --- /dev/null +++ b/lib/presentation/pages/coming_soon/coming_soon_page.dart @@ -0,0 +1,186 @@ +import 'package:flutter/material.dart'; +import 'package:auto_route/auto_route.dart'; + +import '../../../common/theme/theme.dart'; + +@RoutePage() +class ComingSoonPage extends StatefulWidget { + const ComingSoonPage({super.key}); + + @override + State createState() => _ComingSoonPageState(); +} + +class _ComingSoonPageState extends State + with TickerProviderStateMixin { + late AnimationController _fadeController; + late AnimationController _slideController; + late AnimationController _pulseController; + + late Animation _fadeAnimation; + late Animation _slideAnimation; + late Animation _pulseAnimation; + + @override + void initState() { + super.initState(); + + // Initialize animation controllers + _fadeController = AnimationController( + duration: const Duration(milliseconds: 1500), + vsync: this, + ); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 1200), + vsync: this, + ); + + _pulseController = AnimationController( + duration: const Duration(milliseconds: 2000), + vsync: this, + ); + + // Initialize animations + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.5), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.easeOutCubic), + ); + + _pulseAnimation = Tween(begin: 1.0, end: 1.1).animate( + CurvedAnimation(parent: _pulseController, curve: Curves.easeInOut), + ); + + // Start animations + _startAnimations(); + } + + void _startAnimations() { + _fadeController.forward(); + _slideController.forward(); + _pulseController.repeat(reverse: true); + } + + @override + void dispose() { + _fadeController.dispose(); + _slideController.dispose(); + _pulseController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Container( + width: double.infinity, + height: double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + AppColor.primary, + AppColor.primaryLight, + AppColor.primaryDark, + ], + stops: const [0.0, 0.5, 1.0], + ), + ), + child: SafeArea( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Animated Logo/Icon + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: _buildAnimatedLogo(), + ), + ), + + const SizedBox(height: 40), + + // Coming Soon Text + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Text( + 'Coming Soon', + style: AppStyle.h1.copyWith( + color: AppColor.textWhite, + fontWeight: FontWeight.bold, + fontSize: 42, + letterSpacing: 2.0, + ), + textAlign: TextAlign.center, + ), + ), + ), + + const SizedBox(height: 16), + + // Subtitle + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Text( + 'Something amazing is brewing!\nStay tuned for the big reveal.', + style: AppStyle.lg.copyWith( + color: AppColor.textWhite.withOpacity(0.9), + height: 1.5, + ), + textAlign: TextAlign.center, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } + + Widget _buildAnimatedLogo() { + return AnimatedBuilder( + animation: _pulseAnimation, + builder: (context, child) { + return Transform.scale( + scale: _pulseAnimation.value, + child: Container( + width: 120, + height: 120, + decoration: BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + colors: [AppColor.secondary, AppColor.secondaryLight], + ), + boxShadow: [ + BoxShadow( + color: AppColor.secondary.withOpacity(0.3), + blurRadius: 30, + spreadRadius: 5, + ), + ], + ), + child: Icon( + Icons.rocket_launch, + size: 60, + color: AppColor.textWhite, + ), + ), + ); + }, + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/business_setting.dart b/lib/presentation/pages/profile/widgets/business_setting.dart index 12383e8..d8a1be7 100644 --- a/lib/presentation/pages/profile/widgets/business_setting.dart +++ b/lib/presentation/pages/profile/widgets/business_setting.dart @@ -52,20 +52,7 @@ class ProfileBusinessSetting extends StatelessWidget { icon: Icons.people_outline, title: 'Staff Management', subtitle: 'Manage employees and permissions', - onTap: () { - // Navigate to staff management - }, - ), - - ProfileDivider(), - - ProfileTile( - icon: Icons.payment_outlined, - title: 'Payment Methods', - subtitle: 'Configure payment options', - onTap: () { - // Navigate to payment settings - }, + onTap: () => context.router.push(ComingSoonRoute()), ), ProfileDivider(), diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 40c4015..05d0e79 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -50,13 +50,16 @@ class AppRouter extends RootStackRouter { // Finance page AutoRoute(page: FinanceRoute.page), - // Error - AutoRoute(page: ErrorRoute.page), - // Order AutoRoute(page: OrderDetailRoute.page), // Outlet AutoRoute(page: OutletInformationRoute.page), + + // Error + AutoRoute(page: ErrorRoute.page), + + // Coming Soong + AutoRoute(page: ComingSoonRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index c1ab17b..0f23b15 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,94 +9,112 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/domain/order/order.dart' as _i23; +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i24; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i8; -import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' - as _i1; -import 'package:apskel_owner_flutter/presentation/pages/error/error_page.dart' - as _i3; -import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' - as _i4; -import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' - as _i2; -import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' - as _i5; -import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' - as _i6; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' - as _i7; -import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i9; -import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order_detail_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/coming_soon/coming_soon_page.dart' + as _i1; +import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' + as _i2; +import 'package:apskel_owner_flutter/presentation/pages/error/error_page.dart' + as _i4; +import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' + as _i5; +import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' + as _i3; +import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' + as _i6; +import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' + as _i7; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i8; +import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i10; -import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order_detail_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/outlet/outlet_information_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/outlet/outlet_information_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i17; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i18; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i19; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i20; -import 'package:auto_route/auto_route.dart' as _i21; -import 'package:flutter/material.dart' as _i22; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i21; +import 'package:auto_route/auto_route.dart' as _i22; +import 'package:flutter/material.dart' as _i23; /// generated route for -/// [_i1.CustomerPage] -class CustomerRoute extends _i21.PageRouteInfo { - const CustomerRoute({List<_i21.PageRouteInfo>? children}) +/// [_i1.ComingSoonPage] +class ComingSoonRoute extends _i22.PageRouteInfo { + const ComingSoonRoute({List<_i22.PageRouteInfo>? children}) + : super(ComingSoonRoute.name, initialChildren: children); + + static const String name = 'ComingSoonRoute'; + + static _i22.PageInfo page = _i22.PageInfo( + name, + builder: (data) { + return const _i1.ComingSoonPage(); + }, + ); +} + +/// generated route for +/// [_i2.CustomerPage] +class CustomerRoute extends _i22.PageRouteInfo { + const CustomerRoute({List<_i22.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i1.CustomerPage()); + return _i22.WrappedRoute(child: const _i2.CustomerPage()); }, ); } /// generated route for -/// [_i2.DailyTasksFormPage] -class DailyTasksFormRoute extends _i21.PageRouteInfo { - const DailyTasksFormRoute({List<_i21.PageRouteInfo>? children}) +/// [_i3.DailyTasksFormPage] +class DailyTasksFormRoute extends _i22.PageRouteInfo { + const DailyTasksFormRoute({List<_i22.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return const _i2.DailyTasksFormPage(); + return const _i3.DailyTasksFormPage(); }, ); } /// generated route for -/// [_i3.ErrorPage] -class ErrorRoute extends _i21.PageRouteInfo { +/// [_i4.ErrorPage] +class ErrorRoute extends _i22.PageRouteInfo { ErrorRoute({ - _i22.Key? key, + _i23.Key? key, String? title, String? message, - _i22.VoidCallback? onRetry, - _i22.VoidCallback? onBack, + _i23.VoidCallback? onRetry, + _i23.VoidCallback? onBack, String? errorCode, - _i22.IconData? errorIcon, - List<_i21.PageRouteInfo>? children, + _i23.IconData? errorIcon, + List<_i22.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -113,13 +131,13 @@ class ErrorRoute extends _i21.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { final args = data.argsAs( orElse: () => const ErrorRouteArgs(), ); - return _i3.ErrorPage( + return _i4.ErrorPage( key: args.key, title: args.title, message: args.message, @@ -143,19 +161,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i22.Key? key; + final _i23.Key? key; final String? title; final String? message; - final _i22.VoidCallback? onRetry; + final _i23.VoidCallback? onRetry; - final _i22.VoidCallback? onBack; + final _i23.VoidCallback? onBack; final String? errorCode; - final _i22.IconData? errorIcon; + final _i23.IconData? errorIcon; @override String toString() { @@ -164,108 +182,108 @@ class ErrorRouteArgs { } /// generated route for -/// [_i4.FinancePage] -class FinanceRoute extends _i21.PageRouteInfo { - const FinanceRoute({List<_i21.PageRouteInfo>? children}) +/// [_i5.FinancePage] +class FinanceRoute extends _i22.PageRouteInfo { + const FinanceRoute({List<_i22.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i4.FinancePage()); + return _i22.WrappedRoute(child: const _i5.FinancePage()); }, ); } /// generated route for -/// [_i5.HomePage] -class HomeRoute extends _i21.PageRouteInfo { - const HomeRoute({List<_i21.PageRouteInfo>? children}) +/// [_i6.HomePage] +class HomeRoute extends _i22.PageRouteInfo { + const HomeRoute({List<_i22.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return const _i5.HomePage(); + return _i22.WrappedRoute(child: const _i6.HomePage()); }, ); } /// generated route for -/// [_i6.InventoryPage] -class InventoryRoute extends _i21.PageRouteInfo { - const InventoryRoute({List<_i21.PageRouteInfo>? children}) +/// [_i7.InventoryPage] +class InventoryRoute extends _i22.PageRouteInfo { + const InventoryRoute({List<_i22.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i6.InventoryPage()); + return _i22.WrappedRoute(child: const _i7.InventoryPage()); }, ); } /// generated route for -/// [_i7.LanguagePage] -class LanguageRoute extends _i21.PageRouteInfo { - const LanguageRoute({List<_i21.PageRouteInfo>? children}) +/// [_i8.LanguagePage] +class LanguageRoute extends _i22.PageRouteInfo { + const LanguageRoute({List<_i22.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return const _i7.LanguagePage(); + return const _i8.LanguagePage(); }, ); } /// generated route for -/// [_i8.LoginPage] -class LoginRoute extends _i21.PageRouteInfo { - const LoginRoute({List<_i21.PageRouteInfo>? children}) +/// [_i9.LoginPage] +class LoginRoute extends _i22.PageRouteInfo { + const LoginRoute({List<_i22.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i8.LoginPage()); + return _i22.WrappedRoute(child: const _i9.LoginPage()); }, ); } /// generated route for -/// [_i9.MainPage] -class MainRoute extends _i21.PageRouteInfo { - const MainRoute({List<_i21.PageRouteInfo>? children}) +/// [_i10.MainPage] +class MainRoute extends _i22.PageRouteInfo { + const MainRoute({List<_i22.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return const _i9.MainPage(); + return const _i10.MainPage(); }, ); } /// generated route for -/// [_i10.OrderDetailPage] -class OrderDetailRoute extends _i21.PageRouteInfo { +/// [_i11.OrderDetailPage] +class OrderDetailRoute extends _i22.PageRouteInfo { OrderDetailRoute({ - _i22.Key? key, - required _i23.Order order, - List<_i21.PageRouteInfo>? children, + _i23.Key? key, + required _i24.Order order, + List<_i22.PageRouteInfo>? children, }) : super( OrderDetailRoute.name, args: OrderDetailRouteArgs(key: key, order: order), @@ -274,11 +292,11 @@ class OrderDetailRoute extends _i21.PageRouteInfo { static const String name = 'OrderDetailRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i10.OrderDetailPage(key: args.key, order: args.order); + return _i11.OrderDetailPage(key: args.key, order: args.order); }, ); } @@ -286,9 +304,9 @@ class OrderDetailRoute extends _i21.PageRouteInfo { class OrderDetailRouteArgs { const OrderDetailRouteArgs({this.key, required this.order}); - final _i22.Key? key; + final _i23.Key? key; - final _i23.Order order; + final _i24.Order order; @override String toString() { @@ -297,161 +315,161 @@ class OrderDetailRouteArgs { } /// generated route for -/// [_i11.OrderPage] -class OrderRoute extends _i21.PageRouteInfo { - const OrderRoute({List<_i21.PageRouteInfo>? children}) +/// [_i12.OrderPage] +class OrderRoute extends _i22.PageRouteInfo { + const OrderRoute({List<_i22.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i11.OrderPage()); + return _i22.WrappedRoute(child: const _i12.OrderPage()); }, ); } /// generated route for -/// [_i12.OutletInformationPage] -class OutletInformationRoute extends _i21.PageRouteInfo { - const OutletInformationRoute({List<_i21.PageRouteInfo>? children}) +/// [_i13.OutletInformationPage] +class OutletInformationRoute extends _i22.PageRouteInfo { + const OutletInformationRoute({List<_i22.PageRouteInfo>? children}) : super(OutletInformationRoute.name, initialChildren: children); static const String name = 'OutletInformationRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i12.OutletInformationPage()); + return _i22.WrappedRoute(child: const _i13.OutletInformationPage()); }, ); } /// generated route for -/// [_i13.ProductAnalyticPage] -class ProductAnalyticRoute extends _i21.PageRouteInfo { - const ProductAnalyticRoute({List<_i21.PageRouteInfo>? children}) +/// [_i14.ProductAnalyticPage] +class ProductAnalyticRoute extends _i22.PageRouteInfo { + const ProductAnalyticRoute({List<_i22.PageRouteInfo>? children}) : super(ProductAnalyticRoute.name, initialChildren: children); static const String name = 'ProductAnalyticRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i13.ProductAnalyticPage()); + return _i22.WrappedRoute(child: const _i14.ProductAnalyticPage()); }, ); } /// generated route for -/// [_i14.ProductPage] -class ProductRoute extends _i21.PageRouteInfo { - const ProductRoute({List<_i21.PageRouteInfo>? children}) +/// [_i15.ProductPage] +class ProductRoute extends _i22.PageRouteInfo { + const ProductRoute({List<_i22.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i14.ProductPage()); + return _i22.WrappedRoute(child: const _i15.ProductPage()); }, ); } /// generated route for -/// [_i15.ProfilePage] -class ProfileRoute extends _i21.PageRouteInfo { - const ProfileRoute({List<_i21.PageRouteInfo>? children}) +/// [_i16.ProfilePage] +class ProfileRoute extends _i22.PageRouteInfo { + const ProfileRoute({List<_i22.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i15.ProfilePage()); + return _i22.WrappedRoute(child: const _i16.ProfilePage()); }, ); } /// generated route for -/// [_i16.PurchasePage] -class PurchaseRoute extends _i21.PageRouteInfo { - const PurchaseRoute({List<_i21.PageRouteInfo>? children}) +/// [_i17.PurchasePage] +class PurchaseRoute extends _i22.PageRouteInfo { + const PurchaseRoute({List<_i22.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return const _i16.PurchasePage(); + return const _i17.PurchasePage(); }, ); } /// generated route for -/// [_i17.ReportPage] -class ReportRoute extends _i21.PageRouteInfo { - const ReportRoute({List<_i21.PageRouteInfo>? children}) +/// [_i18.ReportPage] +class ReportRoute extends _i22.PageRouteInfo { + const ReportRoute({List<_i22.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i17.ReportPage()); + return _i22.WrappedRoute(child: const _i18.ReportPage()); }, ); } /// generated route for -/// [_i18.SalesPage] -class SalesRoute extends _i21.PageRouteInfo { - const SalesRoute({List<_i21.PageRouteInfo>? children}) +/// [_i19.SalesPage] +class SalesRoute extends _i22.PageRouteInfo { + const SalesRoute({List<_i22.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return _i21.WrappedRoute(child: const _i18.SalesPage()); + return _i22.WrappedRoute(child: const _i19.SalesPage()); }, ); } /// generated route for -/// [_i19.SchedulePage] -class ScheduleRoute extends _i21.PageRouteInfo { - const ScheduleRoute({List<_i21.PageRouteInfo>? children}) +/// [_i20.SchedulePage] +class ScheduleRoute extends _i22.PageRouteInfo { + const ScheduleRoute({List<_i22.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return const _i19.SchedulePage(); + return const _i20.SchedulePage(); }, ); } /// generated route for -/// [_i20.SplashPage] -class SplashRoute extends _i21.PageRouteInfo { - const SplashRoute({List<_i21.PageRouteInfo>? children}) +/// [_i21.SplashPage] +class SplashRoute extends _i22.PageRouteInfo { + const SplashRoute({List<_i22.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i21.PageInfo page = _i21.PageInfo( + static _i22.PageInfo page = _i22.PageInfo( name, builder: (data) { - return const _i20.SplashPage(); + return const _i21.SplashPage(); }, ); } From 60f43f6df7dcdfb803dbde74359510fc94199f1b Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 13:01:29 +0700 Subject: [PATCH 081/108] feat: download report page --- .../pages/download/download_report_page.dart | 591 ++++++++++++++++++ .../profile/widgets/business_setting.dart | 8 + lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 284 +++++---- 4 files changed, 753 insertions(+), 133 deletions(-) create mode 100644 lib/presentation/pages/download/download_report_page.dart diff --git a/lib/presentation/pages/download/download_report_page.dart b/lib/presentation/pages/download/download_report_page.dart new file mode 100644 index 0000000..b09e6c7 --- /dev/null +++ b/lib/presentation/pages/download/download_report_page.dart @@ -0,0 +1,591 @@ +import 'package:flutter/material.dart'; +import 'package:auto_route/auto_route.dart'; + +import '../../../common/theme/theme.dart'; +import '../../components/appbar/appbar.dart'; + +@RoutePage() +class DownloadReportPage extends StatefulWidget { + const DownloadReportPage({super.key}); + + @override + State createState() => _DownloadReportPageState(); +} + +class _DownloadReportPageState extends State + with TickerProviderStateMixin { + late AnimationController _fadeController; + late AnimationController _slideController; + late AnimationController _scaleController; + + late Animation _fadeAnimation; + + @override + void initState() { + super.initState(); + + // Initialize animation controllers + _fadeController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _slideController = AnimationController( + duration: const Duration(milliseconds: 1000), + vsync: this, + ); + + _scaleController = AnimationController( + duration: const Duration(milliseconds: 600), + vsync: this, + ); + + // Initialize animations + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + // Start animations + _fadeController.forward(); + _slideController.forward(); + _scaleController.forward(); + } + + @override + void dispose() { + _fadeController.dispose(); + _slideController.dispose(); + _scaleController.dispose(); + super.dispose(); + } + + void _showDateRangePicker(String reportType) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (context) => _DateRangeBottomSheet( + reportType: reportType, + onDateRangeSelected: (dateRange) { + setState(() {}); + // Handle download logic here + _downloadReport(reportType, dateRange); + }, + ), + ); + } + + void _downloadReport(String reportType, DateTimeRange dateRange) { + // Implement download logic here + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + 'Downloading $reportType from ${_formatDate(dateRange.start)} to ${_formatDate(dateRange.end)}', + ), + backgroundColor: AppColor.success, + ), + ); + } + + String _formatDate(DateTime date) { + return '${date.day}/${date.month}/${date.year}'; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + // SliverAppBar with gradient + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + elevation: 0, + backgroundColor: AppColor.primary, + flexibleSpace: CustomAppBar(title: 'Download Report'), + ), + + // Content + SliverToBoxAdapter( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + children: [ + // Report Options + FadeTransition( + opacity: _fadeAnimation, + child: Column( + children: [ + // Transaction Report Card + _ReportOptionCard( + title: 'Transaction Report', + subtitle: + 'Export all transaction data with detailed analytics', + icon: Icons.receipt_long_outlined, + gradient: const [ + AppColor.primary, + AppColor.primaryLight, + ], + onTap: () => + _showDateRangePicker('Transaction Report'), + delay: 200, + ), + + const SizedBox(height: 20), + + // Inventory Report Card + _ReportOptionCard( + title: 'Inventory Report', + subtitle: + 'Export inventory and stock data with trends', + icon: Icons.inventory_2_outlined, + gradient: const [ + AppColor.secondary, + AppColor.secondaryLight, + ], + onTap: () => _showDateRangePicker('Inventory Report'), + delay: 400, + ), + + const SizedBox(height: 20), + + // Additional Report Options + _ReportOptionCard( + title: 'Sales Report', + subtitle: 'Export sales performance and revenue data', + icon: Icons.trending_up_outlined, + gradient: const [AppColor.info, Color(0xFF64B5F6)], + onTap: () => _showDateRangePicker('Sales Report'), + delay: 600, + ), + + const SizedBox(height: 20), + + _ReportOptionCard( + title: 'Customer Report', + subtitle: + 'Export customer data and behavior analytics', + icon: Icons.people_outline, + gradient: const [AppColor.warning, Color(0xFFFFB74D)], + onTap: () => _showDateRangePicker('Customer Report'), + delay: 800, + ), + ], + ), + ), + + const SizedBox(height: 40), + ], + ), + ), + ), + ], + ), + ); + } +} + +class _ReportOptionCard extends StatefulWidget { + final String title; + final String subtitle; + final IconData icon; + final List gradient; + final VoidCallback onTap; + final int delay; + + const _ReportOptionCard({ + required this.title, + required this.subtitle, + required this.icon, + required this.gradient, + required this.onTap, + required this.delay, + }); + + @override + State<_ReportOptionCard> createState() => _ReportOptionCardState(); +} + +class _ReportOptionCardState extends State<_ReportOptionCard> + with SingleTickerProviderStateMixin { + late AnimationController _animationController; + late Animation _scaleAnimation; + bool _isPressed = false; + + @override + void initState() { + super.initState(); + _animationController = AnimationController( + duration: const Duration(milliseconds: 150), + vsync: this, + ); + _scaleAnimation = Tween(begin: 1.0, end: 0.95).animate( + CurvedAnimation(parent: _animationController, curve: Curves.easeInOut), + ); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTapDown: (_) { + setState(() => _isPressed = true); + _animationController.forward(); + }, + onTapUp: (_) { + setState(() => _isPressed = false); + _animationController.reverse(); + widget.onTap(); + }, + onTapCancel: () { + setState(() => _isPressed = false); + _animationController.reverse(); + }, + child: ScaleTransition( + scale: _scaleAnimation, + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: _isPressed + ? widget.gradient.map((c) => c.withOpacity(0.8)).toList() + : widget.gradient, + ), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: widget.gradient.first.withOpacity(0.3), + blurRadius: _isPressed ? 8 : 15, + offset: Offset(0, _isPressed ? 2 : 8), + ), + ], + ), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(16), + ), + child: Icon(widget.icon, color: AppColor.white, size: 32), + ), + const SizedBox(width: 20), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + widget.title, + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 4), + Text( + widget.subtitle, + style: AppStyle.sm.copyWith( + color: AppColor.white.withOpacity(0.8), + ), + ), + ], + ), + ), + Icon( + Icons.arrow_forward_ios, + color: AppColor.white.withOpacity(0.8), + size: 20, + ), + ], + ), + ), + ), + ); + } +} + +class _DateRangeBottomSheet extends StatefulWidget { + final String reportType; + final Function(DateTimeRange) onDateRangeSelected; + + const _DateRangeBottomSheet({ + required this.reportType, + required this.onDateRangeSelected, + }); + + @override + State<_DateRangeBottomSheet> createState() => _DateRangeBottomSheetState(); +} + +class _DateRangeBottomSheetState extends State<_DateRangeBottomSheet> + with SingleTickerProviderStateMixin { + late AnimationController _controller; + late Animation _animation; + + DateTime? _startDate; + DateTime? _endDate; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: const Duration(milliseconds: 300), + vsync: this, + ); + _animation = CurvedAnimation( + parent: _controller, + curve: Curves.easeOutCubic, + ); + _controller.forward(); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + void _selectStartDate() async { + final date = await showDatePicker( + context: context, + initialDate: _startDate ?? DateTime.now(), + firstDate: DateTime(2020), + lastDate: DateTime.now(), + builder: (context, child) { + return Theme( + data: Theme.of(context).copyWith( + colorScheme: const ColorScheme.light(primary: AppColor.primary), + ), + child: child!, + ); + }, + ); + if (date != null) { + setState(() => _startDate = date); + } + } + + void _selectEndDate() async { + final date = await showDatePicker( + context: context, + initialDate: _endDate ?? DateTime.now(), + firstDate: _startDate ?? DateTime(2020), + lastDate: DateTime.now(), + builder: (context, child) { + return Theme( + data: Theme.of(context).copyWith( + colorScheme: const ColorScheme.light(primary: AppColor.primary), + ), + child: child!, + ); + }, + ); + if (date != null) { + setState(() => _endDate = date); + } + } + + void _downloadReport() { + if (_startDate != null && _endDate != null) { + final dateRange = DateTimeRange(start: _startDate!, end: _endDate!); + widget.onDateRangeSelected(dateRange); + Navigator.pop(context); + } + } + + String _formatDate(DateTime? date) { + if (date == null) return 'Select Date'; + return '${date.day}/${date.month}/${date.year}'; + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: _animation, + builder: (context, child) { + return Transform.translate( + offset: Offset(0, (1 - _animation.value) * 300), + child: Container( + decoration: const BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(30), + topRight: Radius.circular(30), + ), + ), + child: Padding( + padding: EdgeInsets.only( + left: 20, + right: 20, + top: 20, + bottom: MediaQuery.of(context).viewInsets.bottom + 20, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Handle bar + Container( + width: 50, + height: 4, + decoration: BoxDecoration( + color: AppColor.border, + borderRadius: BorderRadius.circular(2), + ), + ), + + const SizedBox(height: 20), + + // Title + Text( + widget.reportType, + style: AppStyle.h6.copyWith(fontWeight: FontWeight.bold), + ), + + const SizedBox(height: 8), + + Text( + 'Select date range for your report', + style: AppStyle.md.copyWith(color: AppColor.textSecondary), + ), + + const SizedBox(height: 30), + + // Date Selection + Row( + children: [ + Expanded( + child: _DateSelectionCard( + title: 'Start Date', + date: _formatDate(_startDate), + onTap: _selectStartDate, + ), + ), + const SizedBox(width: 16), + Expanded( + child: _DateSelectionCard( + title: 'End Date', + date: _formatDate(_endDate), + onTap: _selectEndDate, + ), + ), + ], + ), + + const SizedBox(height: 30), + + // Download Button + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _startDate != null && _endDate != null + ? _downloadReport + : null, + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.primary, + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + elevation: 0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon( + Icons.download_rounded, + color: AppColor.white, + ), + const SizedBox(width: 8), + Text( + 'Download Report', + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ), + + const SizedBox(height: 10), + ], + ), + ), + ), + ); + }, + ); + } +} + +class _DateSelectionCard extends StatelessWidget { + final String title; + final String date; + final VoidCallback onTap; + + const _DateSelectionCard({ + required this.title, + required this.date, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColor.background, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppColor.border), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: AppStyle.sm.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 8), + Row( + children: [ + Expanded( + child: Text( + date, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w600, + color: date == 'Select Date' + ? AppColor.textLight + : AppColor.textPrimary, + ), + ), + ), + Icon( + Icons.calendar_today_outlined, + color: AppColor.primary, + size: 18, + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/business_setting.dart b/lib/presentation/pages/profile/widgets/business_setting.dart index d8a1be7..fee212a 100644 --- a/lib/presentation/pages/profile/widgets/business_setting.dart +++ b/lib/presentation/pages/profile/widgets/business_setting.dart @@ -63,6 +63,14 @@ class ProfileBusinessSetting extends StatelessWidget { subtitle: 'Manage your products', onTap: () => context.router.push(ProductRoute()), ), + ProfileDivider(), + + ProfileTile( + icon: Icons.download_outlined, + title: 'Download Report', + subtitle: 'Download your sales or inventory report', + onTap: () => context.router.push(DownloadReportRoute()), + ), ], ), ); diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 05d0e79..c125c98 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -56,6 +56,9 @@ class AppRouter extends RootStackRouter { // Outlet AutoRoute(page: OutletInformationRoute.page), + // Download Report + AutoRoute(page: DownloadReportRoute.page), + // Error AutoRoute(page: ErrorRoute.page), diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 0f23b15..e465783 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,61 +9,63 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/domain/order/order.dart' as _i24; +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i25; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i9; + as _i10; import 'package:apskel_owner_flutter/presentation/pages/coming_soon/coming_soon_page.dart' as _i1; import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' as _i2; -import 'package:apskel_owner_flutter/presentation/pages/error/error_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/download/download_report_page.dart' as _i4; -import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/error/error_page.dart' as _i5; +import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' + as _i6; import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' as _i3; import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' - as _i6; -import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' as _i7; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' as _i8; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i9; import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' - as _i10; -import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order_detail_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order_detail_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/outlet/outlet_information_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/outlet/outlet_information_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i17; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i18; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i19; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i20; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i21; -import 'package:auto_route/auto_route.dart' as _i22; -import 'package:flutter/material.dart' as _i23; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i22; +import 'package:auto_route/auto_route.dart' as _i23; +import 'package:flutter/material.dart' as _i24; /// generated route for /// [_i1.ComingSoonPage] -class ComingSoonRoute extends _i22.PageRouteInfo { - const ComingSoonRoute({List<_i22.PageRouteInfo>? children}) +class ComingSoonRoute extends _i23.PageRouteInfo { + const ComingSoonRoute({List<_i23.PageRouteInfo>? children}) : super(ComingSoonRoute.name, initialChildren: children); static const String name = 'ComingSoonRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { return const _i1.ComingSoonPage(); @@ -73,29 +75,29 @@ class ComingSoonRoute extends _i22.PageRouteInfo { /// generated route for /// [_i2.CustomerPage] -class CustomerRoute extends _i22.PageRouteInfo { - const CustomerRoute({List<_i22.PageRouteInfo>? children}) +class CustomerRoute extends _i23.PageRouteInfo { + const CustomerRoute({List<_i23.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i2.CustomerPage()); + return _i23.WrappedRoute(child: const _i2.CustomerPage()); }, ); } /// generated route for /// [_i3.DailyTasksFormPage] -class DailyTasksFormRoute extends _i22.PageRouteInfo { - const DailyTasksFormRoute({List<_i22.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i23.PageRouteInfo { + const DailyTasksFormRoute({List<_i23.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { return const _i3.DailyTasksFormPage(); @@ -104,17 +106,33 @@ class DailyTasksFormRoute extends _i22.PageRouteInfo { } /// generated route for -/// [_i4.ErrorPage] -class ErrorRoute extends _i22.PageRouteInfo { +/// [_i4.DownloadReportPage] +class DownloadReportRoute extends _i23.PageRouteInfo { + const DownloadReportRoute({List<_i23.PageRouteInfo>? children}) + : super(DownloadReportRoute.name, initialChildren: children); + + static const String name = 'DownloadReportRoute'; + + static _i23.PageInfo page = _i23.PageInfo( + name, + builder: (data) { + return const _i4.DownloadReportPage(); + }, + ); +} + +/// generated route for +/// [_i5.ErrorPage] +class ErrorRoute extends _i23.PageRouteInfo { ErrorRoute({ - _i23.Key? key, + _i24.Key? key, String? title, String? message, - _i23.VoidCallback? onRetry, - _i23.VoidCallback? onBack, + _i24.VoidCallback? onRetry, + _i24.VoidCallback? onBack, String? errorCode, - _i23.IconData? errorIcon, - List<_i22.PageRouteInfo>? children, + _i24.IconData? errorIcon, + List<_i23.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -131,13 +149,13 @@ class ErrorRoute extends _i22.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { final args = data.argsAs( orElse: () => const ErrorRouteArgs(), ); - return _i4.ErrorPage( + return _i5.ErrorPage( key: args.key, title: args.title, message: args.message, @@ -161,19 +179,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i23.Key? key; + final _i24.Key? key; final String? title; final String? message; - final _i23.VoidCallback? onRetry; + final _i24.VoidCallback? onRetry; - final _i23.VoidCallback? onBack; + final _i24.VoidCallback? onBack; final String? errorCode; - final _i23.IconData? errorIcon; + final _i24.IconData? errorIcon; @override String toString() { @@ -182,108 +200,108 @@ class ErrorRouteArgs { } /// generated route for -/// [_i5.FinancePage] -class FinanceRoute extends _i22.PageRouteInfo { - const FinanceRoute({List<_i22.PageRouteInfo>? children}) +/// [_i6.FinancePage] +class FinanceRoute extends _i23.PageRouteInfo { + const FinanceRoute({List<_i23.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i5.FinancePage()); + return _i23.WrappedRoute(child: const _i6.FinancePage()); }, ); } /// generated route for -/// [_i6.HomePage] -class HomeRoute extends _i22.PageRouteInfo { - const HomeRoute({List<_i22.PageRouteInfo>? children}) +/// [_i7.HomePage] +class HomeRoute extends _i23.PageRouteInfo { + const HomeRoute({List<_i23.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i6.HomePage()); + return _i23.WrappedRoute(child: const _i7.HomePage()); }, ); } /// generated route for -/// [_i7.InventoryPage] -class InventoryRoute extends _i22.PageRouteInfo { - const InventoryRoute({List<_i22.PageRouteInfo>? children}) +/// [_i8.InventoryPage] +class InventoryRoute extends _i23.PageRouteInfo { + const InventoryRoute({List<_i23.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i7.InventoryPage()); + return _i23.WrappedRoute(child: const _i8.InventoryPage()); }, ); } /// generated route for -/// [_i8.LanguagePage] -class LanguageRoute extends _i22.PageRouteInfo { - const LanguageRoute({List<_i22.PageRouteInfo>? children}) +/// [_i9.LanguagePage] +class LanguageRoute extends _i23.PageRouteInfo { + const LanguageRoute({List<_i23.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return const _i8.LanguagePage(); + return const _i9.LanguagePage(); }, ); } /// generated route for -/// [_i9.LoginPage] -class LoginRoute extends _i22.PageRouteInfo { - const LoginRoute({List<_i22.PageRouteInfo>? children}) +/// [_i10.LoginPage] +class LoginRoute extends _i23.PageRouteInfo { + const LoginRoute({List<_i23.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i9.LoginPage()); + return _i23.WrappedRoute(child: const _i10.LoginPage()); }, ); } /// generated route for -/// [_i10.MainPage] -class MainRoute extends _i22.PageRouteInfo { - const MainRoute({List<_i22.PageRouteInfo>? children}) +/// [_i11.MainPage] +class MainRoute extends _i23.PageRouteInfo { + const MainRoute({List<_i23.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return const _i10.MainPage(); + return const _i11.MainPage(); }, ); } /// generated route for -/// [_i11.OrderDetailPage] -class OrderDetailRoute extends _i22.PageRouteInfo { +/// [_i12.OrderDetailPage] +class OrderDetailRoute extends _i23.PageRouteInfo { OrderDetailRoute({ - _i23.Key? key, - required _i24.Order order, - List<_i22.PageRouteInfo>? children, + _i24.Key? key, + required _i25.Order order, + List<_i23.PageRouteInfo>? children, }) : super( OrderDetailRoute.name, args: OrderDetailRouteArgs(key: key, order: order), @@ -292,11 +310,11 @@ class OrderDetailRoute extends _i22.PageRouteInfo { static const String name = 'OrderDetailRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i11.OrderDetailPage(key: args.key, order: args.order); + return _i12.OrderDetailPage(key: args.key, order: args.order); }, ); } @@ -304,9 +322,9 @@ class OrderDetailRoute extends _i22.PageRouteInfo { class OrderDetailRouteArgs { const OrderDetailRouteArgs({this.key, required this.order}); - final _i23.Key? key; + final _i24.Key? key; - final _i24.Order order; + final _i25.Order order; @override String toString() { @@ -315,161 +333,161 @@ class OrderDetailRouteArgs { } /// generated route for -/// [_i12.OrderPage] -class OrderRoute extends _i22.PageRouteInfo { - const OrderRoute({List<_i22.PageRouteInfo>? children}) +/// [_i13.OrderPage] +class OrderRoute extends _i23.PageRouteInfo { + const OrderRoute({List<_i23.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i12.OrderPage()); + return _i23.WrappedRoute(child: const _i13.OrderPage()); }, ); } /// generated route for -/// [_i13.OutletInformationPage] -class OutletInformationRoute extends _i22.PageRouteInfo { - const OutletInformationRoute({List<_i22.PageRouteInfo>? children}) +/// [_i14.OutletInformationPage] +class OutletInformationRoute extends _i23.PageRouteInfo { + const OutletInformationRoute({List<_i23.PageRouteInfo>? children}) : super(OutletInformationRoute.name, initialChildren: children); static const String name = 'OutletInformationRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i13.OutletInformationPage()); + return _i23.WrappedRoute(child: const _i14.OutletInformationPage()); }, ); } /// generated route for -/// [_i14.ProductAnalyticPage] -class ProductAnalyticRoute extends _i22.PageRouteInfo { - const ProductAnalyticRoute({List<_i22.PageRouteInfo>? children}) +/// [_i15.ProductAnalyticPage] +class ProductAnalyticRoute extends _i23.PageRouteInfo { + const ProductAnalyticRoute({List<_i23.PageRouteInfo>? children}) : super(ProductAnalyticRoute.name, initialChildren: children); static const String name = 'ProductAnalyticRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i14.ProductAnalyticPage()); + return _i23.WrappedRoute(child: const _i15.ProductAnalyticPage()); }, ); } /// generated route for -/// [_i15.ProductPage] -class ProductRoute extends _i22.PageRouteInfo { - const ProductRoute({List<_i22.PageRouteInfo>? children}) +/// [_i16.ProductPage] +class ProductRoute extends _i23.PageRouteInfo { + const ProductRoute({List<_i23.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i15.ProductPage()); + return _i23.WrappedRoute(child: const _i16.ProductPage()); }, ); } /// generated route for -/// [_i16.ProfilePage] -class ProfileRoute extends _i22.PageRouteInfo { - const ProfileRoute({List<_i22.PageRouteInfo>? children}) +/// [_i17.ProfilePage] +class ProfileRoute extends _i23.PageRouteInfo { + const ProfileRoute({List<_i23.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i16.ProfilePage()); + return _i23.WrappedRoute(child: const _i17.ProfilePage()); }, ); } /// generated route for -/// [_i17.PurchasePage] -class PurchaseRoute extends _i22.PageRouteInfo { - const PurchaseRoute({List<_i22.PageRouteInfo>? children}) +/// [_i18.PurchasePage] +class PurchaseRoute extends _i23.PageRouteInfo { + const PurchaseRoute({List<_i23.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return const _i17.PurchasePage(); + return const _i18.PurchasePage(); }, ); } /// generated route for -/// [_i18.ReportPage] -class ReportRoute extends _i22.PageRouteInfo { - const ReportRoute({List<_i22.PageRouteInfo>? children}) +/// [_i19.ReportPage] +class ReportRoute extends _i23.PageRouteInfo { + const ReportRoute({List<_i23.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i18.ReportPage()); + return _i23.WrappedRoute(child: const _i19.ReportPage()); }, ); } /// generated route for -/// [_i19.SalesPage] -class SalesRoute extends _i22.PageRouteInfo { - const SalesRoute({List<_i22.PageRouteInfo>? children}) +/// [_i20.SalesPage] +class SalesRoute extends _i23.PageRouteInfo { + const SalesRoute({List<_i23.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return _i22.WrappedRoute(child: const _i19.SalesPage()); + return _i23.WrappedRoute(child: const _i20.SalesPage()); }, ); } /// generated route for -/// [_i20.SchedulePage] -class ScheduleRoute extends _i22.PageRouteInfo { - const ScheduleRoute({List<_i22.PageRouteInfo>? children}) +/// [_i21.SchedulePage] +class ScheduleRoute extends _i23.PageRouteInfo { + const ScheduleRoute({List<_i23.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return const _i20.SchedulePage(); + return const _i21.SchedulePage(); }, ); } /// generated route for -/// [_i21.SplashPage] -class SplashRoute extends _i22.PageRouteInfo { - const SplashRoute({List<_i22.PageRouteInfo>? children}) +/// [_i22.SplashPage] +class SplashRoute extends _i23.PageRouteInfo { + const SplashRoute({List<_i23.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i22.PageInfo page = _i22.PageInfo( + static _i23.PageInfo page = _i23.PageInfo( name, builder: (data) { - return const _i21.SplashPage(); + return const _i22.SplashPage(); }, ); } From bfd460489781b07c625a45a1d813cd845ef84227 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 13:09:00 +0700 Subject: [PATCH 082/108] feat: update download report --- .../pages/download/download_report_page.dart | 587 +++++++----------- 1 file changed, 230 insertions(+), 357 deletions(-) diff --git a/lib/presentation/pages/download/download_report_page.dart b/lib/presentation/pages/download/download_report_page.dart index b09e6c7..08c8511 100644 --- a/lib/presentation/pages/download/download_report_page.dart +++ b/lib/presentation/pages/download/download_report_page.dart @@ -3,6 +3,7 @@ import 'package:auto_route/auto_route.dart'; import '../../../common/theme/theme.dart'; import '../../components/appbar/appbar.dart'; +import '../../components/field/date_range_picker_field.dart'; @RoutePage() class DownloadReportPage extends StatefulWidget { @@ -20,6 +21,16 @@ class _DownloadReportPageState extends State late Animation _fadeAnimation; + // Date range variables for each report type + DateTime? _transactionStartDate; + DateTime? _transactionEndDate; + DateTime? _inventoryStartDate; + DateTime? _inventoryEndDate; + DateTime? _salesStartDate; + DateTime? _salesEndDate; + DateTime? _customerStartDate; + DateTime? _customerEndDate; + @override void initState() { super.initState(); @@ -59,28 +70,26 @@ class _DownloadReportPageState extends State super.dispose(); } - void _showDateRangePicker(String reportType) { - showModalBottomSheet( - context: context, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (context) => _DateRangeBottomSheet( - reportType: reportType, - onDateRangeSelected: (dateRange) { - setState(() {}); - // Handle download logic here - _downloadReport(reportType, dateRange); - }, - ), - ); - } + void _downloadReport( + String reportType, + DateTime? startDate, + DateTime? endDate, + ) { + if (startDate == null || endDate == null) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Please select both start and end dates'), + backgroundColor: AppColor.error, + ), + ); + return; + } - void _downloadReport(String reportType, DateTimeRange dateRange) { // Implement download logic here ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - 'Downloading $reportType from ${_formatDate(dateRange.start)} to ${_formatDate(dateRange.end)}', + 'Downloading $reportType from ${_formatDate(startDate)} to ${_formatDate(endDate)}', ), backgroundColor: AppColor.success, ), @@ -128,8 +137,19 @@ class _DownloadReportPageState extends State AppColor.primary, AppColor.primaryLight, ], - onTap: () => - _showDateRangePicker('Transaction Report'), + startDate: _transactionStartDate, + endDate: _transactionEndDate, + onDateRangeChanged: (start, end) { + setState(() { + _transactionStartDate = start; + _transactionEndDate = end; + }); + }, + onDownload: () => _downloadReport( + 'Transaction Report', + _transactionStartDate, + _transactionEndDate, + ), delay: 200, ), @@ -145,31 +165,68 @@ class _DownloadReportPageState extends State AppColor.secondary, AppColor.secondaryLight, ], - onTap: () => _showDateRangePicker('Inventory Report'), + startDate: _inventoryStartDate, + endDate: _inventoryEndDate, + onDateRangeChanged: (start, end) { + setState(() { + _inventoryStartDate = start; + _inventoryEndDate = end; + }); + }, + onDownload: () => _downloadReport( + 'Inventory Report', + _inventoryStartDate, + _inventoryEndDate, + ), delay: 400, ), const SizedBox(height: 20), - // Additional Report Options + // Sales Report Card _ReportOptionCard( title: 'Sales Report', subtitle: 'Export sales performance and revenue data', icon: Icons.trending_up_outlined, gradient: const [AppColor.info, Color(0xFF64B5F6)], - onTap: () => _showDateRangePicker('Sales Report'), + startDate: _salesStartDate, + endDate: _salesEndDate, + onDateRangeChanged: (start, end) { + setState(() { + _salesStartDate = start; + _salesEndDate = end; + }); + }, + onDownload: () => _downloadReport( + 'Sales Report', + _salesStartDate, + _salesEndDate, + ), delay: 600, ), const SizedBox(height: 20), + // Customer Report Card _ReportOptionCard( title: 'Customer Report', subtitle: 'Export customer data and behavior analytics', icon: Icons.people_outline, gradient: const [AppColor.warning, Color(0xFFFFB74D)], - onTap: () => _showDateRangePicker('Customer Report'), + startDate: _customerStartDate, + endDate: _customerEndDate, + onDateRangeChanged: (start, end) { + setState(() { + _customerStartDate = start; + _customerEndDate = end; + }); + }, + onDownload: () => _downloadReport( + 'Customer Report', + _customerStartDate, + _customerEndDate, + ), delay: 800, ), ], @@ -192,7 +249,10 @@ class _ReportOptionCard extends StatefulWidget { final String subtitle; final IconData icon; final List gradient; - final VoidCallback onTap; + final DateTime? startDate; + final DateTime? endDate; + final Function(DateTime? startDate, DateTime? endDate) onDateRangeChanged; + final VoidCallback onDownload; final int delay; const _ReportOptionCard({ @@ -200,7 +260,10 @@ class _ReportOptionCard extends StatefulWidget { required this.subtitle, required this.icon, required this.gradient, - required this.onTap, + required this.startDate, + required this.endDate, + required this.onDateRangeChanged, + required this.onDownload, required this.delay, }); @@ -211,18 +274,19 @@ class _ReportOptionCard extends StatefulWidget { class _ReportOptionCardState extends State<_ReportOptionCard> with SingleTickerProviderStateMixin { late AnimationController _animationController; - late Animation _scaleAnimation; - bool _isPressed = false; + late Animation _slideAnimation; + bool _isExpanded = false; @override void initState() { super.initState(); _animationController = AnimationController( - duration: const Duration(milliseconds: 150), + duration: const Duration(milliseconds: 300), vsync: this, ); - _scaleAnimation = Tween(begin: 1.0, end: 0.95).animate( - CurvedAnimation(parent: _animationController, curve: Curves.easeInOut), + _slideAnimation = CurvedAnimation( + parent: _animationController, + curve: Curves.easeInOutCubic, ); } @@ -232,359 +296,168 @@ class _ReportOptionCardState extends State<_ReportOptionCard> super.dispose(); } - @override - Widget build(BuildContext context) { - return GestureDetector( - onTapDown: (_) { - setState(() => _isPressed = true); + void _toggleExpanded() { + setState(() { + _isExpanded = !_isExpanded; + if (_isExpanded) { _animationController.forward(); - }, - onTapUp: (_) { - setState(() => _isPressed = false); + } else { _animationController.reverse(); - widget.onTap(); - }, - onTapCancel: () { - setState(() => _isPressed = false); - _animationController.reverse(); - }, - child: ScaleTransition( - scale: _scaleAnimation, - child: AnimatedContainer( - duration: const Duration(milliseconds: 200), - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: _isPressed - ? widget.gradient.map((c) => c.withOpacity(0.8)).toList() - : widget.gradient, - ), - borderRadius: BorderRadius.circular(20), - boxShadow: [ - BoxShadow( - color: widget.gradient.first.withOpacity(0.3), - blurRadius: _isPressed ? 8 : 15, - offset: Offset(0, _isPressed ? 2 : 8), - ), - ], - ), - child: Row( - children: [ - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(16), - ), - child: Icon(widget.icon, color: AppColor.white, size: 32), - ), - const SizedBox(width: 20), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - widget.title, - style: AppStyle.lg.copyWith( - color: AppColor.white, - fontWeight: FontWeight.bold, - ), - ), - const SizedBox(height: 4), - Text( - widget.subtitle, - style: AppStyle.sm.copyWith( - color: AppColor.white.withOpacity(0.8), - ), - ), - ], - ), - ), - Icon( - Icons.arrow_forward_ios, - color: AppColor.white.withOpacity(0.8), - size: 20, - ), - ], - ), - ), - ), - ); - } -} - -class _DateRangeBottomSheet extends StatefulWidget { - final String reportType; - final Function(DateTimeRange) onDateRangeSelected; - - const _DateRangeBottomSheet({ - required this.reportType, - required this.onDateRangeSelected, - }); - - @override - State<_DateRangeBottomSheet> createState() => _DateRangeBottomSheetState(); -} - -class _DateRangeBottomSheetState extends State<_DateRangeBottomSheet> - with SingleTickerProviderStateMixin { - late AnimationController _controller; - late Animation _animation; - - DateTime? _startDate; - DateTime? _endDate; - - @override - void initState() { - super.initState(); - _controller = AnimationController( - duration: const Duration(milliseconds: 300), - vsync: this, - ); - _animation = CurvedAnimation( - parent: _controller, - curve: Curves.easeOutCubic, - ); - _controller.forward(); - } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - - void _selectStartDate() async { - final date = await showDatePicker( - context: context, - initialDate: _startDate ?? DateTime.now(), - firstDate: DateTime(2020), - lastDate: DateTime.now(), - builder: (context, child) { - return Theme( - data: Theme.of(context).copyWith( - colorScheme: const ColorScheme.light(primary: AppColor.primary), - ), - child: child!, - ); - }, - ); - if (date != null) { - setState(() => _startDate = date); - } - } - - void _selectEndDate() async { - final date = await showDatePicker( - context: context, - initialDate: _endDate ?? DateTime.now(), - firstDate: _startDate ?? DateTime(2020), - lastDate: DateTime.now(), - builder: (context, child) { - return Theme( - data: Theme.of(context).copyWith( - colorScheme: const ColorScheme.light(primary: AppColor.primary), - ), - child: child!, - ); - }, - ); - if (date != null) { - setState(() => _endDate = date); - } - } - - void _downloadReport() { - if (_startDate != null && _endDate != null) { - final dateRange = DateTimeRange(start: _startDate!, end: _endDate!); - widget.onDateRangeSelected(dateRange); - Navigator.pop(context); - } - } - - String _formatDate(DateTime? date) { - if (date == null) return 'Select Date'; - return '${date.day}/${date.month}/${date.year}'; + } + }); } @override Widget build(BuildContext context) { - return AnimatedBuilder( - animation: _animation, - builder: (context, child) { - return Transform.translate( - offset: Offset(0, (1 - _animation.value) * 300), - child: Container( - decoration: const BoxDecoration( - color: AppColor.white, - borderRadius: BorderRadius.only( - topLeft: Radius.circular(30), - topRight: Radius.circular(30), - ), - ), - child: Padding( - padding: EdgeInsets.only( - left: 20, - right: 20, - top: 20, - bottom: MediaQuery.of(context).viewInsets.bottom + 20, - ), - child: Column( - mainAxisSize: MainAxisSize.min, + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: widget.gradient, + ), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: widget.gradient.first.withOpacity(0.3), + blurRadius: 15, + offset: const Offset(0, 8), + ), + ], + ), + child: Column( + children: [ + // Header Section + GestureDetector( + onTap: _toggleExpanded, + child: Container( + padding: const EdgeInsets.all(20), + child: Row( children: [ - // Handle bar Container( - width: 50, - height: 4, + padding: const EdgeInsets.all(16), decoration: BoxDecoration( - color: AppColor.border, - borderRadius: BorderRadius.circular(2), + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(16), ), + child: Icon(widget.icon, color: AppColor.white, size: 32), ), - - const SizedBox(height: 20), - - // Title - Text( - widget.reportType, - style: AppStyle.h6.copyWith(fontWeight: FontWeight.bold), - ), - - const SizedBox(height: 8), - - Text( - 'Select date range for your report', - style: AppStyle.md.copyWith(color: AppColor.textSecondary), - ), - - const SizedBox(height: 30), - - // Date Selection - Row( - children: [ - Expanded( - child: _DateSelectionCard( - title: 'Start Date', - date: _formatDate(_startDate), - onTap: _selectStartDate, - ), - ), - const SizedBox(width: 16), - Expanded( - child: _DateSelectionCard( - title: 'End Date', - date: _formatDate(_endDate), - onTap: _selectEndDate, - ), - ), - ], - ), - - const SizedBox(height: 30), - - // Download Button - SizedBox( - width: double.infinity, - child: ElevatedButton( - onPressed: _startDate != null && _endDate != null - ? _downloadReport - : null, - style: ElevatedButton.styleFrom( - backgroundColor: AppColor.primary, - padding: const EdgeInsets.symmetric(vertical: 16), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16), - ), - elevation: 0, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Icon( - Icons.download_rounded, + const SizedBox(width: 20), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + widget.title, + style: AppStyle.lg.copyWith( color: AppColor.white, + fontWeight: FontWeight.bold, ), - const SizedBox(width: 8), - Text( - 'Download Report', - style: AppStyle.lg.copyWith( - color: AppColor.white, - fontWeight: FontWeight.bold, - ), + ), + const SizedBox(height: 4), + Text( + widget.subtitle, + style: AppStyle.sm.copyWith( + color: AppColor.white.withOpacity(0.8), ), - ], - ), + ), + ], + ), + ), + AnimatedRotation( + turns: _isExpanded ? 0.25 : 0, + duration: const Duration(milliseconds: 300), + child: Icon( + Icons.arrow_forward_ios, + color: AppColor.white.withOpacity(0.8), + size: 20, ), ), - - const SizedBox(height: 10), ], ), ), ), - ); - }, - ); - } -} -class _DateSelectionCard extends StatelessWidget { - final String title; - final String date; - final VoidCallback onTap; + // Expandable Content + SizeTransition( + sizeFactor: _slideAnimation, + child: Container( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + child: Column( + children: [ + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.1), + borderRadius: BorderRadius.circular(16), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Select Date Range', + style: AppStyle.md.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 16), - const _DateSelectionCard({ - required this.title, - required this.date, - required this.onTap, - }); + // Date Range Picker Field Style + DateRangePickerField( + placeholder: 'Select date range', + startDate: widget.startDate, + endDate: widget.endDate, + onChanged: widget.onDateRangeChanged, + ), - @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: onTap, - child: Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: AppColor.background, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: AppColor.border), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - title, - style: AppStyle.sm.copyWith( - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, - ), - ), - const SizedBox(height: 8), - Row( - children: [ - Expanded( - child: Text( - date, - style: AppStyle.md.copyWith( - fontWeight: FontWeight.w600, - color: date == 'Select Date' - ? AppColor.textLight - : AppColor.textPrimary, + const SizedBox(height: 20), + + // Download Button + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: + widget.startDate != null && + widget.endDate != null + ? widget.onDownload + : null, + style: ElevatedButton.styleFrom( + backgroundColor: AppColor.white, + foregroundColor: widget.gradient.first, + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + elevation: 0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.download_rounded, + color: widget.gradient.first, + ), + const SizedBox(width: 8), + Text( + 'Download Report', + style: AppStyle.md.copyWith( + color: widget.gradient.first, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ), + ], ), ), - ), - Icon( - Icons.calendar_today_outlined, - color: AppColor.primary, - size: 18, - ), - ], + ], + ), ), - ], - ), + ), + ], ), ); } From 791982595563610b6c306d1c0bf10bd22b01441b Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 15:05:08 +0700 Subject: [PATCH 083/108] feat: update user --- lib/application/auth/auth_bloc.dart | 3 +- .../user_edit_form/user_edit_form_bloc.dart | 46 + .../user_edit_form_bloc.freezed.dart | 542 ++++++++++ .../user_edit_form/user_edit_form_event.dart | 7 + .../user_edit_form/user_edit_form_state.dart | 14 + lib/common/url/api_path.dart | 3 + lib/domain/auth/auth.dart | 2 +- lib/domain/auth/auth.freezed.dart | 346 ------ .../{auth => user}/entities/user_entity.dart | 2 +- lib/domain/user/failures/user_failure.dart | 10 + .../user/repositories/i_user_repository.dart | 5 + lib/domain/user/user.dart | 10 + lib/domain/user/user.freezed.dart | 995 ++++++++++++++++++ .../repositories/analytic_repository.dart | 2 +- lib/infrastructure/auth/auth_dtos.dart | 3 +- .../auth/auth_dtos.freezed.dart | 398 ------- lib/infrastructure/auth/auth_dtos.g.dart | 28 - .../auth/datasources/local_data_provider.dart | 4 +- .../auth/repositories/auth_repository.dart | 1 + .../user/datasource/remote_data_provider.dart | 50 + .../{auth => user}/dto/user_dto.dart | 2 +- .../user/repositories/user_repository.dart | 42 + lib/infrastructure/user/user_dtos.dart | 8 + .../user/user_dtos.freezed.dart | 414 ++++++++ lib/infrastructure/user/user_dtos.g.dart | 35 + lib/injection.config.dart | 19 + .../components/button/elevated_button.dart | 3 + .../components/field/text_form_field.dart | 4 +- .../components/toast/flushbar.dart | 12 + .../pages/home/widgets/header.dart | 2 +- .../pages/profile_edit/profile_edit_page.dart | 108 ++ .../profile_edit/widgets/name_field.dart | 33 + .../pages/profile/profile_page.dart | 4 +- .../pages/profile/widgets/account_info.dart | 10 +- .../pages/profile/widgets/header.dart | 2 +- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 256 +++-- 37 files changed, 2531 insertions(+), 897 deletions(-) create mode 100644 lib/application/user/user_edit_form/user_edit_form_bloc.dart create mode 100644 lib/application/user/user_edit_form/user_edit_form_bloc.freezed.dart create mode 100644 lib/application/user/user_edit_form/user_edit_form_event.dart create mode 100644 lib/application/user/user_edit_form/user_edit_form_state.dart rename lib/domain/{auth => user}/entities/user_entity.dart (96%) create mode 100644 lib/domain/user/failures/user_failure.dart create mode 100644 lib/domain/user/repositories/i_user_repository.dart create mode 100644 lib/domain/user/user.dart create mode 100644 lib/domain/user/user.freezed.dart create mode 100644 lib/infrastructure/user/datasource/remote_data_provider.dart rename lib/infrastructure/{auth => user}/dto/user_dto.dart (97%) create mode 100644 lib/infrastructure/user/repositories/user_repository.dart create mode 100644 lib/infrastructure/user/user_dtos.dart create mode 100644 lib/infrastructure/user/user_dtos.freezed.dart create mode 100644 lib/infrastructure/user/user_dtos.g.dart create mode 100644 lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart create mode 100644 lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart diff --git a/lib/application/auth/auth_bloc.dart b/lib/application/auth/auth_bloc.dart index 1b7bed5..f85a681 100644 --- a/lib/application/auth/auth_bloc.dart +++ b/lib/application/auth/auth_bloc.dart @@ -1,9 +1,10 @@ -import 'package:bloc/bloc.dart'; import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:injectable/injectable.dart'; import '../../domain/auth/auth.dart'; +import '../../domain/user/user.dart'; part 'auth_event.dart'; part 'auth_state.dart'; diff --git a/lib/application/user/user_edit_form/user_edit_form_bloc.dart b/lib/application/user/user_edit_form/user_edit_form_bloc.dart new file mode 100644 index 0000000..1727089 --- /dev/null +++ b/lib/application/user/user_edit_form/user_edit_form_bloc.dart @@ -0,0 +1,46 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/user/user.dart'; + +part 'user_edit_form_event.dart'; +part 'user_edit_form_state.dart'; +part 'user_edit_form_bloc.freezed.dart'; + +@injectable +class UserEditFormBloc extends Bloc { + final IUserRepository _repository; + UserEditFormBloc(this._repository) : super(UserEditFormState.initial()) { + on(_onUserEditFormEvent); + } + + Future _onUserEditFormEvent( + UserEditFormEvent event, + Emitter emit, + ) { + return event.map( + nameChanged: (e) async { + emit(state.copyWith(name: e.name)); + }, + submitted: (e) async { + Either? failureOrUser; + emit(state.copyWith(isSubmitting: true, failureOrUserOption: none())); + + final nameValid = state.name.isNotEmpty; + + if (nameValid) { + failureOrUser = await _repository.editUser(name: state.name); + emit( + state.copyWith( + isSubmitting: false, + failureOrUserOption: optionOf(failureOrUser), + ), + ); + } + emit(state.copyWith(showErrorMessages: true, isSubmitting: false)); + }, + ); + } +} diff --git a/lib/application/user/user_edit_form/user_edit_form_bloc.freezed.dart b/lib/application/user/user_edit_form/user_edit_form_bloc.freezed.dart new file mode 100644 index 0000000..99fb54a --- /dev/null +++ b/lib/application/user/user_edit_form/user_edit_form_bloc.freezed.dart @@ -0,0 +1,542 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'user_edit_form_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$UserEditFormEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(String name) nameChanged, + required TResult Function() submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String name)? nameChanged, + TResult? Function()? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String name)? nameChanged, + TResult Function()? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_NameChanged value) nameChanged, + required TResult Function(_Submitted value) submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_NameChanged value)? nameChanged, + TResult? Function(_Submitted value)? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_NameChanged value)? nameChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserEditFormEventCopyWith<$Res> { + factory $UserEditFormEventCopyWith( + UserEditFormEvent value, + $Res Function(UserEditFormEvent) then, + ) = _$UserEditFormEventCopyWithImpl<$Res, UserEditFormEvent>; +} + +/// @nodoc +class _$UserEditFormEventCopyWithImpl<$Res, $Val extends UserEditFormEvent> + implements $UserEditFormEventCopyWith<$Res> { + _$UserEditFormEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of UserEditFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$NameChangedImplCopyWith<$Res> { + factory _$$NameChangedImplCopyWith( + _$NameChangedImpl value, + $Res Function(_$NameChangedImpl) then, + ) = __$$NameChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String name}); +} + +/// @nodoc +class __$$NameChangedImplCopyWithImpl<$Res> + extends _$UserEditFormEventCopyWithImpl<$Res, _$NameChangedImpl> + implements _$$NameChangedImplCopyWith<$Res> { + __$$NameChangedImplCopyWithImpl( + _$NameChangedImpl _value, + $Res Function(_$NameChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserEditFormEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? name = null}) { + return _then( + _$NameChangedImpl( + null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$NameChangedImpl implements _NameChanged { + const _$NameChangedImpl(this.name); + + @override + final String name; + + @override + String toString() { + return 'UserEditFormEvent.nameChanged(name: $name)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$NameChangedImpl && + (identical(other.name, name) || other.name == name)); + } + + @override + int get hashCode => Object.hash(runtimeType, name); + + /// Create a copy of UserEditFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$NameChangedImplCopyWith<_$NameChangedImpl> get copyWith => + __$$NameChangedImplCopyWithImpl<_$NameChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String name) nameChanged, + required TResult Function() submitted, + }) { + return nameChanged(name); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String name)? nameChanged, + TResult? Function()? submitted, + }) { + return nameChanged?.call(name); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String name)? nameChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (nameChanged != null) { + return nameChanged(name); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_NameChanged value) nameChanged, + required TResult Function(_Submitted value) submitted, + }) { + return nameChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_NameChanged value)? nameChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return nameChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_NameChanged value)? nameChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (nameChanged != null) { + return nameChanged(this); + } + return orElse(); + } +} + +abstract class _NameChanged implements UserEditFormEvent { + const factory _NameChanged(final String name) = _$NameChangedImpl; + + String get name; + + /// Create a copy of UserEditFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$NameChangedImplCopyWith<_$NameChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$SubmittedImplCopyWith<$Res> { + factory _$$SubmittedImplCopyWith( + _$SubmittedImpl value, + $Res Function(_$SubmittedImpl) then, + ) = __$$SubmittedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$SubmittedImplCopyWithImpl<$Res> + extends _$UserEditFormEventCopyWithImpl<$Res, _$SubmittedImpl> + implements _$$SubmittedImplCopyWith<$Res> { + __$$SubmittedImplCopyWithImpl( + _$SubmittedImpl _value, + $Res Function(_$SubmittedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserEditFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$SubmittedImpl implements _Submitted { + const _$SubmittedImpl(); + + @override + String toString() { + return 'UserEditFormEvent.submitted()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$SubmittedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String name) nameChanged, + required TResult Function() submitted, + }) { + return submitted(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String name)? nameChanged, + TResult? Function()? submitted, + }) { + return submitted?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String name)? nameChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_NameChanged value) nameChanged, + required TResult Function(_Submitted value) submitted, + }) { + return submitted(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_NameChanged value)? nameChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return submitted?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_NameChanged value)? nameChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(this); + } + return orElse(); + } +} + +abstract class _Submitted implements UserEditFormEvent { + const factory _Submitted() = _$SubmittedImpl; +} + +/// @nodoc +mixin _$UserEditFormState { + String get name => throw _privateConstructorUsedError; + Option> get failureOrUserOption => + throw _privateConstructorUsedError; + bool get isSubmitting => throw _privateConstructorUsedError; + bool get showErrorMessages => throw _privateConstructorUsedError; + + /// Create a copy of UserEditFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $UserEditFormStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserEditFormStateCopyWith<$Res> { + factory $UserEditFormStateCopyWith( + UserEditFormState value, + $Res Function(UserEditFormState) then, + ) = _$UserEditFormStateCopyWithImpl<$Res, UserEditFormState>; + @useResult + $Res call({ + String name, + Option> failureOrUserOption, + bool isSubmitting, + bool showErrorMessages, + }); +} + +/// @nodoc +class _$UserEditFormStateCopyWithImpl<$Res, $Val extends UserEditFormState> + implements $UserEditFormStateCopyWith<$Res> { + _$UserEditFormStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of UserEditFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? name = null, + Object? failureOrUserOption = null, + Object? isSubmitting = null, + Object? showErrorMessages = null, + }) { + return _then( + _value.copyWith( + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + failureOrUserOption: null == failureOrUserOption + ? _value.failureOrUserOption + : failureOrUserOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + showErrorMessages: null == showErrorMessages + ? _value.showErrorMessages + : showErrorMessages // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$UserEditFormStateImplCopyWith<$Res> + implements $UserEditFormStateCopyWith<$Res> { + factory _$$UserEditFormStateImplCopyWith( + _$UserEditFormStateImpl value, + $Res Function(_$UserEditFormStateImpl) then, + ) = __$$UserEditFormStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String name, + Option> failureOrUserOption, + bool isSubmitting, + bool showErrorMessages, + }); +} + +/// @nodoc +class __$$UserEditFormStateImplCopyWithImpl<$Res> + extends _$UserEditFormStateCopyWithImpl<$Res, _$UserEditFormStateImpl> + implements _$$UserEditFormStateImplCopyWith<$Res> { + __$$UserEditFormStateImplCopyWithImpl( + _$UserEditFormStateImpl _value, + $Res Function(_$UserEditFormStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserEditFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? name = null, + Object? failureOrUserOption = null, + Object? isSubmitting = null, + Object? showErrorMessages = null, + }) { + return _then( + _$UserEditFormStateImpl( + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + failureOrUserOption: null == failureOrUserOption + ? _value.failureOrUserOption + : failureOrUserOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + showErrorMessages: null == showErrorMessages + ? _value.showErrorMessages + : showErrorMessages // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$UserEditFormStateImpl implements _UserEditFormState { + const _$UserEditFormStateImpl({ + required this.name, + required this.failureOrUserOption, + this.isSubmitting = false, + this.showErrorMessages = false, + }); + + @override + final String name; + @override + final Option> failureOrUserOption; + @override + @JsonKey() + final bool isSubmitting; + @override + @JsonKey() + final bool showErrorMessages; + + @override + String toString() { + return 'UserEditFormState(name: $name, failureOrUserOption: $failureOrUserOption, isSubmitting: $isSubmitting, showErrorMessages: $showErrorMessages)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$UserEditFormStateImpl && + (identical(other.name, name) || other.name == name) && + (identical(other.failureOrUserOption, failureOrUserOption) || + other.failureOrUserOption == failureOrUserOption) && + (identical(other.isSubmitting, isSubmitting) || + other.isSubmitting == isSubmitting) && + (identical(other.showErrorMessages, showErrorMessages) || + other.showErrorMessages == showErrorMessages)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + name, + failureOrUserOption, + isSubmitting, + showErrorMessages, + ); + + /// Create a copy of UserEditFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$UserEditFormStateImplCopyWith<_$UserEditFormStateImpl> get copyWith => + __$$UserEditFormStateImplCopyWithImpl<_$UserEditFormStateImpl>( + this, + _$identity, + ); +} + +abstract class _UserEditFormState implements UserEditFormState { + const factory _UserEditFormState({ + required final String name, + required final Option> failureOrUserOption, + final bool isSubmitting, + final bool showErrorMessages, + }) = _$UserEditFormStateImpl; + + @override + String get name; + @override + Option> get failureOrUserOption; + @override + bool get isSubmitting; + @override + bool get showErrorMessages; + + /// Create a copy of UserEditFormState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$UserEditFormStateImplCopyWith<_$UserEditFormStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/user/user_edit_form/user_edit_form_event.dart b/lib/application/user/user_edit_form/user_edit_form_event.dart new file mode 100644 index 0000000..6162825 --- /dev/null +++ b/lib/application/user/user_edit_form/user_edit_form_event.dart @@ -0,0 +1,7 @@ +part of 'user_edit_form_bloc.dart'; + +@freezed +class UserEditFormEvent with _$UserEditFormEvent { + const factory UserEditFormEvent.nameChanged(String name) = _NameChanged; + const factory UserEditFormEvent.submitted() = _Submitted; +} diff --git a/lib/application/user/user_edit_form/user_edit_form_state.dart b/lib/application/user/user_edit_form/user_edit_form_state.dart new file mode 100644 index 0000000..8b848c5 --- /dev/null +++ b/lib/application/user/user_edit_form/user_edit_form_state.dart @@ -0,0 +1,14 @@ +part of 'user_edit_form_bloc.dart'; + +@freezed +class UserEditFormState with _$UserEditFormState { + const factory UserEditFormState({ + required String name, + required Option> failureOrUserOption, + @Default(false) bool isSubmitting, + @Default(false) bool showErrorMessages, + }) = _UserEditFormState; + + factory UserEditFormState.initial() => + UserEditFormState(name: '', failureOrUserOption: none()); +} diff --git a/lib/common/url/api_path.dart b/lib/common/url/api_path.dart index a3cdc1b..cdccbd3 100644 --- a/lib/common/url/api_path.dart +++ b/lib/common/url/api_path.dart @@ -30,4 +30,7 @@ class ApiPath { // Outlet static const String outlet = '/api/v1/outlets'; + + // User + static const String user = '/api/v1/users'; } diff --git a/lib/domain/auth/auth.dart b/lib/domain/auth/auth.dart index 959c3c1..20c5d07 100644 --- a/lib/domain/auth/auth.dart +++ b/lib/domain/auth/auth.dart @@ -2,10 +2,10 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:dartz/dartz.dart'; import '../../common/api/api_failure.dart'; +import '../user/user.dart'; part 'failures/auth_failure.dart'; part 'repositories/i_auth_repository.dart'; part 'entities/auth_entity.dart'; -part 'entities/user_entity.dart'; part 'auth.freezed.dart'; diff --git a/lib/domain/auth/auth.freezed.dart b/lib/domain/auth/auth.freezed.dart index 2a44bc1..405a0c7 100644 --- a/lib/domain/auth/auth.freezed.dart +++ b/lib/domain/auth/auth.freezed.dart @@ -691,349 +691,3 @@ abstract class _Auth extends Auth { _$$AuthImplCopyWith<_$AuthImpl> get copyWith => throw _privateConstructorUsedError; } - -/// @nodoc -mixin _$User { - String get id => throw _privateConstructorUsedError; - String get organizationId => throw _privateConstructorUsedError; - String get outletId => throw _privateConstructorUsedError; - String get name => throw _privateConstructorUsedError; - String get email => throw _privateConstructorUsedError; - String get role => throw _privateConstructorUsedError; - Map get permissions => throw _privateConstructorUsedError; - bool get isActive => throw _privateConstructorUsedError; - DateTime get createdAt => throw _privateConstructorUsedError; - DateTime get updatedAt => throw _privateConstructorUsedError; - - /// Create a copy of User - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - $UserCopyWith get copyWith => throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $UserCopyWith<$Res> { - factory $UserCopyWith(User value, $Res Function(User) then) = - _$UserCopyWithImpl<$Res, User>; - @useResult - $Res call({ - String id, - String organizationId, - String outletId, - String name, - String email, - String role, - Map permissions, - bool isActive, - DateTime createdAt, - DateTime updatedAt, - }); -} - -/// @nodoc -class _$UserCopyWithImpl<$Res, $Val extends User> - implements $UserCopyWith<$Res> { - _$UserCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - /// Create a copy of User - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? id = null, - Object? organizationId = null, - Object? outletId = null, - Object? name = null, - Object? email = null, - Object? role = null, - Object? permissions = null, - Object? isActive = null, - Object? createdAt = null, - Object? updatedAt = null, - }) { - return _then( - _value.copyWith( - id: null == id - ? _value.id - : id // ignore: cast_nullable_to_non_nullable - as String, - organizationId: null == organizationId - ? _value.organizationId - : organizationId // ignore: cast_nullable_to_non_nullable - as String, - outletId: null == outletId - ? _value.outletId - : outletId // ignore: cast_nullable_to_non_nullable - as String, - name: null == name - ? _value.name - : name // ignore: cast_nullable_to_non_nullable - as String, - email: null == email - ? _value.email - : email // ignore: cast_nullable_to_non_nullable - as String, - role: null == role - ? _value.role - : role // ignore: cast_nullable_to_non_nullable - as String, - permissions: null == permissions - ? _value.permissions - : permissions // ignore: cast_nullable_to_non_nullable - as Map, - isActive: null == isActive - ? _value.isActive - : isActive // ignore: cast_nullable_to_non_nullable - as bool, - createdAt: null == createdAt - ? _value.createdAt - : createdAt // ignore: cast_nullable_to_non_nullable - as DateTime, - updatedAt: null == updatedAt - ? _value.updatedAt - : updatedAt // ignore: cast_nullable_to_non_nullable - as DateTime, - ) - as $Val, - ); - } -} - -/// @nodoc -abstract class _$$UserImplCopyWith<$Res> implements $UserCopyWith<$Res> { - factory _$$UserImplCopyWith( - _$UserImpl value, - $Res Function(_$UserImpl) then, - ) = __$$UserImplCopyWithImpl<$Res>; - @override - @useResult - $Res call({ - String id, - String organizationId, - String outletId, - String name, - String email, - String role, - Map permissions, - bool isActive, - DateTime createdAt, - DateTime updatedAt, - }); -} - -/// @nodoc -class __$$UserImplCopyWithImpl<$Res> - extends _$UserCopyWithImpl<$Res, _$UserImpl> - implements _$$UserImplCopyWith<$Res> { - __$$UserImplCopyWithImpl(_$UserImpl _value, $Res Function(_$UserImpl) _then) - : super(_value, _then); - - /// Create a copy of User - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? id = null, - Object? organizationId = null, - Object? outletId = null, - Object? name = null, - Object? email = null, - Object? role = null, - Object? permissions = null, - Object? isActive = null, - Object? createdAt = null, - Object? updatedAt = null, - }) { - return _then( - _$UserImpl( - id: null == id - ? _value.id - : id // ignore: cast_nullable_to_non_nullable - as String, - organizationId: null == organizationId - ? _value.organizationId - : organizationId // ignore: cast_nullable_to_non_nullable - as String, - outletId: null == outletId - ? _value.outletId - : outletId // ignore: cast_nullable_to_non_nullable - as String, - name: null == name - ? _value.name - : name // ignore: cast_nullable_to_non_nullable - as String, - email: null == email - ? _value.email - : email // ignore: cast_nullable_to_non_nullable - as String, - role: null == role - ? _value.role - : role // ignore: cast_nullable_to_non_nullable - as String, - permissions: null == permissions - ? _value._permissions - : permissions // ignore: cast_nullable_to_non_nullable - as Map, - isActive: null == isActive - ? _value.isActive - : isActive // ignore: cast_nullable_to_non_nullable - as bool, - createdAt: null == createdAt - ? _value.createdAt - : createdAt // ignore: cast_nullable_to_non_nullable - as DateTime, - updatedAt: null == updatedAt - ? _value.updatedAt - : updatedAt // ignore: cast_nullable_to_non_nullable - as DateTime, - ), - ); - } -} - -/// @nodoc - -class _$UserImpl extends _User { - const _$UserImpl({ - required this.id, - required this.organizationId, - required this.outletId, - required this.name, - required this.email, - required this.role, - required final Map permissions, - required this.isActive, - required this.createdAt, - required this.updatedAt, - }) : _permissions = permissions, - super._(); - - @override - final String id; - @override - final String organizationId; - @override - final String outletId; - @override - final String name; - @override - final String email; - @override - final String role; - final Map _permissions; - @override - Map get permissions { - if (_permissions is EqualUnmodifiableMapView) return _permissions; - // ignore: implicit_dynamic_type - return EqualUnmodifiableMapView(_permissions); - } - - @override - final bool isActive; - @override - final DateTime createdAt; - @override - final DateTime updatedAt; - - @override - String toString() { - return 'User(id: $id, organizationId: $organizationId, outletId: $outletId, name: $name, email: $email, role: $role, permissions: $permissions, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$UserImpl && - (identical(other.id, id) || other.id == id) && - (identical(other.organizationId, organizationId) || - other.organizationId == organizationId) && - (identical(other.outletId, outletId) || - other.outletId == outletId) && - (identical(other.name, name) || other.name == name) && - (identical(other.email, email) || other.email == email) && - (identical(other.role, role) || other.role == role) && - const DeepCollectionEquality().equals( - other._permissions, - _permissions, - ) && - (identical(other.isActive, isActive) || - other.isActive == isActive) && - (identical(other.createdAt, createdAt) || - other.createdAt == createdAt) && - (identical(other.updatedAt, updatedAt) || - other.updatedAt == updatedAt)); - } - - @override - int get hashCode => Object.hash( - runtimeType, - id, - organizationId, - outletId, - name, - email, - role, - const DeepCollectionEquality().hash(_permissions), - isActive, - createdAt, - updatedAt, - ); - - /// Create a copy of User - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - @override - @pragma('vm:prefer-inline') - _$$UserImplCopyWith<_$UserImpl> get copyWith => - __$$UserImplCopyWithImpl<_$UserImpl>(this, _$identity); -} - -abstract class _User extends User { - const factory _User({ - required final String id, - required final String organizationId, - required final String outletId, - required final String name, - required final String email, - required final String role, - required final Map permissions, - required final bool isActive, - required final DateTime createdAt, - required final DateTime updatedAt, - }) = _$UserImpl; - const _User._() : super._(); - - @override - String get id; - @override - String get organizationId; - @override - String get outletId; - @override - String get name; - @override - String get email; - @override - String get role; - @override - Map get permissions; - @override - bool get isActive; - @override - DateTime get createdAt; - @override - DateTime get updatedAt; - - /// Create a copy of User - /// with the given fields replaced by the non-null parameter values. - @override - @JsonKey(includeFromJson: false, includeToJson: false) - _$$UserImplCopyWith<_$UserImpl> get copyWith => - throw _privateConstructorUsedError; -} diff --git a/lib/domain/auth/entities/user_entity.dart b/lib/domain/user/entities/user_entity.dart similarity index 96% rename from lib/domain/auth/entities/user_entity.dart rename to lib/domain/user/entities/user_entity.dart index 822ca23..ddc9c02 100644 --- a/lib/domain/auth/entities/user_entity.dart +++ b/lib/domain/user/entities/user_entity.dart @@ -1,4 +1,4 @@ -part of '../auth.dart'; +part of '../user.dart'; @freezed class User with _$User { diff --git a/lib/domain/user/failures/user_failure.dart b/lib/domain/user/failures/user_failure.dart new file mode 100644 index 0000000..43edeac --- /dev/null +++ b/lib/domain/user/failures/user_failure.dart @@ -0,0 +1,10 @@ +part of '../user.dart'; + +@freezed +sealed class UserFailure with _$UserFailure { + const factory UserFailure.serverError(ApiFailure failure) = _ServerError; + const factory UserFailure.unexpectedError() = _UnexpectedError; + const factory UserFailure.empty() = _Empty; + const factory UserFailure.dynamicErrorMessage(String erroMessage) = + _DynamicErrorMessage; +} diff --git a/lib/domain/user/repositories/i_user_repository.dart b/lib/domain/user/repositories/i_user_repository.dart new file mode 100644 index 0000000..ee13ed4 --- /dev/null +++ b/lib/domain/user/repositories/i_user_repository.dart @@ -0,0 +1,5 @@ +part of '../user.dart'; + +abstract class IUserRepository { + Future> editUser({required String name}); +} diff --git a/lib/domain/user/user.dart b/lib/domain/user/user.dart new file mode 100644 index 0000000..4165584 --- /dev/null +++ b/lib/domain/user/user.dart @@ -0,0 +1,10 @@ +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../common/api/api_failure.dart'; + +part 'user.freezed.dart'; + +part 'entities/user_entity.dart'; +part 'failures/user_failure.dart'; +part 'repositories/i_user_repository.dart'; diff --git a/lib/domain/user/user.freezed.dart b/lib/domain/user/user.freezed.dart new file mode 100644 index 0000000..e5e7720 --- /dev/null +++ b/lib/domain/user/user.freezed.dart @@ -0,0 +1,995 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'user.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$User { + String get id => throw _privateConstructorUsedError; + String get organizationId => throw _privateConstructorUsedError; + String get outletId => throw _privateConstructorUsedError; + String get name => throw _privateConstructorUsedError; + String get email => throw _privateConstructorUsedError; + String get role => throw _privateConstructorUsedError; + Map get permissions => throw _privateConstructorUsedError; + bool get isActive => throw _privateConstructorUsedError; + DateTime get createdAt => throw _privateConstructorUsedError; + DateTime get updatedAt => throw _privateConstructorUsedError; + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $UserCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserCopyWith<$Res> { + factory $UserCopyWith(User value, $Res Function(User) then) = + _$UserCopyWithImpl<$Res, User>; + @useResult + $Res call({ + String id, + String organizationId, + String outletId, + String name, + String email, + String role, + Map permissions, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class _$UserCopyWithImpl<$Res, $Val extends User> + implements $UserCopyWith<$Res> { + _$UserCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? outletId = null, + Object? name = null, + Object? email = null, + Object? role = null, + Object? permissions = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _value.copyWith( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + role: null == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String, + permissions: null == permissions + ? _value.permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$UserImplCopyWith<$Res> implements $UserCopyWith<$Res> { + factory _$$UserImplCopyWith( + _$UserImpl value, + $Res Function(_$UserImpl) then, + ) = __$$UserImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String id, + String organizationId, + String outletId, + String name, + String email, + String role, + Map permissions, + bool isActive, + DateTime createdAt, + DateTime updatedAt, + }); +} + +/// @nodoc +class __$$UserImplCopyWithImpl<$Res> + extends _$UserCopyWithImpl<$Res, _$UserImpl> + implements _$$UserImplCopyWith<$Res> { + __$$UserImplCopyWithImpl(_$UserImpl _value, $Res Function(_$UserImpl) _then) + : super(_value, _then); + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = null, + Object? organizationId = null, + Object? outletId = null, + Object? name = null, + Object? email = null, + Object? role = null, + Object? permissions = null, + Object? isActive = null, + Object? createdAt = null, + Object? updatedAt = null, + }) { + return _then( + _$UserImpl( + id: null == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String, + organizationId: null == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String, + outletId: null == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String, + name: null == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + role: null == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String, + permissions: null == permissions + ? _value._permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map, + isActive: null == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool, + createdAt: null == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as DateTime, + updatedAt: null == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$UserImpl extends _User { + const _$UserImpl({ + required this.id, + required this.organizationId, + required this.outletId, + required this.name, + required this.email, + required this.role, + required final Map permissions, + required this.isActive, + required this.createdAt, + required this.updatedAt, + }) : _permissions = permissions, + super._(); + + @override + final String id; + @override + final String organizationId; + @override + final String outletId; + @override + final String name; + @override + final String email; + @override + final String role; + final Map _permissions; + @override + Map get permissions { + if (_permissions is EqualUnmodifiableMapView) return _permissions; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(_permissions); + } + + @override + final bool isActive; + @override + final DateTime createdAt; + @override + final DateTime updatedAt; + + @override + String toString() { + return 'User(id: $id, organizationId: $organizationId, outletId: $outletId, name: $name, email: $email, role: $role, permissions: $permissions, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$UserImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.name, name) || other.name == name) && + (identical(other.email, email) || other.email == email) && + (identical(other.role, role) || other.role == role) && + const DeepCollectionEquality().equals( + other._permissions, + _permissions, + ) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + outletId, + name, + email, + role, + const DeepCollectionEquality().hash(_permissions), + isActive, + createdAt, + updatedAt, + ); + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$UserImplCopyWith<_$UserImpl> get copyWith => + __$$UserImplCopyWithImpl<_$UserImpl>(this, _$identity); +} + +abstract class _User extends User { + const factory _User({ + required final String id, + required final String organizationId, + required final String outletId, + required final String name, + required final String email, + required final String role, + required final Map permissions, + required final bool isActive, + required final DateTime createdAt, + required final DateTime updatedAt, + }) = _$UserImpl; + const _User._() : super._(); + + @override + String get id; + @override + String get organizationId; + @override + String get outletId; + @override + String get name; + @override + String get email; + @override + String get role; + @override + Map get permissions; + @override + bool get isActive; + @override + DateTime get createdAt; + @override + DateTime get updatedAt; + + /// Create a copy of User + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$UserImplCopyWith<_$UserImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$UserFailure { + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserFailureCopyWith<$Res> { + factory $UserFailureCopyWith( + UserFailure value, + $Res Function(UserFailure) then, + ) = _$UserFailureCopyWithImpl<$Res, UserFailure>; +} + +/// @nodoc +class _$UserFailureCopyWithImpl<$Res, $Val extends UserFailure> + implements $UserFailureCopyWith<$Res> { + _$UserFailureCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$ServerErrorImplCopyWith<$Res> { + factory _$$ServerErrorImplCopyWith( + _$ServerErrorImpl value, + $Res Function(_$ServerErrorImpl) then, + ) = __$$ServerErrorImplCopyWithImpl<$Res>; + @useResult + $Res call({ApiFailure failure}); + + $ApiFailureCopyWith<$Res> get failure; +} + +/// @nodoc +class __$$ServerErrorImplCopyWithImpl<$Res> + extends _$UserFailureCopyWithImpl<$Res, _$ServerErrorImpl> + implements _$$ServerErrorImplCopyWith<$Res> { + __$$ServerErrorImplCopyWithImpl( + _$ServerErrorImpl _value, + $Res Function(_$ServerErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? failure = null}) { + return _then( + _$ServerErrorImpl( + null == failure + ? _value.failure + : failure // ignore: cast_nullable_to_non_nullable + as ApiFailure, + ), + ); + } + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ApiFailureCopyWith<$Res> get failure { + return $ApiFailureCopyWith<$Res>(_value.failure, (value) { + return _then(_value.copyWith(failure: value)); + }); + } +} + +/// @nodoc + +class _$ServerErrorImpl implements _ServerError { + const _$ServerErrorImpl(this.failure); + + @override + final ApiFailure failure; + + @override + String toString() { + return 'UserFailure.serverError(failure: $failure)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServerErrorImpl && + (identical(other.failure, failure) || other.failure == failure)); + } + + @override + int get hashCode => Object.hash(runtimeType, failure); + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return serverError(failure); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return serverError?.call(failure); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(failure); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return serverError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return serverError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (serverError != null) { + return serverError(this); + } + return orElse(); + } +} + +abstract class _ServerError implements UserFailure { + const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl; + + ApiFailure get failure; + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$UnexpectedErrorImplCopyWith<$Res> { + factory _$$UnexpectedErrorImplCopyWith( + _$UnexpectedErrorImpl value, + $Res Function(_$UnexpectedErrorImpl) then, + ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$UnexpectedErrorImplCopyWithImpl<$Res> + extends _$UserFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl> + implements _$$UnexpectedErrorImplCopyWith<$Res> { + __$$UnexpectedErrorImplCopyWithImpl( + _$UnexpectedErrorImpl _value, + $Res Function(_$UnexpectedErrorImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$UnexpectedErrorImpl implements _UnexpectedError { + const _$UnexpectedErrorImpl(); + + @override + String toString() { + return 'UserFailure.unexpectedError()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return unexpectedError(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return unexpectedError?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return unexpectedError(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return unexpectedError?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (unexpectedError != null) { + return unexpectedError(this); + } + return orElse(); + } +} + +abstract class _UnexpectedError implements UserFailure { + const factory _UnexpectedError() = _$UnexpectedErrorImpl; +} + +/// @nodoc +abstract class _$$EmptyImplCopyWith<$Res> { + factory _$$EmptyImplCopyWith( + _$EmptyImpl value, + $Res Function(_$EmptyImpl) then, + ) = __$$EmptyImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$EmptyImplCopyWithImpl<$Res> + extends _$UserFailureCopyWithImpl<$Res, _$EmptyImpl> + implements _$$EmptyImplCopyWith<$Res> { + __$$EmptyImplCopyWithImpl( + _$EmptyImpl _value, + $Res Function(_$EmptyImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$EmptyImpl implements _Empty { + const _$EmptyImpl(); + + @override + String toString() { + return 'UserFailure.empty()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$EmptyImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return empty(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return empty?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return empty(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return empty?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (empty != null) { + return empty(this); + } + return orElse(); + } +} + +abstract class _Empty implements UserFailure { + const factory _Empty() = _$EmptyImpl; +} + +/// @nodoc +abstract class _$$DynamicErrorMessageImplCopyWith<$Res> { + factory _$$DynamicErrorMessageImplCopyWith( + _$DynamicErrorMessageImpl value, + $Res Function(_$DynamicErrorMessageImpl) then, + ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>; + @useResult + $Res call({String erroMessage}); +} + +/// @nodoc +class __$$DynamicErrorMessageImplCopyWithImpl<$Res> + extends _$UserFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl> + implements _$$DynamicErrorMessageImplCopyWith<$Res> { + __$$DynamicErrorMessageImplCopyWithImpl( + _$DynamicErrorMessageImpl _value, + $Res Function(_$DynamicErrorMessageImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? erroMessage = null}) { + return _then( + _$DynamicErrorMessageImpl( + null == erroMessage + ? _value.erroMessage + : erroMessage // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$DynamicErrorMessageImpl implements _DynamicErrorMessage { + const _$DynamicErrorMessageImpl(this.erroMessage); + + @override + final String erroMessage; + + @override + String toString() { + return 'UserFailure.dynamicErrorMessage(erroMessage: $erroMessage)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DynamicErrorMessageImpl && + (identical(other.erroMessage, erroMessage) || + other.erroMessage == erroMessage)); + } + + @override + int get hashCode => Object.hash(runtimeType, erroMessage); + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(ApiFailure failure) serverError, + required TResult Function() unexpectedError, + required TResult Function() empty, + required TResult Function(String erroMessage) dynamicErrorMessage, + }) { + return dynamicErrorMessage(erroMessage); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(ApiFailure failure)? serverError, + TResult? Function()? unexpectedError, + TResult? Function()? empty, + TResult? Function(String erroMessage)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(erroMessage); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(ApiFailure failure)? serverError, + TResult Function()? unexpectedError, + TResult Function()? empty, + TResult Function(String erroMessage)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(erroMessage); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_ServerError value) serverError, + required TResult Function(_UnexpectedError value) unexpectedError, + required TResult Function(_Empty value) empty, + required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage, + }) { + return dynamicErrorMessage(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_ServerError value)? serverError, + TResult? Function(_UnexpectedError value)? unexpectedError, + TResult? Function(_Empty value)? empty, + TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage, + }) { + return dynamicErrorMessage?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_ServerError value)? serverError, + TResult Function(_UnexpectedError value)? unexpectedError, + TResult Function(_Empty value)? empty, + TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage, + required TResult orElse(), + }) { + if (dynamicErrorMessage != null) { + return dynamicErrorMessage(this); + } + return orElse(); + } +} + +abstract class _DynamicErrorMessage implements UserFailure { + const factory _DynamicErrorMessage(final String erroMessage) = + _$DynamicErrorMessageImpl; + + String get erroMessage; + + /// Create a copy of UserFailure + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 77f2368..66c4dda 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -5,7 +5,7 @@ import 'package:injectable/injectable.dart'; import '../../../domain/analytic/analytic.dart'; import '../../../domain/analytic/repositories/i_analytic_repository.dart'; -import '../../../domain/auth/auth.dart'; +import '../../../domain/user/user.dart'; import '../../auth/datasources/local_data_provider.dart'; import '../datasource/remote_data_provider.dart'; diff --git a/lib/infrastructure/auth/auth_dtos.dart b/lib/infrastructure/auth/auth_dtos.dart index 69e8179..2ad030f 100644 --- a/lib/infrastructure/auth/auth_dtos.dart +++ b/lib/infrastructure/auth/auth_dtos.dart @@ -1,9 +1,10 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import '../../domain/auth/auth.dart'; +import '../../domain/user/user.dart'; +import '../user/user_dtos.dart'; part 'auth_dtos.freezed.dart'; part 'auth_dtos.g.dart'; part 'dto/auth_dto.dart'; -part 'dto/user_dto.dart'; diff --git a/lib/infrastructure/auth/auth_dtos.freezed.dart b/lib/infrastructure/auth/auth_dtos.freezed.dart index 2de3110..9911ea7 100644 --- a/lib/infrastructure/auth/auth_dtos.freezed.dart +++ b/lib/infrastructure/auth/auth_dtos.freezed.dart @@ -242,401 +242,3 @@ abstract class _AuthDto extends AuthDto { _$$AuthDtoImplCopyWith<_$AuthDtoImpl> get copyWith => throw _privateConstructorUsedError; } - -UserDto _$UserDtoFromJson(Map json) { - return _UserDto.fromJson(json); -} - -/// @nodoc -mixin _$UserDto { - @JsonKey(name: 'id') - String? get id => throw _privateConstructorUsedError; - @JsonKey(name: 'organization_id') - String? get organizationId => throw _privateConstructorUsedError; - @JsonKey(name: 'outlet_id') - String? get outletId => throw _privateConstructorUsedError; - @JsonKey(name: 'name') - String? get name => throw _privateConstructorUsedError; - @JsonKey(name: 'email') - String? get email => throw _privateConstructorUsedError; - @JsonKey(name: 'role') - String? get role => throw _privateConstructorUsedError; - @JsonKey(name: 'permissions') - Map? get permissions => throw _privateConstructorUsedError; - @JsonKey(name: 'is_active') - bool? get isActive => throw _privateConstructorUsedError; - @JsonKey(name: 'created_at') - String? get createdAt => throw _privateConstructorUsedError; - @JsonKey(name: 'updated_at') - String? get updatedAt => throw _privateConstructorUsedError; - - /// Serializes this UserDto to a JSON map. - Map toJson() => throw _privateConstructorUsedError; - - /// Create a copy of UserDto - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - $UserDtoCopyWith get copyWith => throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $UserDtoCopyWith<$Res> { - factory $UserDtoCopyWith(UserDto value, $Res Function(UserDto) then) = - _$UserDtoCopyWithImpl<$Res, UserDto>; - @useResult - $Res call({ - @JsonKey(name: 'id') String? id, - @JsonKey(name: 'organization_id') String? organizationId, - @JsonKey(name: 'outlet_id') String? outletId, - @JsonKey(name: 'name') String? name, - @JsonKey(name: 'email') String? email, - @JsonKey(name: 'role') String? role, - @JsonKey(name: 'permissions') Map? permissions, - @JsonKey(name: 'is_active') bool? isActive, - @JsonKey(name: 'created_at') String? createdAt, - @JsonKey(name: 'updated_at') String? updatedAt, - }); -} - -/// @nodoc -class _$UserDtoCopyWithImpl<$Res, $Val extends UserDto> - implements $UserDtoCopyWith<$Res> { - _$UserDtoCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - /// Create a copy of UserDto - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? id = freezed, - Object? organizationId = freezed, - Object? outletId = freezed, - Object? name = freezed, - Object? email = freezed, - Object? role = freezed, - Object? permissions = freezed, - Object? isActive = freezed, - Object? createdAt = freezed, - Object? updatedAt = freezed, - }) { - return _then( - _value.copyWith( - id: freezed == id - ? _value.id - : id // ignore: cast_nullable_to_non_nullable - as String?, - organizationId: freezed == organizationId - ? _value.organizationId - : organizationId // ignore: cast_nullable_to_non_nullable - as String?, - outletId: freezed == outletId - ? _value.outletId - : outletId // ignore: cast_nullable_to_non_nullable - as String?, - name: freezed == name - ? _value.name - : name // ignore: cast_nullable_to_non_nullable - as String?, - email: freezed == email - ? _value.email - : email // ignore: cast_nullable_to_non_nullable - as String?, - role: freezed == role - ? _value.role - : role // ignore: cast_nullable_to_non_nullable - as String?, - permissions: freezed == permissions - ? _value.permissions - : permissions // ignore: cast_nullable_to_non_nullable - as Map?, - isActive: freezed == isActive - ? _value.isActive - : isActive // ignore: cast_nullable_to_non_nullable - as bool?, - createdAt: freezed == createdAt - ? _value.createdAt - : createdAt // ignore: cast_nullable_to_non_nullable - as String?, - updatedAt: freezed == updatedAt - ? _value.updatedAt - : updatedAt // ignore: cast_nullable_to_non_nullable - as String?, - ) - as $Val, - ); - } -} - -/// @nodoc -abstract class _$$UserDtoImplCopyWith<$Res> implements $UserDtoCopyWith<$Res> { - factory _$$UserDtoImplCopyWith( - _$UserDtoImpl value, - $Res Function(_$UserDtoImpl) then, - ) = __$$UserDtoImplCopyWithImpl<$Res>; - @override - @useResult - $Res call({ - @JsonKey(name: 'id') String? id, - @JsonKey(name: 'organization_id') String? organizationId, - @JsonKey(name: 'outlet_id') String? outletId, - @JsonKey(name: 'name') String? name, - @JsonKey(name: 'email') String? email, - @JsonKey(name: 'role') String? role, - @JsonKey(name: 'permissions') Map? permissions, - @JsonKey(name: 'is_active') bool? isActive, - @JsonKey(name: 'created_at') String? createdAt, - @JsonKey(name: 'updated_at') String? updatedAt, - }); -} - -/// @nodoc -class __$$UserDtoImplCopyWithImpl<$Res> - extends _$UserDtoCopyWithImpl<$Res, _$UserDtoImpl> - implements _$$UserDtoImplCopyWith<$Res> { - __$$UserDtoImplCopyWithImpl( - _$UserDtoImpl _value, - $Res Function(_$UserDtoImpl) _then, - ) : super(_value, _then); - - /// Create a copy of UserDto - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? id = freezed, - Object? organizationId = freezed, - Object? outletId = freezed, - Object? name = freezed, - Object? email = freezed, - Object? role = freezed, - Object? permissions = freezed, - Object? isActive = freezed, - Object? createdAt = freezed, - Object? updatedAt = freezed, - }) { - return _then( - _$UserDtoImpl( - id: freezed == id - ? _value.id - : id // ignore: cast_nullable_to_non_nullable - as String?, - organizationId: freezed == organizationId - ? _value.organizationId - : organizationId // ignore: cast_nullable_to_non_nullable - as String?, - outletId: freezed == outletId - ? _value.outletId - : outletId // ignore: cast_nullable_to_non_nullable - as String?, - name: freezed == name - ? _value.name - : name // ignore: cast_nullable_to_non_nullable - as String?, - email: freezed == email - ? _value.email - : email // ignore: cast_nullable_to_non_nullable - as String?, - role: freezed == role - ? _value.role - : role // ignore: cast_nullable_to_non_nullable - as String?, - permissions: freezed == permissions - ? _value._permissions - : permissions // ignore: cast_nullable_to_non_nullable - as Map?, - isActive: freezed == isActive - ? _value.isActive - : isActive // ignore: cast_nullable_to_non_nullable - as bool?, - createdAt: freezed == createdAt - ? _value.createdAt - : createdAt // ignore: cast_nullable_to_non_nullable - as String?, - updatedAt: freezed == updatedAt - ? _value.updatedAt - : updatedAt // ignore: cast_nullable_to_non_nullable - as String?, - ), - ); - } -} - -/// @nodoc -@JsonSerializable() -class _$UserDtoImpl extends _UserDto { - const _$UserDtoImpl({ - @JsonKey(name: 'id') this.id, - @JsonKey(name: 'organization_id') this.organizationId, - @JsonKey(name: 'outlet_id') this.outletId, - @JsonKey(name: 'name') this.name, - @JsonKey(name: 'email') this.email, - @JsonKey(name: 'role') this.role, - @JsonKey(name: 'permissions') final Map? permissions, - @JsonKey(name: 'is_active') this.isActive, - @JsonKey(name: 'created_at') this.createdAt, - @JsonKey(name: 'updated_at') this.updatedAt, - }) : _permissions = permissions, - super._(); - - factory _$UserDtoImpl.fromJson(Map json) => - _$$UserDtoImplFromJson(json); - - @override - @JsonKey(name: 'id') - final String? id; - @override - @JsonKey(name: 'organization_id') - final String? organizationId; - @override - @JsonKey(name: 'outlet_id') - final String? outletId; - @override - @JsonKey(name: 'name') - final String? name; - @override - @JsonKey(name: 'email') - final String? email; - @override - @JsonKey(name: 'role') - final String? role; - final Map? _permissions; - @override - @JsonKey(name: 'permissions') - Map? get permissions { - final value = _permissions; - if (value == null) return null; - if (_permissions is EqualUnmodifiableMapView) return _permissions; - // ignore: implicit_dynamic_type - return EqualUnmodifiableMapView(value); - } - - @override - @JsonKey(name: 'is_active') - final bool? isActive; - @override - @JsonKey(name: 'created_at') - final String? createdAt; - @override - @JsonKey(name: 'updated_at') - final String? updatedAt; - - @override - String toString() { - return 'UserDto(id: $id, organizationId: $organizationId, outletId: $outletId, name: $name, email: $email, role: $role, permissions: $permissions, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$UserDtoImpl && - (identical(other.id, id) || other.id == id) && - (identical(other.organizationId, organizationId) || - other.organizationId == organizationId) && - (identical(other.outletId, outletId) || - other.outletId == outletId) && - (identical(other.name, name) || other.name == name) && - (identical(other.email, email) || other.email == email) && - (identical(other.role, role) || other.role == role) && - const DeepCollectionEquality().equals( - other._permissions, - _permissions, - ) && - (identical(other.isActive, isActive) || - other.isActive == isActive) && - (identical(other.createdAt, createdAt) || - other.createdAt == createdAt) && - (identical(other.updatedAt, updatedAt) || - other.updatedAt == updatedAt)); - } - - @JsonKey(includeFromJson: false, includeToJson: false) - @override - int get hashCode => Object.hash( - runtimeType, - id, - organizationId, - outletId, - name, - email, - role, - const DeepCollectionEquality().hash(_permissions), - isActive, - createdAt, - updatedAt, - ); - - /// Create a copy of UserDto - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - @override - @pragma('vm:prefer-inline') - _$$UserDtoImplCopyWith<_$UserDtoImpl> get copyWith => - __$$UserDtoImplCopyWithImpl<_$UserDtoImpl>(this, _$identity); - - @override - Map toJson() { - return _$$UserDtoImplToJson(this); - } -} - -abstract class _UserDto extends UserDto { - const factory _UserDto({ - @JsonKey(name: 'id') final String? id, - @JsonKey(name: 'organization_id') final String? organizationId, - @JsonKey(name: 'outlet_id') final String? outletId, - @JsonKey(name: 'name') final String? name, - @JsonKey(name: 'email') final String? email, - @JsonKey(name: 'role') final String? role, - @JsonKey(name: 'permissions') final Map? permissions, - @JsonKey(name: 'is_active') final bool? isActive, - @JsonKey(name: 'created_at') final String? createdAt, - @JsonKey(name: 'updated_at') final String? updatedAt, - }) = _$UserDtoImpl; - const _UserDto._() : super._(); - - factory _UserDto.fromJson(Map json) = _$UserDtoImpl.fromJson; - - @override - @JsonKey(name: 'id') - String? get id; - @override - @JsonKey(name: 'organization_id') - String? get organizationId; - @override - @JsonKey(name: 'outlet_id') - String? get outletId; - @override - @JsonKey(name: 'name') - String? get name; - @override - @JsonKey(name: 'email') - String? get email; - @override - @JsonKey(name: 'role') - String? get role; - @override - @JsonKey(name: 'permissions') - Map? get permissions; - @override - @JsonKey(name: 'is_active') - bool? get isActive; - @override - @JsonKey(name: 'created_at') - String? get createdAt; - @override - @JsonKey(name: 'updated_at') - String? get updatedAt; - - /// Create a copy of UserDto - /// with the given fields replaced by the non-null parameter values. - @override - @JsonKey(includeFromJson: false, includeToJson: false) - _$$UserDtoImplCopyWith<_$UserDtoImpl> get copyWith => - throw _privateConstructorUsedError; -} diff --git a/lib/infrastructure/auth/auth_dtos.g.dart b/lib/infrastructure/auth/auth_dtos.g.dart index 795ecd9..3937bd4 100644 --- a/lib/infrastructure/auth/auth_dtos.g.dart +++ b/lib/infrastructure/auth/auth_dtos.g.dart @@ -21,31 +21,3 @@ Map _$$AuthDtoImplToJson(_$AuthDtoImpl instance) => 'expires_at': instance.expiresAt, 'user': instance.user, }; - -_$UserDtoImpl _$$UserDtoImplFromJson(Map json) => - _$UserDtoImpl( - id: json['id'] as String?, - organizationId: json['organization_id'] as String?, - outletId: json['outlet_id'] as String?, - name: json['name'] as String?, - email: json['email'] as String?, - role: json['role'] as String?, - permissions: json['permissions'] as Map?, - isActive: json['is_active'] as bool?, - createdAt: json['created_at'] as String?, - updatedAt: json['updated_at'] as String?, - ); - -Map _$$UserDtoImplToJson(_$UserDtoImpl instance) => - { - 'id': instance.id, - 'organization_id': instance.organizationId, - 'outlet_id': instance.outletId, - 'name': instance.name, - 'email': instance.email, - 'role': instance.role, - 'permissions': instance.permissions, - 'is_active': instance.isActive, - 'created_at': instance.createdAt, - 'updated_at': instance.updatedAt, - }; diff --git a/lib/infrastructure/auth/datasources/local_data_provider.dart b/lib/infrastructure/auth/datasources/local_data_provider.dart index 26c460c..8f9536c 100644 --- a/lib/infrastructure/auth/datasources/local_data_provider.dart +++ b/lib/infrastructure/auth/datasources/local_data_provider.dart @@ -5,8 +5,8 @@ import 'package:injectable/injectable.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../../common/constant/local_storage_key.dart'; -import '../../../domain/auth/auth.dart'; -import '../auth_dtos.dart'; +import '../../../domain/user/user.dart'; +import '../../user/user_dtos.dart'; @injectable class AuthLocalDataProvider { diff --git a/lib/infrastructure/auth/repositories/auth_repository.dart b/lib/infrastructure/auth/repositories/auth_repository.dart index c615114..3d0f8df 100644 --- a/lib/infrastructure/auth/repositories/auth_repository.dart +++ b/lib/infrastructure/auth/repositories/auth_repository.dart @@ -4,6 +4,7 @@ import 'package:dartz/dartz.dart'; import 'package:injectable/injectable.dart'; import '../../../domain/auth/auth.dart'; +import '../../../domain/user/user.dart'; import '../datasources/local_data_provider.dart'; import '../datasources/remote_data_provider.dart'; diff --git a/lib/infrastructure/user/datasource/remote_data_provider.dart b/lib/infrastructure/user/datasource/remote_data_provider.dart new file mode 100644 index 0000000..9d62006 --- /dev/null +++ b/lib/infrastructure/user/datasource/remote_data_provider.dart @@ -0,0 +1,50 @@ +import 'dart:developer'; + +import 'package:data_channel/data_channel.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../common/api/api_client.dart'; +import '../../../common/api/api_failure.dart'; +import '../../../common/function/app_function.dart'; +import '../../../common/url/api_path.dart'; +import '../../../domain/user/user.dart'; +import '../user_dtos.dart'; + +@injectable +class UserRemoteDataProvider { + final ApiClient _apiClient; + + static const _logName = 'UserRemoteDataProvider'; + + UserRemoteDataProvider(this._apiClient); + + Future> updateUser({ + required String name, + required String userId, + }) async { + try { + final response = await _apiClient.put( + '${ApiPath.user}/$userId', + data: {'name': name, 'is_active': true}, + headers: getAuthorizationHeader(), + ); + + if (response.statusCode == 400) { + return DC.error(UserFailure.unexpectedError()); + } + + if (response.statusCode != 200) { + return DC.error( + UserFailure.dynamicErrorMessage(response.data['message']), + ); + } + + final dto = UserDto.fromJson(response.data); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('updateUser', name: _logName, error: e, stackTrace: s); + return DC.error(UserFailure.serverError(e)); + } + } +} diff --git a/lib/infrastructure/auth/dto/user_dto.dart b/lib/infrastructure/user/dto/user_dto.dart similarity index 97% rename from lib/infrastructure/auth/dto/user_dto.dart rename to lib/infrastructure/user/dto/user_dto.dart index be57e5d..f1ad1e6 100644 --- a/lib/infrastructure/auth/dto/user_dto.dart +++ b/lib/infrastructure/user/dto/user_dto.dart @@ -1,4 +1,4 @@ -part of '../auth_dtos.dart'; +part of '../user_dtos.dart'; @freezed class UserDto with _$UserDto { diff --git a/lib/infrastructure/user/repositories/user_repository.dart b/lib/infrastructure/user/repositories/user_repository.dart new file mode 100644 index 0000000..2d2cd30 --- /dev/null +++ b/lib/infrastructure/user/repositories/user_repository.dart @@ -0,0 +1,42 @@ +import 'dart:developer'; + +import 'package:dartz/dartz.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/user/user.dart'; +import '../../auth/datasources/local_data_provider.dart'; +import '../datasource/remote_data_provider.dart'; + +@Injectable(as: IUserRepository) +class UserRepository implements IUserRepository { + final UserRemoteDataProvider _dataProvider; + final AuthLocalDataProvider _authLocalDataProvider; + + final String _logName = 'UserRepository'; + + UserRepository(this._dataProvider, this._authLocalDataProvider); + + @override + Future> editUser({required String name}) async { + try { + User currentUser = await _authLocalDataProvider.currentUser(); + final result = await _dataProvider.updateUser( + name: name, + userId: currentUser.id, + ); + + if (result.hasError) { + return left(result.error!); + } + + final auth = result.data!.toDomain(); + + await _authLocalDataProvider.saveCurrentUser(result.data!); + + return right(auth); + } catch (e, s) { + log('editUserError', name: _logName, error: e, stackTrace: s); + return left(const UserFailure.unexpectedError()); + } + } +} diff --git a/lib/infrastructure/user/user_dtos.dart b/lib/infrastructure/user/user_dtos.dart new file mode 100644 index 0000000..48458fe --- /dev/null +++ b/lib/infrastructure/user/user_dtos.dart @@ -0,0 +1,8 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../domain/user/user.dart'; + +part 'user_dtos.freezed.dart'; +part 'user_dtos.g.dart'; + +part 'dto/user_dto.dart'; diff --git a/lib/infrastructure/user/user_dtos.freezed.dart b/lib/infrastructure/user/user_dtos.freezed.dart new file mode 100644 index 0000000..6c51cd9 --- /dev/null +++ b/lib/infrastructure/user/user_dtos.freezed.dart @@ -0,0 +1,414 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'user_dtos.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +UserDto _$UserDtoFromJson(Map json) { + return _UserDto.fromJson(json); +} + +/// @nodoc +mixin _$UserDto { + @JsonKey(name: 'id') + String? get id => throw _privateConstructorUsedError; + @JsonKey(name: 'organization_id') + String? get organizationId => throw _privateConstructorUsedError; + @JsonKey(name: 'outlet_id') + String? get outletId => throw _privateConstructorUsedError; + @JsonKey(name: 'name') + String? get name => throw _privateConstructorUsedError; + @JsonKey(name: 'email') + String? get email => throw _privateConstructorUsedError; + @JsonKey(name: 'role') + String? get role => throw _privateConstructorUsedError; + @JsonKey(name: 'permissions') + Map? get permissions => throw _privateConstructorUsedError; + @JsonKey(name: 'is_active') + bool? get isActive => throw _privateConstructorUsedError; + @JsonKey(name: 'created_at') + String? get createdAt => throw _privateConstructorUsedError; + @JsonKey(name: 'updated_at') + String? get updatedAt => throw _privateConstructorUsedError; + + /// Serializes this UserDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $UserDtoCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserDtoCopyWith<$Res> { + factory $UserDtoCopyWith(UserDto value, $Res Function(UserDto) then) = + _$UserDtoCopyWithImpl<$Res, UserDto>; + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'email') String? email, + @JsonKey(name: 'role') String? role, + @JsonKey(name: 'permissions') Map? permissions, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class _$UserDtoCopyWithImpl<$Res, $Val extends UserDto> + implements $UserDtoCopyWith<$Res> { + _$UserDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? outletId = freezed, + Object? name = freezed, + Object? email = freezed, + Object? role = freezed, + Object? permissions = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _value.copyWith( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + email: freezed == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String?, + role: freezed == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String?, + permissions: freezed == permissions + ? _value.permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$UserDtoImplCopyWith<$Res> implements $UserDtoCopyWith<$Res> { + factory _$$UserDtoImplCopyWith( + _$UserDtoImpl value, + $Res Function(_$UserDtoImpl) then, + ) = __$$UserDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(name: 'id') String? id, + @JsonKey(name: 'organization_id') String? organizationId, + @JsonKey(name: 'outlet_id') String? outletId, + @JsonKey(name: 'name') String? name, + @JsonKey(name: 'email') String? email, + @JsonKey(name: 'role') String? role, + @JsonKey(name: 'permissions') Map? permissions, + @JsonKey(name: 'is_active') bool? isActive, + @JsonKey(name: 'created_at') String? createdAt, + @JsonKey(name: 'updated_at') String? updatedAt, + }); +} + +/// @nodoc +class __$$UserDtoImplCopyWithImpl<$Res> + extends _$UserDtoCopyWithImpl<$Res, _$UserDtoImpl> + implements _$$UserDtoImplCopyWith<$Res> { + __$$UserDtoImplCopyWithImpl( + _$UserDtoImpl _value, + $Res Function(_$UserDtoImpl) _then, + ) : super(_value, _then); + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? id = freezed, + Object? organizationId = freezed, + Object? outletId = freezed, + Object? name = freezed, + Object? email = freezed, + Object? role = freezed, + Object? permissions = freezed, + Object? isActive = freezed, + Object? createdAt = freezed, + Object? updatedAt = freezed, + }) { + return _then( + _$UserDtoImpl( + id: freezed == id + ? _value.id + : id // ignore: cast_nullable_to_non_nullable + as String?, + organizationId: freezed == organizationId + ? _value.organizationId + : organizationId // ignore: cast_nullable_to_non_nullable + as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + name: freezed == name + ? _value.name + : name // ignore: cast_nullable_to_non_nullable + as String?, + email: freezed == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String?, + role: freezed == role + ? _value.role + : role // ignore: cast_nullable_to_non_nullable + as String?, + permissions: freezed == permissions + ? _value._permissions + : permissions // ignore: cast_nullable_to_non_nullable + as Map?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + createdAt: freezed == createdAt + ? _value.createdAt + : createdAt // ignore: cast_nullable_to_non_nullable + as String?, + updatedAt: freezed == updatedAt + ? _value.updatedAt + : updatedAt // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc +@JsonSerializable() +class _$UserDtoImpl extends _UserDto { + const _$UserDtoImpl({ + @JsonKey(name: 'id') this.id, + @JsonKey(name: 'organization_id') this.organizationId, + @JsonKey(name: 'outlet_id') this.outletId, + @JsonKey(name: 'name') this.name, + @JsonKey(name: 'email') this.email, + @JsonKey(name: 'role') this.role, + @JsonKey(name: 'permissions') final Map? permissions, + @JsonKey(name: 'is_active') this.isActive, + @JsonKey(name: 'created_at') this.createdAt, + @JsonKey(name: 'updated_at') this.updatedAt, + }) : _permissions = permissions, + super._(); + + factory _$UserDtoImpl.fromJson(Map json) => + _$$UserDtoImplFromJson(json); + + @override + @JsonKey(name: 'id') + final String? id; + @override + @JsonKey(name: 'organization_id') + final String? organizationId; + @override + @JsonKey(name: 'outlet_id') + final String? outletId; + @override + @JsonKey(name: 'name') + final String? name; + @override + @JsonKey(name: 'email') + final String? email; + @override + @JsonKey(name: 'role') + final String? role; + final Map? _permissions; + @override + @JsonKey(name: 'permissions') + Map? get permissions { + final value = _permissions; + if (value == null) return null; + if (_permissions is EqualUnmodifiableMapView) return _permissions; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + @JsonKey(name: 'is_active') + final bool? isActive; + @override + @JsonKey(name: 'created_at') + final String? createdAt; + @override + @JsonKey(name: 'updated_at') + final String? updatedAt; + + @override + String toString() { + return 'UserDto(id: $id, organizationId: $organizationId, outletId: $outletId, name: $name, email: $email, role: $role, permissions: $permissions, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$UserDtoImpl && + (identical(other.id, id) || other.id == id) && + (identical(other.organizationId, organizationId) || + other.organizationId == organizationId) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && + (identical(other.name, name) || other.name == name) && + (identical(other.email, email) || other.email == email) && + (identical(other.role, role) || other.role == role) && + const DeepCollectionEquality().equals( + other._permissions, + _permissions, + ) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.createdAt, createdAt) || + other.createdAt == createdAt) && + (identical(other.updatedAt, updatedAt) || + other.updatedAt == updatedAt)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + id, + organizationId, + outletId, + name, + email, + role, + const DeepCollectionEquality().hash(_permissions), + isActive, + createdAt, + updatedAt, + ); + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$UserDtoImplCopyWith<_$UserDtoImpl> get copyWith => + __$$UserDtoImplCopyWithImpl<_$UserDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$UserDtoImplToJson(this); + } +} + +abstract class _UserDto extends UserDto { + const factory _UserDto({ + @JsonKey(name: 'id') final String? id, + @JsonKey(name: 'organization_id') final String? organizationId, + @JsonKey(name: 'outlet_id') final String? outletId, + @JsonKey(name: 'name') final String? name, + @JsonKey(name: 'email') final String? email, + @JsonKey(name: 'role') final String? role, + @JsonKey(name: 'permissions') final Map? permissions, + @JsonKey(name: 'is_active') final bool? isActive, + @JsonKey(name: 'created_at') final String? createdAt, + @JsonKey(name: 'updated_at') final String? updatedAt, + }) = _$UserDtoImpl; + const _UserDto._() : super._(); + + factory _UserDto.fromJson(Map json) = _$UserDtoImpl.fromJson; + + @override + @JsonKey(name: 'id') + String? get id; + @override + @JsonKey(name: 'organization_id') + String? get organizationId; + @override + @JsonKey(name: 'outlet_id') + String? get outletId; + @override + @JsonKey(name: 'name') + String? get name; + @override + @JsonKey(name: 'email') + String? get email; + @override + @JsonKey(name: 'role') + String? get role; + @override + @JsonKey(name: 'permissions') + Map? get permissions; + @override + @JsonKey(name: 'is_active') + bool? get isActive; + @override + @JsonKey(name: 'created_at') + String? get createdAt; + @override + @JsonKey(name: 'updated_at') + String? get updatedAt; + + /// Create a copy of UserDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$UserDtoImplCopyWith<_$UserDtoImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/infrastructure/user/user_dtos.g.dart b/lib/infrastructure/user/user_dtos.g.dart new file mode 100644 index 0000000..80c6411 --- /dev/null +++ b/lib/infrastructure/user/user_dtos.g.dart @@ -0,0 +1,35 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'user_dtos.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$UserDtoImpl _$$UserDtoImplFromJson(Map json) => + _$UserDtoImpl( + id: json['id'] as String?, + organizationId: json['organization_id'] as String?, + outletId: json['outlet_id'] as String?, + name: json['name'] as String?, + email: json['email'] as String?, + role: json['role'] as String?, + permissions: json['permissions'] as Map?, + isActive: json['is_active'] as bool?, + createdAt: json['created_at'] as String?, + updatedAt: json['updated_at'] as String?, + ); + +Map _$$UserDtoImplToJson(_$UserDtoImpl instance) => + { + 'id': instance.id, + 'organization_id': instance.organizationId, + 'outlet_id': instance.outletId, + 'name': instance.name, + 'email': instance.email, + 'role': instance.role, + 'permissions': instance.permissions, + 'is_active': instance.isActive, + 'created_at': instance.createdAt, + 'updated_at': instance.updatedAt, + }; diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 581d9e7..5990c37 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -41,6 +41,8 @@ import 'package:apskel_owner_flutter/application/outlet/current_outlet_loader/cu as _i337; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; +import 'package:apskel_owner_flutter/application/user/user_edit_form/user_edit_form_bloc.dart' + as _i147; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; import 'package:apskel_owner_flutter/common/di/di_auto_route.dart' as _i311; import 'package:apskel_owner_flutter/common/di/di_connectivity.dart' as _i586; @@ -58,6 +60,7 @@ import 'package:apskel_owner_flutter/domain/customer/customer.dart' as _i48; import 'package:apskel_owner_flutter/domain/order/order.dart' as _i219; import 'package:apskel_owner_flutter/domain/outlet/outlet.dart' as _i197; import 'package:apskel_owner_flutter/domain/product/product.dart' as _i419; +import 'package:apskel_owner_flutter/domain/user/user.dart' as _i635; import 'package:apskel_owner_flutter/env.dart' as _i6; import 'package:apskel_owner_flutter/infrastructure/analytic/datasource/remote_data_provider.dart' as _i866; @@ -89,6 +92,10 @@ import 'package:apskel_owner_flutter/infrastructure/product/datasources/remote_d as _i823; import 'package:apskel_owner_flutter/infrastructure/product/repositories/product_repository.dart' as _i121; +import 'package:apskel_owner_flutter/infrastructure/user/datasource/remote_data_provider.dart' + as _i785; +import 'package:apskel_owner_flutter/infrastructure/user/repositories/user_repository.dart' + as _i754; import 'package:apskel_owner_flutter/presentation/router/app_router.dart' as _i258; import 'package:connectivity_plus/connectivity_plus.dart' as _i895; @@ -159,6 +166,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i27.OutletRemoteDataProvider>( () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i785.UserRemoteDataProvider>( + () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), ); @@ -171,6 +181,12 @@ extension GetItInjectableX on _i174.GetIt { gh<_i17.AuthRemoteDataProvider>(), ), ); + gh.factory<_i635.IUserRepository>( + () => _i754.UserRepository( + gh<_i785.UserRemoteDataProvider>(), + gh<_i991.AuthLocalDataProvider>(), + ), + ); gh.factory<_i419.IProductRepository>( () => _i121.ProductRepository(gh<_i823.ProductRemoteDataProvider>()), ); @@ -239,6 +255,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1058.OrderLoaderBloc>( () => _i1058.OrderLoaderBloc(gh<_i219.IOrderRepository>()), ); + gh.factory<_i147.UserEditFormBloc>( + () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), + ); return this; } } diff --git a/lib/presentation/components/button/elevated_button.dart b/lib/presentation/components/button/elevated_button.dart index b86a65f..c4bd484 100644 --- a/lib/presentation/components/button/elevated_button.dart +++ b/lib/presentation/components/button/elevated_button.dart @@ -7,17 +7,20 @@ class AppElevatedButton extends StatelessWidget { required this.isLoading, required this.onPressed, this.height = 50, + this.width = double.infinity, }); final String text; final bool isLoading; final Function()? onPressed; final double height; + final double width; @override Widget build(BuildContext context) { return Container( height: height, + width: width, decoration: BoxDecoration( gradient: const LinearGradient(colors: AppColor.primaryGradient), borderRadius: BorderRadius.circular(AppValue.radius), diff --git a/lib/presentation/components/field/text_form_field.dart b/lib/presentation/components/field/text_form_field.dart index 4b2fcc3..869879c 100644 --- a/lib/presentation/components/field/text_form_field.dart +++ b/lib/presentation/components/field/text_form_field.dart @@ -9,6 +9,7 @@ class AppTextFormField extends StatelessWidget { required this.prefixIcon, this.validator, this.onChanged, + this.keyboardType = TextInputType.text, }); final TextEditingController? controller; @@ -17,6 +18,7 @@ class AppTextFormField extends StatelessWidget { final IconData prefixIcon; final String? Function(String?)? validator; final Function(String)? onChanged; + final TextInputType keyboardType; @override Widget build(BuildContext context) { @@ -33,7 +35,7 @@ class AppTextFormField extends StatelessWidget { const SpaceHeight(8), TextFormField( controller: controller, - keyboardType: TextInputType.emailAddress, + keyboardType: keyboardType, cursorColor: AppColor.primary, onChanged: onChanged, style: AppStyle.md.copyWith(color: AppColor.textPrimary), diff --git a/lib/presentation/components/toast/flushbar.dart b/lib/presentation/components/toast/flushbar.dart index 55732a9..1f8ff86 100644 --- a/lib/presentation/components/toast/flushbar.dart +++ b/lib/presentation/components/toast/flushbar.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import '../../../common/theme/theme.dart'; import '../../../domain/auth/auth.dart'; +import '../../../domain/user/user.dart'; class AppFlushbar { static void showSuccess(BuildContext context, String message) { @@ -51,4 +52,15 @@ class AppFlushbar { unexpectedError: (value) => 'Error has eccoured', ), ); + + static void showUserFailureToast(BuildContext context, UserFailure failure) => + showError( + context, + failure.map( + serverError: (value) => value.failure.toStringFormatted(context), + dynamicErrorMessage: (value) => value.erroMessage, + unexpectedError: (value) => 'Error has eccoured', + empty: (value) => 'Data not found', + ), + ); } diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart index 7139811..2c03366 100644 --- a/lib/presentation/pages/home/widgets/header.dart +++ b/lib/presentation/pages/home/widgets/header.dart @@ -7,7 +7,7 @@ import '../../../../common/constant/app_constant.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/painter/wave_painter.dart'; import '../../../../common/theme/theme.dart'; -import '../../../../domain/auth/auth.dart'; +import '../../../../domain/user/user.dart'; import '../../../components/spacer/spacer.dart'; class HomeHeader extends StatefulWidget { diff --git a/lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart b/lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart new file mode 100644 index 0000000..b19172e --- /dev/null +++ b/lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart @@ -0,0 +1,108 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../../application/auth/auth_bloc.dart'; +import '../../../../../application/user/user_edit_form/user_edit_form_bloc.dart'; +import '../../../../../common/theme/theme.dart'; +import '../../../../../domain/user/user.dart'; +import '../../../../../injection.dart'; +import '../../../../components/appbar/appbar.dart'; +import '../../../../components/button/button.dart'; +import '../../../../components/spacer/spacer.dart'; +import '../../../../components/toast/flushbar.dart'; +import 'widgets/name_field.dart'; + +@RoutePage() +class ProfileEditPage extends StatefulWidget implements AutoRouteWrapper { + final User user; + const ProfileEditPage({super.key, required this.user}); + + @override + State createState() => _ProfileEditPageState(); + + @override + Widget wrappedRoute(BuildContext context) => + BlocProvider(create: (_) => getIt(), child: this); +} + +class _ProfileEditPageState extends State { + TextEditingController nameController = TextEditingController(); + + @override + void initState() { + super.initState(); + nameController = TextEditingController(text: widget.user.name); + } + + @override + Widget build(BuildContext context) { + return BlocListener( + listenWhen: (p, c) => p.failureOrUserOption != c.failureOrUserOption, + listener: (context, state) { + state.failureOrUserOption.fold( + () => null, + (either) => either.fold( + (f) => AppFlushbar.showUserFailureToast(context, f), + (user) { + if (context.mounted) { + context.read().add(AuthEvent.fetchCurrentUser()); + context.router.back(); + } + }, + ), + ); + }, + child: Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + // SliverAppBar with gradient + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + elevation: 0, + backgroundColor: AppColor.primary, + flexibleSpace: CustomAppBar(title: 'Profile Edit'), + ), + SliverToBoxAdapter( + child: BlocBuilder( + builder: (context, state) { + return Container( + margin: EdgeInsets.all(AppValue.margin), + padding: EdgeInsets.all(AppValue.padding), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(AppValue.radius), + ), + child: Form( + autovalidateMode: state.showErrorMessages + ? AutovalidateMode.always + : AutovalidateMode.disabled, + child: Column( + children: [ + ProfileEditNameField(controller: nameController), + SpaceHeight(24), + AppElevatedButton( + text: 'Save', + isLoading: state.isSubmitting, + onPressed: () { + context.read().add( + UserEditFormEvent.submitted(), + ); + }, + ), + ], + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart b/lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart new file mode 100644 index 0000000..bce6ffd --- /dev/null +++ b/lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../../../application/user/user_edit_form/user_edit_form_bloc.dart'; +import '../../../../../components/field/field.dart'; + +class ProfileEditNameField extends StatelessWidget { + final TextEditingController controller; + const ProfileEditNameField({super.key, required this.controller}); + + @override + Widget build(BuildContext context) { + return AppTextFormField( + title: 'Name', + prefixIcon: LineIcons.user, + hintText: 'Please enter your name', + controller: controller, + onChanged: (value) { + context.read().add( + UserEditFormEvent.nameChanged(value), + ); + }, + validator: (value) { + if (context.read().state.name.isEmpty) { + return 'Please enter your name'; + } + + return null; + }, + ); + } +} diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 066f418..3faeeff 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -98,7 +98,9 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { ), ), ActionIconButton( - onTap: () {}, + onTap: () => context.router.push( + ProfileEditRoute(user: state.user), + ), icon: LineIcons.userEdit, ), ], diff --git a/lib/presentation/pages/profile/widgets/account_info.dart b/lib/presentation/pages/profile/widgets/account_info.dart index f135f67..187ce35 100644 --- a/lib/presentation/pages/profile/widgets/account_info.dart +++ b/lib/presentation/pages/profile/widgets/account_info.dart @@ -1,9 +1,11 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; -import '../../../../domain/auth/auth.dart'; +import '../../../../domain/user/user.dart'; +import '../../../router/app_router.gr.dart'; import 'divider.dart'; import 'profile_tile.dart'; @@ -45,9 +47,7 @@ class ProfileAccountInfo extends StatelessWidget { icon: LineIcons.envelope, title: 'Email', subtitle: user.email, - onTap: () { - // Edit email - }, + showArrow: false, ), ProfileDivider(), @@ -64,7 +64,7 @@ class ProfileAccountInfo extends StatelessWidget { icon: LineIcons.userEdit, title: 'Ubah Profil', subtitle: 'Ubah profil kamu', - showArrow: false, + onTap: () => context.router.push(ProfileEditRoute(user: user)), ), ], ), diff --git a/lib/presentation/pages/profile/widgets/header.dart b/lib/presentation/pages/profile/widgets/header.dart index 747cdad..5f4b074 100644 --- a/lib/presentation/pages/profile/widgets/header.dart +++ b/lib/presentation/pages/profile/widgets/header.dart @@ -4,7 +4,7 @@ import 'dart:math' as math; import '../../../../common/extension/extension.dart'; import '../../../../common/painter/wave_painter.dart'; import '../../../../common/theme/theme.dart'; -import '../../../../domain/auth/auth.dart'; +import '../../../../domain/user/user.dart'; import '../../../components/spacer/spacer.dart'; class ProfileHeader extends StatefulWidget { diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index c125c98..5c5baea 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -59,6 +59,9 @@ class AppRouter extends RootStackRouter { // Download Report AutoRoute(page: DownloadReportRoute.page), + // Profile + AutoRoute(page: ProfileEditRoute.page), + // Error AutoRoute(page: ErrorRoute.page), diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index e465783..1b42cd9 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,7 +9,8 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/domain/order/order.dart' as _i25; +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i26; +import 'package:apskel_owner_flutter/domain/user/user.dart' as _i27; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i10; import 'package:apskel_owner_flutter/presentation/pages/coming_soon/coming_soon_page.dart' @@ -42,30 +43,32 @@ import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic as _i15; import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart' as _i17; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i18; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i19; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i20; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i21; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i22; -import 'package:auto_route/auto_route.dart' as _i23; -import 'package:flutter/material.dart' as _i24; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i23; +import 'package:auto_route/auto_route.dart' as _i24; +import 'package:flutter/material.dart' as _i25; /// generated route for /// [_i1.ComingSoonPage] -class ComingSoonRoute extends _i23.PageRouteInfo { - const ComingSoonRoute({List<_i23.PageRouteInfo>? children}) +class ComingSoonRoute extends _i24.PageRouteInfo { + const ComingSoonRoute({List<_i24.PageRouteInfo>? children}) : super(ComingSoonRoute.name, initialChildren: children); static const String name = 'ComingSoonRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { return const _i1.ComingSoonPage(); @@ -75,29 +78,29 @@ class ComingSoonRoute extends _i23.PageRouteInfo { /// generated route for /// [_i2.CustomerPage] -class CustomerRoute extends _i23.PageRouteInfo { - const CustomerRoute({List<_i23.PageRouteInfo>? children}) +class CustomerRoute extends _i24.PageRouteInfo { + const CustomerRoute({List<_i24.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i2.CustomerPage()); + return _i24.WrappedRoute(child: const _i2.CustomerPage()); }, ); } /// generated route for /// [_i3.DailyTasksFormPage] -class DailyTasksFormRoute extends _i23.PageRouteInfo { - const DailyTasksFormRoute({List<_i23.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i24.PageRouteInfo { + const DailyTasksFormRoute({List<_i24.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { return const _i3.DailyTasksFormPage(); @@ -107,13 +110,13 @@ class DailyTasksFormRoute extends _i23.PageRouteInfo { /// generated route for /// [_i4.DownloadReportPage] -class DownloadReportRoute extends _i23.PageRouteInfo { - const DownloadReportRoute({List<_i23.PageRouteInfo>? children}) +class DownloadReportRoute extends _i24.PageRouteInfo { + const DownloadReportRoute({List<_i24.PageRouteInfo>? children}) : super(DownloadReportRoute.name, initialChildren: children); static const String name = 'DownloadReportRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { return const _i4.DownloadReportPage(); @@ -123,16 +126,16 @@ class DownloadReportRoute extends _i23.PageRouteInfo { /// generated route for /// [_i5.ErrorPage] -class ErrorRoute extends _i23.PageRouteInfo { +class ErrorRoute extends _i24.PageRouteInfo { ErrorRoute({ - _i24.Key? key, + _i25.Key? key, String? title, String? message, - _i24.VoidCallback? onRetry, - _i24.VoidCallback? onBack, + _i25.VoidCallback? onRetry, + _i25.VoidCallback? onBack, String? errorCode, - _i24.IconData? errorIcon, - List<_i23.PageRouteInfo>? children, + _i25.IconData? errorIcon, + List<_i24.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -149,7 +152,7 @@ class ErrorRoute extends _i23.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { final args = data.argsAs( @@ -179,19 +182,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i24.Key? key; + final _i25.Key? key; final String? title; final String? message; - final _i24.VoidCallback? onRetry; + final _i25.VoidCallback? onRetry; - final _i24.VoidCallback? onBack; + final _i25.VoidCallback? onBack; final String? errorCode; - final _i24.IconData? errorIcon; + final _i25.IconData? errorIcon; @override String toString() { @@ -201,61 +204,61 @@ class ErrorRouteArgs { /// generated route for /// [_i6.FinancePage] -class FinanceRoute extends _i23.PageRouteInfo { - const FinanceRoute({List<_i23.PageRouteInfo>? children}) +class FinanceRoute extends _i24.PageRouteInfo { + const FinanceRoute({List<_i24.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i6.FinancePage()); + return _i24.WrappedRoute(child: const _i6.FinancePage()); }, ); } /// generated route for /// [_i7.HomePage] -class HomeRoute extends _i23.PageRouteInfo { - const HomeRoute({List<_i23.PageRouteInfo>? children}) +class HomeRoute extends _i24.PageRouteInfo { + const HomeRoute({List<_i24.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i7.HomePage()); + return _i24.WrappedRoute(child: const _i7.HomePage()); }, ); } /// generated route for /// [_i8.InventoryPage] -class InventoryRoute extends _i23.PageRouteInfo { - const InventoryRoute({List<_i23.PageRouteInfo>? children}) +class InventoryRoute extends _i24.PageRouteInfo { + const InventoryRoute({List<_i24.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i8.InventoryPage()); + return _i24.WrappedRoute(child: const _i8.InventoryPage()); }, ); } /// generated route for /// [_i9.LanguagePage] -class LanguageRoute extends _i23.PageRouteInfo { - const LanguageRoute({List<_i23.PageRouteInfo>? children}) +class LanguageRoute extends _i24.PageRouteInfo { + const LanguageRoute({List<_i24.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { return const _i9.LanguagePage(); @@ -265,29 +268,29 @@ class LanguageRoute extends _i23.PageRouteInfo { /// generated route for /// [_i10.LoginPage] -class LoginRoute extends _i23.PageRouteInfo { - const LoginRoute({List<_i23.PageRouteInfo>? children}) +class LoginRoute extends _i24.PageRouteInfo { + const LoginRoute({List<_i24.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i10.LoginPage()); + return _i24.WrappedRoute(child: const _i10.LoginPage()); }, ); } /// generated route for /// [_i11.MainPage] -class MainRoute extends _i23.PageRouteInfo { - const MainRoute({List<_i23.PageRouteInfo>? children}) +class MainRoute extends _i24.PageRouteInfo { + const MainRoute({List<_i24.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { return const _i11.MainPage(); @@ -297,11 +300,11 @@ class MainRoute extends _i23.PageRouteInfo { /// generated route for /// [_i12.OrderDetailPage] -class OrderDetailRoute extends _i23.PageRouteInfo { +class OrderDetailRoute extends _i24.PageRouteInfo { OrderDetailRoute({ - _i24.Key? key, - required _i25.Order order, - List<_i23.PageRouteInfo>? children, + _i25.Key? key, + required _i26.Order order, + List<_i24.PageRouteInfo>? children, }) : super( OrderDetailRoute.name, args: OrderDetailRouteArgs(key: key, order: order), @@ -310,7 +313,7 @@ class OrderDetailRoute extends _i23.PageRouteInfo { static const String name = 'OrderDetailRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -322,9 +325,9 @@ class OrderDetailRoute extends _i23.PageRouteInfo { class OrderDetailRouteArgs { const OrderDetailRouteArgs({this.key, required this.order}); - final _i24.Key? key; + final _i25.Key? key; - final _i25.Order order; + final _i26.Order order; @override String toString() { @@ -334,160 +337,197 @@ class OrderDetailRouteArgs { /// generated route for /// [_i13.OrderPage] -class OrderRoute extends _i23.PageRouteInfo { - const OrderRoute({List<_i23.PageRouteInfo>? children}) +class OrderRoute extends _i24.PageRouteInfo { + const OrderRoute({List<_i24.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i13.OrderPage()); + return _i24.WrappedRoute(child: const _i13.OrderPage()); }, ); } /// generated route for /// [_i14.OutletInformationPage] -class OutletInformationRoute extends _i23.PageRouteInfo { - const OutletInformationRoute({List<_i23.PageRouteInfo>? children}) +class OutletInformationRoute extends _i24.PageRouteInfo { + const OutletInformationRoute({List<_i24.PageRouteInfo>? children}) : super(OutletInformationRoute.name, initialChildren: children); static const String name = 'OutletInformationRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i14.OutletInformationPage()); + return _i24.WrappedRoute(child: const _i14.OutletInformationPage()); }, ); } /// generated route for /// [_i15.ProductAnalyticPage] -class ProductAnalyticRoute extends _i23.PageRouteInfo { - const ProductAnalyticRoute({List<_i23.PageRouteInfo>? children}) +class ProductAnalyticRoute extends _i24.PageRouteInfo { + const ProductAnalyticRoute({List<_i24.PageRouteInfo>? children}) : super(ProductAnalyticRoute.name, initialChildren: children); static const String name = 'ProductAnalyticRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i15.ProductAnalyticPage()); + return _i24.WrappedRoute(child: const _i15.ProductAnalyticPage()); }, ); } /// generated route for /// [_i16.ProductPage] -class ProductRoute extends _i23.PageRouteInfo { - const ProductRoute({List<_i23.PageRouteInfo>? children}) +class ProductRoute extends _i24.PageRouteInfo { + const ProductRoute({List<_i24.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i16.ProductPage()); + return _i24.WrappedRoute(child: const _i16.ProductPage()); }, ); } /// generated route for -/// [_i17.ProfilePage] -class ProfileRoute extends _i23.PageRouteInfo { - const ProfileRoute({List<_i23.PageRouteInfo>? children}) +/// [_i17.ProfileEditPage] +class ProfileEditRoute extends _i24.PageRouteInfo { + ProfileEditRoute({ + _i25.Key? key, + required _i27.User user, + List<_i24.PageRouteInfo>? children, + }) : super( + ProfileEditRoute.name, + args: ProfileEditRouteArgs(key: key, user: user), + initialChildren: children, + ); + + static const String name = 'ProfileEditRoute'; + + static _i24.PageInfo page = _i24.PageInfo( + name, + builder: (data) { + final args = data.argsAs(); + return _i17.ProfileEditPage(key: args.key, user: args.user); + }, + ); +} + +class ProfileEditRouteArgs { + const ProfileEditRouteArgs({this.key, required this.user}); + + final _i25.Key? key; + + final _i27.User user; + + @override + String toString() { + return 'ProfileEditRouteArgs{key: $key, user: $user}'; + } +} + +/// generated route for +/// [_i18.ProfilePage] +class ProfileRoute extends _i24.PageRouteInfo { + const ProfileRoute({List<_i24.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i17.ProfilePage()); + return _i24.WrappedRoute(child: const _i18.ProfilePage()); }, ); } /// generated route for -/// [_i18.PurchasePage] -class PurchaseRoute extends _i23.PageRouteInfo { - const PurchaseRoute({List<_i23.PageRouteInfo>? children}) +/// [_i19.PurchasePage] +class PurchaseRoute extends _i24.PageRouteInfo { + const PurchaseRoute({List<_i24.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return const _i18.PurchasePage(); + return const _i19.PurchasePage(); }, ); } /// generated route for -/// [_i19.ReportPage] -class ReportRoute extends _i23.PageRouteInfo { - const ReportRoute({List<_i23.PageRouteInfo>? children}) +/// [_i20.ReportPage] +class ReportRoute extends _i24.PageRouteInfo { + const ReportRoute({List<_i24.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i19.ReportPage()); + return _i24.WrappedRoute(child: const _i20.ReportPage()); }, ); } /// generated route for -/// [_i20.SalesPage] -class SalesRoute extends _i23.PageRouteInfo { - const SalesRoute({List<_i23.PageRouteInfo>? children}) +/// [_i21.SalesPage] +class SalesRoute extends _i24.PageRouteInfo { + const SalesRoute({List<_i24.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return _i23.WrappedRoute(child: const _i20.SalesPage()); + return _i24.WrappedRoute(child: const _i21.SalesPage()); }, ); } /// generated route for -/// [_i21.SchedulePage] -class ScheduleRoute extends _i23.PageRouteInfo { - const ScheduleRoute({List<_i23.PageRouteInfo>? children}) +/// [_i22.SchedulePage] +class ScheduleRoute extends _i24.PageRouteInfo { + const ScheduleRoute({List<_i24.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return const _i21.SchedulePage(); + return const _i22.SchedulePage(); }, ); } /// generated route for -/// [_i22.SplashPage] -class SplashRoute extends _i23.PageRouteInfo { - const SplashRoute({List<_i23.PageRouteInfo>? children}) +/// [_i23.SplashPage] +class SplashRoute extends _i24.PageRouteInfo { + const SplashRoute({List<_i24.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i23.PageInfo page = _i23.PageInfo( + static _i24.PageInfo page = _i24.PageInfo( name, builder: (data) { - return const _i22.SplashPage(); + return const _i23.SplashPage(); }, ); } From 1b1e8c5bb47666aa651073d7eb846cd6cfbbc127 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 15:35:18 +0700 Subject: [PATCH 084/108] feat: change password --- .../change_password_form_bloc.dart | 70 ++ .../change_password_form_bloc.freezed.dart | 766 ++++++++++++++++++ .../change_password_form_event.dart | 11 + .../change_password_form_state.dart | 18 + .../user/repositories/i_user_repository.dart | 4 + .../user/datasource/remote_data_provider.dart | 33 + .../user/repositories/user_repository.dart | 24 + lib/injection.config.dart | 5 + .../profile_change_password_page.dart | 104 +++ .../widgets/current_password.dart | 32 + .../widgets/new_password.dart | 33 + .../pages/profile/widgets/account_info.dart | 7 + lib/presentation/router/app_router.dart | 1 + lib/presentation/router/app_router.gr.dart | 258 +++--- 14 files changed, 1247 insertions(+), 119 deletions(-) create mode 100644 lib/application/user/change_password_form/change_password_form_bloc.dart create mode 100644 lib/application/user/change_password_form/change_password_form_bloc.freezed.dart create mode 100644 lib/application/user/change_password_form/change_password_form_event.dart create mode 100644 lib/application/user/change_password_form/change_password_form_state.dart create mode 100644 lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart create mode 100644 lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart create mode 100644 lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart diff --git a/lib/application/user/change_password_form/change_password_form_bloc.dart b/lib/application/user/change_password_form/change_password_form_bloc.dart new file mode 100644 index 0000000..6a5378c --- /dev/null +++ b/lib/application/user/change_password_form/change_password_form_bloc.dart @@ -0,0 +1,70 @@ +import 'package:bloc/bloc.dart'; +import 'package:dartz/dartz.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/user/user.dart'; + +part 'change_password_form_event.dart'; +part 'change_password_form_state.dart'; +part 'change_password_form_bloc.freezed.dart'; + +@injectable +class ChangePasswordFormBloc + extends Bloc { + final IUserRepository _repository; + ChangePasswordFormBloc(this._repository) + : super(ChangePasswordFormState.initial()) { + on(_onChangePasswordFormEvent); + } + + Future _onChangePasswordFormEvent( + ChangePasswordFormEvent event, + Emitter emit, + ) { + return event.map( + newPasswordChanged: (e) async { + emit( + state.copyWith( + newPassword: e.newPassword, + failureOrChangePasswordOption: none(), + ), + ); + }, + currentPasswordChanged: (e) async { + emit( + state.copyWith( + currentPassword: e.currentPassword, + failureOrChangePasswordOption: none(), + ), + ); + }, + submitted: (e) async { + Either? failureOrSuccess; + emit( + state.copyWith( + isSubmitting: true, + failureOrChangePasswordOption: none(), + ), + ); + + final oldPasswordValid = state.newPassword.isNotEmpty; + final currentPasswordValid = state.currentPassword.isNotEmpty; + + if (oldPasswordValid && currentPasswordValid) { + failureOrSuccess = await _repository.changePassword( + newPassword: state.newPassword, + currentPassword: state.currentPassword, + ); + emit( + state.copyWith( + isSubmitting: false, + failureOrChangePasswordOption: optionOf(failureOrSuccess), + ), + ); + } + emit(state.copyWith(showErrorMessages: true, isSubmitting: false)); + }, + ); + } +} diff --git a/lib/application/user/change_password_form/change_password_form_bloc.freezed.dart b/lib/application/user/change_password_form/change_password_form_bloc.freezed.dart new file mode 100644 index 0000000..55ee2a0 --- /dev/null +++ b/lib/application/user/change_password_form/change_password_form_bloc.freezed.dart @@ -0,0 +1,766 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'change_password_form_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$ChangePasswordFormEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(String newPassword) newPasswordChanged, + required TResult Function(String currentPassword) currentPasswordChanged, + required TResult Function() submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String newPassword)? newPasswordChanged, + TResult? Function(String currentPassword)? currentPasswordChanged, + TResult? Function()? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String newPassword)? newPasswordChanged, + TResult Function(String currentPassword)? currentPasswordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_NewPasswordChanged value) newPasswordChanged, + required TResult Function(_CurrentPasswordChanged value) + currentPasswordChanged, + required TResult Function(_Submitted value) submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_NewPasswordChanged value)? newPasswordChanged, + TResult? Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult? Function(_Submitted value)? submitted, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_NewPasswordChanged value)? newPasswordChanged, + TResult Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ChangePasswordFormEventCopyWith<$Res> { + factory $ChangePasswordFormEventCopyWith( + ChangePasswordFormEvent value, + $Res Function(ChangePasswordFormEvent) then, + ) = _$ChangePasswordFormEventCopyWithImpl<$Res, ChangePasswordFormEvent>; +} + +/// @nodoc +class _$ChangePasswordFormEventCopyWithImpl< + $Res, + $Val extends ChangePasswordFormEvent +> + implements $ChangePasswordFormEventCopyWith<$Res> { + _$ChangePasswordFormEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$NewPasswordChangedImplCopyWith<$Res> { + factory _$$NewPasswordChangedImplCopyWith( + _$NewPasswordChangedImpl value, + $Res Function(_$NewPasswordChangedImpl) then, + ) = __$$NewPasswordChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String newPassword}); +} + +/// @nodoc +class __$$NewPasswordChangedImplCopyWithImpl<$Res> + extends + _$ChangePasswordFormEventCopyWithImpl<$Res, _$NewPasswordChangedImpl> + implements _$$NewPasswordChangedImplCopyWith<$Res> { + __$$NewPasswordChangedImplCopyWithImpl( + _$NewPasswordChangedImpl _value, + $Res Function(_$NewPasswordChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? newPassword = null}) { + return _then( + _$NewPasswordChangedImpl( + null == newPassword + ? _value.newPassword + : newPassword // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$NewPasswordChangedImpl implements _NewPasswordChanged { + const _$NewPasswordChangedImpl(this.newPassword); + + @override + final String newPassword; + + @override + String toString() { + return 'ChangePasswordFormEvent.newPasswordChanged(newPassword: $newPassword)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$NewPasswordChangedImpl && + (identical(other.newPassword, newPassword) || + other.newPassword == newPassword)); + } + + @override + int get hashCode => Object.hash(runtimeType, newPassword); + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$NewPasswordChangedImplCopyWith<_$NewPasswordChangedImpl> get copyWith => + __$$NewPasswordChangedImplCopyWithImpl<_$NewPasswordChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String newPassword) newPasswordChanged, + required TResult Function(String currentPassword) currentPasswordChanged, + required TResult Function() submitted, + }) { + return newPasswordChanged(newPassword); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String newPassword)? newPasswordChanged, + TResult? Function(String currentPassword)? currentPasswordChanged, + TResult? Function()? submitted, + }) { + return newPasswordChanged?.call(newPassword); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String newPassword)? newPasswordChanged, + TResult Function(String currentPassword)? currentPasswordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (newPasswordChanged != null) { + return newPasswordChanged(newPassword); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_NewPasswordChanged value) newPasswordChanged, + required TResult Function(_CurrentPasswordChanged value) + currentPasswordChanged, + required TResult Function(_Submitted value) submitted, + }) { + return newPasswordChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_NewPasswordChanged value)? newPasswordChanged, + TResult? Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return newPasswordChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_NewPasswordChanged value)? newPasswordChanged, + TResult Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (newPasswordChanged != null) { + return newPasswordChanged(this); + } + return orElse(); + } +} + +abstract class _NewPasswordChanged implements ChangePasswordFormEvent { + const factory _NewPasswordChanged(final String newPassword) = + _$NewPasswordChangedImpl; + + String get newPassword; + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$NewPasswordChangedImplCopyWith<_$NewPasswordChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$CurrentPasswordChangedImplCopyWith<$Res> { + factory _$$CurrentPasswordChangedImplCopyWith( + _$CurrentPasswordChangedImpl value, + $Res Function(_$CurrentPasswordChangedImpl) then, + ) = __$$CurrentPasswordChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String currentPassword}); +} + +/// @nodoc +class __$$CurrentPasswordChangedImplCopyWithImpl<$Res> + extends + _$ChangePasswordFormEventCopyWithImpl< + $Res, + _$CurrentPasswordChangedImpl + > + implements _$$CurrentPasswordChangedImplCopyWith<$Res> { + __$$CurrentPasswordChangedImplCopyWithImpl( + _$CurrentPasswordChangedImpl _value, + $Res Function(_$CurrentPasswordChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? currentPassword = null}) { + return _then( + _$CurrentPasswordChangedImpl( + null == currentPassword + ? _value.currentPassword + : currentPassword // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$CurrentPasswordChangedImpl implements _CurrentPasswordChanged { + const _$CurrentPasswordChangedImpl(this.currentPassword); + + @override + final String currentPassword; + + @override + String toString() { + return 'ChangePasswordFormEvent.currentPasswordChanged(currentPassword: $currentPassword)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$CurrentPasswordChangedImpl && + (identical(other.currentPassword, currentPassword) || + other.currentPassword == currentPassword)); + } + + @override + int get hashCode => Object.hash(runtimeType, currentPassword); + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$CurrentPasswordChangedImplCopyWith<_$CurrentPasswordChangedImpl> + get copyWith => + __$$CurrentPasswordChangedImplCopyWithImpl<_$CurrentPasswordChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String newPassword) newPasswordChanged, + required TResult Function(String currentPassword) currentPasswordChanged, + required TResult Function() submitted, + }) { + return currentPasswordChanged(currentPassword); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String newPassword)? newPasswordChanged, + TResult? Function(String currentPassword)? currentPasswordChanged, + TResult? Function()? submitted, + }) { + return currentPasswordChanged?.call(currentPassword); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String newPassword)? newPasswordChanged, + TResult Function(String currentPassword)? currentPasswordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (currentPasswordChanged != null) { + return currentPasswordChanged(currentPassword); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_NewPasswordChanged value) newPasswordChanged, + required TResult Function(_CurrentPasswordChanged value) + currentPasswordChanged, + required TResult Function(_Submitted value) submitted, + }) { + return currentPasswordChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_NewPasswordChanged value)? newPasswordChanged, + TResult? Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return currentPasswordChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_NewPasswordChanged value)? newPasswordChanged, + TResult Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (currentPasswordChanged != null) { + return currentPasswordChanged(this); + } + return orElse(); + } +} + +abstract class _CurrentPasswordChanged implements ChangePasswordFormEvent { + const factory _CurrentPasswordChanged(final String currentPassword) = + _$CurrentPasswordChangedImpl; + + String get currentPassword; + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$CurrentPasswordChangedImplCopyWith<_$CurrentPasswordChangedImpl> + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$SubmittedImplCopyWith<$Res> { + factory _$$SubmittedImplCopyWith( + _$SubmittedImpl value, + $Res Function(_$SubmittedImpl) then, + ) = __$$SubmittedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$SubmittedImplCopyWithImpl<$Res> + extends _$ChangePasswordFormEventCopyWithImpl<$Res, _$SubmittedImpl> + implements _$$SubmittedImplCopyWith<$Res> { + __$$SubmittedImplCopyWithImpl( + _$SubmittedImpl _value, + $Res Function(_$SubmittedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ChangePasswordFormEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$SubmittedImpl implements _Submitted { + const _$SubmittedImpl(); + + @override + String toString() { + return 'ChangePasswordFormEvent.submitted()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$SubmittedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String newPassword) newPasswordChanged, + required TResult Function(String currentPassword) currentPasswordChanged, + required TResult Function() submitted, + }) { + return submitted(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String newPassword)? newPasswordChanged, + TResult? Function(String currentPassword)? currentPasswordChanged, + TResult? Function()? submitted, + }) { + return submitted?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String newPassword)? newPasswordChanged, + TResult Function(String currentPassword)? currentPasswordChanged, + TResult Function()? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_NewPasswordChanged value) newPasswordChanged, + required TResult Function(_CurrentPasswordChanged value) + currentPasswordChanged, + required TResult Function(_Submitted value) submitted, + }) { + return submitted(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_NewPasswordChanged value)? newPasswordChanged, + TResult? Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult? Function(_Submitted value)? submitted, + }) { + return submitted?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_NewPasswordChanged value)? newPasswordChanged, + TResult Function(_CurrentPasswordChanged value)? currentPasswordChanged, + TResult Function(_Submitted value)? submitted, + required TResult orElse(), + }) { + if (submitted != null) { + return submitted(this); + } + return orElse(); + } +} + +abstract class _Submitted implements ChangePasswordFormEvent { + const factory _Submitted() = _$SubmittedImpl; +} + +/// @nodoc +mixin _$ChangePasswordFormState { + String get newPassword => throw _privateConstructorUsedError; + String get currentPassword => throw _privateConstructorUsedError; + Option> get failureOrChangePasswordOption => + throw _privateConstructorUsedError; + bool get isSubmitting => throw _privateConstructorUsedError; + bool get showErrorMessages => throw _privateConstructorUsedError; + + /// Create a copy of ChangePasswordFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ChangePasswordFormStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ChangePasswordFormStateCopyWith<$Res> { + factory $ChangePasswordFormStateCopyWith( + ChangePasswordFormState value, + $Res Function(ChangePasswordFormState) then, + ) = _$ChangePasswordFormStateCopyWithImpl<$Res, ChangePasswordFormState>; + @useResult + $Res call({ + String newPassword, + String currentPassword, + Option> failureOrChangePasswordOption, + bool isSubmitting, + bool showErrorMessages, + }); +} + +/// @nodoc +class _$ChangePasswordFormStateCopyWithImpl< + $Res, + $Val extends ChangePasswordFormState +> + implements $ChangePasswordFormStateCopyWith<$Res> { + _$ChangePasswordFormStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ChangePasswordFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? newPassword = null, + Object? currentPassword = null, + Object? failureOrChangePasswordOption = null, + Object? isSubmitting = null, + Object? showErrorMessages = null, + }) { + return _then( + _value.copyWith( + newPassword: null == newPassword + ? _value.newPassword + : newPassword // ignore: cast_nullable_to_non_nullable + as String, + currentPassword: null == currentPassword + ? _value.currentPassword + : currentPassword // ignore: cast_nullable_to_non_nullable + as String, + failureOrChangePasswordOption: null == failureOrChangePasswordOption + ? _value.failureOrChangePasswordOption + : failureOrChangePasswordOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + showErrorMessages: null == showErrorMessages + ? _value.showErrorMessages + : showErrorMessages // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$ChangePasswordFormStateImplCopyWith<$Res> + implements $ChangePasswordFormStateCopyWith<$Res> { + factory _$$ChangePasswordFormStateImplCopyWith( + _$ChangePasswordFormStateImpl value, + $Res Function(_$ChangePasswordFormStateImpl) then, + ) = __$$ChangePasswordFormStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + String newPassword, + String currentPassword, + Option> failureOrChangePasswordOption, + bool isSubmitting, + bool showErrorMessages, + }); +} + +/// @nodoc +class __$$ChangePasswordFormStateImplCopyWithImpl<$Res> + extends + _$ChangePasswordFormStateCopyWithImpl< + $Res, + _$ChangePasswordFormStateImpl + > + implements _$$ChangePasswordFormStateImplCopyWith<$Res> { + __$$ChangePasswordFormStateImplCopyWithImpl( + _$ChangePasswordFormStateImpl _value, + $Res Function(_$ChangePasswordFormStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of ChangePasswordFormState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? newPassword = null, + Object? currentPassword = null, + Object? failureOrChangePasswordOption = null, + Object? isSubmitting = null, + Object? showErrorMessages = null, + }) { + return _then( + _$ChangePasswordFormStateImpl( + newPassword: null == newPassword + ? _value.newPassword + : newPassword // ignore: cast_nullable_to_non_nullable + as String, + currentPassword: null == currentPassword + ? _value.currentPassword + : currentPassword // ignore: cast_nullable_to_non_nullable + as String, + failureOrChangePasswordOption: null == failureOrChangePasswordOption + ? _value.failureOrChangePasswordOption + : failureOrChangePasswordOption // ignore: cast_nullable_to_non_nullable + as Option>, + isSubmitting: null == isSubmitting + ? _value.isSubmitting + : isSubmitting // ignore: cast_nullable_to_non_nullable + as bool, + showErrorMessages: null == showErrorMessages + ? _value.showErrorMessages + : showErrorMessages // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$ChangePasswordFormStateImpl implements _ChangePasswordFormState { + const _$ChangePasswordFormStateImpl({ + required this.newPassword, + required this.currentPassword, + required this.failureOrChangePasswordOption, + this.isSubmitting = false, + this.showErrorMessages = false, + }); + + @override + final String newPassword; + @override + final String currentPassword; + @override + final Option> failureOrChangePasswordOption; + @override + @JsonKey() + final bool isSubmitting; + @override + @JsonKey() + final bool showErrorMessages; + + @override + String toString() { + return 'ChangePasswordFormState(newPassword: $newPassword, currentPassword: $currentPassword, failureOrChangePasswordOption: $failureOrChangePasswordOption, isSubmitting: $isSubmitting, showErrorMessages: $showErrorMessages)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ChangePasswordFormStateImpl && + (identical(other.newPassword, newPassword) || + other.newPassword == newPassword) && + (identical(other.currentPassword, currentPassword) || + other.currentPassword == currentPassword) && + (identical( + other.failureOrChangePasswordOption, + failureOrChangePasswordOption, + ) || + other.failureOrChangePasswordOption == + failureOrChangePasswordOption) && + (identical(other.isSubmitting, isSubmitting) || + other.isSubmitting == isSubmitting) && + (identical(other.showErrorMessages, showErrorMessages) || + other.showErrorMessages == showErrorMessages)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + newPassword, + currentPassword, + failureOrChangePasswordOption, + isSubmitting, + showErrorMessages, + ); + + /// Create a copy of ChangePasswordFormState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ChangePasswordFormStateImplCopyWith<_$ChangePasswordFormStateImpl> + get copyWith => + __$$ChangePasswordFormStateImplCopyWithImpl< + _$ChangePasswordFormStateImpl + >(this, _$identity); +} + +abstract class _ChangePasswordFormState implements ChangePasswordFormState { + const factory _ChangePasswordFormState({ + required final String newPassword, + required final String currentPassword, + required final Option> + failureOrChangePasswordOption, + final bool isSubmitting, + final bool showErrorMessages, + }) = _$ChangePasswordFormStateImpl; + + @override + String get newPassword; + @override + String get currentPassword; + @override + Option> get failureOrChangePasswordOption; + @override + bool get isSubmitting; + @override + bool get showErrorMessages; + + /// Create a copy of ChangePasswordFormState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ChangePasswordFormStateImplCopyWith<_$ChangePasswordFormStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/user/change_password_form/change_password_form_event.dart b/lib/application/user/change_password_form/change_password_form_event.dart new file mode 100644 index 0000000..41b9342 --- /dev/null +++ b/lib/application/user/change_password_form/change_password_form_event.dart @@ -0,0 +1,11 @@ +part of 'change_password_form_bloc.dart'; + +@freezed +class ChangePasswordFormEvent with _$ChangePasswordFormEvent { + const factory ChangePasswordFormEvent.newPasswordChanged(String newPassword) = + _NewPasswordChanged; + const factory ChangePasswordFormEvent.currentPasswordChanged( + String currentPassword, + ) = _CurrentPasswordChanged; + const factory ChangePasswordFormEvent.submitted() = _Submitted; +} diff --git a/lib/application/user/change_password_form/change_password_form_state.dart b/lib/application/user/change_password_form/change_password_form_state.dart new file mode 100644 index 0000000..d735ef9 --- /dev/null +++ b/lib/application/user/change_password_form/change_password_form_state.dart @@ -0,0 +1,18 @@ +part of 'change_password_form_bloc.dart'; + +@freezed +class ChangePasswordFormState with _$ChangePasswordFormState { + const factory ChangePasswordFormState({ + required String newPassword, + required String currentPassword, + required Option> failureOrChangePasswordOption, + @Default(false) bool isSubmitting, + @Default(false) bool showErrorMessages, + }) = _ChangePasswordFormState; + + factory ChangePasswordFormState.initial() => ChangePasswordFormState( + currentPassword: '', + newPassword: '', + failureOrChangePasswordOption: none(), + ); +} diff --git a/lib/domain/user/repositories/i_user_repository.dart b/lib/domain/user/repositories/i_user_repository.dart index ee13ed4..3adfa4f 100644 --- a/lib/domain/user/repositories/i_user_repository.dart +++ b/lib/domain/user/repositories/i_user_repository.dart @@ -2,4 +2,8 @@ part of '../user.dart'; abstract class IUserRepository { Future> editUser({required String name}); + Future> changePassword({ + required String newPassword, + required String currentPassword, + }); } diff --git a/lib/infrastructure/user/datasource/remote_data_provider.dart b/lib/infrastructure/user/datasource/remote_data_provider.dart index 9d62006..f92a5b7 100644 --- a/lib/infrastructure/user/datasource/remote_data_provider.dart +++ b/lib/infrastructure/user/datasource/remote_data_provider.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:dartz/dartz.dart'; import 'package:data_channel/data_channel.dart'; import 'package:injectable/injectable.dart'; @@ -47,4 +48,36 @@ class UserRemoteDataProvider { return DC.error(UserFailure.serverError(e)); } } + + Future> changePassword({ + required String newPassword, + required String currentPassword, + required String userId, + }) async { + try { + final response = await _apiClient.put( + '${ApiPath.user}/$userId/password', + data: { + 'new_password': newPassword, + 'current_password': currentPassword, + }, + headers: getAuthorizationHeader(), + ); + + if (response.statusCode == 400) { + return DC.error(UserFailure.unexpectedError()); + } + + if (response.statusCode != 200) { + return DC.error( + UserFailure.dynamicErrorMessage(response.data['error']), + ); + } + + return DC.data(unit); + } on ApiFailure catch (e, s) { + log('changePassword', name: _logName, error: e, stackTrace: s); + return DC.error(UserFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/user/repositories/user_repository.dart b/lib/infrastructure/user/repositories/user_repository.dart index 2d2cd30..d5ab224 100644 --- a/lib/infrastructure/user/repositories/user_repository.dart +++ b/lib/infrastructure/user/repositories/user_repository.dart @@ -39,4 +39,28 @@ class UserRepository implements IUserRepository { return left(const UserFailure.unexpectedError()); } } + + @override + Future> changePassword({ + required String newPassword, + required String currentPassword, + }) async { + try { + User currentUser = await _authLocalDataProvider.currentUser(); + final result = await _dataProvider.changePassword( + newPassword: newPassword, + currentPassword: currentPassword, + userId: currentUser.id, + ); + + if (result.hasError) { + return left(result.error!); + } + + return right(unit); + } catch (e, s) { + log('changePasswordError', name: _logName, error: e, stackTrace: s); + return left(const UserFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 5990c37..98d0aff 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -41,6 +41,8 @@ import 'package:apskel_owner_flutter/application/outlet/current_outlet_loader/cu as _i337; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; +import 'package:apskel_owner_flutter/application/user/change_password_form/change_password_form_bloc.dart' + as _i1030; import 'package:apskel_owner_flutter/application/user/user_edit_form/user_edit_form_bloc.dart' as _i147; import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; @@ -258,6 +260,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i147.UserEditFormBloc>( () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), ); + gh.factory<_i1030.ChangePasswordFormBloc>( + () => _i1030.ChangePasswordFormBloc(gh<_i635.IUserRepository>()), + ); return this; } } diff --git a/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart b/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart new file mode 100644 index 0000000..b227813 --- /dev/null +++ b/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart @@ -0,0 +1,104 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../../application/user/change_password_form/change_password_form_bloc.dart'; +import '../../../../../common/theme/theme.dart'; +import '../../../../../injection.dart'; +import '../../../../components/appbar/appbar.dart'; +import '../../../../components/button/button.dart'; +import '../../../../components/spacer/spacer.dart'; +import '../../../../components/toast/flushbar.dart'; +import 'widgets/current_password.dart'; +import 'widgets/new_password.dart'; + +@RoutePage() +class ProfileChangePasswordPage extends StatefulWidget + implements AutoRouteWrapper { + const ProfileChangePasswordPage({super.key}); + + @override + State createState() => + _ProfileChangePasswordPageState(); + + @override + Widget wrappedRoute(BuildContext context) => + BlocProvider(create: (_) => getIt(), child: this); +} + +class _ProfileChangePasswordPageState extends State { + @override + Widget build(BuildContext context) { + return BlocListener( + listener: (context, state) { + state.failureOrChangePasswordOption.fold( + () => null, + (either) => either.fold( + (f) => AppFlushbar.showUserFailureToast(context, f), + (user) { + if (context.mounted) { + AppFlushbar.showSuccess(context, 'Password changed'); + Future.delayed(const Duration(seconds: 2), () { + context.router.back(); + }); + } + }, + ), + ); + }, + child: Scaffold( + backgroundColor: AppColor.background, + body: CustomScrollView( + slivers: [ + // SliverAppBar with gradient + SliverAppBar( + expandedHeight: 120, + floating: false, + pinned: true, + elevation: 0, + backgroundColor: AppColor.primary, + flexibleSpace: CustomAppBar(title: 'Change Password'), + ), + SliverToBoxAdapter( + child: + BlocBuilder( + builder: (context, state) { + return Container( + margin: EdgeInsets.all(AppValue.margin), + padding: EdgeInsets.all(AppValue.padding), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(AppValue.radius), + ), + child: Form( + autovalidateMode: state.showErrorMessages + ? AutovalidateMode.always + : AutovalidateMode.disabled, + child: Column( + children: [ + ChangePasswordCurrentPassword(), + SpaceHeight(16), + ChangePasswordNewPassword(), + SpaceHeight(24), + AppElevatedButton( + text: 'Save', + isLoading: state.isSubmitting, + onPressed: () { + context.read().add( + ChangePasswordFormEvent.submitted(), + ); + }, + ), + ], + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart b/lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart new file mode 100644 index 0000000..c3886ae --- /dev/null +++ b/lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../../../application/user/change_password_form/change_password_form_bloc.dart'; +import '../../../../../components/field/field.dart'; + +class ChangePasswordCurrentPassword extends StatelessWidget { + const ChangePasswordCurrentPassword({super.key}); + + @override + Widget build(BuildContext context) { + return AppPasswordTextFormField( + title: 'Current Password', + prefixIcon: LineIcons.lock, + hintText: 'Please enter your current password', + onChanged: (value) => context.read().add( + ChangePasswordFormEvent.currentPasswordChanged(value), + ), + validator: (value) { + if (context + .read() + .state + .currentPassword + .isEmpty) { + return 'Please enter your current password'; + } + return null; + }, + ); + } +} diff --git a/lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart b/lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart new file mode 100644 index 0000000..4d404be --- /dev/null +++ b/lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../../../application/user/change_password_form/change_password_form_bloc.dart'; +import '../../../../../components/field/field.dart'; + +class ChangePasswordNewPassword extends StatelessWidget { + const ChangePasswordNewPassword({super.key}); + + @override + Widget build(BuildContext context) { + return AppPasswordTextFormField( + title: 'New Password', + prefixIcon: LineIcons.lock, + hintText: 'Please enter your new password', + onChanged: (value) => context.read().add( + ChangePasswordFormEvent.newPasswordChanged(value), + ), + validator: (value) { + if (context.read().state.newPassword.isEmpty) { + return 'Please enter your new password'; + } + + if (context.read().state.newPassword == + context.read().state.currentPassword) { + return 'New password cannot be same as current password'; + } + return null; + }, + ); + } +} diff --git a/lib/presentation/pages/profile/widgets/account_info.dart b/lib/presentation/pages/profile/widgets/account_info.dart index 187ce35..270e5db 100644 --- a/lib/presentation/pages/profile/widgets/account_info.dart +++ b/lib/presentation/pages/profile/widgets/account_info.dart @@ -66,6 +66,13 @@ class ProfileAccountInfo extends StatelessWidget { subtitle: 'Ubah profil kamu', onTap: () => context.router.push(ProfileEditRoute(user: user)), ), + ProfileDivider(), + ProfileTile( + icon: LineIcons.lock, + title: 'Change Password', + subtitle: 'Change your password', + onTap: () => context.router.push(ProfileChangePasswordRoute()), + ), ], ), ); diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 5c5baea..3a51345 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -61,6 +61,7 @@ class AppRouter extends RootStackRouter { // Profile AutoRoute(page: ProfileEditRoute.page), + AutoRoute(page: ProfileChangePasswordRoute.page), // Error AutoRoute(page: ErrorRoute.page), diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 1b42cd9..6743204 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,8 +9,8 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/domain/order/order.dart' as _i26; -import 'package:apskel_owner_flutter/domain/user/user.dart' as _i27; +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i27; +import 'package:apskel_owner_flutter/domain/user/user.dart' as _i28; import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i10; import 'package:apskel_owner_flutter/presentation/pages/coming_soon/coming_soon_page.dart' @@ -43,32 +43,34 @@ import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic as _i15; import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart' as _i17; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart' as _i18; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i19; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i20; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i21; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i22; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i23; -import 'package:auto_route/auto_route.dart' as _i24; -import 'package:flutter/material.dart' as _i25; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i24; +import 'package:auto_route/auto_route.dart' as _i25; +import 'package:flutter/material.dart' as _i26; /// generated route for /// [_i1.ComingSoonPage] -class ComingSoonRoute extends _i24.PageRouteInfo { - const ComingSoonRoute({List<_i24.PageRouteInfo>? children}) +class ComingSoonRoute extends _i25.PageRouteInfo { + const ComingSoonRoute({List<_i25.PageRouteInfo>? children}) : super(ComingSoonRoute.name, initialChildren: children); static const String name = 'ComingSoonRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { return const _i1.ComingSoonPage(); @@ -78,29 +80,29 @@ class ComingSoonRoute extends _i24.PageRouteInfo { /// generated route for /// [_i2.CustomerPage] -class CustomerRoute extends _i24.PageRouteInfo { - const CustomerRoute({List<_i24.PageRouteInfo>? children}) +class CustomerRoute extends _i25.PageRouteInfo { + const CustomerRoute({List<_i25.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i2.CustomerPage()); + return _i25.WrappedRoute(child: const _i2.CustomerPage()); }, ); } /// generated route for /// [_i3.DailyTasksFormPage] -class DailyTasksFormRoute extends _i24.PageRouteInfo { - const DailyTasksFormRoute({List<_i24.PageRouteInfo>? children}) +class DailyTasksFormRoute extends _i25.PageRouteInfo { + const DailyTasksFormRoute({List<_i25.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { return const _i3.DailyTasksFormPage(); @@ -110,13 +112,13 @@ class DailyTasksFormRoute extends _i24.PageRouteInfo { /// generated route for /// [_i4.DownloadReportPage] -class DownloadReportRoute extends _i24.PageRouteInfo { - const DownloadReportRoute({List<_i24.PageRouteInfo>? children}) +class DownloadReportRoute extends _i25.PageRouteInfo { + const DownloadReportRoute({List<_i25.PageRouteInfo>? children}) : super(DownloadReportRoute.name, initialChildren: children); static const String name = 'DownloadReportRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { return const _i4.DownloadReportPage(); @@ -126,16 +128,16 @@ class DownloadReportRoute extends _i24.PageRouteInfo { /// generated route for /// [_i5.ErrorPage] -class ErrorRoute extends _i24.PageRouteInfo { +class ErrorRoute extends _i25.PageRouteInfo { ErrorRoute({ - _i25.Key? key, + _i26.Key? key, String? title, String? message, - _i25.VoidCallback? onRetry, - _i25.VoidCallback? onBack, + _i26.VoidCallback? onRetry, + _i26.VoidCallback? onBack, String? errorCode, - _i25.IconData? errorIcon, - List<_i24.PageRouteInfo>? children, + _i26.IconData? errorIcon, + List<_i25.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -152,7 +154,7 @@ class ErrorRoute extends _i24.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { final args = data.argsAs( @@ -182,19 +184,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i25.Key? key; + final _i26.Key? key; final String? title; final String? message; - final _i25.VoidCallback? onRetry; + final _i26.VoidCallback? onRetry; - final _i25.VoidCallback? onBack; + final _i26.VoidCallback? onBack; final String? errorCode; - final _i25.IconData? errorIcon; + final _i26.IconData? errorIcon; @override String toString() { @@ -204,61 +206,61 @@ class ErrorRouteArgs { /// generated route for /// [_i6.FinancePage] -class FinanceRoute extends _i24.PageRouteInfo { - const FinanceRoute({List<_i24.PageRouteInfo>? children}) +class FinanceRoute extends _i25.PageRouteInfo { + const FinanceRoute({List<_i25.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i6.FinancePage()); + return _i25.WrappedRoute(child: const _i6.FinancePage()); }, ); } /// generated route for /// [_i7.HomePage] -class HomeRoute extends _i24.PageRouteInfo { - const HomeRoute({List<_i24.PageRouteInfo>? children}) +class HomeRoute extends _i25.PageRouteInfo { + const HomeRoute({List<_i25.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i7.HomePage()); + return _i25.WrappedRoute(child: const _i7.HomePage()); }, ); } /// generated route for /// [_i8.InventoryPage] -class InventoryRoute extends _i24.PageRouteInfo { - const InventoryRoute({List<_i24.PageRouteInfo>? children}) +class InventoryRoute extends _i25.PageRouteInfo { + const InventoryRoute({List<_i25.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i8.InventoryPage()); + return _i25.WrappedRoute(child: const _i8.InventoryPage()); }, ); } /// generated route for /// [_i9.LanguagePage] -class LanguageRoute extends _i24.PageRouteInfo { - const LanguageRoute({List<_i24.PageRouteInfo>? children}) +class LanguageRoute extends _i25.PageRouteInfo { + const LanguageRoute({List<_i25.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { return const _i9.LanguagePage(); @@ -268,29 +270,29 @@ class LanguageRoute extends _i24.PageRouteInfo { /// generated route for /// [_i10.LoginPage] -class LoginRoute extends _i24.PageRouteInfo { - const LoginRoute({List<_i24.PageRouteInfo>? children}) +class LoginRoute extends _i25.PageRouteInfo { + const LoginRoute({List<_i25.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i10.LoginPage()); + return _i25.WrappedRoute(child: const _i10.LoginPage()); }, ); } /// generated route for /// [_i11.MainPage] -class MainRoute extends _i24.PageRouteInfo { - const MainRoute({List<_i24.PageRouteInfo>? children}) +class MainRoute extends _i25.PageRouteInfo { + const MainRoute({List<_i25.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { return const _i11.MainPage(); @@ -300,11 +302,11 @@ class MainRoute extends _i24.PageRouteInfo { /// generated route for /// [_i12.OrderDetailPage] -class OrderDetailRoute extends _i24.PageRouteInfo { +class OrderDetailRoute extends _i25.PageRouteInfo { OrderDetailRoute({ - _i25.Key? key, - required _i26.Order order, - List<_i24.PageRouteInfo>? children, + _i26.Key? key, + required _i27.Order order, + List<_i25.PageRouteInfo>? children, }) : super( OrderDetailRoute.name, args: OrderDetailRouteArgs(key: key, order: order), @@ -313,7 +315,7 @@ class OrderDetailRoute extends _i24.PageRouteInfo { static const String name = 'OrderDetailRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { final args = data.argsAs(); @@ -325,9 +327,9 @@ class OrderDetailRoute extends _i24.PageRouteInfo { class OrderDetailRouteArgs { const OrderDetailRouteArgs({this.key, required this.order}); - final _i25.Key? key; + final _i26.Key? key; - final _i26.Order order; + final _i27.Order order; @override String toString() { @@ -337,75 +339,91 @@ class OrderDetailRouteArgs { /// generated route for /// [_i13.OrderPage] -class OrderRoute extends _i24.PageRouteInfo { - const OrderRoute({List<_i24.PageRouteInfo>? children}) +class OrderRoute extends _i25.PageRouteInfo { + const OrderRoute({List<_i25.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i13.OrderPage()); + return _i25.WrappedRoute(child: const _i13.OrderPage()); }, ); } /// generated route for /// [_i14.OutletInformationPage] -class OutletInformationRoute extends _i24.PageRouteInfo { - const OutletInformationRoute({List<_i24.PageRouteInfo>? children}) +class OutletInformationRoute extends _i25.PageRouteInfo { + const OutletInformationRoute({List<_i25.PageRouteInfo>? children}) : super(OutletInformationRoute.name, initialChildren: children); static const String name = 'OutletInformationRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i14.OutletInformationPage()); + return _i25.WrappedRoute(child: const _i14.OutletInformationPage()); }, ); } /// generated route for /// [_i15.ProductAnalyticPage] -class ProductAnalyticRoute extends _i24.PageRouteInfo { - const ProductAnalyticRoute({List<_i24.PageRouteInfo>? children}) +class ProductAnalyticRoute extends _i25.PageRouteInfo { + const ProductAnalyticRoute({List<_i25.PageRouteInfo>? children}) : super(ProductAnalyticRoute.name, initialChildren: children); static const String name = 'ProductAnalyticRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i15.ProductAnalyticPage()); + return _i25.WrappedRoute(child: const _i15.ProductAnalyticPage()); }, ); } /// generated route for /// [_i16.ProductPage] -class ProductRoute extends _i24.PageRouteInfo { - const ProductRoute({List<_i24.PageRouteInfo>? children}) +class ProductRoute extends _i25.PageRouteInfo { + const ProductRoute({List<_i25.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i16.ProductPage()); + return _i25.WrappedRoute(child: const _i16.ProductPage()); }, ); } /// generated route for -/// [_i17.ProfileEditPage] -class ProfileEditRoute extends _i24.PageRouteInfo { +/// [_i17.ProfileChangePasswordPage] +class ProfileChangePasswordRoute extends _i25.PageRouteInfo { + const ProfileChangePasswordRoute({List<_i25.PageRouteInfo>? children}) + : super(ProfileChangePasswordRoute.name, initialChildren: children); + + static const String name = 'ProfileChangePasswordRoute'; + + static _i25.PageInfo page = _i25.PageInfo( + name, + builder: (data) { + return _i25.WrappedRoute(child: const _i17.ProfileChangePasswordPage()); + }, + ); +} + +/// generated route for +/// [_i18.ProfileEditPage] +class ProfileEditRoute extends _i25.PageRouteInfo { ProfileEditRoute({ - _i25.Key? key, - required _i27.User user, - List<_i24.PageRouteInfo>? children, + _i26.Key? key, + required _i28.User user, + List<_i25.PageRouteInfo>? children, }) : super( ProfileEditRoute.name, args: ProfileEditRouteArgs(key: key, user: user), @@ -414,11 +432,13 @@ class ProfileEditRoute extends _i24.PageRouteInfo { static const String name = 'ProfileEditRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i17.ProfileEditPage(key: args.key, user: args.user); + return _i25.WrappedRoute( + child: _i18.ProfileEditPage(key: args.key, user: args.user), + ); }, ); } @@ -426,9 +446,9 @@ class ProfileEditRoute extends _i24.PageRouteInfo { class ProfileEditRouteArgs { const ProfileEditRouteArgs({this.key, required this.user}); - final _i25.Key? key; + final _i26.Key? key; - final _i27.User user; + final _i28.User user; @override String toString() { @@ -437,97 +457,97 @@ class ProfileEditRouteArgs { } /// generated route for -/// [_i18.ProfilePage] -class ProfileRoute extends _i24.PageRouteInfo { - const ProfileRoute({List<_i24.PageRouteInfo>? children}) +/// [_i19.ProfilePage] +class ProfileRoute extends _i25.PageRouteInfo { + const ProfileRoute({List<_i25.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i18.ProfilePage()); + return _i25.WrappedRoute(child: const _i19.ProfilePage()); }, ); } /// generated route for -/// [_i19.PurchasePage] -class PurchaseRoute extends _i24.PageRouteInfo { - const PurchaseRoute({List<_i24.PageRouteInfo>? children}) +/// [_i20.PurchasePage] +class PurchaseRoute extends _i25.PageRouteInfo { + const PurchaseRoute({List<_i25.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return const _i19.PurchasePage(); + return const _i20.PurchasePage(); }, ); } /// generated route for -/// [_i20.ReportPage] -class ReportRoute extends _i24.PageRouteInfo { - const ReportRoute({List<_i24.PageRouteInfo>? children}) +/// [_i21.ReportPage] +class ReportRoute extends _i25.PageRouteInfo { + const ReportRoute({List<_i25.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i20.ReportPage()); + return _i25.WrappedRoute(child: const _i21.ReportPage()); }, ); } /// generated route for -/// [_i21.SalesPage] -class SalesRoute extends _i24.PageRouteInfo { - const SalesRoute({List<_i24.PageRouteInfo>? children}) +/// [_i22.SalesPage] +class SalesRoute extends _i25.PageRouteInfo { + const SalesRoute({List<_i25.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return _i24.WrappedRoute(child: const _i21.SalesPage()); + return _i25.WrappedRoute(child: const _i22.SalesPage()); }, ); } /// generated route for -/// [_i22.SchedulePage] -class ScheduleRoute extends _i24.PageRouteInfo { - const ScheduleRoute({List<_i24.PageRouteInfo>? children}) +/// [_i23.SchedulePage] +class ScheduleRoute extends _i25.PageRouteInfo { + const ScheduleRoute({List<_i25.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return const _i22.SchedulePage(); + return const _i23.SchedulePage(); }, ); } /// generated route for -/// [_i23.SplashPage] -class SplashRoute extends _i24.PageRouteInfo { - const SplashRoute({List<_i24.PageRouteInfo>? children}) +/// [_i24.SplashPage] +class SplashRoute extends _i25.PageRouteInfo { + const SplashRoute({List<_i25.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i24.PageInfo page = _i24.PageInfo( + static _i25.PageInfo page = _i25.PageInfo( name, builder: (data) { - return const _i23.SplashPage(); + return const _i24.SplashPage(); }, ); } From 838707becf8d6ace92b8f130c6345678073a173e Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 15:36:34 +0700 Subject: [PATCH 085/108] fix: bloc --- lib/application/auth/login_form/login_form_bloc.dart | 4 ++-- lib/application/user/user_edit_form/user_edit_form_bloc.dart | 2 +- .../profile_change_password/profile_change_password_page.dart | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/application/auth/login_form/login_form_bloc.dart b/lib/application/auth/login_form/login_form_bloc.dart index 2c51083..abded69 100644 --- a/lib/application/auth/login_form/login_form_bloc.dart +++ b/lib/application/auth/login_form/login_form_bloc.dart @@ -23,10 +23,10 @@ class LoginFormBloc extends Bloc { ) { return event.map( emailChanged: (e) async { - emit(state.copyWith(email: e.email)); + emit(state.copyWith(email: e.email, failureOrAuthOption: none())); }, passwordChanged: (e) async { - emit(state.copyWith(password: e.password)); + emit(state.copyWith(password: e.password, failureOrAuthOption: none())); }, submitted: (e) async { Either? failureOrAuth; diff --git a/lib/application/user/user_edit_form/user_edit_form_bloc.dart b/lib/application/user/user_edit_form/user_edit_form_bloc.dart index 1727089..b62f52d 100644 --- a/lib/application/user/user_edit_form/user_edit_form_bloc.dart +++ b/lib/application/user/user_edit_form/user_edit_form_bloc.dart @@ -22,7 +22,7 @@ class UserEditFormBloc extends Bloc { ) { return event.map( nameChanged: (e) async { - emit(state.copyWith(name: e.name)); + emit(state.copyWith(name: e.name, failureOrUserOption: none())); }, submitted: (e) async { Either? failureOrUser; diff --git a/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart b/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart index b227813..b6c975f 100644 --- a/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart +++ b/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart @@ -30,6 +30,8 @@ class _ProfileChangePasswordPageState extends State { @override Widget build(BuildContext context) { return BlocListener( + listenWhen: (p, c) => + p.failureOrChangePasswordOption != c.failureOrChangePasswordOption, listener: (context, state) { state.failureOrChangePasswordOption.fold( () => null, From 50934bfed978234bdbe24d80194e3f0945a8354a Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 16:05:42 +0700 Subject: [PATCH 086/108] feat: about app --- lib/injection.config.dart | 18 +- .../pages/about_app/about_app_page.dart | 330 ++++++++++++++++ .../pages/profile/widgets/app_setting.dart | 12 - .../pages/profile/widgets/support.dart | 29 +- lib/presentation/router/app_router.dart | 3 + lib/presentation/router/app_router.gr.dart | 366 +++++++++--------- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 4 + pubspec.lock | 88 +++++ pubspec.yaml | 2 + .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 13 files changed, 650 insertions(+), 211 deletions(-) create mode 100644 lib/presentation/pages/about_app/about_app_page.dart diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 98d0aff..8323e4b 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -156,21 +156,21 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i17.AuthRemoteDataProvider>( () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i785.UserRemoteDataProvider>( + () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i823.ProductRemoteDataProvider>( () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), ); + gh.factory<_i27.OutletRemoteDataProvider>( + () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), + ); gh.factory<_i866.AnalyticRemoteDataProvider>( () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i1006.CustomerRemoteDataProvider>( () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i27.OutletRemoteDataProvider>( - () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), - ); - gh.factory<_i785.UserRemoteDataProvider>( - () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), - ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), ); @@ -216,12 +216,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); - gh.factory<_i889.SalesLoaderBloc>( - () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); gh.factory<_i473.HomeBloc>( () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i889.SalesLoaderBloc>( + () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i337.CurrentOutletLoaderBloc>( () => _i337.CurrentOutletLoaderBloc(gh<_i197.IOutletRepository>()), ); diff --git a/lib/presentation/pages/about_app/about_app_page.dart b/lib/presentation/pages/about_app/about_app_page.dart new file mode 100644 index 0000000..b98252f --- /dev/null +++ b/lib/presentation/pages/about_app/about_app_page.dart @@ -0,0 +1,330 @@ +import 'package:flutter/material.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:device_info_plus/device_info_plus.dart'; + +import '../../../common/theme/theme.dart'; + +@RoutePage() +class AboutAppPage extends StatefulWidget { + const AboutAppPage({super.key}); + + @override + State createState() => _AboutAppPageState(); +} + +class _AboutAppPageState extends State + with TickerProviderStateMixin { + PackageInfo? packageInfo; + String deviceInfo = ''; + late AnimationController _fadeController; + late AnimationController _slideController; + late Animation _fadeAnimation; + late Animation _slideAnimation; + + @override + void initState() { + super.initState(); + _initAnimations(); + _loadAppInfo(); + } + + void _initAnimations() { + _fadeController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + _slideController = AnimationController( + duration: const Duration(milliseconds: 1000), + vsync: this, + ); + + _fadeAnimation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _fadeController, curve: Curves.easeInOut), + ); + + _slideAnimation = + Tween(begin: const Offset(0, 0.3), end: Offset.zero).animate( + CurvedAnimation(parent: _slideController, curve: Curves.elasticOut), + ); + + _fadeController.forward(); + Future.delayed(const Duration(milliseconds: 300), () { + _slideController.forward(); + }); + } + + Future _loadAppInfo() async { + try { + final info = await PackageInfo.fromPlatform(); + final deviceInfoPlugin = DeviceInfoPlugin(); + String device = ''; + + if (Theme.of(context).platform == TargetPlatform.android) { + final androidInfo = await deviceInfoPlugin.androidInfo; + device = '${androidInfo.brand} ${androidInfo.model}'; + } else if (Theme.of(context).platform == TargetPlatform.iOS) { + final iosInfo = await deviceInfoPlugin.iosInfo; + device = '${iosInfo.name} ${iosInfo.model}'; + } + + setState(() { + packageInfo = info; + deviceInfo = device; + }); + } catch (e) { + print('Error loading app info: $e'); + } + } + + @override + void dispose() { + _fadeController.dispose(); + _slideController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: CustomScrollView( + physics: const BouncingScrollPhysics(), + slivers: [_buildSliverAppBar(), _buildContent()], + ), + ); + } + + Widget _buildSliverAppBar() { + return SliverAppBar( + expandedHeight: 280.0, + pinned: true, + elevation: 0, + backgroundColor: AppColor.primary, + flexibleSpace: FlexibleSpaceBar( + title: AnimatedBuilder( + animation: _fadeAnimation, + builder: (context, child) { + return Opacity( + opacity: _fadeAnimation.value, + child: Text( + 'Tentang Aplikasi', + style: AppStyle.lg.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + ); + }, + ), + background: Container( + decoration: const BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: AppColor.primaryGradient, + ), + ), + child: Stack( + children: [ + // Background pattern + Positioned.fill(child: CustomPaint(painter: _PatternPainter())), + // App icon and version + Center( + child: FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 100, + height: 100, + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(25), + boxShadow: [ + BoxShadow( + color: AppColor.black.withOpacity(0.2), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], + ), + child: Icon( + Icons.mobile_friendly, + size: 50, + color: AppColor.primary, + ), + ), + const SizedBox(height: 16), + Text( + packageInfo?.appName ?? 'My App', + style: AppStyle.h4.copyWith( + color: AppColor.white, + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + 'v${packageInfo?.version ?? '1.0.0'}', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: AppColor.white), + onPressed: () => context.router.back(), + ), + ); + } + + Widget _buildContent() { + return SliverToBoxAdapter( + child: FadeTransition( + opacity: _fadeAnimation, + child: Container( + color: AppColor.background, + child: Column( + children: [_buildAppInfoSection(), const SizedBox(height: 40)], + ), + ), + ), + ); + } + + Widget _buildAppInfoSection() { + return Container( + margin: const EdgeInsets.all(20), + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + color: AppColor.white, + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.1), + blurRadius: 20, + offset: const Offset(0, 8), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Icon( + Icons.info_outline, + color: AppColor.primary, + size: 24, + ), + ), + const SizedBox(width: 16), + Text( + 'Informasi Aplikasi', + style: AppStyle.h6.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.primary, + ), + ), + ], + ), + const SizedBox(height: 20), + _buildInfoRow('Nama Aplikasi', packageInfo?.appName ?? 'Loading...'), + _buildInfoRow('Versi', packageInfo?.version ?? 'Loading...'), + _buildInfoRow( + 'Build Number', + packageInfo?.buildNumber ?? 'Loading...', + ), + _buildInfoRow( + 'Package Name', + packageInfo?.packageName ?? 'Loading...', + ), + _buildInfoRow( + 'Device', + deviceInfo.isEmpty ? 'Loading...' : deviceInfo, + ), + ], + ), + ); + } + + Widget _buildInfoRow(String label, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: 120, + child: Text( + label, + style: AppStyle.md.copyWith( + fontWeight: FontWeight.w600, + color: AppColor.textSecondary, + ), + ), + ), + const SizedBox(width: 16), + Expanded( + child: Text( + value, + style: AppStyle.md.copyWith(color: AppColor.textPrimary), + ), + ), + ], + ), + ); + } +} + +class _PatternPainter extends CustomPainter { + @override + void paint(Canvas canvas, Size size) { + final paint = Paint() + ..color = AppColor.white.withOpacity(0.1) + ..strokeWidth = 1 + ..style = PaintingStyle.stroke; + + // Create geometric pattern + for (int i = 0; i < 20; i++) { + for (int j = 0; j < 20; j++) { + final x = (size.width / 20) * i; + final y = (size.height / 20) * j; + + if ((i + j) % 3 == 0) { + canvas.drawCircle(Offset(x, y), 3, paint); + } + } + } + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => false; +} diff --git a/lib/presentation/pages/profile/widgets/app_setting.dart b/lib/presentation/pages/profile/widgets/app_setting.dart index 7e65e96..8e623be 100644 --- a/lib/presentation/pages/profile/widgets/app_setting.dart +++ b/lib/presentation/pages/profile/widgets/app_setting.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; import '../../../router/app_router.gr.dart'; -import 'divider.dart'; import 'profile_tile.dart'; class ProfileAppSetting extends StatefulWidget { @@ -79,17 +78,6 @@ class _ProfileAppSettingState extends State { subtitle: 'English (US)', onTap: () => context.router.push(LanguageRoute()), ), - - ProfileDivider(), - - ProfileTile( - icon: Icons.security_outlined, - title: 'Security & Privacy', - subtitle: 'Manage your security settings', - onTap: () { - // Navigate to security settings - }, - ), ], ), ); diff --git a/lib/presentation/pages/profile/widgets/support.dart b/lib/presentation/pages/profile/widgets/support.dart index f229dee..42193fc 100644 --- a/lib/presentation/pages/profile/widgets/support.dart +++ b/lib/presentation/pages/profile/widgets/support.dart @@ -1,6 +1,8 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import '../../../../common/theme/theme.dart'; +import '../../../router/app_router.gr.dart'; import 'divider.dart'; import 'profile_tile.dart'; @@ -41,31 +43,26 @@ class ProfileSupport extends StatelessWidget { icon: Icons.help_outline, title: 'Help Center', subtitle: 'Get help and support', - onTap: () { - // Navigate to help center - }, + onTap: () => context.router.push(ComingSoonRoute()), ), - ProfileDivider(), - - ProfileTile( - icon: Icons.feedback_outlined, - title: 'Send Feedback', - subtitle: 'Help us improve the app', - onTap: () { - // Open feedback form - }, - ), + // ProfileDivider(), + // ProfileTile( + // icon: Icons.feedback_outlined, + // title: 'Send Feedback', + // subtitle: 'Help us improve the app', + // onTap: () { + // // Open feedback form + // }, + // ), ProfileDivider(), ProfileTile( icon: Icons.info_outline, title: 'About', subtitle: 'App version and information', - onTap: () { - // Show about dialog - }, + onTap: () => context.router.push(AboutAppRoute()), ), ], ), diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index 3a51345..3bc5124 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -63,6 +63,9 @@ class AppRouter extends RootStackRouter { AutoRoute(page: ProfileEditRoute.page), AutoRoute(page: ProfileChangePasswordRoute.page), + // About App + AutoRoute(page: AboutAppRoute.page), + // Error AutoRoute(page: ErrorRoute.page), diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 6743204..9d4c8bb 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,135 +9,153 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_owner_flutter/domain/order/order.dart' as _i27; -import 'package:apskel_owner_flutter/domain/user/user.dart' as _i28; -import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' - as _i10; -import 'package:apskel_owner_flutter/presentation/pages/coming_soon/coming_soon_page.dart' +import 'package:apskel_owner_flutter/domain/order/order.dart' as _i28; +import 'package:apskel_owner_flutter/domain/user/user.dart' as _i29; +import 'package:apskel_owner_flutter/presentation/pages/about_app/about_app_page.dart' as _i1; -import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' - as _i2; -import 'package:apskel_owner_flutter/presentation/pages/download/download_report_page.dart' - as _i4; -import 'package:apskel_owner_flutter/presentation/pages/error/error_page.dart' - as _i5; -import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' - as _i6; -import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' - as _i3; -import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' - as _i7; -import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' - as _i8; -import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' - as _i9; -import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/auth/login/login_page.dart' as _i11; -import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order_detail_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/coming_soon/coming_soon_page.dart' + as _i2; +import 'package:apskel_owner_flutter/presentation/pages/customer/customer_page.dart' + as _i3; +import 'package:apskel_owner_flutter/presentation/pages/download/download_report_page.dart' + as _i5; +import 'package:apskel_owner_flutter/presentation/pages/error/error_page.dart' + as _i6; +import 'package:apskel_owner_flutter/presentation/pages/finance/finance_page.dart' + as _i7; +import 'package:apskel_owner_flutter/presentation/pages/form/daily_task_form_page.dart' + as _i4; +import 'package:apskel_owner_flutter/presentation/pages/home/home_page.dart' + as _i8; +import 'package:apskel_owner_flutter/presentation/pages/inventory/inventory_page.dart' + as _i9; +import 'package:apskel_owner_flutter/presentation/pages/language/language_page.dart' + as _i10; +import 'package:apskel_owner_flutter/presentation/pages/main/main_page.dart' as _i12; -import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_detail/order_detail_page.dart' as _i13; -import 'package:apskel_owner_flutter/presentation/pages/outlet/outlet_information_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/order/order_list/order_page.dart' as _i14; -import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/outlet/outlet_information_page.dart' as _i15; -import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_analytic/product_analytic_page.dart' as _i16; -import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/product/product_list/product_page.dart' as _i17; -import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart' as _i18; -import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart' as _i19; -import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/profile/profile_page.dart' as _i20; -import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/purchase/purchase_page.dart' as _i21; -import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/report/report_page.dart' as _i22; -import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/sales/sales_page.dart' as _i23; -import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' +import 'package:apskel_owner_flutter/presentation/pages/schedule/schedule_page.dart' as _i24; -import 'package:auto_route/auto_route.dart' as _i25; -import 'package:flutter/material.dart' as _i26; +import 'package:apskel_owner_flutter/presentation/pages/splash/splash_page.dart' + as _i25; +import 'package:auto_route/auto_route.dart' as _i26; +import 'package:flutter/material.dart' as _i27; /// generated route for -/// [_i1.ComingSoonPage] -class ComingSoonRoute extends _i25.PageRouteInfo { - const ComingSoonRoute({List<_i25.PageRouteInfo>? children}) +/// [_i1.AboutAppPage] +class AboutAppRoute extends _i26.PageRouteInfo { + const AboutAppRoute({List<_i26.PageRouteInfo>? children}) + : super(AboutAppRoute.name, initialChildren: children); + + static const String name = 'AboutAppRoute'; + + static _i26.PageInfo page = _i26.PageInfo( + name, + builder: (data) { + return const _i1.AboutAppPage(); + }, + ); +} + +/// generated route for +/// [_i2.ComingSoonPage] +class ComingSoonRoute extends _i26.PageRouteInfo { + const ComingSoonRoute({List<_i26.PageRouteInfo>? children}) : super(ComingSoonRoute.name, initialChildren: children); static const String name = 'ComingSoonRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i1.ComingSoonPage(); + return const _i2.ComingSoonPage(); }, ); } /// generated route for -/// [_i2.CustomerPage] -class CustomerRoute extends _i25.PageRouteInfo { - const CustomerRoute({List<_i25.PageRouteInfo>? children}) +/// [_i3.CustomerPage] +class CustomerRoute extends _i26.PageRouteInfo { + const CustomerRoute({List<_i26.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i2.CustomerPage()); + return _i26.WrappedRoute(child: const _i3.CustomerPage()); }, ); } /// generated route for -/// [_i3.DailyTasksFormPage] -class DailyTasksFormRoute extends _i25.PageRouteInfo { - const DailyTasksFormRoute({List<_i25.PageRouteInfo>? children}) +/// [_i4.DailyTasksFormPage] +class DailyTasksFormRoute extends _i26.PageRouteInfo { + const DailyTasksFormRoute({List<_i26.PageRouteInfo>? children}) : super(DailyTasksFormRoute.name, initialChildren: children); static const String name = 'DailyTasksFormRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i3.DailyTasksFormPage(); + return const _i4.DailyTasksFormPage(); }, ); } /// generated route for -/// [_i4.DownloadReportPage] -class DownloadReportRoute extends _i25.PageRouteInfo { - const DownloadReportRoute({List<_i25.PageRouteInfo>? children}) +/// [_i5.DownloadReportPage] +class DownloadReportRoute extends _i26.PageRouteInfo { + const DownloadReportRoute({List<_i26.PageRouteInfo>? children}) : super(DownloadReportRoute.name, initialChildren: children); static const String name = 'DownloadReportRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i4.DownloadReportPage(); + return const _i5.DownloadReportPage(); }, ); } /// generated route for -/// [_i5.ErrorPage] -class ErrorRoute extends _i25.PageRouteInfo { +/// [_i6.ErrorPage] +class ErrorRoute extends _i26.PageRouteInfo { ErrorRoute({ - _i26.Key? key, + _i27.Key? key, String? title, String? message, - _i26.VoidCallback? onRetry, - _i26.VoidCallback? onBack, + _i27.VoidCallback? onRetry, + _i27.VoidCallback? onBack, String? errorCode, - _i26.IconData? errorIcon, - List<_i25.PageRouteInfo>? children, + _i27.IconData? errorIcon, + List<_i26.PageRouteInfo>? children, }) : super( ErrorRoute.name, args: ErrorRouteArgs( @@ -154,13 +172,13 @@ class ErrorRoute extends _i25.PageRouteInfo { static const String name = 'ErrorRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { final args = data.argsAs( orElse: () => const ErrorRouteArgs(), ); - return _i5.ErrorPage( + return _i6.ErrorPage( key: args.key, title: args.title, message: args.message, @@ -184,19 +202,19 @@ class ErrorRouteArgs { this.errorIcon, }); - final _i26.Key? key; + final _i27.Key? key; final String? title; final String? message; - final _i26.VoidCallback? onRetry; + final _i27.VoidCallback? onRetry; - final _i26.VoidCallback? onBack; + final _i27.VoidCallback? onBack; final String? errorCode; - final _i26.IconData? errorIcon; + final _i27.IconData? errorIcon; @override String toString() { @@ -205,108 +223,108 @@ class ErrorRouteArgs { } /// generated route for -/// [_i6.FinancePage] -class FinanceRoute extends _i25.PageRouteInfo { - const FinanceRoute({List<_i25.PageRouteInfo>? children}) +/// [_i7.FinancePage] +class FinanceRoute extends _i26.PageRouteInfo { + const FinanceRoute({List<_i26.PageRouteInfo>? children}) : super(FinanceRoute.name, initialChildren: children); static const String name = 'FinanceRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i6.FinancePage()); + return _i26.WrappedRoute(child: const _i7.FinancePage()); }, ); } /// generated route for -/// [_i7.HomePage] -class HomeRoute extends _i25.PageRouteInfo { - const HomeRoute({List<_i25.PageRouteInfo>? children}) +/// [_i8.HomePage] +class HomeRoute extends _i26.PageRouteInfo { + const HomeRoute({List<_i26.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i7.HomePage()); + return _i26.WrappedRoute(child: const _i8.HomePage()); }, ); } /// generated route for -/// [_i8.InventoryPage] -class InventoryRoute extends _i25.PageRouteInfo { - const InventoryRoute({List<_i25.PageRouteInfo>? children}) +/// [_i9.InventoryPage] +class InventoryRoute extends _i26.PageRouteInfo { + const InventoryRoute({List<_i26.PageRouteInfo>? children}) : super(InventoryRoute.name, initialChildren: children); static const String name = 'InventoryRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i8.InventoryPage()); + return _i26.WrappedRoute(child: const _i9.InventoryPage()); }, ); } /// generated route for -/// [_i9.LanguagePage] -class LanguageRoute extends _i25.PageRouteInfo { - const LanguageRoute({List<_i25.PageRouteInfo>? children}) +/// [_i10.LanguagePage] +class LanguageRoute extends _i26.PageRouteInfo { + const LanguageRoute({List<_i26.PageRouteInfo>? children}) : super(LanguageRoute.name, initialChildren: children); static const String name = 'LanguageRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i9.LanguagePage(); + return const _i10.LanguagePage(); }, ); } /// generated route for -/// [_i10.LoginPage] -class LoginRoute extends _i25.PageRouteInfo { - const LoginRoute({List<_i25.PageRouteInfo>? children}) +/// [_i11.LoginPage] +class LoginRoute extends _i26.PageRouteInfo { + const LoginRoute({List<_i26.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i10.LoginPage()); + return _i26.WrappedRoute(child: const _i11.LoginPage()); }, ); } /// generated route for -/// [_i11.MainPage] -class MainRoute extends _i25.PageRouteInfo { - const MainRoute({List<_i25.PageRouteInfo>? children}) +/// [_i12.MainPage] +class MainRoute extends _i26.PageRouteInfo { + const MainRoute({List<_i26.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i11.MainPage(); + return const _i12.MainPage(); }, ); } /// generated route for -/// [_i12.OrderDetailPage] -class OrderDetailRoute extends _i25.PageRouteInfo { +/// [_i13.OrderDetailPage] +class OrderDetailRoute extends _i26.PageRouteInfo { OrderDetailRoute({ - _i26.Key? key, - required _i27.Order order, - List<_i25.PageRouteInfo>? children, + _i27.Key? key, + required _i28.Order order, + List<_i26.PageRouteInfo>? children, }) : super( OrderDetailRoute.name, args: OrderDetailRouteArgs(key: key, order: order), @@ -315,11 +333,11 @@ class OrderDetailRoute extends _i25.PageRouteInfo { static const String name = 'OrderDetailRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i12.OrderDetailPage(key: args.key, order: args.order); + return _i13.OrderDetailPage(key: args.key, order: args.order); }, ); } @@ -327,9 +345,9 @@ class OrderDetailRoute extends _i25.PageRouteInfo { class OrderDetailRouteArgs { const OrderDetailRouteArgs({this.key, required this.order}); - final _i26.Key? key; + final _i27.Key? key; - final _i27.Order order; + final _i28.Order order; @override String toString() { @@ -338,92 +356,92 @@ class OrderDetailRouteArgs { } /// generated route for -/// [_i13.OrderPage] -class OrderRoute extends _i25.PageRouteInfo { - const OrderRoute({List<_i25.PageRouteInfo>? children}) +/// [_i14.OrderPage] +class OrderRoute extends _i26.PageRouteInfo { + const OrderRoute({List<_i26.PageRouteInfo>? children}) : super(OrderRoute.name, initialChildren: children); static const String name = 'OrderRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i13.OrderPage()); + return _i26.WrappedRoute(child: const _i14.OrderPage()); }, ); } /// generated route for -/// [_i14.OutletInformationPage] -class OutletInformationRoute extends _i25.PageRouteInfo { - const OutletInformationRoute({List<_i25.PageRouteInfo>? children}) +/// [_i15.OutletInformationPage] +class OutletInformationRoute extends _i26.PageRouteInfo { + const OutletInformationRoute({List<_i26.PageRouteInfo>? children}) : super(OutletInformationRoute.name, initialChildren: children); static const String name = 'OutletInformationRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i14.OutletInformationPage()); + return _i26.WrappedRoute(child: const _i15.OutletInformationPage()); }, ); } /// generated route for -/// [_i15.ProductAnalyticPage] -class ProductAnalyticRoute extends _i25.PageRouteInfo { - const ProductAnalyticRoute({List<_i25.PageRouteInfo>? children}) +/// [_i16.ProductAnalyticPage] +class ProductAnalyticRoute extends _i26.PageRouteInfo { + const ProductAnalyticRoute({List<_i26.PageRouteInfo>? children}) : super(ProductAnalyticRoute.name, initialChildren: children); static const String name = 'ProductAnalyticRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i15.ProductAnalyticPage()); + return _i26.WrappedRoute(child: const _i16.ProductAnalyticPage()); }, ); } /// generated route for -/// [_i16.ProductPage] -class ProductRoute extends _i25.PageRouteInfo { - const ProductRoute({List<_i25.PageRouteInfo>? children}) +/// [_i17.ProductPage] +class ProductRoute extends _i26.PageRouteInfo { + const ProductRoute({List<_i26.PageRouteInfo>? children}) : super(ProductRoute.name, initialChildren: children); static const String name = 'ProductRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i16.ProductPage()); + return _i26.WrappedRoute(child: const _i17.ProductPage()); }, ); } /// generated route for -/// [_i17.ProfileChangePasswordPage] -class ProfileChangePasswordRoute extends _i25.PageRouteInfo { - const ProfileChangePasswordRoute({List<_i25.PageRouteInfo>? children}) +/// [_i18.ProfileChangePasswordPage] +class ProfileChangePasswordRoute extends _i26.PageRouteInfo { + const ProfileChangePasswordRoute({List<_i26.PageRouteInfo>? children}) : super(ProfileChangePasswordRoute.name, initialChildren: children); static const String name = 'ProfileChangePasswordRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i17.ProfileChangePasswordPage()); + return _i26.WrappedRoute(child: const _i18.ProfileChangePasswordPage()); }, ); } /// generated route for -/// [_i18.ProfileEditPage] -class ProfileEditRoute extends _i25.PageRouteInfo { +/// [_i19.ProfileEditPage] +class ProfileEditRoute extends _i26.PageRouteInfo { ProfileEditRoute({ - _i26.Key? key, - required _i28.User user, - List<_i25.PageRouteInfo>? children, + _i27.Key? key, + required _i29.User user, + List<_i26.PageRouteInfo>? children, }) : super( ProfileEditRoute.name, args: ProfileEditRouteArgs(key: key, user: user), @@ -432,12 +450,12 @@ class ProfileEditRoute extends _i25.PageRouteInfo { static const String name = 'ProfileEditRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i25.WrappedRoute( - child: _i18.ProfileEditPage(key: args.key, user: args.user), + return _i26.WrappedRoute( + child: _i19.ProfileEditPage(key: args.key, user: args.user), ); }, ); @@ -446,9 +464,9 @@ class ProfileEditRoute extends _i25.PageRouteInfo { class ProfileEditRouteArgs { const ProfileEditRouteArgs({this.key, required this.user}); - final _i26.Key? key; + final _i27.Key? key; - final _i28.User user; + final _i29.User user; @override String toString() { @@ -457,97 +475,97 @@ class ProfileEditRouteArgs { } /// generated route for -/// [_i19.ProfilePage] -class ProfileRoute extends _i25.PageRouteInfo { - const ProfileRoute({List<_i25.PageRouteInfo>? children}) +/// [_i20.ProfilePage] +class ProfileRoute extends _i26.PageRouteInfo { + const ProfileRoute({List<_i26.PageRouteInfo>? children}) : super(ProfileRoute.name, initialChildren: children); static const String name = 'ProfileRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i19.ProfilePage()); + return _i26.WrappedRoute(child: const _i20.ProfilePage()); }, ); } /// generated route for -/// [_i20.PurchasePage] -class PurchaseRoute extends _i25.PageRouteInfo { - const PurchaseRoute({List<_i25.PageRouteInfo>? children}) +/// [_i21.PurchasePage] +class PurchaseRoute extends _i26.PageRouteInfo { + const PurchaseRoute({List<_i26.PageRouteInfo>? children}) : super(PurchaseRoute.name, initialChildren: children); static const String name = 'PurchaseRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i20.PurchasePage(); + return const _i21.PurchasePage(); }, ); } /// generated route for -/// [_i21.ReportPage] -class ReportRoute extends _i25.PageRouteInfo { - const ReportRoute({List<_i25.PageRouteInfo>? children}) +/// [_i22.ReportPage] +class ReportRoute extends _i26.PageRouteInfo { + const ReportRoute({List<_i26.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i21.ReportPage()); + return _i26.WrappedRoute(child: const _i22.ReportPage()); }, ); } /// generated route for -/// [_i22.SalesPage] -class SalesRoute extends _i25.PageRouteInfo { - const SalesRoute({List<_i25.PageRouteInfo>? children}) +/// [_i23.SalesPage] +class SalesRoute extends _i26.PageRouteInfo { + const SalesRoute({List<_i26.PageRouteInfo>? children}) : super(SalesRoute.name, initialChildren: children); static const String name = 'SalesRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return _i25.WrappedRoute(child: const _i22.SalesPage()); + return _i26.WrappedRoute(child: const _i23.SalesPage()); }, ); } /// generated route for -/// [_i23.SchedulePage] -class ScheduleRoute extends _i25.PageRouteInfo { - const ScheduleRoute({List<_i25.PageRouteInfo>? children}) +/// [_i24.SchedulePage] +class ScheduleRoute extends _i26.PageRouteInfo { + const ScheduleRoute({List<_i26.PageRouteInfo>? children}) : super(ScheduleRoute.name, initialChildren: children); static const String name = 'ScheduleRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i23.SchedulePage(); + return const _i24.SchedulePage(); }, ); } /// generated route for -/// [_i24.SplashPage] -class SplashRoute extends _i25.PageRouteInfo { - const SplashRoute({List<_i25.PageRouteInfo>? children}) +/// [_i25.SplashPage] +class SplashRoute extends _i26.PageRouteInfo { + const SplashRoute({List<_i26.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i25.PageInfo page = _i25.PageInfo( + static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i24.SplashPage(); + return const _i25.SplashPage(); }, ); } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 64a0ece..7299b5c 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,9 +7,13 @@ #include "generated_plugin_registrant.h" #include +#include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2db3c22..786ff5c 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_linux + url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 0483a55..ca4c2ff 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,17 +6,21 @@ import FlutterMacOS import Foundation import connectivity_plus +import device_info_plus import file_selector_macos import package_info_plus import path_provider_foundation import shared_preferences_foundation import sqflite_darwin +import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 48ae405..a1d564d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -337,6 +337,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.11" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" + url: "https://pub.dev" + source: hosted + version: "11.5.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f + url: "https://pub.dev" + source: hosted + version: "7.0.3" dio: dependency: "direct main" description: @@ -1290,6 +1306,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 + url: "https://pub.dev" + source: hosted + version: "6.3.2" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "0aedad096a85b49df2e4725fa32118f9fa580f3b14af7a2d2221896a02cd5656" + url: "https://pub.dev" + source: hosted + version: "6.3.17" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 + url: "https://pub.dev" + source: hosted + version: "6.3.4" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f + url: "https://pub.dev" + source: hosted + version: "3.2.3" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + url: "https://pub.dev" + source: hosted + version: "3.1.4" uuid: dependency: transitive description: @@ -1378,6 +1458,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.14.0" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" + url: "https://pub.dev" + source: hosted + version: "2.1.0" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 95f72d6..81c3a61 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,6 +43,8 @@ dependencies: shimmer: ^3.0.0 cached_network_image: ^3.4.1 syncfusion_flutter_datepicker: ^30.2.5 + url_launcher: ^6.3.2 + device_info_plus: ^11.5.0 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index e6c6668..384ea41 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,10 +8,13 @@ #include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { ConnectivityPlusWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d62d824..199b881 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST connectivity_plus file_selector_windows + url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST From 1aa65d17326d1d4a3278f520594a58f0bd0680b2 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 17:05:55 +0700 Subject: [PATCH 087/108] feat: inventory report --- android/app/src/main/AndroidManifest.xml | 5 + .../inventory_report_bloc.dart | 66 ++ .../inventory_report_bloc.freezed.dart | 645 ++++++++++++++++++ .../inventory_report_event.dart | 10 + .../inventory_report_state.dart | 20 + lib/common/utils/pdf_service.dart | 79 +++ lib/common/utils/permission.dart | 72 ++ lib/injection.config.dart | 8 + .../components/report/inventory_report.dart | 547 +++++++++++++++ .../pages/download/download_report_page.dart | 268 +++++--- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 144 ++++ pubspec.yaml | 3 + .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 17 files changed, 1772 insertions(+), 106 deletions(-) create mode 100644 lib/application/report/inventory_report/inventory_report_bloc.dart create mode 100644 lib/application/report/inventory_report/inventory_report_bloc.freezed.dart create mode 100644 lib/application/report/inventory_report/inventory_report_event.dart create mode 100644 lib/application/report/inventory_report/inventory_report_state.dart create mode 100644 lib/common/utils/pdf_service.dart create mode 100644 lib/common/utils/permission.dart create mode 100644 lib/presentation/components/report/inventory_report.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 3d9eb2d..0a0b209 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,10 @@ + + + + + { + final IAnalyticRepository _analyticRepository; + final IOutletRepository _outletRepository; + InventoryReportBloc(this._analyticRepository, this._outletRepository) + : super(InventoryReportState.initial()) { + on(_onInventoryReportEvent); + } + + Future _onInventoryReportEvent( + InventoryReportEvent event, + Emitter emit, + ) { + return event.map( + fetchedOutlet: (e) async { + emit( + state.copyWith(isFetchingOutlet: true, failureOptionOutlet: none()), + ); + + final result = await _outletRepository.currentOutlet(); + + var data = result.fold( + (f) => state.copyWith(failureOptionOutlet: optionOf(f)), + (currentOutlet) => state.copyWith(outlet: currentOutlet), + ); + + emit(data.copyWith(isFetchingOutlet: false)); + }, + fetchedInventory: (e) async { + emit( + state.copyWith( + isFetching: true, + failureOptionInventoryAnalytic: none(), + ), + ); + + final result = await _analyticRepository.getInventory( + dateFrom: e.dateFrom, + dateTo: e.dateTo, + ); + + var data = result.fold( + (f) => state.copyWith(failureOptionInventoryAnalytic: optionOf(f)), + (inventoryAnalytic) => + state.copyWith(inventoryAnalytic: inventoryAnalytic), + ); + + emit(data.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/report/inventory_report/inventory_report_bloc.freezed.dart b/lib/application/report/inventory_report/inventory_report_bloc.freezed.dart new file mode 100644 index 0000000..714993c --- /dev/null +++ b/lib/application/report/inventory_report/inventory_report_bloc.freezed.dart @@ -0,0 +1,645 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'inventory_report_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$InventoryReportEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedOutlet, + required TResult Function(DateTime dateFrom, DateTime dateTo) + fetchedInventory, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedOutlet, + TResult? Function(DateTime dateFrom, DateTime dateTo)? fetchedInventory, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedOutlet, + TResult Function(DateTime dateFrom, DateTime dateTo)? fetchedInventory, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedOutlet value) fetchedOutlet, + required TResult Function(_FetchedInventory value) fetchedInventory, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedOutlet value)? fetchedOutlet, + TResult? Function(_FetchedInventory value)? fetchedInventory, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedOutlet value)? fetchedOutlet, + TResult Function(_FetchedInventory value)? fetchedInventory, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryReportEventCopyWith<$Res> { + factory $InventoryReportEventCopyWith( + InventoryReportEvent value, + $Res Function(InventoryReportEvent) then, + ) = _$InventoryReportEventCopyWithImpl<$Res, InventoryReportEvent>; +} + +/// @nodoc +class _$InventoryReportEventCopyWithImpl< + $Res, + $Val extends InventoryReportEvent +> + implements $InventoryReportEventCopyWith<$Res> { + _$InventoryReportEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryReportEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedOutletImplCopyWith<$Res> { + factory _$$FetchedOutletImplCopyWith( + _$FetchedOutletImpl value, + $Res Function(_$FetchedOutletImpl) then, + ) = __$$FetchedOutletImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedOutletImplCopyWithImpl<$Res> + extends _$InventoryReportEventCopyWithImpl<$Res, _$FetchedOutletImpl> + implements _$$FetchedOutletImplCopyWith<$Res> { + __$$FetchedOutletImplCopyWithImpl( + _$FetchedOutletImpl _value, + $Res Function(_$FetchedOutletImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryReportEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedOutletImpl implements _FetchedOutlet { + const _$FetchedOutletImpl(); + + @override + String toString() { + return 'InventoryReportEvent.fetchedOutlet()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedOutletImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedOutlet, + required TResult Function(DateTime dateFrom, DateTime dateTo) + fetchedInventory, + }) { + return fetchedOutlet(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedOutlet, + TResult? Function(DateTime dateFrom, DateTime dateTo)? fetchedInventory, + }) { + return fetchedOutlet?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedOutlet, + TResult Function(DateTime dateFrom, DateTime dateTo)? fetchedInventory, + required TResult orElse(), + }) { + if (fetchedOutlet != null) { + return fetchedOutlet(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedOutlet value) fetchedOutlet, + required TResult Function(_FetchedInventory value) fetchedInventory, + }) { + return fetchedOutlet(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedOutlet value)? fetchedOutlet, + TResult? Function(_FetchedInventory value)? fetchedInventory, + }) { + return fetchedOutlet?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedOutlet value)? fetchedOutlet, + TResult Function(_FetchedInventory value)? fetchedInventory, + required TResult orElse(), + }) { + if (fetchedOutlet != null) { + return fetchedOutlet(this); + } + return orElse(); + } +} + +abstract class _FetchedOutlet implements InventoryReportEvent { + const factory _FetchedOutlet() = _$FetchedOutletImpl; +} + +/// @nodoc +abstract class _$$FetchedInventoryImplCopyWith<$Res> { + factory _$$FetchedInventoryImplCopyWith( + _$FetchedInventoryImpl value, + $Res Function(_$FetchedInventoryImpl) then, + ) = __$$FetchedInventoryImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$FetchedInventoryImplCopyWithImpl<$Res> + extends _$InventoryReportEventCopyWithImpl<$Res, _$FetchedInventoryImpl> + implements _$$FetchedInventoryImplCopyWith<$Res> { + __$$FetchedInventoryImplCopyWithImpl( + _$FetchedInventoryImpl _value, + $Res Function(_$FetchedInventoryImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryReportEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$FetchedInventoryImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$FetchedInventoryImpl implements _FetchedInventory { + const _$FetchedInventoryImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'InventoryReportEvent.fetchedInventory(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$FetchedInventoryImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of InventoryReportEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$FetchedInventoryImplCopyWith<_$FetchedInventoryImpl> get copyWith => + __$$FetchedInventoryImplCopyWithImpl<_$FetchedInventoryImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedOutlet, + required TResult Function(DateTime dateFrom, DateTime dateTo) + fetchedInventory, + }) { + return fetchedInventory(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedOutlet, + TResult? Function(DateTime dateFrom, DateTime dateTo)? fetchedInventory, + }) { + return fetchedInventory?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedOutlet, + TResult Function(DateTime dateFrom, DateTime dateTo)? fetchedInventory, + required TResult orElse(), + }) { + if (fetchedInventory != null) { + return fetchedInventory(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedOutlet value) fetchedOutlet, + required TResult Function(_FetchedInventory value) fetchedInventory, + }) { + return fetchedInventory(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedOutlet value)? fetchedOutlet, + TResult? Function(_FetchedInventory value)? fetchedInventory, + }) { + return fetchedInventory?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedOutlet value)? fetchedOutlet, + TResult Function(_FetchedInventory value)? fetchedInventory, + required TResult orElse(), + }) { + if (fetchedInventory != null) { + return fetchedInventory(this); + } + return orElse(); + } +} + +abstract class _FetchedInventory implements InventoryReportEvent { + const factory _FetchedInventory( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$FetchedInventoryImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of InventoryReportEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$FetchedInventoryImplCopyWith<_$FetchedInventoryImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$InventoryReportState { + InventoryAnalytic get inventoryAnalytic => throw _privateConstructorUsedError; + Option get failureOptionInventoryAnalytic => + throw _privateConstructorUsedError; + Outlet get outlet => throw _privateConstructorUsedError; + Option get failureOptionOutlet => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + bool get isFetchingOutlet => throw _privateConstructorUsedError; + + /// Create a copy of InventoryReportState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $InventoryReportStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $InventoryReportStateCopyWith<$Res> { + factory $InventoryReportStateCopyWith( + InventoryReportState value, + $Res Function(InventoryReportState) then, + ) = _$InventoryReportStateCopyWithImpl<$Res, InventoryReportState>; + @useResult + $Res call({ + InventoryAnalytic inventoryAnalytic, + Option failureOptionInventoryAnalytic, + Outlet outlet, + Option failureOptionOutlet, + bool isFetching, + bool isFetchingOutlet, + }); + + $InventoryAnalyticCopyWith<$Res> get inventoryAnalytic; + $OutletCopyWith<$Res> get outlet; +} + +/// @nodoc +class _$InventoryReportStateCopyWithImpl< + $Res, + $Val extends InventoryReportState +> + implements $InventoryReportStateCopyWith<$Res> { + _$InventoryReportStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of InventoryReportState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? inventoryAnalytic = null, + Object? failureOptionInventoryAnalytic = null, + Object? outlet = null, + Object? failureOptionOutlet = null, + Object? isFetching = null, + Object? isFetchingOutlet = null, + }) { + return _then( + _value.copyWith( + inventoryAnalytic: null == inventoryAnalytic + ? _value.inventoryAnalytic + : inventoryAnalytic // ignore: cast_nullable_to_non_nullable + as InventoryAnalytic, + failureOptionInventoryAnalytic: + null == failureOptionInventoryAnalytic + ? _value.failureOptionInventoryAnalytic + : failureOptionInventoryAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + outlet: null == outlet + ? _value.outlet + : outlet // ignore: cast_nullable_to_non_nullable + as Outlet, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + isFetchingOutlet: null == isFetchingOutlet + ? _value.isFetchingOutlet + : isFetchingOutlet // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of InventoryReportState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $InventoryAnalyticCopyWith<$Res> get inventoryAnalytic { + return $InventoryAnalyticCopyWith<$Res>(_value.inventoryAnalytic, (value) { + return _then(_value.copyWith(inventoryAnalytic: value) as $Val); + }); + } + + /// Create a copy of InventoryReportState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $OutletCopyWith<$Res> get outlet { + return $OutletCopyWith<$Res>(_value.outlet, (value) { + return _then(_value.copyWith(outlet: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$InventoryReportStateImplCopyWith<$Res> + implements $InventoryReportStateCopyWith<$Res> { + factory _$$InventoryReportStateImplCopyWith( + _$InventoryReportStateImpl value, + $Res Function(_$InventoryReportStateImpl) then, + ) = __$$InventoryReportStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + InventoryAnalytic inventoryAnalytic, + Option failureOptionInventoryAnalytic, + Outlet outlet, + Option failureOptionOutlet, + bool isFetching, + bool isFetchingOutlet, + }); + + @override + $InventoryAnalyticCopyWith<$Res> get inventoryAnalytic; + @override + $OutletCopyWith<$Res> get outlet; +} + +/// @nodoc +class __$$InventoryReportStateImplCopyWithImpl<$Res> + extends _$InventoryReportStateCopyWithImpl<$Res, _$InventoryReportStateImpl> + implements _$$InventoryReportStateImplCopyWith<$Res> { + __$$InventoryReportStateImplCopyWithImpl( + _$InventoryReportStateImpl _value, + $Res Function(_$InventoryReportStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of InventoryReportState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? inventoryAnalytic = null, + Object? failureOptionInventoryAnalytic = null, + Object? outlet = null, + Object? failureOptionOutlet = null, + Object? isFetching = null, + Object? isFetchingOutlet = null, + }) { + return _then( + _$InventoryReportStateImpl( + inventoryAnalytic: null == inventoryAnalytic + ? _value.inventoryAnalytic + : inventoryAnalytic // ignore: cast_nullable_to_non_nullable + as InventoryAnalytic, + failureOptionInventoryAnalytic: null == failureOptionInventoryAnalytic + ? _value.failureOptionInventoryAnalytic + : failureOptionInventoryAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + outlet: null == outlet + ? _value.outlet + : outlet // ignore: cast_nullable_to_non_nullable + as Outlet, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + isFetchingOutlet: null == isFetchingOutlet + ? _value.isFetchingOutlet + : isFetchingOutlet // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$InventoryReportStateImpl implements _InventoryReportState { + const _$InventoryReportStateImpl({ + required this.inventoryAnalytic, + required this.failureOptionInventoryAnalytic, + required this.outlet, + required this.failureOptionOutlet, + this.isFetching = false, + this.isFetchingOutlet = false, + }); + + @override + final InventoryAnalytic inventoryAnalytic; + @override + final Option failureOptionInventoryAnalytic; + @override + final Outlet outlet; + @override + final Option failureOptionOutlet; + @override + @JsonKey() + final bool isFetching; + @override + @JsonKey() + final bool isFetchingOutlet; + + @override + String toString() { + return 'InventoryReportState(inventoryAnalytic: $inventoryAnalytic, failureOptionInventoryAnalytic: $failureOptionInventoryAnalytic, outlet: $outlet, failureOptionOutlet: $failureOptionOutlet, isFetching: $isFetching, isFetchingOutlet: $isFetchingOutlet)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$InventoryReportStateImpl && + (identical(other.inventoryAnalytic, inventoryAnalytic) || + other.inventoryAnalytic == inventoryAnalytic) && + (identical( + other.failureOptionInventoryAnalytic, + failureOptionInventoryAnalytic, + ) || + other.failureOptionInventoryAnalytic == + failureOptionInventoryAnalytic) && + (identical(other.outlet, outlet) || other.outlet == outlet) && + (identical(other.failureOptionOutlet, failureOptionOutlet) || + other.failureOptionOutlet == failureOptionOutlet) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching) && + (identical(other.isFetchingOutlet, isFetchingOutlet) || + other.isFetchingOutlet == isFetchingOutlet)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + inventoryAnalytic, + failureOptionInventoryAnalytic, + outlet, + failureOptionOutlet, + isFetching, + isFetchingOutlet, + ); + + /// Create a copy of InventoryReportState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$InventoryReportStateImplCopyWith<_$InventoryReportStateImpl> + get copyWith => + __$$InventoryReportStateImplCopyWithImpl<_$InventoryReportStateImpl>( + this, + _$identity, + ); +} + +abstract class _InventoryReportState implements InventoryReportState { + const factory _InventoryReportState({ + required final InventoryAnalytic inventoryAnalytic, + required final Option failureOptionInventoryAnalytic, + required final Outlet outlet, + required final Option failureOptionOutlet, + final bool isFetching, + final bool isFetchingOutlet, + }) = _$InventoryReportStateImpl; + + @override + InventoryAnalytic get inventoryAnalytic; + @override + Option get failureOptionInventoryAnalytic; + @override + Outlet get outlet; + @override + Option get failureOptionOutlet; + @override + bool get isFetching; + @override + bool get isFetchingOutlet; + + /// Create a copy of InventoryReportState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$InventoryReportStateImplCopyWith<_$InventoryReportStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/report/inventory_report/inventory_report_event.dart b/lib/application/report/inventory_report/inventory_report_event.dart new file mode 100644 index 0000000..713335f --- /dev/null +++ b/lib/application/report/inventory_report/inventory_report_event.dart @@ -0,0 +1,10 @@ +part of 'inventory_report_bloc.dart'; + +@freezed +class InventoryReportEvent with _$InventoryReportEvent { + const factory InventoryReportEvent.fetchedOutlet() = _FetchedOutlet; + const factory InventoryReportEvent.fetchedInventory( + DateTime dateFrom, + DateTime dateTo, + ) = _FetchedInventory; +} diff --git a/lib/application/report/inventory_report/inventory_report_state.dart b/lib/application/report/inventory_report/inventory_report_state.dart new file mode 100644 index 0000000..fb652ef --- /dev/null +++ b/lib/application/report/inventory_report/inventory_report_state.dart @@ -0,0 +1,20 @@ +part of 'inventory_report_bloc.dart'; + +@freezed +class InventoryReportState with _$InventoryReportState { + const factory InventoryReportState({ + required InventoryAnalytic inventoryAnalytic, + required Option failureOptionInventoryAnalytic, + required Outlet outlet, + required Option failureOptionOutlet, + @Default(false) bool isFetching, + @Default(false) bool isFetchingOutlet, + }) = _InventoryReportState; + + factory InventoryReportState.initial() => InventoryReportState( + inventoryAnalytic: InventoryAnalytic.empty(), + failureOptionInventoryAnalytic: none(), + outlet: Outlet.empty(), + failureOptionOutlet: none(), + ); +} diff --git a/lib/common/utils/pdf_service.dart b/lib/common/utils/pdf_service.dart new file mode 100644 index 0000000..a7222a7 --- /dev/null +++ b/lib/common/utils/pdf_service.dart @@ -0,0 +1,79 @@ +import 'dart:developer'; +import 'dart:io'; + +import 'package:open_file/open_file.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:pdf/widgets.dart'; + +class HelperPdfService { + static Future saveDocument({ + required String name, + required Document pdf, + }) async { + try { + log("Starting PDF save process for: $name"); + log("PDF document object: $pdf"); + + final bytes = await pdf.save(); + log("PDF bytes generated successfully, size: ${bytes.length} bytes"); + + if (bytes.isEmpty) { + log("WARNING: PDF bytes are empty!"); + return Future.error("PDF bytes are empty"); + } + + final dir = await getApplicationDocumentsDirectory(); + log("Documents directory: ${dir.path}"); + + final file = File('${dir.path}/$name'); + log("Saving PDF to: ${file.path}"); + + await file.writeAsBytes(bytes); + log("PDF saved successfully to: ${file.path}"); + + // Verify file was created + if (await file.exists()) { + final fileSize = await file.length(); + log("File exists and size is: $fileSize bytes"); + } else { + log("ERROR: File was not created!"); + return Future.error("File was not created"); + } + + return file; + } catch (e) { + log("Failed to save document: $e"); + log("Error stack trace: ${StackTrace.current}"); + return Future.error("Failed to save document: $e"); + } + } + + static Future openFile(File file) async { + try { + final url = file.path; + log("Attempting to open file: $url"); + + if (!await file.exists()) { + log("ERROR: File does not exist: $url"); + return; + } + + final fileSize = await file.length(); + log("File exists and size is: $fileSize bytes"); + + log("Calling OpenFile.open..."); + final result = await OpenFile.open(url, type: "application/pdf"); + log("OpenFile result: $result"); + + if (result.type == ResultType.done) { + log("File opened successfully"); + } else { + log("File opening failed with result: ${result.type}"); + log("Error message: ${result.message}"); + } + } catch (e) { + log("Failed to open file: $e"); + log("Error stack trace: ${StackTrace.current}"); + } + } +} diff --git a/lib/common/utils/permission.dart b/lib/common/utils/permission.dart new file mode 100644 index 0000000..b2cb177 --- /dev/null +++ b/lib/common/utils/permission.dart @@ -0,0 +1,72 @@ +import 'dart:developer'; + +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:permission_handler/permission_handler.dart'; + +class PermessionHelper { + Future checkPermission() async { + final deviceInfo = await DeviceInfoPlugin().androidInfo; + bool permissionStatus; + if (deviceInfo.version.sdkInt > 32) { + permissionStatus = await Permission.photos.request().isGranted; + } else { + permissionStatus = await Permission.storage.request().isGranted; + } + + if (permissionStatus) { + log('Izin penyimpanan sudah diberikan.'); + } else { + if (deviceInfo.version.sdkInt > 32) { + log('deviceInfo.version.sdkInt > 32.'); + permissionStatus = await Permission.photos.request().isGranted; + } else { + permissionStatus = await Permission.storage.request().isGranted; + } + // } else { + // openAppSettings(); + // } + } + log('permissionStatus: $permissionStatus'); + return permissionStatus; + } + + void permessionPrinter() async { + Map statuses = await [ + Permission.bluetooth, + Permission.bluetoothScan, + Permission.bluetoothAdvertise, + Permission.bluetoothConnect, + ].request(); + + log("statuses: $statuses"); + } +} + + // try { + // final status = + // await PermessionHelper().checkPermission(); + // if (status) { + // final pdfFile = await InventoryReport.previewPdf( + // searchDateFormatted: widget.searchDateFormatted, + // inventory: widget.inventory, + // ); + // log("pdfFile: $pdfFile"); + // await HelperPdfService.openFile(pdfFile); + // } else { + // ScaffoldMessenger.of(context).showSnackBar( + // const SnackBar( + // content: Text( + // 'Storage permission is required to save PDF'), + // backgroundColor: Colors.red, + // ), + // ); + // } + // } catch (e) { + // log("Error generating PDF: $e"); + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // content: Text('Failed to generate PDF: $e'), + // backgroundColor: Colors.red, + // ), + // ); + // } \ No newline at end of file diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 8323e4b..50ea38f 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -41,6 +41,8 @@ import 'package:apskel_owner_flutter/application/outlet/current_outlet_loader/cu as _i337; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; +import 'package:apskel_owner_flutter/application/report/inventory_report/inventory_report_bloc.dart' + as _i346; import 'package:apskel_owner_flutter/application/user/change_password_form/change_password_form_bloc.dart' as _i1030; import 'package:apskel_owner_flutter/application/user/user_edit_form/user_edit_form_bloc.dart' @@ -263,6 +265,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1030.ChangePasswordFormBloc>( () => _i1030.ChangePasswordFormBloc(gh<_i635.IUserRepository>()), ); + gh.factory<_i346.InventoryReportBloc>( + () => _i346.InventoryReportBloc( + gh<_i477.IAnalyticRepository>(), + gh<_i197.IOutletRepository>(), + ), + ); return this; } } diff --git a/lib/presentation/components/report/inventory_report.dart b/lib/presentation/components/report/inventory_report.dart new file mode 100644 index 0000000..3ad5771 --- /dev/null +++ b/lib/presentation/components/report/inventory_report.dart @@ -0,0 +1,547 @@ +import 'dart:io'; +import 'package:flutter/services.dart'; +import 'package:pdf/pdf.dart'; +import 'package:pdf/widgets.dart' as pw; + +import '../../../common/utils/pdf_service.dart'; +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/outlet/outlet.dart'; + +class InventoryReport { + static final primaryColor = PdfColor.fromHex("36175e"); + + static Future previewPdf({ + required String searchDateFormatted, + required InventoryAnalytic inventory, + required Outlet outlet, + }) async { + final pdf = pw.Document(); + final ByteData dataImage = await rootBundle.load('assets/images/logo.png'); + final Uint8List bytes = dataImage.buffer.asUint8List(); + + final image = pw.MemoryImage(bytes); + pdf.addPage( + pw.MultiPage( + pageFormat: PdfPageFormat.a4, + margin: pw.EdgeInsets.zero, + build: (pw.Context context) { + return [ + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Row( + mainAxisAlignment: pw.MainAxisAlignment.spaceBetween, + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + // Bagian kiri - Logo dan Info Perusahaan + pw.Row( + crossAxisAlignment: pw.CrossAxisAlignment.center, + children: [ + // Icon/Logo placeholder (bisa diganti dengan gambar logo) + pw.Container( + width: 40, + height: 40, + child: pw.Image(image), + ), + pw.SizedBox(width: 15), + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + pw.Text( + 'Apskel', + style: pw.TextStyle( + fontSize: 28, + fontWeight: pw.FontWeight.bold, + color: primaryColor, + ), + ), + pw.SizedBox(height: 4), + pw.Text( + outlet.name, + style: pw.TextStyle( + fontSize: 16, + color: PdfColors.grey700, + ), + ), + pw.SizedBox(height: 2), + pw.Text( + outlet.address, + style: pw.TextStyle( + fontSize: 12, + color: PdfColors.grey600, + ), + ), + ], + ), + ], + ), + // Bagian kanan - Info Laporan + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.end, + children: [ + pw.Text( + 'Laporan Transaksi', + style: pw.TextStyle( + fontSize: 24, + fontWeight: pw.FontWeight.bold, + color: PdfColors.grey800, + ), + ), + pw.SizedBox(height: 8), + pw.Text( + searchDateFormatted, + style: pw.TextStyle( + fontSize: 14, + color: PdfColors.grey600, + ), + ), + pw.SizedBox(height: 4), + pw.Text( + 'Laporan', + style: pw.TextStyle( + fontSize: 12, + color: PdfColors.grey500, + ), + ), + ], + ), + ], + ), + ), + pw.Container( + width: double.infinity, + height: 3, + color: primaryColor, + ), + + // Summary + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSectionWidget('1. Ringkasan'), + pw.SizedBox(height: 30), + pw.Row( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + pw.Expanded( + flex: 1, + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSummaryItem( + 'Total Item', + (inventory.summary.totalProducts).toString(), + ), + _buildSummaryItem( + 'Total Item Masuk', + (inventory.products.fold( + 0, + (sum, item) => sum + (item.totalIn), + )).toString(), + ), + _buildSummaryItem( + 'Total Item Keluar', + (inventory.products.fold( + 0, + (sum, item) => sum + (item.totalOut), + )).toString(), + ), + ], + ), + ), + pw.SizedBox(width: 20), + pw.Expanded( + flex: 1, + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSummaryItem( + 'Total Ingredient', + (inventory.summary.totalIngredients).toString(), + ), + _buildSummaryItem( + 'Total Ingredient Masuk', + (inventory.ingredients.fold( + 0, + (sum, item) => sum + (item.totalIn), + )).toString(), + ), + _buildSummaryItem( + 'Total Ingredient Keluar', + (inventory.ingredients.fold( + 0, + (sum, item) => sum + (item.totalOut), + )).toString(), + ), + ], + ), + ), + ], + ), + ], + ), + ), + + // Summary Item + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Column( + children: [ + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSectionWidget('2. Item'), + pw.SizedBox(height: 30), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + topLeft: pw.Radius.circular(8), + topRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(2), // Kategori + 2: pw.FlexColumnWidth(1), // Stock + 3: pw.FlexColumnWidth(2), // Masuk + 4: pw.FlexColumnWidth(2), // Keluar + }, + children: [ + pw.TableRow( + children: [ + _buildHeaderCell('Nama'), + _buildHeaderCell('Kategori'), + _buildHeaderCell('Stock'), + _buildHeaderCell('Masuk'), + _buildHeaderCell('Keluar'), + ], + ), + ], + ), + ), + pw.Container( + decoration: pw.BoxDecoration(color: PdfColors.white), + child: pw.Table( + columnWidths: { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(2), // Kategori + 2: pw.FlexColumnWidth(1), // Stock + 3: pw.FlexColumnWidth(2), // Masuk + 4: pw.FlexColumnWidth(2), // Keluar + }, + children: inventory.products + .map( + (item) => _buildProductDataRow( + item, + inventory.products.indexOf(item) % 2 == 0, + ), + ) + .toList(), + ), + ), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + bottomLeft: pw.Radius.circular(8), + bottomRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(2), // Kategori + 2: pw.FlexColumnWidth(1), // Stock + 3: pw.FlexColumnWidth(2), // Masuk + 4: pw.FlexColumnWidth(2), // Keluar + }, + children: [ + pw.TableRow( + children: [ + _buildTotalCell('TOTAL'), + _buildTotalCell(''), + _buildTotalCell( + (inventory.products.fold( + 0, + (sum, item) => sum + (item.quantity), + )).toString(), + ), + _buildTotalCell( + (inventory.products.fold( + 0, + (sum, item) => sum + (item.totalIn), + )).toString(), + ), + _buildTotalCell( + (inventory.products.fold( + 0, + (sum, item) => sum + (item.totalOut), + )).toString(), + ), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + + // Summary Ingredient + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Column( + children: [ + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSectionWidget('3. Ingredient'), + pw.SizedBox(height: 30), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + topLeft: pw.Radius.circular(8), + topRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Name + 1: pw.FlexColumnWidth(1), // Stock + 2: pw.FlexColumnWidth(2), // Masuk + 3: pw.FlexColumnWidth(2), // Keluar + }, + children: [ + pw.TableRow( + children: [ + _buildHeaderCell('Nama'), + _buildHeaderCell('Stock'), + _buildHeaderCell('Masuk'), + _buildHeaderCell('Keluar'), + ], + ), + ], + ), + ), + pw.Container( + decoration: pw.BoxDecoration(color: PdfColors.white), + child: pw.Table( + columnWidths: { + 0: pw.FlexColumnWidth(2.5), // Name + 1: pw.FlexColumnWidth(1), // Stock + 2: pw.FlexColumnWidth(2), // Masuk + 3: pw.FlexColumnWidth(2), // Keluar + }, + children: inventory.ingredients + .map( + (item) => _buildIngredientsDataRow( + item, + inventory.ingredients.indexOf(item) % 2 == 0, + ), + ) + .toList(), + ), + ), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + bottomLeft: pw.Radius.circular(8), + bottomRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Name + 1: pw.FlexColumnWidth(1), // Stock + 2: pw.FlexColumnWidth(2), // Masuk + 3: pw.FlexColumnWidth(2), // Keluar + }, + children: [ + pw.TableRow( + children: [ + _buildTotalCell('TOTAL'), + _buildTotalCell( + (inventory.ingredients.fold( + 0, + (sum, item) => sum + (item.quantity), + )).toString(), + ), + _buildTotalCell( + (inventory.ingredients.fold( + 0, + (sum, item) => sum + (item.totalIn), + )).toString(), + ), + _buildTotalCell( + (inventory.ingredients.fold( + 0, + (sum, item) => sum + (item.totalOut), + )).toString(), + ), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + ]; + }, + ), + ); + + return HelperPdfService.saveDocument( + name: + 'Apskel POS | Inventory Report | ${DateTime.now().millisecondsSinceEpoch}.pdf', + pdf: pdf, + ); + } + + static pw.Widget _buildSectionWidget(String title) { + return pw.Text( + title, + style: pw.TextStyle( + fontSize: 20, + fontWeight: pw.FontWeight.bold, + color: primaryColor, + ), + ); + } + + static pw.Widget _buildSummaryItem( + String label, + String value, { + pw.TextStyle? valueStyle, + pw.TextStyle? labelStyle, + }) { + return pw.Container( + padding: pw.EdgeInsets.only(bottom: 8), + margin: pw.EdgeInsets.only(bottom: 16), + decoration: pw.BoxDecoration( + border: pw.Border(bottom: pw.BorderSide(color: PdfColors.grey300)), + ), + child: pw.Row( + mainAxisAlignment: pw.MainAxisAlignment.spaceBetween, + children: [ + pw.Text(label, style: labelStyle), + pw.Text( + value, + style: valueStyle ?? pw.TextStyle(fontWeight: pw.FontWeight.bold), + ), + ], + ), + ); + } + + static pw.Widget _buildHeaderCell(String text) { + return pw.Container( + padding: pw.EdgeInsets.symmetric(horizontal: 12, vertical: 16), + child: pw.Text( + text, + style: pw.TextStyle( + color: PdfColors.white, + fontWeight: pw.FontWeight.bold, + fontSize: 12, + ), + textAlign: pw.TextAlign.center, + ), + ); + } + + static pw.Widget _buildDataCell( + String text, { + pw.Alignment alignment = pw.Alignment.center, + PdfColor? textColor, + }) { + return pw.Container( + padding: pw.EdgeInsets.symmetric(horizontal: 12, vertical: 16), + alignment: alignment, + child: pw.Text( + text, + style: pw.TextStyle( + fontSize: 12, + color: textColor ?? PdfColors.black, + fontWeight: pw.FontWeight.normal, + ), + textAlign: alignment == pw.Alignment.centerLeft + ? pw.TextAlign.left + : pw.TextAlign.center, + ), + ); + } + + static pw.Widget _buildTotalCell(String text) { + return pw.Container( + padding: pw.EdgeInsets.symmetric(horizontal: 12, vertical: 16), + child: pw.Text( + text, + style: pw.TextStyle( + color: PdfColors.white, + fontWeight: pw.FontWeight.bold, + fontSize: 12, + ), + textAlign: pw.TextAlign.center, + ), + ); + } + + static pw.TableRow _buildProductDataRow( + InventoryProduct product, + bool isEven, + ) { + return pw.TableRow( + decoration: pw.BoxDecoration( + color: product.isZeroStock + ? PdfColors.red100 + : product.isLowStock + ? PdfColors.yellow100 + : isEven + ? PdfColors.grey50 + : PdfColors.white, + ), + children: [ + _buildDataCell(product.productName, alignment: pw.Alignment.centerLeft), + _buildDataCell( + product.categoryName, + alignment: pw.Alignment.centerLeft, + ), + _buildDataCell(product.quantity.toString()), + _buildDataCell(product.totalIn.toString()), + _buildDataCell(product.totalOut.toString()), + ], + ); + } + + static pw.TableRow _buildIngredientsDataRow( + InventoryIngredient item, + bool isEven, + ) { + return pw.TableRow( + decoration: pw.BoxDecoration( + color: item.isZeroStock + ? PdfColors.red100 + : item.isLowStock + ? PdfColors.yellow100 + : isEven + ? PdfColors.grey50 + : PdfColors.white, + ), + children: [ + _buildDataCell(item.ingredientName, alignment: pw.Alignment.centerLeft), + _buildDataCell(item.quantity.toString()), + _buildDataCell(item.totalIn.toString()), + _buildDataCell(item.totalOut.toString()), + ], + ); + } +} diff --git a/lib/presentation/pages/download/download_report_page.dart b/lib/presentation/pages/download/download_report_page.dart index 08c8511..ee111dc 100644 --- a/lib/presentation/pages/download/download_report_page.dart +++ b/lib/presentation/pages/download/download_report_page.dart @@ -1,16 +1,34 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:auto_route/auto_route.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; +import '../../../application/report/inventory_report/inventory_report_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; +import '../../../common/utils/pdf_service.dart'; +import '../../../common/utils/permission.dart'; +import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/field/date_range_picker_field.dart'; +import '../../components/report/inventory_report.dart'; +import '../../components/toast/flushbar.dart'; @RoutePage() -class DownloadReportPage extends StatefulWidget { +class DownloadReportPage extends StatefulWidget implements AutoRouteWrapper { const DownloadReportPage({super.key}); @override State createState() => _DownloadReportPageState(); + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => + getIt()..add(InventoryReportEvent.fetchedOutlet()), + child: this, + ); } class _DownloadReportPageState extends State @@ -26,10 +44,10 @@ class _DownloadReportPageState extends State DateTime? _transactionEndDate; DateTime? _inventoryStartDate; DateTime? _inventoryEndDate; - DateTime? _salesStartDate; - DateTime? _salesEndDate; - DateTime? _customerStartDate; - DateTime? _customerEndDate; + // DateTime? _salesStartDate; + // DateTime? _salesEndDate; + // DateTime? _customerStartDate; + // DateTime? _customerEndDate; @override void initState() { @@ -76,28 +94,9 @@ class _DownloadReportPageState extends State DateTime? endDate, ) { if (startDate == null || endDate == null) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('Please select both start and end dates'), - backgroundColor: AppColor.error, - ), - ); + AppFlushbar.showError(context, 'Please select both start and end dates'); return; } - - // Implement download logic here - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - 'Downloading $reportType from ${_formatDate(startDate)} to ${_formatDate(endDate)}', - ), - backgroundColor: AppColor.success, - ), - ); - } - - String _formatDate(DateTime date) { - return '${date.day}/${date.month}/${date.year}'; } @override @@ -139,6 +138,7 @@ class _DownloadReportPageState extends State ], startDate: _transactionStartDate, endDate: _transactionEndDate, + isLoading: false, onDateRangeChanged: (start, end) { setState(() { _transactionStartDate = start; @@ -156,79 +156,115 @@ class _DownloadReportPageState extends State const SizedBox(height: 20), // Inventory Report Card - _ReportOptionCard( - title: 'Inventory Report', - subtitle: - 'Export inventory and stock data with trends', - icon: Icons.inventory_2_outlined, - gradient: const [ - AppColor.secondary, - AppColor.secondaryLight, - ], - startDate: _inventoryStartDate, - endDate: _inventoryEndDate, - onDateRangeChanged: (start, end) { - setState(() { - _inventoryStartDate = start; - _inventoryEndDate = end; - }); + BlocBuilder( + builder: (context, state) { + return _ReportOptionCard( + title: 'Inventory Report', + subtitle: + 'Export inventory and stock data with trends', + icon: Icons.inventory_2_outlined, + gradient: const [ + AppColor.secondary, + AppColor.secondaryLight, + ], + startDate: _inventoryStartDate, + endDate: _inventoryEndDate, + isLoading: state.isFetching, + onDateRangeChanged: (start, end) { + setState(() { + _inventoryStartDate = start; + _inventoryEndDate = end; + }); + if (start != null || end != null) { + context.read().add( + InventoryReportEvent.fetchedInventory( + start!, + end!, + ), + ); + } + }, + onDownload: () async { + try { + final status = await PermessionHelper() + .checkPermission(); + if (status) { + final pdfFile = + await InventoryReport.previewPdf( + searchDateFormatted: + "${_inventoryStartDate?.toServerDate} - ${_inventoryEndDate?.toServerDate}", + inventory: state.inventoryAnalytic, + outlet: state.outlet, + ); + log("pdfFile: $pdfFile"); + await HelperPdfService.openFile(pdfFile); + } else { + AppFlushbar.showError( + context, + 'Storage permission is required to save PDF', + ); + } + } catch (e) { + log("Error generating PDF: $e"); + AppFlushbar.showError( + context, + 'Failed to generate PDF: $e', + ); + } + }, + delay: 400, + ); }, - onDownload: () => _downloadReport( - 'Inventory Report', - _inventoryStartDate, - _inventoryEndDate, - ), - delay: 400, ), const SizedBox(height: 20), // Sales Report Card - _ReportOptionCard( - title: 'Sales Report', - subtitle: 'Export sales performance and revenue data', - icon: Icons.trending_up_outlined, - gradient: const [AppColor.info, Color(0xFF64B5F6)], - startDate: _salesStartDate, - endDate: _salesEndDate, - onDateRangeChanged: (start, end) { - setState(() { - _salesStartDate = start; - _salesEndDate = end; - }); - }, - onDownload: () => _downloadReport( - 'Sales Report', - _salesStartDate, - _salesEndDate, - ), - delay: 600, - ), + // _ReportOptionCard( + // title: 'Sales Report', + // subtitle: 'Export sales performance and revenue data', + // icon: Icons.trending_up_outlined, + // gradient: const [AppColor.info, Color(0xFF64B5F6)], + // startDate: _salesStartDate, + // endDate: _salesEndDate, + // onDateRangeChanged: (start, end) { + // setState(() { + // _salesStartDate = start; + // _salesEndDate = end; + // }); + // }, + // onDownload: () => _downloadReport( + // 'Sales Report', + // _salesStartDate, + // _salesEndDate, + // ), + // delay: 600, + // ), - const SizedBox(height: 20), + // const SizedBox(height: 20), - // Customer Report Card - _ReportOptionCard( - title: 'Customer Report', - subtitle: - 'Export customer data and behavior analytics', - icon: Icons.people_outline, - gradient: const [AppColor.warning, Color(0xFFFFB74D)], - startDate: _customerStartDate, - endDate: _customerEndDate, - onDateRangeChanged: (start, end) { - setState(() { - _customerStartDate = start; - _customerEndDate = end; - }); - }, - onDownload: () => _downloadReport( - 'Customer Report', - _customerStartDate, - _customerEndDate, - ), - delay: 800, - ), + // // Customer Report Card + // _ReportOptionCard( + // title: 'Customer Report', + // subtitle: + // 'Export customer data and behavior analytics', + // icon: Icons.people_outline, + // gradient: const [AppColor.warning, Color(0xFFFFB74D)], + // startDate: _customerStartDate, + // endDate: _customerEndDate, + // onDateRangeChanged: (start, end) { + // setState(() { + // _customerStartDate = start; + // _customerEndDate = end; + // }); + // }, + // onDownload: () => _downloadReport( + // 'Customer Report', + // _customerStartDate, + // _customerEndDate, + // ), + // delay: 800, + // ), ], ), ), @@ -253,6 +289,7 @@ class _ReportOptionCard extends StatefulWidget { final DateTime? endDate; final Function(DateTime? startDate, DateTime? endDate) onDateRangeChanged; final VoidCallback onDownload; + final bool isLoading; final int delay; const _ReportOptionCard({ @@ -265,6 +302,7 @@ class _ReportOptionCard extends StatefulWidget { required this.onDateRangeChanged, required this.onDownload, required this.delay, + required this.isLoading, }); @override @@ -431,23 +469,41 @@ class _ReportOptionCardState extends State<_ReportOptionCard> ), elevation: 0, ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.download_rounded, - color: widget.gradient.first, - ), - const SizedBox(width: 8), - Text( - 'Download Report', - style: AppStyle.md.copyWith( - color: widget.gradient.first, - fontWeight: FontWeight.bold, + child: widget.isLoading + ? Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SpinKitCircle( + color: widget.gradient.first, + size: 24, + ), + const SizedBox(width: 8), + Text( + 'Loading', + style: AppStyle.md.copyWith( + color: widget.gradient.first, + fontWeight: FontWeight.bold, + ), + ), + ], + ) + : Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.download_rounded, + color: widget.gradient.first, + ), + const SizedBox(width: 8), + Text( + 'Download Report', + style: AppStyle.md.copyWith( + color: widget.gradient.first, + fontWeight: FontWeight.bold, + ), + ), + ], ), - ), - ], - ), ), ), ], diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 7299b5c..86be7eb 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,12 +7,16 @@ #include "generated_plugin_registrant.h" #include +#include #include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) open_file_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "OpenFileLinuxPlugin"); + open_file_linux_plugin_register_with_registrar(open_file_linux_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 786ff5c..c842924 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_linux + open_file_linux url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index ca4c2ff..00f5060 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,6 +8,7 @@ import Foundation import connectivity_plus import device_info_plus import file_selector_macos +import open_file_mac import package_info_plus import path_provider_foundation import shared_preferences_foundation @@ -18,6 +19,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + OpenFilePlugin.register(with: registry.registrar(forPlugin: "OpenFilePlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/pubspec.lock b/pubspec.lock index a1d564d..daee97a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -81,6 +81,22 @@ packages: url: "https://pub.dev" source: hosted version: "8.0.4" + barcode: + dependency: transitive + description: + name: barcode + sha256: "7b6729c37e3b7f34233e2318d866e8c48ddb46c1f7ad01ff7bb2a8de1da2b9f4" + url: "https://pub.dev" + source: hosted + version: "2.2.9" + bidi: + dependency: transitive + description: + name: bidi + sha256: "77f475165e94b261745cf1032c751e2032b8ed92ccb2bf5716036db79320637d" + url: "https://pub.dev" + source: hosted + version: "2.0.13" bloc: dependency: transitive description: @@ -869,6 +885,70 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + open_file: + dependency: "direct main" + description: + name: open_file + sha256: d17e2bddf5b278cb2ae18393d0496aa4f162142ba97d1a9e0c30d476adf99c0e + url: "https://pub.dev" + source: hosted + version: "3.5.10" + open_file_android: + dependency: transitive + description: + name: open_file_android + sha256: "58141fcaece2f453a9684509a7275f231ac0e3d6ceb9a5e6de310a7dff9084aa" + url: "https://pub.dev" + source: hosted + version: "1.0.6" + open_file_ios: + dependency: transitive + description: + name: open_file_ios + sha256: "02996f01e5f6863832068e97f8f3a5ef9b613516db6897f373b43b79849e4d07" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + open_file_linux: + dependency: transitive + description: + name: open_file_linux + sha256: d189f799eecbb139c97f8bc7d303f9e720954fa4e0fa1b0b7294767e5f2d7550 + url: "https://pub.dev" + source: hosted + version: "0.0.5" + open_file_mac: + dependency: transitive + description: + name: open_file_mac + sha256: "1440b1e37ceb0642208cfeb2c659c6cda27b25187a90635c9d1acb7d0584d324" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + open_file_platform_interface: + dependency: transitive + description: + name: open_file_platform_interface + sha256: "101b424ca359632699a7e1213e83d025722ab668b9fd1412338221bf9b0e5757" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + open_file_web: + dependency: transitive + description: + name: open_file_web + sha256: e3dbc9584856283dcb30aef5720558b90f88036360bd078e494ab80a80130c4f + url: "https://pub.dev" + source: hosted + version: "0.0.4" + open_file_windows: + dependency: transitive + description: + name: open_file_windows + sha256: d26c31ddf935a94a1a3aa43a23f4fff8a5ff4eea395fe7a8cb819cf55431c875 + url: "https://pub.dev" + source: hosted + version: "0.0.3" package_config: dependency: transitive description: @@ -957,6 +1037,62 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + pdf: + dependency: "direct main" + description: + name: pdf + sha256: "28eacad99bffcce2e05bba24e50153890ad0255294f4dd78a17075a2ba5c8416" + url: "https://pub.dev" + source: hosted + version: "3.11.3" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" petitparser: dependency: transitive description: @@ -1021,6 +1157,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.0" + qr: + dependency: transitive + description: + name: qr + sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445" + url: "https://pub.dev" + source: hosted + version: "3.0.2" recase: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 81c3a61..3bf55bd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -45,6 +45,9 @@ dependencies: syncfusion_flutter_datepicker: ^30.2.5 url_launcher: ^6.3.2 device_info_plus: ^11.5.0 + pdf: ^3.11.3 + open_file: ^3.5.10 + permission_handler: ^12.0.1 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 384ea41..dbf8289 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { @@ -15,6 +16,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + PermissionHandlerWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 199b881..c22844a 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST connectivity_plus file_selector_windows + permission_handler_windows url_launcher_windows ) From f07d07b3a8be272a0650de90a9200110a4623653 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 19 Aug 2025 17:39:00 +0700 Subject: [PATCH 088/108] feat: transaction report --- .../transaction_report_bloc.dart | 91 ++ .../transaction_report_bloc.freezed.dart | 752 ++++++++++++++ .../transaction_report_event.dart | 10 + .../transaction_report_state.dart | 26 + lib/injection.config.dart | 8 + .../components/report/transaction_report.dart | 956 ++++++++++++++++++ .../pages/download/download_report_page.dart | 120 ++- lib/presentation/router/app_router.gr.dart | 2 +- 8 files changed, 1927 insertions(+), 38 deletions(-) create mode 100644 lib/application/report/transaction_report/transaction_report_bloc.dart create mode 100644 lib/application/report/transaction_report/transaction_report_bloc.freezed.dart create mode 100644 lib/application/report/transaction_report/transaction_report_event.dart create mode 100644 lib/application/report/transaction_report/transaction_report_state.dart create mode 100644 lib/presentation/components/report/transaction_report.dart diff --git a/lib/application/report/transaction_report/transaction_report_bloc.dart b/lib/application/report/transaction_report/transaction_report_bloc.dart new file mode 100644 index 0000000..b7b85d0 --- /dev/null +++ b/lib/application/report/transaction_report/transaction_report_bloc.dart @@ -0,0 +1,91 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/analytic/repositories/i_analytic_repository.dart'; +import '../../../domain/outlet/outlet.dart'; + +part 'transaction_report_event.dart'; +part 'transaction_report_state.dart'; +part 'transaction_report_bloc.freezed.dart'; + +@injectable +class TransactionReportBloc + extends Bloc { + final IAnalyticRepository _analyticRepository; + final IOutletRepository _outletRepository; + + TransactionReportBloc(this._analyticRepository, this._outletRepository) + : super(TransactionReportState.initial()) { + on(_onTransactionReportEvent); + } + + Future _onTransactionReportEvent( + TransactionReportEvent event, + Emitter emit, + ) { + return event.map( + fetchedOutlet: (e) async { + emit( + state.copyWith(isFetchingOutlet: true, failureOptionOutlet: none()), + ); + + final result = await _outletRepository.currentOutlet(); + + var data = result.fold( + (f) => state.copyWith(failureOptionOutlet: optionOf(f)), + (currentOutlet) => state.copyWith(outlet: currentOutlet), + ); + + emit(data.copyWith(isFetchingOutlet: false)); + }, + fetchedTransaction: (e) async { + emit(state.copyWith(isFetching: true, failureOptionAnalytic: none())); + + var newState = state; + + final category = await _analyticRepository.getCategory( + dateFrom: e.dateFrom, + dateTo: e.dateTo, + ); + final profitLoss = await _analyticRepository.getProfitLoss( + dateFrom: e.dateFrom, + dateTo: e.dateTo, + ); + final paymentMethod = await _analyticRepository.getPaymentMethod( + dateFrom: e.dateFrom, + dateTo: e.dateTo, + ); + final product = await _analyticRepository.getProduct( + dateFrom: e.dateFrom, + dateTo: e.dateTo, + ); + + newState = category.fold( + (f) => newState.copyWith(failureOptionAnalytic: optionOf(f)), + (categoryAnalytic) => + newState.copyWith(categoryAnalytic: categoryAnalytic), + ); + newState = profitLoss.fold( + (f) => newState.copyWith(failureOptionAnalytic: optionOf(f)), + (profitLossAnalytic) => + newState.copyWith(profitLossAnalytic: profitLossAnalytic), + ); + newState = paymentMethod.fold( + (f) => newState.copyWith(failureOptionAnalytic: optionOf(f)), + (paymentMethodAnalytic) => + newState.copyWith(paymentMethodAnalytic: paymentMethodAnalytic), + ); + newState = product.fold( + (f) => newState.copyWith(failureOptionAnalytic: optionOf(f)), + (productAnalytic) => + newState.copyWith(productAnalytic: productAnalytic), + ); + + emit(newState.copyWith(isFetching: false)); + }, + ); + } +} diff --git a/lib/application/report/transaction_report/transaction_report_bloc.freezed.dart b/lib/application/report/transaction_report/transaction_report_bloc.freezed.dart new file mode 100644 index 0000000..b60a09b --- /dev/null +++ b/lib/application/report/transaction_report/transaction_report_bloc.freezed.dart @@ -0,0 +1,752 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'transaction_report_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$TransactionReportEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedOutlet, + required TResult Function(DateTime dateFrom, DateTime dateTo) + fetchedTransaction, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedOutlet, + TResult? Function(DateTime dateFrom, DateTime dateTo)? fetchedTransaction, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedOutlet, + TResult Function(DateTime dateFrom, DateTime dateTo)? fetchedTransaction, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedOutlet value) fetchedOutlet, + required TResult Function(_FetchedTransaction value) fetchedTransaction, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedOutlet value)? fetchedOutlet, + TResult? Function(_FetchedTransaction value)? fetchedTransaction, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedOutlet value)? fetchedOutlet, + TResult Function(_FetchedTransaction value)? fetchedTransaction, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $TransactionReportEventCopyWith<$Res> { + factory $TransactionReportEventCopyWith( + TransactionReportEvent value, + $Res Function(TransactionReportEvent) then, + ) = _$TransactionReportEventCopyWithImpl<$Res, TransactionReportEvent>; +} + +/// @nodoc +class _$TransactionReportEventCopyWithImpl< + $Res, + $Val extends TransactionReportEvent +> + implements $TransactionReportEventCopyWith<$Res> { + _$TransactionReportEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of TransactionReportEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$FetchedOutletImplCopyWith<$Res> { + factory _$$FetchedOutletImplCopyWith( + _$FetchedOutletImpl value, + $Res Function(_$FetchedOutletImpl) then, + ) = __$$FetchedOutletImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$FetchedOutletImplCopyWithImpl<$Res> + extends _$TransactionReportEventCopyWithImpl<$Res, _$FetchedOutletImpl> + implements _$$FetchedOutletImplCopyWith<$Res> { + __$$FetchedOutletImplCopyWithImpl( + _$FetchedOutletImpl _value, + $Res Function(_$FetchedOutletImpl) _then, + ) : super(_value, _then); + + /// Create a copy of TransactionReportEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$FetchedOutletImpl implements _FetchedOutlet { + const _$FetchedOutletImpl(); + + @override + String toString() { + return 'TransactionReportEvent.fetchedOutlet()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$FetchedOutletImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedOutlet, + required TResult Function(DateTime dateFrom, DateTime dateTo) + fetchedTransaction, + }) { + return fetchedOutlet(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedOutlet, + TResult? Function(DateTime dateFrom, DateTime dateTo)? fetchedTransaction, + }) { + return fetchedOutlet?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedOutlet, + TResult Function(DateTime dateFrom, DateTime dateTo)? fetchedTransaction, + required TResult orElse(), + }) { + if (fetchedOutlet != null) { + return fetchedOutlet(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedOutlet value) fetchedOutlet, + required TResult Function(_FetchedTransaction value) fetchedTransaction, + }) { + return fetchedOutlet(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedOutlet value)? fetchedOutlet, + TResult? Function(_FetchedTransaction value)? fetchedTransaction, + }) { + return fetchedOutlet?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedOutlet value)? fetchedOutlet, + TResult Function(_FetchedTransaction value)? fetchedTransaction, + required TResult orElse(), + }) { + if (fetchedOutlet != null) { + return fetchedOutlet(this); + } + return orElse(); + } +} + +abstract class _FetchedOutlet implements TransactionReportEvent { + const factory _FetchedOutlet() = _$FetchedOutletImpl; +} + +/// @nodoc +abstract class _$$FetchedTransactionImplCopyWith<$Res> { + factory _$$FetchedTransactionImplCopyWith( + _$FetchedTransactionImpl value, + $Res Function(_$FetchedTransactionImpl) then, + ) = __$$FetchedTransactionImplCopyWithImpl<$Res>; + @useResult + $Res call({DateTime dateFrom, DateTime dateTo}); +} + +/// @nodoc +class __$$FetchedTransactionImplCopyWithImpl<$Res> + extends _$TransactionReportEventCopyWithImpl<$Res, _$FetchedTransactionImpl> + implements _$$FetchedTransactionImplCopyWith<$Res> { + __$$FetchedTransactionImplCopyWithImpl( + _$FetchedTransactionImpl _value, + $Res Function(_$FetchedTransactionImpl) _then, + ) : super(_value, _then); + + /// Create a copy of TransactionReportEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? dateFrom = null, Object? dateTo = null}) { + return _then( + _$FetchedTransactionImpl( + null == dateFrom + ? _value.dateFrom + : dateFrom // ignore: cast_nullable_to_non_nullable + as DateTime, + null == dateTo + ? _value.dateTo + : dateTo // ignore: cast_nullable_to_non_nullable + as DateTime, + ), + ); + } +} + +/// @nodoc + +class _$FetchedTransactionImpl implements _FetchedTransaction { + const _$FetchedTransactionImpl(this.dateFrom, this.dateTo); + + @override + final DateTime dateFrom; + @override + final DateTime dateTo; + + @override + String toString() { + return 'TransactionReportEvent.fetchedTransaction(dateFrom: $dateFrom, dateTo: $dateTo)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$FetchedTransactionImpl && + (identical(other.dateFrom, dateFrom) || + other.dateFrom == dateFrom) && + (identical(other.dateTo, dateTo) || other.dateTo == dateTo)); + } + + @override + int get hashCode => Object.hash(runtimeType, dateFrom, dateTo); + + /// Create a copy of TransactionReportEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$FetchedTransactionImplCopyWith<_$FetchedTransactionImpl> get copyWith => + __$$FetchedTransactionImplCopyWithImpl<_$FetchedTransactionImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() fetchedOutlet, + required TResult Function(DateTime dateFrom, DateTime dateTo) + fetchedTransaction, + }) { + return fetchedTransaction(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? fetchedOutlet, + TResult? Function(DateTime dateFrom, DateTime dateTo)? fetchedTransaction, + }) { + return fetchedTransaction?.call(dateFrom, dateTo); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? fetchedOutlet, + TResult Function(DateTime dateFrom, DateTime dateTo)? fetchedTransaction, + required TResult orElse(), + }) { + if (fetchedTransaction != null) { + return fetchedTransaction(dateFrom, dateTo); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_FetchedOutlet value) fetchedOutlet, + required TResult Function(_FetchedTransaction value) fetchedTransaction, + }) { + return fetchedTransaction(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_FetchedOutlet value)? fetchedOutlet, + TResult? Function(_FetchedTransaction value)? fetchedTransaction, + }) { + return fetchedTransaction?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_FetchedOutlet value)? fetchedOutlet, + TResult Function(_FetchedTransaction value)? fetchedTransaction, + required TResult orElse(), + }) { + if (fetchedTransaction != null) { + return fetchedTransaction(this); + } + return orElse(); + } +} + +abstract class _FetchedTransaction implements TransactionReportEvent { + const factory _FetchedTransaction( + final DateTime dateFrom, + final DateTime dateTo, + ) = _$FetchedTransactionImpl; + + DateTime get dateFrom; + DateTime get dateTo; + + /// Create a copy of TransactionReportEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$FetchedTransactionImplCopyWith<_$FetchedTransactionImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$TransactionReportState { + CategoryAnalytic get categoryAnalytic => throw _privateConstructorUsedError; + ProfitLossAnalytic get profitLossAnalytic => + throw _privateConstructorUsedError; + PaymentMethodAnalytic get paymentMethodAnalytic => + throw _privateConstructorUsedError; + ProductAnalytic get productAnalytic => throw _privateConstructorUsedError; + Option get failureOptionAnalytic => + throw _privateConstructorUsedError; + Outlet get outlet => throw _privateConstructorUsedError; + Option get failureOptionOutlet => + throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + bool get isFetchingOutlet => throw _privateConstructorUsedError; + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $TransactionReportStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $TransactionReportStateCopyWith<$Res> { + factory $TransactionReportStateCopyWith( + TransactionReportState value, + $Res Function(TransactionReportState) then, + ) = _$TransactionReportStateCopyWithImpl<$Res, TransactionReportState>; + @useResult + $Res call({ + CategoryAnalytic categoryAnalytic, + ProfitLossAnalytic profitLossAnalytic, + PaymentMethodAnalytic paymentMethodAnalytic, + ProductAnalytic productAnalytic, + Option failureOptionAnalytic, + Outlet outlet, + Option failureOptionOutlet, + bool isFetching, + bool isFetchingOutlet, + }); + + $CategoryAnalyticCopyWith<$Res> get categoryAnalytic; + $ProfitLossAnalyticCopyWith<$Res> get profitLossAnalytic; + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic; + $ProductAnalyticCopyWith<$Res> get productAnalytic; + $OutletCopyWith<$Res> get outlet; +} + +/// @nodoc +class _$TransactionReportStateCopyWithImpl< + $Res, + $Val extends TransactionReportState +> + implements $TransactionReportStateCopyWith<$Res> { + _$TransactionReportStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryAnalytic = null, + Object? profitLossAnalytic = null, + Object? paymentMethodAnalytic = null, + Object? productAnalytic = null, + Object? failureOptionAnalytic = null, + Object? outlet = null, + Object? failureOptionOutlet = null, + Object? isFetching = null, + Object? isFetchingOutlet = null, + }) { + return _then( + _value.copyWith( + categoryAnalytic: null == categoryAnalytic + ? _value.categoryAnalytic + : categoryAnalytic // ignore: cast_nullable_to_non_nullable + as CategoryAnalytic, + profitLossAnalytic: null == profitLossAnalytic + ? _value.profitLossAnalytic + : profitLossAnalytic // ignore: cast_nullable_to_non_nullable + as ProfitLossAnalytic, + paymentMethodAnalytic: null == paymentMethodAnalytic + ? _value.paymentMethodAnalytic + : paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as PaymentMethodAnalytic, + productAnalytic: null == productAnalytic + ? _value.productAnalytic + : productAnalytic // ignore: cast_nullable_to_non_nullable + as ProductAnalytic, + failureOptionAnalytic: null == failureOptionAnalytic + ? _value.failureOptionAnalytic + : failureOptionAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + outlet: null == outlet + ? _value.outlet + : outlet // ignore: cast_nullable_to_non_nullable + as Outlet, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + isFetchingOutlet: null == isFetchingOutlet + ? _value.isFetchingOutlet + : isFetchingOutlet // ignore: cast_nullable_to_non_nullable + as bool, + ) + as $Val, + ); + } + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $CategoryAnalyticCopyWith<$Res> get categoryAnalytic { + return $CategoryAnalyticCopyWith<$Res>(_value.categoryAnalytic, (value) { + return _then(_value.copyWith(categoryAnalytic: value) as $Val); + }); + } + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ProfitLossAnalyticCopyWith<$Res> get profitLossAnalytic { + return $ProfitLossAnalyticCopyWith<$Res>(_value.profitLossAnalytic, ( + value, + ) { + return _then(_value.copyWith(profitLossAnalytic: value) as $Val); + }); + } + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic { + return $PaymentMethodAnalyticCopyWith<$Res>(_value.paymentMethodAnalytic, ( + value, + ) { + return _then(_value.copyWith(paymentMethodAnalytic: value) as $Val); + }); + } + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $ProductAnalyticCopyWith<$Res> get productAnalytic { + return $ProductAnalyticCopyWith<$Res>(_value.productAnalytic, (value) { + return _then(_value.copyWith(productAnalytic: value) as $Val); + }); + } + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $OutletCopyWith<$Res> get outlet { + return $OutletCopyWith<$Res>(_value.outlet, (value) { + return _then(_value.copyWith(outlet: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$TransactionReportStateImplCopyWith<$Res> + implements $TransactionReportStateCopyWith<$Res> { + factory _$$TransactionReportStateImplCopyWith( + _$TransactionReportStateImpl value, + $Res Function(_$TransactionReportStateImpl) then, + ) = __$$TransactionReportStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + CategoryAnalytic categoryAnalytic, + ProfitLossAnalytic profitLossAnalytic, + PaymentMethodAnalytic paymentMethodAnalytic, + ProductAnalytic productAnalytic, + Option failureOptionAnalytic, + Outlet outlet, + Option failureOptionOutlet, + bool isFetching, + bool isFetchingOutlet, + }); + + @override + $CategoryAnalyticCopyWith<$Res> get categoryAnalytic; + @override + $ProfitLossAnalyticCopyWith<$Res> get profitLossAnalytic; + @override + $PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic; + @override + $ProductAnalyticCopyWith<$Res> get productAnalytic; + @override + $OutletCopyWith<$Res> get outlet; +} + +/// @nodoc +class __$$TransactionReportStateImplCopyWithImpl<$Res> + extends + _$TransactionReportStateCopyWithImpl<$Res, _$TransactionReportStateImpl> + implements _$$TransactionReportStateImplCopyWith<$Res> { + __$$TransactionReportStateImplCopyWithImpl( + _$TransactionReportStateImpl _value, + $Res Function(_$TransactionReportStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? categoryAnalytic = null, + Object? profitLossAnalytic = null, + Object? paymentMethodAnalytic = null, + Object? productAnalytic = null, + Object? failureOptionAnalytic = null, + Object? outlet = null, + Object? failureOptionOutlet = null, + Object? isFetching = null, + Object? isFetchingOutlet = null, + }) { + return _then( + _$TransactionReportStateImpl( + categoryAnalytic: null == categoryAnalytic + ? _value.categoryAnalytic + : categoryAnalytic // ignore: cast_nullable_to_non_nullable + as CategoryAnalytic, + profitLossAnalytic: null == profitLossAnalytic + ? _value.profitLossAnalytic + : profitLossAnalytic // ignore: cast_nullable_to_non_nullable + as ProfitLossAnalytic, + paymentMethodAnalytic: null == paymentMethodAnalytic + ? _value.paymentMethodAnalytic + : paymentMethodAnalytic // ignore: cast_nullable_to_non_nullable + as PaymentMethodAnalytic, + productAnalytic: null == productAnalytic + ? _value.productAnalytic + : productAnalytic // ignore: cast_nullable_to_non_nullable + as ProductAnalytic, + failureOptionAnalytic: null == failureOptionAnalytic + ? _value.failureOptionAnalytic + : failureOptionAnalytic // ignore: cast_nullable_to_non_nullable + as Option, + outlet: null == outlet + ? _value.outlet + : outlet // ignore: cast_nullable_to_non_nullable + as Outlet, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + isFetchingOutlet: null == isFetchingOutlet + ? _value.isFetchingOutlet + : isFetchingOutlet // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$TransactionReportStateImpl implements _TransactionReportState { + const _$TransactionReportStateImpl({ + required this.categoryAnalytic, + required this.profitLossAnalytic, + required this.paymentMethodAnalytic, + required this.productAnalytic, + required this.failureOptionAnalytic, + required this.outlet, + required this.failureOptionOutlet, + this.isFetching = false, + this.isFetchingOutlet = false, + }); + + @override + final CategoryAnalytic categoryAnalytic; + @override + final ProfitLossAnalytic profitLossAnalytic; + @override + final PaymentMethodAnalytic paymentMethodAnalytic; + @override + final ProductAnalytic productAnalytic; + @override + final Option failureOptionAnalytic; + @override + final Outlet outlet; + @override + final Option failureOptionOutlet; + @override + @JsonKey() + final bool isFetching; + @override + @JsonKey() + final bool isFetchingOutlet; + + @override + String toString() { + return 'TransactionReportState(categoryAnalytic: $categoryAnalytic, profitLossAnalytic: $profitLossAnalytic, paymentMethodAnalytic: $paymentMethodAnalytic, productAnalytic: $productAnalytic, failureOptionAnalytic: $failureOptionAnalytic, outlet: $outlet, failureOptionOutlet: $failureOptionOutlet, isFetching: $isFetching, isFetchingOutlet: $isFetchingOutlet)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$TransactionReportStateImpl && + (identical(other.categoryAnalytic, categoryAnalytic) || + other.categoryAnalytic == categoryAnalytic) && + (identical(other.profitLossAnalytic, profitLossAnalytic) || + other.profitLossAnalytic == profitLossAnalytic) && + (identical(other.paymentMethodAnalytic, paymentMethodAnalytic) || + other.paymentMethodAnalytic == paymentMethodAnalytic) && + (identical(other.productAnalytic, productAnalytic) || + other.productAnalytic == productAnalytic) && + (identical(other.failureOptionAnalytic, failureOptionAnalytic) || + other.failureOptionAnalytic == failureOptionAnalytic) && + (identical(other.outlet, outlet) || other.outlet == outlet) && + (identical(other.failureOptionOutlet, failureOptionOutlet) || + other.failureOptionOutlet == failureOptionOutlet) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching) && + (identical(other.isFetchingOutlet, isFetchingOutlet) || + other.isFetchingOutlet == isFetchingOutlet)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + categoryAnalytic, + profitLossAnalytic, + paymentMethodAnalytic, + productAnalytic, + failureOptionAnalytic, + outlet, + failureOptionOutlet, + isFetching, + isFetchingOutlet, + ); + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$TransactionReportStateImplCopyWith<_$TransactionReportStateImpl> + get copyWith => + __$$TransactionReportStateImplCopyWithImpl<_$TransactionReportStateImpl>( + this, + _$identity, + ); +} + +abstract class _TransactionReportState implements TransactionReportState { + const factory _TransactionReportState({ + required final CategoryAnalytic categoryAnalytic, + required final ProfitLossAnalytic profitLossAnalytic, + required final PaymentMethodAnalytic paymentMethodAnalytic, + required final ProductAnalytic productAnalytic, + required final Option failureOptionAnalytic, + required final Outlet outlet, + required final Option failureOptionOutlet, + final bool isFetching, + final bool isFetchingOutlet, + }) = _$TransactionReportStateImpl; + + @override + CategoryAnalytic get categoryAnalytic; + @override + ProfitLossAnalytic get profitLossAnalytic; + @override + PaymentMethodAnalytic get paymentMethodAnalytic; + @override + ProductAnalytic get productAnalytic; + @override + Option get failureOptionAnalytic; + @override + Outlet get outlet; + @override + Option get failureOptionOutlet; + @override + bool get isFetching; + @override + bool get isFetchingOutlet; + + /// Create a copy of TransactionReportState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$TransactionReportStateImplCopyWith<_$TransactionReportStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/report/transaction_report/transaction_report_event.dart b/lib/application/report/transaction_report/transaction_report_event.dart new file mode 100644 index 0000000..5b744e6 --- /dev/null +++ b/lib/application/report/transaction_report/transaction_report_event.dart @@ -0,0 +1,10 @@ +part of 'transaction_report_bloc.dart'; + +@freezed +class TransactionReportEvent with _$TransactionReportEvent { + const factory TransactionReportEvent.fetchedOutlet() = _FetchedOutlet; + const factory TransactionReportEvent.fetchedTransaction( + DateTime dateFrom, + DateTime dateTo, + ) = _FetchedTransaction; +} diff --git a/lib/application/report/transaction_report/transaction_report_state.dart b/lib/application/report/transaction_report/transaction_report_state.dart new file mode 100644 index 0000000..8a54c88 --- /dev/null +++ b/lib/application/report/transaction_report/transaction_report_state.dart @@ -0,0 +1,26 @@ +part of 'transaction_report_bloc.dart'; + +@freezed +class TransactionReportState with _$TransactionReportState { + const factory TransactionReportState({ + required CategoryAnalytic categoryAnalytic, + required ProfitLossAnalytic profitLossAnalytic, + required PaymentMethodAnalytic paymentMethodAnalytic, + required ProductAnalytic productAnalytic, + required Option failureOptionAnalytic, + required Outlet outlet, + required Option failureOptionOutlet, + @Default(false) bool isFetching, + @Default(false) bool isFetchingOutlet, + }) = _TransactionReportState; + + factory TransactionReportState.initial() => TransactionReportState( + failureOptionAnalytic: none(), + outlet: Outlet.empty(), + failureOptionOutlet: none(), + categoryAnalytic: CategoryAnalytic.empty(), + profitLossAnalytic: ProfitLossAnalytic.empty(), + paymentMethodAnalytic: PaymentMethodAnalytic.empty(), + productAnalytic: ProductAnalytic.empty(), + ); +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 50ea38f..046ae07 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -43,6 +43,8 @@ import 'package:apskel_owner_flutter/application/product/product_loader/product_ as _i458; import 'package:apskel_owner_flutter/application/report/inventory_report/inventory_report_bloc.dart' as _i346; +import 'package:apskel_owner_flutter/application/report/transaction_report/transaction_report_bloc.dart' + as _i605; import 'package:apskel_owner_flutter/application/user/change_password_form/change_password_form_bloc.dart' as _i1030; import 'package:apskel_owner_flutter/application/user/user_edit_form/user_edit_form_bloc.dart' @@ -265,6 +267,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1030.ChangePasswordFormBloc>( () => _i1030.ChangePasswordFormBloc(gh<_i635.IUserRepository>()), ); + gh.factory<_i605.TransactionReportBloc>( + () => _i605.TransactionReportBloc( + gh<_i477.IAnalyticRepository>(), + gh<_i197.IOutletRepository>(), + ), + ); gh.factory<_i346.InventoryReportBloc>( () => _i346.InventoryReportBloc( gh<_i477.IAnalyticRepository>(), diff --git a/lib/presentation/components/report/transaction_report.dart b/lib/presentation/components/report/transaction_report.dart new file mode 100644 index 0000000..fcc3e82 --- /dev/null +++ b/lib/presentation/components/report/transaction_report.dart @@ -0,0 +1,956 @@ +import 'dart:io'; + +import 'package:flutter/services.dart'; +import 'package:pdf/pdf.dart'; +import 'package:pdf/widgets.dart' as pw; + +import '../../../common/extension/extension.dart'; +import '../../../common/utils/pdf_service.dart'; +import '../../../domain/analytic/analytic.dart'; +import '../../../domain/outlet/outlet.dart'; + +class TransactionReport { + static final primaryColor = PdfColor.fromHex("36175e"); + + static Future previewPdf({ + required Outlet outlet, + required String searchDateFormatted, + required CategoryAnalytic categoryAnalyticData, + required ProfitLossAnalytic profitLossData, + required PaymentMethodAnalytic paymentMethodAnalyticData, + required ProductAnalytic productAnalyticData, + }) async { + final pdf = pw.Document(); + final ByteData dataImage = await rootBundle.load('assets/images/logo.png'); + final Uint8List bytes = dataImage.buffer.asUint8List(); + + final profitLossProductSummary = { + 'totalRevenue': profitLossData.productData.fold( + 0, + (sum, item) => sum + (item.revenue), + ), + 'totalCost': profitLossData.productData.fold( + 0, + (sum, item) => sum + (item.cost), + ), + 'totalGrossProfit': profitLossData.productData.fold( + 0, + (sum, item) => sum + (item.grossProfit), + ), + 'totalQuantity': profitLossData.productData.fold( + 0, + (sum, item) => sum + (item.quantitySold), + ), + }; + + final categorySummary = { + 'totalRevenue': categoryAnalyticData.data.fold( + 0, + (sum, item) => sum + (item.totalRevenue), + ), + 'orderCount': categoryAnalyticData.data.fold( + 0, + (sum, item) => sum + (item.orderCount), + ), + 'productCount': categoryAnalyticData.data.fold( + 0, + (sum, item) => sum + (item.productCount), + ), + 'totalQuantity': categoryAnalyticData.data.fold( + 0, + (sum, item) => sum + (item.totalQuantity), + ), + }; + + final productItemSummary = { + 'totalRevenue': productAnalyticData.data.fold( + 0, + (sum, item) => sum + (item.revenue), + ), + 'orderCount': productAnalyticData.data.fold( + 0, + (sum, item) => sum + (item.orderCount), + ), + 'totalQuantitySold': productAnalyticData.data.fold( + 0, + (sum, item) => sum + (item.quantitySold), + ), + }; + + // Membuat objek Image dari gambar + final image = pw.MemoryImage(bytes); + pdf.addPage( + pw.MultiPage( + pageFormat: PdfPageFormat.a4, + margin: pw.EdgeInsets.zero, + build: (pw.Context context) { + return [ + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Row( + mainAxisAlignment: pw.MainAxisAlignment.spaceBetween, + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + // Bagian kiri - Logo dan Info Perusahaan + pw.Row( + crossAxisAlignment: pw.CrossAxisAlignment.center, + children: [ + // Icon/Logo placeholder (bisa diganti dengan gambar logo) + pw.Container( + width: 40, + height: 40, + child: pw.Image(image), + ), + pw.SizedBox(width: 15), + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + pw.Text( + 'Apskel', + style: pw.TextStyle( + fontSize: 28, + fontWeight: pw.FontWeight.bold, + color: primaryColor, + ), + ), + pw.SizedBox(height: 4), + pw.Text( + outlet.name, + style: pw.TextStyle( + fontSize: 16, + color: PdfColors.grey700, + ), + ), + pw.SizedBox(height: 2), + pw.Text( + outlet.address, + style: pw.TextStyle( + fontSize: 12, + color: PdfColors.grey600, + ), + ), + ], + ), + ], + ), + // Bagian kanan - Info Laporan + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.end, + children: [ + pw.Text( + 'Laporan Transaksi', + style: pw.TextStyle( + fontSize: 24, + fontWeight: pw.FontWeight.bold, + color: PdfColors.grey800, + ), + ), + pw.SizedBox(height: 8), + pw.Text( + searchDateFormatted, + style: pw.TextStyle( + fontSize: 14, + color: PdfColors.grey600, + ), + ), + pw.SizedBox(height: 4), + pw.Text( + 'Laporan', + style: pw.TextStyle( + fontSize: 12, + color: PdfColors.grey500, + ), + ), + ], + ), + ], + ), + ), + pw.Container( + width: double.infinity, + height: 3, + color: primaryColor, + ), + + // Summary + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSectionWidget('1. Ringkasan'), + pw.SizedBox(height: 30), + pw.Row( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + pw.Expanded( + flex: 1, + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSummaryItem( + 'Total Penjualan (termasuk rasik)', + (profitLossData.summary.totalRevenue) + .toString() + .currencyFormatRpV2, + ), + _buildSummaryItem( + 'Total Terjual', + (profitLossData.summary.totalOrders).toString(), + ), + _buildSummaryItem( + 'HPP', + '${safeCurrency(profitLossData.summary.totalCost)} | ${safePercentage(profitLossData.summary.totalCost, profitLossData.summary.totalRevenue)}', + ), + _buildSummaryItem( + 'Laba Kotor', + '${safeCurrency(profitLossData.summary.grossProfit)} | ${safeRound(profitLossData.summary.grossProfitMargin)}%', + valueStyle: pw.TextStyle( + color: PdfColors.green800, + fontWeight: pw.FontWeight.bold, + fontSize: 16, + ), + labelStyle: pw.TextStyle( + color: PdfColors.green800, + fontWeight: pw.FontWeight.bold, + fontSize: 16, + ), + ), + ], + ), + ), + pw.SizedBox(width: 20), + pw.Expanded( + flex: 1, + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSummaryItem( + 'Biaya Lain lain', + '${safeCurrency(profitLossData.summary.totalTax)} | ${safePercentage(profitLossData.summary.totalTax, profitLossData.summary.totalRevenue)}', + ), + _buildSummaryItem( + 'Laba/Rugi', + '${safeCurrency(profitLossData.summary.netProfit)} | ${safeRound(profitLossData.summary.netProfitMargin)}%', + valueStyle: pw.TextStyle( + color: PdfColors.blue800, + fontWeight: pw.FontWeight.bold, + fontSize: 16, + ), + labelStyle: pw.TextStyle( + color: PdfColors.blue800, + fontWeight: pw.FontWeight.bold, + fontSize: 16, + ), + ), + ], + ), + ), + ], + ), + pw.SizedBox(height: 16), + pw.Text( + "Laba Rugi Perproduk", + style: pw.TextStyle( + fontSize: 16, + fontWeight: pw.FontWeight.bold, + color: primaryColor, + ), + ), + pw.SizedBox(height: 20), + pw.Column( + children: [ + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + topLeft: pw.Radius.circular(8), + topRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(1), // Qty + 2: pw.FlexColumnWidth(2.5), // Pendapatan + 3: pw.FlexColumnWidth(2), // HPP + 4: pw.FlexColumnWidth(2), // Laba Kotor + 5: pw.FlexColumnWidth(2), // Margin (%) + }, + children: [ + pw.TableRow( + children: [ + _buildHeaderCell('Produk'), + _buildHeaderCell('Qty'), + _buildHeaderCell('Pendapatan'), + _buildHeaderCell('HPP'), + _buildHeaderCell('Laba Kotor'), + _buildHeaderCell('Margin (%)'), + ], + ), + ], + ), + ), + pw.Container( + decoration: pw.BoxDecoration(color: PdfColors.white), + child: pw.Table( + columnWidths: { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(1), // Qty + 2: pw.FlexColumnWidth(2.5), // Pendapatan + 3: pw.FlexColumnWidth(2), // HPP + 4: pw.FlexColumnWidth(2), // Laba Kotor + 5: pw.FlexColumnWidth(2), // Margin (%) + }, + children: profitLossData.productData + .map( + (profitLoss) => _buildPerProductDataRow( + product: profitLoss.productName, + qty: profitLoss.quantitySold.toString(), + pendapatan: profitLoss.revenue + .toString() + .currencyFormatRpV2, + hpp: profitLoss.cost + .toString() + .currencyFormatRpV2, + labaKotor: profitLoss.grossProfit + .toString() + .currencyFormatRpV2, + margin: + '${safeRound(profitLoss.grossProfitMargin)}%', + isEven: + profitLossData.productData.indexOf( + profitLoss, + ) % + 2 == + 0, + ), + ) + .toList(), + ), + ), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + bottomLeft: pw.Radius.circular(8), + bottomRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(1), // Qty + 2: pw.FlexColumnWidth(2.5), // Pendapatan + 3: pw.FlexColumnWidth(2), // HPP + 4: pw.FlexColumnWidth(2), // Laba Kotor + 5: pw.FlexColumnWidth(2), // Margin (%) + }, + children: [ + pw.TableRow( + children: [ + _buildTotalCell('TOTAL'), + _buildTotalCell( + profitLossProductSummary['totalQuantity'] + .toString(), + ), + _buildTotalCell( + profitLossProductSummary['totalRevenue'] + .toString() + .currencyFormatRpV2, + ), + _buildTotalCell( + profitLossProductSummary['totalCost'] + .toString() + .currencyFormatRpV2, + ), + _buildTotalCell( + profitLossProductSummary['totalGrossProfit'] + .toString() + .currencyFormatRpV2, + ), + _buildTotalCell(''), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + + // Summary Payment Method + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Column( + children: [ + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSectionWidget('2. Ringkasan Metode Pembayaran'), + pw.SizedBox(height: 30), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + topLeft: pw.Radius.circular(8), + topRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Nama + 1: pw.FlexColumnWidth(1), // Tipe + 2: pw.FlexColumnWidth(2.5), // Jumlah Order + 3: pw.FlexColumnWidth(2), // Total Amount + 4: pw.FlexColumnWidth(2), // Presentase + }, + children: [ + pw.TableRow( + children: [ + _buildHeaderCell('Nama'), + _buildHeaderCell('Tipe'), + _buildHeaderCell('Jumlah Order'), + _buildHeaderCell('Total Amount'), + _buildHeaderCell('Presentase'), + ], + ), + ], + ), + ), + pw.Container( + decoration: pw.BoxDecoration(color: PdfColors.white), + child: pw.Table( + columnWidths: { + 0: pw.FlexColumnWidth(2.5), // Nama + 1: pw.FlexColumnWidth(1), // Tipe + 2: pw.FlexColumnWidth(2.5), // Jumlah Order + 3: pw.FlexColumnWidth(2), // Total Amount + 4: pw.FlexColumnWidth(2), // Presentase + }, + children: paymentMethodAnalyticData.data + .map( + (payment) => _buildPaymentMethodDataRow( + name: payment.paymentMethodName, + tipe: payment.paymentMethodType.toTitleCase, + jumlahOrder: payment.orderCount.toString(), + totalAmount: payment.totalAmount + .toString() + .currencyFormatRpV2, + presentase: + '${safeRound(payment.percentage)}%', + isEven: + paymentMethodAnalyticData.data.indexOf( + payment, + ) % + 2 == + 0, + ), + ) + .toList(), + ), + ), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + bottomLeft: pw.Radius.circular(8), + bottomRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(1), // Qty + 2: pw.FlexColumnWidth(2.5), // Pendapatan + 3: pw.FlexColumnWidth(2), // HPP + 4: pw.FlexColumnWidth(2), // Laba Kotor + 5: pw.FlexColumnWidth(2), // Margin (%) + }, + children: [ + pw.TableRow( + children: [ + _buildTotalCell('TOTAL'), + _buildTotalCell(''), + _buildTotalCell( + (paymentMethodAnalyticData + .summary + .totalOrders) + .toString(), + ), + _buildTotalCell( + (paymentMethodAnalyticData + .summary + .totalAmount) + .toString() + .currencyFormatRpV2, + ), + _buildTotalCell(''), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + + // Summary Category + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSectionWidget('3. Ringkasan Kategori'), + pw.SizedBox(height: 30), + pw.Column( + children: [ + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + topLeft: pw.Radius.circular(8), + topRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Nama + 1: pw.FlexColumnWidth(2), // Total Product + 2: pw.FlexColumnWidth(1), // qty + 3: pw.FlexColumnWidth(2), // Jumlah Order + 4: pw.FlexColumnWidth(2.5), // Presentase + }, + children: [ + pw.TableRow( + children: [ + _buildHeaderCell('Nama'), + _buildHeaderCell('Total Produk'), + _buildHeaderCell('Qty'), + _buildHeaderCell('Jumlah Order'), + _buildHeaderCell('Pendapatan'), + ], + ), + ], + ), + ), + pw.Container( + decoration: pw.BoxDecoration(color: PdfColors.white), + child: pw.Table( + columnWidths: { + 0: pw.FlexColumnWidth(2.5), // Nama + 1: pw.FlexColumnWidth(2), // Total Product + 2: pw.FlexColumnWidth(1), // qty + 3: pw.FlexColumnWidth(2), // Jumlah Order + 4: pw.FlexColumnWidth(2.5), // Presentase + }, + children: categoryAnalyticData.data + .map( + (category) => _buildCategoryDataRow( + name: category.categoryName, + totalProduct: category.productCount + .toString(), + qty: category.totalQuantity.toString(), + jumlahOrder: category.orderCount.toString(), + pendapatan: category.totalRevenue + .toString() + .currencyFormatRpV2, + isEven: + categoryAnalyticData.data.indexOf( + category, + ) % + 2 == + 0, + ), + ) + .toList(), + ), + ), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + bottomLeft: pw.Radius.circular(8), + bottomRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Nama + 1: pw.FlexColumnWidth(2), // Total Product + 2: pw.FlexColumnWidth(1), // qty + 3: pw.FlexColumnWidth(2), // Jumlah Order + 4: pw.FlexColumnWidth(2.5), // Presentase + }, + children: [ + pw.TableRow( + children: [ + _buildTotalCell('TOTAL'), + _buildTotalCell( + categorySummary['productCount'].toString(), + ), + _buildTotalCell( + categorySummary['totalQuantity'].toString(), + ), + _buildTotalCell( + categorySummary['orderCount'].toString(), + ), + _buildTotalCell( + categorySummary['totalRevenue'] + .toString() + .currencyFormatRpV2, + ), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + + // Summary Item + pw.Container( + padding: pw.EdgeInsets.all(20), + child: pw.Column( + children: [ + pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + _buildSectionWidget('4. Ringkasan Item'), + pw.SizedBox(height: 30), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + topLeft: pw.Radius.circular(8), + topRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(2), // Kategori + 2: pw.FlexColumnWidth(1), // qty + 3: pw.FlexColumnWidth(2), // Order + 4: pw.FlexColumnWidth(2), // Pendapatan + 5: pw.FlexColumnWidth(2), // Average + }, + children: [ + pw.TableRow( + children: [ + _buildHeaderCell('Produk'), + _buildHeaderCell('Kategori'), + _buildHeaderCell('Qty'), + _buildHeaderCell('Order'), + _buildHeaderCell('Pendapatan'), + _buildHeaderCell('Rata Rata'), + ], + ), + ], + ), + ), + pw.Container( + decoration: pw.BoxDecoration(color: PdfColors.white), + child: pw.Table( + columnWidths: { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(2), // Kategori + 2: pw.FlexColumnWidth(1), // qty + 3: pw.FlexColumnWidth(2), // Order + 4: pw.FlexColumnWidth(2), // Pendapatan + 5: pw.FlexColumnWidth(2), // Average + }, + children: productAnalyticData.data + .map( + (item) => _buildItemDataRow( + product: item.productName, + category: item.categoryName, + qty: item.quantitySold.toString(), + order: item.orderCount.toString(), + pendapatan: item.revenue + .toString() + .currencyFormatRpV2, + average: safeCurrency( + item.averagePrice.round(), + ), + isEven: + productAnalyticData.data.indexOf(item) % + 2 == + 0, + ), + ) + .toList(), + ), + ), + pw.Container( + decoration: pw.BoxDecoration( + color: primaryColor, // Purple color + borderRadius: pw.BorderRadius.only( + bottomLeft: pw.Radius.circular(8), + bottomRight: pw.Radius.circular(8), + ), + ), + child: pw.Table( + columnWidths: const { + 0: pw.FlexColumnWidth(2.5), // Produk + 1: pw.FlexColumnWidth(2), // Kategori + 2: pw.FlexColumnWidth(1), // qty + 3: pw.FlexColumnWidth(2), // Order + 4: pw.FlexColumnWidth(2), // Pendapatan + 5: pw.FlexColumnWidth(2), // Average + }, + children: [ + pw.TableRow( + children: [ + _buildTotalCell('TOTAL'), + _buildTotalCell(''), + _buildTotalCell( + productItemSummary['totalQuantitySold'] + .toString(), + ), + _buildTotalCell( + productItemSummary['orderCount'].toString(), + ), + _buildTotalCell( + productItemSummary['totalRevenue'] + .toString() + .currencyFormatRpV2, + ), + _buildTotalCell(''), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + ]; + }, + ), + ); + + return HelperPdfService.saveDocument( + name: 'Laporan Transaksi | $searchDateFormatted.pdf', + pdf: pdf, + ); + } + + static String safePercentage(num numerator, num denominator) { + if (denominator == 0 || + numerator.isInfinite || + numerator.isNaN || + denominator.isInfinite || + denominator.isNaN) { + return '0%'; + } + final result = (numerator / denominator) * 100; + if (result.isInfinite || result.isNaN) { + return '0%'; + } + return '${result.round()}%'; + } + + static String safeRound(num value) { + if (value.isInfinite || value.isNaN) { + return '0'; + } + return value.round().toString(); + } + + static String safeCurrency(num value) { + if (value.isInfinite || value.isNaN) { + return '0'.currencyFormatRpV2; + } + return value.toString().currencyFormatRpV2; + } + + static pw.Widget _buildSectionWidget(String title) { + return pw.Text( + title, + style: pw.TextStyle( + fontSize: 20, + fontWeight: pw.FontWeight.bold, + color: primaryColor, + ), + ); + } + + static pw.Widget _buildSummaryItem( + String label, + String value, { + pw.TextStyle? valueStyle, + pw.TextStyle? labelStyle, + }) { + return pw.Container( + padding: pw.EdgeInsets.only(bottom: 8), + margin: pw.EdgeInsets.only(bottom: 16), + decoration: pw.BoxDecoration( + border: pw.Border(bottom: pw.BorderSide(color: PdfColors.grey300)), + ), + child: pw.Row( + mainAxisAlignment: pw.MainAxisAlignment.spaceBetween, + children: [ + pw.Text(label, style: labelStyle), + pw.Text( + value, + style: valueStyle ?? pw.TextStyle(fontWeight: pw.FontWeight.bold), + ), + ], + ), + ); + } + + static pw.Widget _buildHeaderCell(String text) { + return pw.Container( + padding: pw.EdgeInsets.symmetric(horizontal: 12, vertical: 16), + child: pw.Text( + text, + style: pw.TextStyle( + color: PdfColors.white, + fontWeight: pw.FontWeight.bold, + fontSize: 12, + ), + textAlign: pw.TextAlign.center, + ), + ); + } + + static pw.Widget _buildDataCell( + String text, { + pw.Alignment alignment = pw.Alignment.center, + PdfColor? textColor, + }) { + return pw.Container( + padding: pw.EdgeInsets.symmetric(horizontal: 12, vertical: 16), + alignment: alignment, + child: pw.Text( + text, + style: pw.TextStyle( + fontSize: 12, + color: textColor ?? PdfColors.black, + fontWeight: pw.FontWeight.normal, + ), + textAlign: alignment == pw.Alignment.centerLeft + ? pw.TextAlign.left + : pw.TextAlign.center, + ), + ); + } + + static pw.Widget _buildTotalCell(String text) { + return pw.Container( + padding: pw.EdgeInsets.symmetric(horizontal: 12, vertical: 16), + child: pw.Text( + text, + style: pw.TextStyle( + color: PdfColors.white, + fontWeight: pw.FontWeight.bold, + fontSize: 12, + ), + textAlign: pw.TextAlign.center, + ), + ); + } + + static pw.TableRow _buildPerProductDataRow({ + required String product, + required String qty, + required String pendapatan, + required String hpp, + required String labaKotor, + required String margin, + required bool isEven, + }) { + return pw.TableRow( + decoration: pw.BoxDecoration( + color: isEven ? PdfColors.grey50 : PdfColors.white, + ), + children: [ + _buildDataCell(product, alignment: pw.Alignment.centerLeft), + _buildDataCell(qty), + _buildDataCell(pendapatan), + _buildDataCell(hpp, textColor: PdfColors.red600), + _buildDataCell(labaKotor, textColor: PdfColors.green600), + _buildDataCell(margin), + ], + ); + } + + static pw.TableRow _buildPaymentMethodDataRow({ + required String name, + required String tipe, + required String jumlahOrder, + required String totalAmount, + required String presentase, + required bool isEven, + }) { + return pw.TableRow( + decoration: pw.BoxDecoration( + color: isEven ? PdfColors.grey50 : PdfColors.white, + ), + children: [ + _buildDataCell(name, alignment: pw.Alignment.centerLeft), + _buildDataCell(tipe), + _buildDataCell(jumlahOrder), + _buildDataCell(totalAmount), + _buildDataCell(presentase), + ], + ); + } + + static pw.TableRow _buildCategoryDataRow({ + required String name, + required String totalProduct, + required String qty, + required String jumlahOrder, + required String pendapatan, + required bool isEven, + }) { + return pw.TableRow( + decoration: pw.BoxDecoration( + color: isEven ? PdfColors.grey50 : PdfColors.white, + ), + children: [ + _buildDataCell(name, alignment: pw.Alignment.centerLeft), + _buildDataCell(totalProduct), + _buildDataCell(qty), + _buildDataCell(jumlahOrder), + _buildDataCell(pendapatan), + ], + ); + } + + static pw.TableRow _buildItemDataRow({ + required String product, + required String category, + required String qty, + required String order, + required String pendapatan, + required String average, + required bool isEven, + }) { + return pw.TableRow( + decoration: pw.BoxDecoration( + color: isEven ? PdfColors.grey50 : PdfColors.white, + ), + children: [ + _buildDataCell(product, alignment: pw.Alignment.centerLeft), + _buildDataCell(category, alignment: pw.Alignment.centerLeft), + _buildDataCell(qty), + _buildDataCell(order), + _buildDataCell(pendapatan), + _buildDataCell(average), + ], + ); + } +} diff --git a/lib/presentation/pages/download/download_report_page.dart b/lib/presentation/pages/download/download_report_page.dart index ee111dc..3e02303 100644 --- a/lib/presentation/pages/download/download_report_page.dart +++ b/lib/presentation/pages/download/download_report_page.dart @@ -6,6 +6,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import '../../../application/report/inventory_report/inventory_report_bloc.dart'; +import '../../../application/report/transaction_report/transaction_report_bloc.dart'; import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../common/utils/pdf_service.dart'; @@ -14,6 +15,7 @@ import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; import '../../components/field/date_range_picker_field.dart'; import '../../components/report/inventory_report.dart'; +import '../../components/report/transaction_report.dart'; import '../../components/toast/flushbar.dart'; @RoutePage() @@ -24,9 +26,19 @@ class DownloadReportPage extends StatefulWidget implements AutoRouteWrapper { State createState() => _DownloadReportPageState(); @override - Widget wrappedRoute(BuildContext context) => BlocProvider( - create: (context) => - getIt()..add(InventoryReportEvent.fetchedOutlet()), + Widget wrappedRoute(BuildContext context) => MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => + getIt() + ..add(InventoryReportEvent.fetchedOutlet()), + ), + BlocProvider( + create: (context) => + getIt() + ..add(TransactionReportEvent.fetchedOutlet()), + ), + ], child: this, ); } @@ -88,17 +100,6 @@ class _DownloadReportPageState extends State super.dispose(); } - void _downloadReport( - String reportType, - DateTime? startDate, - DateTime? endDate, - ) { - if (startDate == null || endDate == null) { - AppFlushbar.showError(context, 'Please select both start and end dates'); - return; - } - } - @override Widget build(BuildContext context) { return Scaffold( @@ -127,30 +128,75 @@ class _DownloadReportPageState extends State child: Column( children: [ // Transaction Report Card - _ReportOptionCard( - title: 'Transaction Report', - subtitle: - 'Export all transaction data with detailed analytics', - icon: Icons.receipt_long_outlined, - gradient: const [ - AppColor.primary, - AppColor.primaryLight, - ], - startDate: _transactionStartDate, - endDate: _transactionEndDate, - isLoading: false, - onDateRangeChanged: (start, end) { - setState(() { - _transactionStartDate = start; - _transactionEndDate = end; - }); + BlocBuilder< + TransactionReportBloc, + TransactionReportState + >( + builder: (context, state) { + return _ReportOptionCard( + title: 'Transaction Report', + subtitle: + 'Export all transaction data with detailed analytics', + icon: Icons.receipt_long_outlined, + gradient: const [ + AppColor.primary, + AppColor.primaryLight, + ], + startDate: _transactionStartDate, + endDate: _transactionEndDate, + isLoading: state.isFetching, + onDateRangeChanged: (start, end) { + setState(() { + _transactionStartDate = start; + _transactionEndDate = end; + }); + if (start != null || end != null) { + context.read().add( + TransactionReportEvent.fetchedTransaction( + start!, + end!, + ), + ); + } + }, + onDownload: () async { + try { + final status = await PermessionHelper() + .checkPermission(); + if (status) { + final pdfFile = + await TransactionReport.previewPdf( + searchDateFormatted: + "${_transactionStartDate?.toServerDate} - ${_transactionEndDate?.toServerDate}", + outlet: state.outlet, + categoryAnalyticData: + state.categoryAnalytic, + profitLossData: + state.profitLossAnalytic, + paymentMethodAnalyticData: + state.paymentMethodAnalytic, + productAnalyticData: + state.productAnalytic, + ); + log("pdfFile: $pdfFile"); + await HelperPdfService.openFile(pdfFile); + } else { + AppFlushbar.showError( + context, + 'Storage permission is required to save PDF', + ); + } + } catch (e) { + log("Error generating PDF: $e"); + AppFlushbar.showError( + context, + 'Failed to generate PDF: $e', + ); + } + }, + delay: 200, + ); }, - onDownload: () => _downloadReport( - 'Transaction Report', - _transactionStartDate, - _transactionEndDate, - ), - delay: 200, ), const SizedBox(height: 20), diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 9d4c8bb..00f4aaf 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -139,7 +139,7 @@ class DownloadReportRoute extends _i26.PageRouteInfo { static _i26.PageInfo page = _i26.PageInfo( name, builder: (data) { - return const _i5.DownloadReportPage(); + return _i26.WrappedRoute(child: const _i5.DownloadReportPage()); }, ); } From 5a83bc4049219a4326c04e5c9102e499f5cb1151 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 20 Aug 2025 13:52:49 +0700 Subject: [PATCH 089/108] feat: lang --- lib/l10n/app_en.arb | 382 +++++- lib/l10n/app_id.arb | 382 +++++- lib/l10n/app_localizations.dart | 1056 +++++++++++++++++ lib/l10n/app_localizations_en.dart | 536 +++++++++ lib/l10n/app_localizations_id.dart | 536 +++++++++ .../bottom_sheet/date_range_bottom_sheet.dart | 14 +- .../field/date_range_picker_field.dart | 126 +- .../pages/about_app/about_app_page.dart | 31 +- .../pages/coming_soon/coming_soon_page.dart | 5 +- .../pages/customer/customer_page.dart | 7 +- .../pages/customer/widgets/customer_card.dart | 83 +- .../pages/customer/widgets/customer_tile.dart | 15 +- .../pages/download/download_report_page.dart | 18 +- .../pages/finance/finance_page.dart | 14 +- .../pages/finance/widgets/cash_flow.dart | 17 +- .../pages/finance/widgets/category.dart | 16 +- .../pages/finance/widgets/product.dart | 10 +- .../pages/finance/widgets/profit_loss.dart | 16 +- .../pages/home/widgets/feature.dart | 17 +- .../pages/home/widgets/stats.dart | 21 +- .../pages/home/widgets/top_product.dart | 4 +- .../pages/home/widgets/top_product_tile.dart | 18 +- .../pages/inventory/inventory_page.dart | 33 +- .../pages/inventory/widgets/product_tile.dart | 33 +- .../pages/main/widgets/bottom_navbar.dart | 4 +- .../order/order_detail/order_detail_page.dart | 117 +- .../pages/order/order_list/order_page.dart | 22 +- .../widgets/filter_header_delegate.dart | 11 +- .../order/order_list/widgets/order_tile.dart | 107 +- .../pages/outlet/outlet_information_page.dart | 108 +- .../product_analytic_page.dart | 34 +- .../product/product_list/product_page.dart | 7 +- .../profile_change_password_page.dart | 7 +- .../widgets/current_password.dart | 7 +- .../widgets/new_password.dart | 9 +- .../pages/profile_edit/profile_edit_page.dart | 5 +- .../profile_edit/widgets/name_field.dart | 7 +- .../pages/profile/profile_page.dart | 3 +- .../pages/profile/widgets/account_info.dart | 14 +- .../pages/profile/widgets/app_setting.dart | 7 +- .../profile/widgets/business_setting.dart | 19 +- .../pages/profile/widgets/danger_zone.dart | 23 +- .../pages/profile/widgets/support.dart | 11 +- .../pages/purchase/purchase_page.dart | 27 +- .../pages/purchase/widgets/purchase_tile.dart | 5 +- .../pages/report/report_page.dart | 21 +- .../pages/report/widgets/payment_method.dart | 34 +- .../pages/report/widgets/quick_stats.dart | 9 +- .../pages/report/widgets/revenue_summary.dart | 2 +- .../pages/report/widgets/sales.dart | 44 +- .../pages/report/widgets/top_product.dart | 28 +- lib/presentation/pages/sales/sales_page.dart | 24 +- .../pages/schedule/schedule_page.dart | 3 +- 53 files changed, 3387 insertions(+), 722 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 5353c21..ccf296d 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -49,5 +49,385 @@ "profile": "Profile", "@profile": {}, "sales_today": "Sales today", - "@sales_today": {} + "@sales_today": {}, + "order": "Order", + "@order": {}, + "sales": "Sales", + "@sales": {}, + "finance": "Finance", + "@finance": {}, + "product": "Product", + "@product": {}, + "form": "Form", + "@form": {}, + "schedule": "Schedule", + "@schedule": {}, + "inventory": "Inventory", + "@inventory": {}, + "customer": "Customer", + "@customer": {}, + "purchase": "Purchase", + "@purchase": {}, + "today_summary": "Today's Summary", + "@today_summary": {}, + "today": "Today", + "@today": {}, + "new_customer": "New Customer", + "@new_customer": {}, + "refund": "Refund", + "@refund": {}, + "void_text": "Void", + "@void_text": {}, + "increase": "Increase", + "@increase": {}, + "today_top_product": "Today's Top Product", + "@today_top_product": {}, + "rank": "Rank", + "@rank": {}, + "quantity_sold": "Quantity Sold", + "@quantity_sold": {}, + "total_orders": "Total Orders", + "@total_orders": {}, + "average_price": "Average Price", + "@average_price": {}, + "perfomance": "Performance", + "@perfomance": {}, + "total_sales": "Total Sales", + "@total_sales": {}, + "total_items": "Total Items", + "@total_items": {}, + "summary": "Summary", + "@summary": {}, + "net_sales": "Net Sales", + "@net_sales": {}, + "daily_breakdown": "Daily Breakdown", + "@daily_breakdown": {}, + "orders": "Orders", + "@orders": {}, + "items": "Items", + "@items": {}, + "tax": "Tax", + "@tax": {}, + "discount": "Discount", + "@discount": {}, + "total_purchase": "Total Purchase", + "@total_purchase": {}, + "pending_order": "Pending Order", + "@pending_order": {}, + "history_purchase": "History Purchase", + "@history_purchase": {}, + "all": "All", + "@all": {}, + "select_date_range": "Select Date Range", + "@select_date_range": {}, + "no_date_selected": "No date has been selected yet", + "@no_date_selected": {}, + "selected_date": "Selected Date", + "@selected_date": {}, + "select": "Select", + "@select": {}, + "cancel": "Cancel", + "@cancel": {}, + "total_revenue": "Total Revenue", + "@total_revenue": {}, + "total_expenditures": "Total Expenditures", + "@total_expenditures": {}, + "net_profit": "Net Profit", + "@net_profit": {}, + "margin_profit": "Margin Profit", + "@margin_profit": {}, + "cash_flow_analysis": "Cash Flow Analysis", + "@cash_flow_analysis": {}, + "cash_in": "Cash In", + "@cash_in": {}, + "cash_out": "Cash Out", + "@cash_out": {}, + "net_flow": "Net Flow", + "@net_flow": {}, + "cash_flow_chart": "Cash Flow Chart for {days} Last Days", + "@cash_flow_chart": { + "placeholders": { + "days": { + "type": "int", + "example": "7" + } + } + }, + "profit_loss_detail": "Profit & Loss Details", + "@profit_loss_detail": {}, + "gross_sales": "Gross Sales", + "@gross_sales": {}, + "return_text": "Return", + "@return_text": {}, + "cogs": "COGS", + "@cogs": {}, + "cost_of_goods_sold": "Cost of goods sold", + "@cost_of_goods_sold": {}, + "gross_profit": "Gross Profit", + "@gross_profit": {}, + "operating_costs": "Operating Costs", + "@operating_costs": {}, + "sales_category": "Sales Category", + "@sales_category": {}, + "unit": "Unit", + "@unit": {}, + "category_no_data": "There are no data categories yet", + "@category_no_data": {}, + "category_no_data_desc": "Sales category data will appear here", + "@category_no_data_desc": {}, + "product_analytic": "Product Analytic", + "@product_analytic": {}, + "view_all": "View All", + "@view_all": {}, + "sold": "Sold", + "@sold": {}, + "revenue": "Revenue", + "@revenue": {}, + "cost": "Cost", + "@cost": {}, + "profit_per_unit": "Profit per unit", + "@profit_per_unit": {}, + "total_sold": "Total Sold", + "@total_sold": {}, + "ingredients": "Ingredients", + "@ingredients": {}, + "low_stock": "Low Stock", + "@low_stock": {}, + "zero_stock": "Zero Stock", + "@zero_stock": {}, + "stock": "Stock", + "@stock": {}, + "price": "Price", + "@price": {}, + "out_of_stock": "Out of stock", + "@out_of_stock": {}, + "out_of_stock_desc": "Product not available for sale", + "@out_of_stock_desc": {}, + "in_text": "In", + "@in_text": {}, + "out_text": "Out", + "@out_text": {}, + "available": "Available", + "@available": {}, + "total_products": "Total Products", + "@total_products": {}, + "total_ingredients": "Total Ingredients", + "@total_ingredients": {}, + "products": "Products", + "@products": {}, + "value_text": "Value", + "@value_text": {}, + "low_stock_desc": "Immediately reorder at least {stock} pcs", + "@low_stock_desc": { + "placeholders": { + "stock": { + "type": "String", + "example": "0" + } + } + }, + "joined": "Joined", + "@joined": {}, + "ago": "ago", + "@ago": {}, + "active": "Active", + "@active": {}, + "inactive": "Inactive", + "@inactive": {}, + "total_amount": "Total Amount", + "@total_amount": {}, + "table": "Table", + "@table": {}, + "remaining": "Remaining", + "@remaining": {}, + "payment": "Payment", + "@payment": {}, + "completed": "Completed", + "@completed": {}, + "pending": "Pending", + "@pending": {}, + "no_order_with_status": "No {status} orders found", + "@no_order_with_status": { + "placeholders": { + "status": { + "type": "String", + "example": "pending" + } + } + }, + "order_details": "Order Details", + "@order_details": {}, + "order_number": "Order Number", + "@order_number": {}, + "order_status": "Order Status", + "@order_status": {}, + "order_information": "Order Information", + "@order_information": {}, + "order_type": "Order Type", + "@order_type": {}, + "payment_status": "Payment Status", + "@payment_status": {}, + "created": "Created", + "@created": {}, + "order_item": "Order Item", + "@order_item": {}, + "item": "Item", + "@item": {}, + "each": "Each", + "@each": {}, + "total_item": "Total Item", + "@total_item": {}, + "payment_summary": "Payment Summary", + "@payment_summary": {}, + "subtotal": "Subtotal", + "@subtotal": {}, + "paid": "Paid", + "@paid": {}, + "total": "Total", + "@total": {}, + "payment_method": "Payment Method", + "@payment_method": {}, + "dine_in": "Dine In", + "@dine_in": {}, + "dine_in_experience": "Dine In Experience", + "@dine_in_experience": {}, + "note": "Note", + "@note": {}, + "sales_chart": "Sales Chart", + "@sales_chart": {}, + "no_data_available": "No Data Avaiable", + "@no_data_available": {}, + "total_days_overview": "{days} days overview", + "@total_days_overview": { + "placeholders": { + "days": { + "type": "int", + "example": "0" + } + } + }, + "sales_data": "Sales Data", + "@sales_data": {}, + "no_sales_data": "No Sales Data", + "@no_sales_data": {}, + "no_sales_data_desc": "Sales data will appear here once transactions are recorded", + "@no_sales_data_desc": {}, + "payment_methods": "Payment Methods", + "@payment_methods": {}, + "payment_methods_desc": "Revenue breakdown by payment method ", + "@payment_methods_desc": {}, + "revenue_share": "Revenue Share", + "@revenue_share": {}, + "no_payment_methods": "No Payment Methods", + "@no_payment_methods": {}, + "no_payment_methods_desc": "Payment method data will appear here once transactions are made", + "@no_payment_methods_desc": {}, + "best_selling_products": "Best Selling Products", + "@best_selling_products": {}, + "highest_sales_ranking": "Highest sales ranking", + "@highest_sales_ranking": {}, + "best_seller": "Best Seller", + "@best_seller": {}, + "top_performer": "Top Performer", + "@top_performer": {}, + "account_information": "Account Information", + "@account_information": {}, + "member_since": "Member Since", + "@member_since": {}, + "edit_profile": "Edit Profile", + "@edit_profile": {}, + "edit_profile_desc": "Update your profile information", + "@edit_profile_desc": {}, + "change_password": "Change Password", + "@change_password": {}, + "change_password_desc": "Update your password", + "@change_password_desc": {}, + "business_settings": "Business Settings", + "@business_settings": {}, + "outlet_information": "Outlet Information", + "@outlet_information": {}, + "outlet_informatio_desc": "Manage your outlet details", + "@outlet_informatio_desc": {}, + "staff_management": "Staff Management", + "@staff_management": {}, + "staff_management_desc": "Manage your staff", + "@staff_management_desc": {}, + "manage_your_products": "Manage Your Products", + "@manage_your_products": {}, + "download_report": "Download Report", + "@download_report": {}, + "download_report_desc": "Download your sales report or inventory report", + "@download_report_desc": {}, + "app_settings": "App Settings", + "@app_settings": {}, + "language_desc": "Select your preferred language", + "@language_desc": {}, + "support": "Support", + "@support": {}, + "help_center": "Help Center", + "@help_center": {}, + "help_center_desc": "Get help from our support team", + "@help_center_desc": {}, + "about": "About", + "@about": {}, + "about_desc": "Learn more about our app", + "@about_desc": {}, + "logout": "Logout", + "@logout": {}, + "logout_desc": "Logout of your account", + "@logout_desc": {}, + "save": "Save", + "@save": {}, + "name": "Name", + "@name": {}, + "name_placeholder": "Please enter your name", + "@name_placeholder": {}, + "password_changed": "Password Changed", + "@password_changed": {}, + "current_password": "Current Password", + "@current_password": {}, + "current_password_placeholder": "Please enter your current password", + "@current_password_placeholder": {}, + "new_password": "New Password", + "@new_password": {}, + "new_password_placeholder": "Please enter your new password", + "@new_password_placeholder": {}, + "new_password_not_same": "New password cannot be same as current password", + "@new_password_not_same": {}, + "general_information": "General Information", + "@general_information": {}, + "address": "Address", + "@address": {}, + "phone_number": "Phone Number", + "@phone_number": {}, + "currency": "Currency", + "@currency": {}, + "tax_rate": "Tax Rate", + "@tax_rate": {}, + "status_text": "Status", + "@status_text": {}, + "coming_soon": "Coming Soon", + "@coming_soon": {}, + "coming_soon_desc": "Something amazing is brewing!\nStay tuned for the big reveal.", + "@coming_soon_desc": {}, + "transaction_report": "Transaction Report", + "@transaction_report": {}, + "transaction_report_desc": "Export all transaction data with detailed analytics", + "@transaction_report_desc": {}, + "invetory_report": "Inventory Report", + "@invetory_report": {}, + "invetory_report_desc": "Export inventory and stock data with trends", + "@invetory_report_desc": {}, + "about_app": "About App", + "@about_app": {}, + "app_information": "App Information", + "@app_information": {}, + "app_name": "App Name", + "@app_name": {}, + "build_number": "Build Number", + "@build_number": {}, + "package_name": "Package Name", + "@package_name": {}, + "device": "Device", + "@device": {} } diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index ed3af6d..601dd7d 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -49,5 +49,385 @@ "profile": "Profil", "@profile": {}, "sales_today": "Penjualan hari ini", - "@sales_today": {} + "@sales_today": {}, + "order": "Pesanan", + "@order": {}, + "sales": "Penjualan", + "@sales": {}, + "finance": "Keuangan", + "@finance": {}, + "product": "Produk", + "@product": {}, + "form": "Form", + "@form": {}, + "schedule": "Jadwal", + "@schedule": {}, + "inventory": "Inventaris", + "@inventory": {}, + "customer": "Pelanggan", + "@customer": {}, + "purchase": "Pembelian", + "@purchase": {}, + "today_summary": "Ringkasan Hari Ini", + "@today_summary": {}, + "today": "Hari ini", + "@today": {}, + "new_customer": "Pelanggan baru", + "@new_customer": {}, + "refund": "Pengembalian dana", + "@refund": {}, + "void_text": "Dibatalkan", + "@void_text": {}, + "increase": "Bertambah", + "@increase": {}, + "today_top_product": "Produk teratas hari ini", + "@today_top_product": {}, + "rank": "Pangkat", + "@rank": {}, + "quantity_sold": "Kuantiti Terjual", + "@quantity_sold": {}, + "total_orders": "Jumlah Pesanan", + "@total_orders": {}, + "average_price": "Harga Rata-rata", + "@average_price": {}, + "perfomance": "Performa", + "@perfomance": {}, + "total_sales": "Jumlah Penjualan", + "@total_sales": {}, + "total_items": "Jumlah Barang", + "@total_items": {}, + "summary": "Ringkasan", + "@summary": {}, + "net_sales": "Penjualan Bersih", + "@net_sales": {}, + "daily_breakdown": "Perincian Harian", + "@daily_breakdown": {}, + "orders": "Pesanan", + "@orders": {}, + "items": "Barang", + "@items": {}, + "tax": "Pajak", + "@tax": {}, + "discount": "Diskon", + "@discount": {}, + "total_purchase": "Jumlah Pembelian", + "@total_purchase": {}, + "pending_order": "Pesanan Menunggu", + "@pending_order": {}, + "history_purchase": "Riwayat Pembelian", + "@history_purchase": {}, + "all": "Semua", + "@all": {}, + "select_date_range": "Pilih Rentang Tanggal", + "@select_date_range": {}, + "no_date_selected": "Belum ada tanggal dipilih", + "@no_date_selected": {}, + "selected_date": "Tanggal Terpilih", + "@selected_date": {}, + "select": "Pilih", + "@select": {}, + "cancel": "Batal", + "@cancel": {}, + "total_revenue": "Jumlah Pendapatan", + "@total_revenue": {}, + "total_expenditures": "Jumlah Pengeluaran", + "@total_expenditures": {}, + "net_profit": "Keuntungan Bersih", + "@net_profit": {}, + "margin_profit": "Keuntungan Margin", + "@margin_profit": {}, + "cash_flow_analysis": "Analisis Arus Kas", + "@cash_flow_analysis": {}, + "cash_in": "Uang Masuk", + "@cash_in": {}, + "cash_out": "Uang Keluar", + "@cash_out": {}, + "net_flow": "Arus Bersih", + "@net_flow": {}, + "cash_flow_chart": "Grafik Cash Flow ${days} Hari Terakhir", + "@cash_flow_chart": { + "placeholders": { + "days": { + "type": "int", + "example": "7" + } + } + }, + "profit_loss_detail": "Detail Untung & Rugi", + "@profit_loss_detail": {}, + "gross_sales": "Penjualan Kotor", + "@gross_sales": {}, + "return_text": "Retur", + "@return_text": {}, + "cogs": "HPP", + "@cogs": {}, + "cost_of_goods_sold": "Harga Pokok Penjualan", + "@cost_of_goods_sold": {}, + "gross_profit": "Keuntungan Kotor", + "@gross_profit": {}, + "operating_costs": "Biaya Operasional", + "@operating_costs": {}, + "sales_category": "Kategori Penjualan", + "@sales_category": {}, + "unit": "Unit", + "@unit": {}, + "category_no_data": "Belum ada data kategori", + "@category_no_data": {}, + "category_no_data_desc": "Data kategori penjualan akan muncul di sini", + "@category_no_data_desc": {}, + "product_analytic": "Analisis Produk", + "@product_analytic": {}, + "view_all": "Lihat Semua", + "@view_all": {}, + "sold": "Terjual", + "@sold": {}, + "revenue": "Pendapatan", + "@revenue": {}, + "cost": "Biaya", + "@cost": {}, + "profit_per_unit": "Keuntungan per unit", + "@profit_per_unit": {}, + "total_sold": "Jumlah Terjual", + "@total_sold": {}, + "ingredients": "Bahan Baku", + "@ingredients": {}, + "low_stock": "Stok Rendah", + "@low_stock": {}, + "zero_stock": "Stok Kosong", + "@zero_stock": {}, + "stock": "Stok", + "@stock": {}, + "price": "Harga", + "@price": {}, + "out_of_stock": "Stok habis", + "@out_of_stock": {}, + "out_of_stock_desc": "Produk tidak tersedia untuk dijual", + "@out_of_stock_desc": {}, + "in_text": "Masuk", + "@in_text": {}, + "out_text": "Keluar", + "@out_text": {}, + "available": "Tersedia", + "@available": {}, + "total_products": "Jumlah Produk", + "@total_products": {}, + "total_ingredients": "Jumlah Bahan Baku", + "@total_ingredients": {}, + "products": "Produk", + "@products": {}, + "value_text": "Nilai", + "@value_text": {}, + "low_stock_desc": "Segera reorder minimal {stock} pcs", + "@low_stock_desc": { + "placeholders": { + "stock": { + "type": "String", + "example": "0" + } + } + }, + "joined": "Bergabung", + "@joined": {}, + "ago": "lalu", + "@ago": {}, + "active": "Aktif", + "@active": {}, + "inactive": "Tidak Aktif", + "@inactive": {}, + "total_amount": "Jumlah Total", + "@total_amount": {}, + "table": "Meja", + "@table": {}, + "remaining": "Sisa", + "@remaining": {}, + "payment": "Pembayaran", + "@payment": {}, + "completed": "Selesai", + "@completed": {}, + "pending": "Menunggu", + "@pending": {}, + "no_order_with_status": "Tidak ada pesanan {status} yang ditemukan", + "@no_order_with_status": { + "placeholders": { + "status": { + "type": "String", + "example": "pending" + } + } + }, + "order_details": "Detail Pesanan", + "@order_details": {}, + "order_number": "Nomor Pesanan", + "@order_number": {}, + "order_status": "Status Pesanan", + "@order_status": {}, + "order_information": "Informasi Pesanan", + "@order_information": {}, + "order_type": "Tipe Pesanan", + "@order_type": {}, + "payment_status": "Status Pembayaran", + "@payment_status": {}, + "created": "Dibuat", + "@created": {}, + "order_item": "Item Pesanan", + "@order_item": {}, + "item": "Item", + "@item": {}, + "each": "Setiap", + "@each": {}, + "total_item": "Jumlah Item", + "@total_item": {}, + "payment_summary": "Ringkasan Pembayaran", + "@payment_summary": {}, + "subtotal": "Subtotal", + "@subtotal": {}, + "paid": "Dibayar", + "@paid": {}, + "total": "Jumlah", + "@total": {}, + "payment_method": "Metode Pembayaran", + "@payment_method": {}, + "dine_in": "Makan di Tempat", + "@dine_in": {}, + "dine_in_experience": "Pengalaman Bersantap Di Tempat", + "@dine_in_experience": {}, + "note": "Catatan", + "@note": {}, + "sales_chart": "Bagan Penjualan", + "@sales_chart": {}, + "no_data_available": "Tidak Ada Data Tersedia", + "@no_data_available": {}, + "total_days_overview": "ikhtisar {days} hari", + "@total_days_overview": { + "placeholders": { + "days": { + "type": "int", + "example": "0" + } + } + }, + "sales_data": "Data Penjualan", + "@sales_data": {}, + "no_sales_data": "Tidak ada data penjualan", + "@no_sales_data": {}, + "no_sales_data_desc": "Data penjualan akan muncul di sini setelah transaksi dicatat", + "@no_sales_data_desc": {}, + "payment_methods": "Metode Pembayaran", + "@payment_methods": {}, + "payment_methods_desc": "Rincian pendapatan berdasarkan metode pembayaran ", + "@payment_methods_desc": {}, + "revenue_share": "Bagi Hasil", + "@revenue_share": {}, + "no_payment_methods": "Tidak Ada Metode Pembayaran", + "@no_payment_methods": {}, + "no_payment_methods_desc": "Data metode pembayaran akan muncul di sini setelah transaksi dilakukan", + "@no_payment_methods_desc": {}, + "best_selling_products": "Produk Terlaris", + "@best_selling_products": {}, + "highest_sales_ranking": "Ranking penjualan tertinggi", + "@highest_sales_ranking": {}, + "best_seller": "Penjual Terbaik", + "@best_seller": {}, + "top_performer": "Berkinerja Terbaik", + "@top_performer": {}, + "account_information": "Informasi Akun", + "@account_information": {}, + "member_since": "Member Sejak", + "@member_since": {}, + "edit_profile": "Ubah Profil", + "@edit_profile": {}, + "edit_profile_desc": "Update informasi profil Anda", + "@edit_profile_desc": {}, + "change_password": "Ubah Kata Sandi", + "@change_password": {}, + "change_password_desc": "Update kata sandi Anda", + "@change_password_desc": {}, + "business_settings": "Pengaturan Bisnis", + "@business_settings": {}, + "outlet_information": "Informasi Outlet", + "@outlet_information": {}, + "outlet_informatio_desc": "Kelola informasi outlet Anda", + "@outlet_informatio_desc": {}, + "staff_management": "Manajemen Staff", + "@staff_management": {}, + "staff_management_desc": "Kelola staff Anda", + "@staff_management_desc": {}, + "manage_your_products": "Kelola Produk Anda", + "@manage_your_products": {}, + "download_report": "Unduh Laporan", + "@download_report": {}, + "download_report_desc": "Unduh laporan penjualan atau stok", + "@download_report_desc": {}, + "app_settings": "Pengaturan Aplikasi", + "@app_settings": {}, + "language_desc": "Pilih bahasa aplikasi Anda", + "@language_desc": {}, + "support": "Dukungan", + "@support": {}, + "help_center": "Pusat Bantuan", + "@help_center": {}, + "help_center_desc": "Hubungi tim dukungan kami", + "@help_center_desc": {}, + "about": "Tentang", + "@about": {}, + "about_desc": "Tentang Aplikasi", + "@about_desc": {}, + "logout": "Keluar", + "@logout": {}, + "logout_desc": "Keluar dari akun Anda", + "@logout_desc": {}, + "save": "Simpan", + "@save": {}, + "name": "Nama", + "@name": {}, + "name_placeholder": "Masukkan nama Anda", + "@name_placeholder": {}, + "password_changed": "Kata Sandi Berubah", + "@password_changed": {}, + "current_password": "Kata Sandi Saat Ini", + "@current_password": {}, + "current_password_placeholder": "Masukkan kata sandi saat ini", + "@current_password_placeholder": {}, + "new_password": "Kata Sandi Baru", + "@new_password": {}, + "new_password_placeholder": "Masukkan kata sandi baru", + "@new_password_placeholder": {}, + "new_password_not_same": "Kata Sandi Baru Tidak Sama Dengan Kata Sandi Saat Ini", + "@new_password_not_same": {}, + "general_information": "Informasi Umum", + "@general_information": {}, + "address": "Alamat", + "@address": {}, + "phone_number": "Nomor Telepon", + "@phone_number": {}, + "currency": "Mata Uang", + "@currency": {}, + "tax_rate": "Tarif Pajak", + "@tax_rate": {}, + "status_text": "Status", + "@status_text": {}, + "coming_soon": "Segera Hadir", + "@coming_soon": {}, + "coming_soon_desc": "Sesuatu yang menakjubkan sedang terjadi!\nNantikan pengungkapan besarnya.", + "@coming_soon_desc": {}, + "transaction_report": "Laporan Transaksi", + "@transaction_report": {}, + "transaction_report_desc": "Ekspor semua data transaksi dengan analitik terperinci", + "@transaction_report_desc": {}, + "invetory_report": "Laporan Inventaris", + "@invetory_report": {}, + "invetory_report_desc": "Ekspor inventaris dan data stok dengan tren", + "@invetory_report_desc": {}, + "about_app": "Tentang Aplikasi", + "@about_app": {}, + "app_information": "Informasi Aplikasi", + "@app_information": {}, + "app_name": "Nama Aplikasi", + "@app_name": {}, + "build_number": "Nomor Build", + "@build_number": {}, + "package_name": "Nama Paket", + "@package_name": {}, + "device": "Perangkat", + "@device": {} } diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index c03e6a4..2dd685d 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -244,6 +244,1062 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Sales today'** String get sales_today; + + /// No description provided for @order. + /// + /// In en, this message translates to: + /// **'Order'** + String get order; + + /// No description provided for @sales. + /// + /// In en, this message translates to: + /// **'Sales'** + String get sales; + + /// No description provided for @finance. + /// + /// In en, this message translates to: + /// **'Finance'** + String get finance; + + /// No description provided for @product. + /// + /// In en, this message translates to: + /// **'Product'** + String get product; + + /// No description provided for @form. + /// + /// In en, this message translates to: + /// **'Form'** + String get form; + + /// No description provided for @schedule. + /// + /// In en, this message translates to: + /// **'Schedule'** + String get schedule; + + /// No description provided for @inventory. + /// + /// In en, this message translates to: + /// **'Inventory'** + String get inventory; + + /// No description provided for @customer. + /// + /// In en, this message translates to: + /// **'Customer'** + String get customer; + + /// No description provided for @purchase. + /// + /// In en, this message translates to: + /// **'Purchase'** + String get purchase; + + /// No description provided for @today_summary. + /// + /// In en, this message translates to: + /// **'Today\'s Summary'** + String get today_summary; + + /// No description provided for @today. + /// + /// In en, this message translates to: + /// **'Today'** + String get today; + + /// No description provided for @new_customer. + /// + /// In en, this message translates to: + /// **'New Customer'** + String get new_customer; + + /// No description provided for @refund. + /// + /// In en, this message translates to: + /// **'Refund'** + String get refund; + + /// No description provided for @void_text. + /// + /// In en, this message translates to: + /// **'Void'** + String get void_text; + + /// No description provided for @increase. + /// + /// In en, this message translates to: + /// **'Increase'** + String get increase; + + /// No description provided for @today_top_product. + /// + /// In en, this message translates to: + /// **'Today\'s Top Product'** + String get today_top_product; + + /// No description provided for @rank. + /// + /// In en, this message translates to: + /// **'Rank'** + String get rank; + + /// No description provided for @quantity_sold. + /// + /// In en, this message translates to: + /// **'Quantity Sold'** + String get quantity_sold; + + /// No description provided for @total_orders. + /// + /// In en, this message translates to: + /// **'Total Orders'** + String get total_orders; + + /// No description provided for @average_price. + /// + /// In en, this message translates to: + /// **'Average Price'** + String get average_price; + + /// No description provided for @perfomance. + /// + /// In en, this message translates to: + /// **'Performance'** + String get perfomance; + + /// No description provided for @total_sales. + /// + /// In en, this message translates to: + /// **'Total Sales'** + String get total_sales; + + /// No description provided for @total_items. + /// + /// In en, this message translates to: + /// **'Total Items'** + String get total_items; + + /// No description provided for @summary. + /// + /// In en, this message translates to: + /// **'Summary'** + String get summary; + + /// No description provided for @net_sales. + /// + /// In en, this message translates to: + /// **'Net Sales'** + String get net_sales; + + /// No description provided for @daily_breakdown. + /// + /// In en, this message translates to: + /// **'Daily Breakdown'** + String get daily_breakdown; + + /// No description provided for @orders. + /// + /// In en, this message translates to: + /// **'Orders'** + String get orders; + + /// No description provided for @items. + /// + /// In en, this message translates to: + /// **'Items'** + String get items; + + /// No description provided for @tax. + /// + /// In en, this message translates to: + /// **'Tax'** + String get tax; + + /// No description provided for @discount. + /// + /// In en, this message translates to: + /// **'Discount'** + String get discount; + + /// No description provided for @total_purchase. + /// + /// In en, this message translates to: + /// **'Total Purchase'** + String get total_purchase; + + /// No description provided for @pending_order. + /// + /// In en, this message translates to: + /// **'Pending Order'** + String get pending_order; + + /// No description provided for @history_purchase. + /// + /// In en, this message translates to: + /// **'History Purchase'** + String get history_purchase; + + /// No description provided for @all. + /// + /// In en, this message translates to: + /// **'All'** + String get all; + + /// No description provided for @select_date_range. + /// + /// In en, this message translates to: + /// **'Select Date Range'** + String get select_date_range; + + /// No description provided for @no_date_selected. + /// + /// In en, this message translates to: + /// **'No date has been selected yet'** + String get no_date_selected; + + /// No description provided for @selected_date. + /// + /// In en, this message translates to: + /// **'Selected Date'** + String get selected_date; + + /// No description provided for @select. + /// + /// In en, this message translates to: + /// **'Select'** + String get select; + + /// No description provided for @cancel. + /// + /// In en, this message translates to: + /// **'Cancel'** + String get cancel; + + /// No description provided for @total_revenue. + /// + /// In en, this message translates to: + /// **'Total Revenue'** + String get total_revenue; + + /// No description provided for @total_expenditures. + /// + /// In en, this message translates to: + /// **'Total Expenditures'** + String get total_expenditures; + + /// No description provided for @net_profit. + /// + /// In en, this message translates to: + /// **'Net Profit'** + String get net_profit; + + /// No description provided for @margin_profit. + /// + /// In en, this message translates to: + /// **'Margin Profit'** + String get margin_profit; + + /// No description provided for @cash_flow_analysis. + /// + /// In en, this message translates to: + /// **'Cash Flow Analysis'** + String get cash_flow_analysis; + + /// No description provided for @cash_in. + /// + /// In en, this message translates to: + /// **'Cash In'** + String get cash_in; + + /// No description provided for @cash_out. + /// + /// In en, this message translates to: + /// **'Cash Out'** + String get cash_out; + + /// No description provided for @net_flow. + /// + /// In en, this message translates to: + /// **'Net Flow'** + String get net_flow; + + /// No description provided for @cash_flow_chart. + /// + /// In en, this message translates to: + /// **'Cash Flow Chart for {days} Last Days'** + String cash_flow_chart(int days); + + /// No description provided for @profit_loss_detail. + /// + /// In en, this message translates to: + /// **'Profit & Loss Details'** + String get profit_loss_detail; + + /// No description provided for @gross_sales. + /// + /// In en, this message translates to: + /// **'Gross Sales'** + String get gross_sales; + + /// No description provided for @return_text. + /// + /// In en, this message translates to: + /// **'Return'** + String get return_text; + + /// No description provided for @cogs. + /// + /// In en, this message translates to: + /// **'COGS'** + String get cogs; + + /// No description provided for @cost_of_goods_sold. + /// + /// In en, this message translates to: + /// **'Cost of goods sold'** + String get cost_of_goods_sold; + + /// No description provided for @gross_profit. + /// + /// In en, this message translates to: + /// **'Gross Profit'** + String get gross_profit; + + /// No description provided for @operating_costs. + /// + /// In en, this message translates to: + /// **'Operating Costs'** + String get operating_costs; + + /// No description provided for @sales_category. + /// + /// In en, this message translates to: + /// **'Sales Category'** + String get sales_category; + + /// No description provided for @unit. + /// + /// In en, this message translates to: + /// **'Unit'** + String get unit; + + /// No description provided for @category_no_data. + /// + /// In en, this message translates to: + /// **'There are no data categories yet'** + String get category_no_data; + + /// No description provided for @category_no_data_desc. + /// + /// In en, this message translates to: + /// **'Sales category data will appear here'** + String get category_no_data_desc; + + /// No description provided for @product_analytic. + /// + /// In en, this message translates to: + /// **'Product Analytic'** + String get product_analytic; + + /// No description provided for @view_all. + /// + /// In en, this message translates to: + /// **'View All'** + String get view_all; + + /// No description provided for @sold. + /// + /// In en, this message translates to: + /// **'Sold'** + String get sold; + + /// No description provided for @revenue. + /// + /// In en, this message translates to: + /// **'Revenue'** + String get revenue; + + /// No description provided for @cost. + /// + /// In en, this message translates to: + /// **'Cost'** + String get cost; + + /// No description provided for @profit_per_unit. + /// + /// In en, this message translates to: + /// **'Profit per unit'** + String get profit_per_unit; + + /// No description provided for @total_sold. + /// + /// In en, this message translates to: + /// **'Total Sold'** + String get total_sold; + + /// No description provided for @ingredients. + /// + /// In en, this message translates to: + /// **'Ingredients'** + String get ingredients; + + /// No description provided for @low_stock. + /// + /// In en, this message translates to: + /// **'Low Stock'** + String get low_stock; + + /// No description provided for @zero_stock. + /// + /// In en, this message translates to: + /// **'Zero Stock'** + String get zero_stock; + + /// No description provided for @stock. + /// + /// In en, this message translates to: + /// **'Stock'** + String get stock; + + /// No description provided for @price. + /// + /// In en, this message translates to: + /// **'Price'** + String get price; + + /// No description provided for @out_of_stock. + /// + /// In en, this message translates to: + /// **'Out of stock'** + String get out_of_stock; + + /// No description provided for @out_of_stock_desc. + /// + /// In en, this message translates to: + /// **'Product not available for sale'** + String get out_of_stock_desc; + + /// No description provided for @in_text. + /// + /// In en, this message translates to: + /// **'In'** + String get in_text; + + /// No description provided for @out_text. + /// + /// In en, this message translates to: + /// **'Out'** + String get out_text; + + /// No description provided for @available. + /// + /// In en, this message translates to: + /// **'Available'** + String get available; + + /// No description provided for @total_products. + /// + /// In en, this message translates to: + /// **'Total Products'** + String get total_products; + + /// No description provided for @total_ingredients. + /// + /// In en, this message translates to: + /// **'Total Ingredients'** + String get total_ingredients; + + /// No description provided for @products. + /// + /// In en, this message translates to: + /// **'Products'** + String get products; + + /// No description provided for @value_text. + /// + /// In en, this message translates to: + /// **'Value'** + String get value_text; + + /// No description provided for @low_stock_desc. + /// + /// In en, this message translates to: + /// **'Immediately reorder at least {stock} pcs'** + String low_stock_desc(String stock); + + /// No description provided for @joined. + /// + /// In en, this message translates to: + /// **'Joined'** + String get joined; + + /// No description provided for @ago. + /// + /// In en, this message translates to: + /// **'ago'** + String get ago; + + /// No description provided for @active. + /// + /// In en, this message translates to: + /// **'Active'** + String get active; + + /// No description provided for @inactive. + /// + /// In en, this message translates to: + /// **'Inactive'** + String get inactive; + + /// No description provided for @total_amount. + /// + /// In en, this message translates to: + /// **'Total Amount'** + String get total_amount; + + /// No description provided for @table. + /// + /// In en, this message translates to: + /// **'Table'** + String get table; + + /// No description provided for @remaining. + /// + /// In en, this message translates to: + /// **'Remaining'** + String get remaining; + + /// No description provided for @payment. + /// + /// In en, this message translates to: + /// **'Payment'** + String get payment; + + /// No description provided for @completed. + /// + /// In en, this message translates to: + /// **'Completed'** + String get completed; + + /// No description provided for @pending. + /// + /// In en, this message translates to: + /// **'Pending'** + String get pending; + + /// No description provided for @no_order_with_status. + /// + /// In en, this message translates to: + /// **'No {status} orders found'** + String no_order_with_status(String status); + + /// No description provided for @order_details. + /// + /// In en, this message translates to: + /// **'Order Details'** + String get order_details; + + /// No description provided for @order_number. + /// + /// In en, this message translates to: + /// **'Order Number'** + String get order_number; + + /// No description provided for @order_status. + /// + /// In en, this message translates to: + /// **'Order Status'** + String get order_status; + + /// No description provided for @order_information. + /// + /// In en, this message translates to: + /// **'Order Information'** + String get order_information; + + /// No description provided for @order_type. + /// + /// In en, this message translates to: + /// **'Order Type'** + String get order_type; + + /// No description provided for @payment_status. + /// + /// In en, this message translates to: + /// **'Payment Status'** + String get payment_status; + + /// No description provided for @created. + /// + /// In en, this message translates to: + /// **'Created'** + String get created; + + /// No description provided for @order_item. + /// + /// In en, this message translates to: + /// **'Order Item'** + String get order_item; + + /// No description provided for @item. + /// + /// In en, this message translates to: + /// **'Item'** + String get item; + + /// No description provided for @each. + /// + /// In en, this message translates to: + /// **'Each'** + String get each; + + /// No description provided for @total_item. + /// + /// In en, this message translates to: + /// **'Total Item'** + String get total_item; + + /// No description provided for @payment_summary. + /// + /// In en, this message translates to: + /// **'Payment Summary'** + String get payment_summary; + + /// No description provided for @subtotal. + /// + /// In en, this message translates to: + /// **'Subtotal'** + String get subtotal; + + /// No description provided for @paid. + /// + /// In en, this message translates to: + /// **'Paid'** + String get paid; + + /// No description provided for @total. + /// + /// In en, this message translates to: + /// **'Total'** + String get total; + + /// No description provided for @payment_method. + /// + /// In en, this message translates to: + /// **'Payment Method'** + String get payment_method; + + /// No description provided for @dine_in. + /// + /// In en, this message translates to: + /// **'Dine In'** + String get dine_in; + + /// No description provided for @dine_in_experience. + /// + /// In en, this message translates to: + /// **'Dine In Experience'** + String get dine_in_experience; + + /// No description provided for @note. + /// + /// In en, this message translates to: + /// **'Note'** + String get note; + + /// No description provided for @sales_chart. + /// + /// In en, this message translates to: + /// **'Sales Chart'** + String get sales_chart; + + /// No description provided for @no_data_available. + /// + /// In en, this message translates to: + /// **'No Data Avaiable'** + String get no_data_available; + + /// No description provided for @total_days_overview. + /// + /// In en, this message translates to: + /// **'{days} days overview'** + String total_days_overview(int days); + + /// No description provided for @sales_data. + /// + /// In en, this message translates to: + /// **'Sales Data'** + String get sales_data; + + /// No description provided for @no_sales_data. + /// + /// In en, this message translates to: + /// **'No Sales Data'** + String get no_sales_data; + + /// No description provided for @no_sales_data_desc. + /// + /// In en, this message translates to: + /// **'Sales data will appear here once transactions are recorded'** + String get no_sales_data_desc; + + /// No description provided for @payment_methods. + /// + /// In en, this message translates to: + /// **'Payment Methods'** + String get payment_methods; + + /// No description provided for @payment_methods_desc. + /// + /// In en, this message translates to: + /// **'Revenue breakdown by payment method '** + String get payment_methods_desc; + + /// No description provided for @revenue_share. + /// + /// In en, this message translates to: + /// **'Revenue Share'** + String get revenue_share; + + /// No description provided for @no_payment_methods. + /// + /// In en, this message translates to: + /// **'No Payment Methods'** + String get no_payment_methods; + + /// No description provided for @no_payment_methods_desc. + /// + /// In en, this message translates to: + /// **'Payment method data will appear here once transactions are made'** + String get no_payment_methods_desc; + + /// No description provided for @best_selling_products. + /// + /// In en, this message translates to: + /// **'Best Selling Products'** + String get best_selling_products; + + /// No description provided for @highest_sales_ranking. + /// + /// In en, this message translates to: + /// **'Highest sales ranking'** + String get highest_sales_ranking; + + /// No description provided for @best_seller. + /// + /// In en, this message translates to: + /// **'Best Seller'** + String get best_seller; + + /// No description provided for @top_performer. + /// + /// In en, this message translates to: + /// **'Top Performer'** + String get top_performer; + + /// No description provided for @account_information. + /// + /// In en, this message translates to: + /// **'Account Information'** + String get account_information; + + /// No description provided for @member_since. + /// + /// In en, this message translates to: + /// **'Member Since'** + String get member_since; + + /// No description provided for @edit_profile. + /// + /// In en, this message translates to: + /// **'Edit Profile'** + String get edit_profile; + + /// No description provided for @edit_profile_desc. + /// + /// In en, this message translates to: + /// **'Update your profile information'** + String get edit_profile_desc; + + /// No description provided for @change_password. + /// + /// In en, this message translates to: + /// **'Change Password'** + String get change_password; + + /// No description provided for @change_password_desc. + /// + /// In en, this message translates to: + /// **'Update your password'** + String get change_password_desc; + + /// No description provided for @business_settings. + /// + /// In en, this message translates to: + /// **'Business Settings'** + String get business_settings; + + /// No description provided for @outlet_information. + /// + /// In en, this message translates to: + /// **'Outlet Information'** + String get outlet_information; + + /// No description provided for @outlet_informatio_desc. + /// + /// In en, this message translates to: + /// **'Manage your outlet details'** + String get outlet_informatio_desc; + + /// No description provided for @staff_management. + /// + /// In en, this message translates to: + /// **'Staff Management'** + String get staff_management; + + /// No description provided for @staff_management_desc. + /// + /// In en, this message translates to: + /// **'Manage your staff'** + String get staff_management_desc; + + /// No description provided for @manage_your_products. + /// + /// In en, this message translates to: + /// **'Manage Your Products'** + String get manage_your_products; + + /// No description provided for @download_report. + /// + /// In en, this message translates to: + /// **'Download Report'** + String get download_report; + + /// No description provided for @download_report_desc. + /// + /// In en, this message translates to: + /// **'Download your sales report or inventory report'** + String get download_report_desc; + + /// No description provided for @app_settings. + /// + /// In en, this message translates to: + /// **'App Settings'** + String get app_settings; + + /// No description provided for @language_desc. + /// + /// In en, this message translates to: + /// **'Select your preferred language'** + String get language_desc; + + /// No description provided for @support. + /// + /// In en, this message translates to: + /// **'Support'** + String get support; + + /// No description provided for @help_center. + /// + /// In en, this message translates to: + /// **'Help Center'** + String get help_center; + + /// No description provided for @help_center_desc. + /// + /// In en, this message translates to: + /// **'Get help from our support team'** + String get help_center_desc; + + /// No description provided for @about. + /// + /// In en, this message translates to: + /// **'About'** + String get about; + + /// No description provided for @about_desc. + /// + /// In en, this message translates to: + /// **'Learn more about our app'** + String get about_desc; + + /// No description provided for @logout. + /// + /// In en, this message translates to: + /// **'Logout'** + String get logout; + + /// No description provided for @logout_desc. + /// + /// In en, this message translates to: + /// **'Logout of your account'** + String get logout_desc; + + /// No description provided for @save. + /// + /// In en, this message translates to: + /// **'Save'** + String get save; + + /// No description provided for @name. + /// + /// In en, this message translates to: + /// **'Name'** + String get name; + + /// No description provided for @name_placeholder. + /// + /// In en, this message translates to: + /// **'Please enter your name'** + String get name_placeholder; + + /// No description provided for @password_changed. + /// + /// In en, this message translates to: + /// **'Password Changed'** + String get password_changed; + + /// No description provided for @current_password. + /// + /// In en, this message translates to: + /// **'Current Password'** + String get current_password; + + /// No description provided for @current_password_placeholder. + /// + /// In en, this message translates to: + /// **'Please enter your current password'** + String get current_password_placeholder; + + /// No description provided for @new_password. + /// + /// In en, this message translates to: + /// **'New Password'** + String get new_password; + + /// No description provided for @new_password_placeholder. + /// + /// In en, this message translates to: + /// **'Please enter your new password'** + String get new_password_placeholder; + + /// No description provided for @new_password_not_same. + /// + /// In en, this message translates to: + /// **'New password cannot be same as current password'** + String get new_password_not_same; + + /// No description provided for @general_information. + /// + /// In en, this message translates to: + /// **'General Information'** + String get general_information; + + /// No description provided for @address. + /// + /// In en, this message translates to: + /// **'Address'** + String get address; + + /// No description provided for @phone_number. + /// + /// In en, this message translates to: + /// **'Phone Number'** + String get phone_number; + + /// No description provided for @currency. + /// + /// In en, this message translates to: + /// **'Currency'** + String get currency; + + /// No description provided for @tax_rate. + /// + /// In en, this message translates to: + /// **'Tax Rate'** + String get tax_rate; + + /// No description provided for @status_text. + /// + /// In en, this message translates to: + /// **'Status'** + String get status_text; + + /// No description provided for @coming_soon. + /// + /// In en, this message translates to: + /// **'Coming Soon'** + String get coming_soon; + + /// No description provided for @coming_soon_desc. + /// + /// In en, this message translates to: + /// **'Something amazing is brewing!\nStay tuned for the big reveal.'** + String get coming_soon_desc; + + /// No description provided for @transaction_report. + /// + /// In en, this message translates to: + /// **'Transaction Report'** + String get transaction_report; + + /// No description provided for @transaction_report_desc. + /// + /// In en, this message translates to: + /// **'Export all transaction data with detailed analytics'** + String get transaction_report_desc; + + /// No description provided for @invetory_report. + /// + /// In en, this message translates to: + /// **'Inventory Report'** + String get invetory_report; + + /// No description provided for @invetory_report_desc. + /// + /// In en, this message translates to: + /// **'Export inventory and stock data with trends'** + String get invetory_report_desc; + + /// No description provided for @about_app. + /// + /// In en, this message translates to: + /// **'About App'** + String get about_app; + + /// No description provided for @app_information. + /// + /// In en, this message translates to: + /// **'App Information'** + String get app_information; + + /// No description provided for @app_name. + /// + /// In en, this message translates to: + /// **'App Name'** + String get app_name; + + /// No description provided for @build_number. + /// + /// In en, this message translates to: + /// **'Build Number'** + String get build_number; + + /// No description provided for @package_name. + /// + /// In en, this message translates to: + /// **'Package Name'** + String get package_name; + + /// No description provided for @device. + /// + /// In en, this message translates to: + /// **'Device'** + String get device; } class _AppLocalizationsDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 07d2105..2883d3f 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -82,4 +82,540 @@ class AppLocalizationsEn extends AppLocalizations { @override String get sales_today => 'Sales today'; + + @override + String get order => 'Order'; + + @override + String get sales => 'Sales'; + + @override + String get finance => 'Finance'; + + @override + String get product => 'Product'; + + @override + String get form => 'Form'; + + @override + String get schedule => 'Schedule'; + + @override + String get inventory => 'Inventory'; + + @override + String get customer => 'Customer'; + + @override + String get purchase => 'Purchase'; + + @override + String get today_summary => 'Today\'s Summary'; + + @override + String get today => 'Today'; + + @override + String get new_customer => 'New Customer'; + + @override + String get refund => 'Refund'; + + @override + String get void_text => 'Void'; + + @override + String get increase => 'Increase'; + + @override + String get today_top_product => 'Today\'s Top Product'; + + @override + String get rank => 'Rank'; + + @override + String get quantity_sold => 'Quantity Sold'; + + @override + String get total_orders => 'Total Orders'; + + @override + String get average_price => 'Average Price'; + + @override + String get perfomance => 'Performance'; + + @override + String get total_sales => 'Total Sales'; + + @override + String get total_items => 'Total Items'; + + @override + String get summary => 'Summary'; + + @override + String get net_sales => 'Net Sales'; + + @override + String get daily_breakdown => 'Daily Breakdown'; + + @override + String get orders => 'Orders'; + + @override + String get items => 'Items'; + + @override + String get tax => 'Tax'; + + @override + String get discount => 'Discount'; + + @override + String get total_purchase => 'Total Purchase'; + + @override + String get pending_order => 'Pending Order'; + + @override + String get history_purchase => 'History Purchase'; + + @override + String get all => 'All'; + + @override + String get select_date_range => 'Select Date Range'; + + @override + String get no_date_selected => 'No date has been selected yet'; + + @override + String get selected_date => 'Selected Date'; + + @override + String get select => 'Select'; + + @override + String get cancel => 'Cancel'; + + @override + String get total_revenue => 'Total Revenue'; + + @override + String get total_expenditures => 'Total Expenditures'; + + @override + String get net_profit => 'Net Profit'; + + @override + String get margin_profit => 'Margin Profit'; + + @override + String get cash_flow_analysis => 'Cash Flow Analysis'; + + @override + String get cash_in => 'Cash In'; + + @override + String get cash_out => 'Cash Out'; + + @override + String get net_flow => 'Net Flow'; + + @override + String cash_flow_chart(int days) { + return 'Cash Flow Chart for $days Last Days'; + } + + @override + String get profit_loss_detail => 'Profit & Loss Details'; + + @override + String get gross_sales => 'Gross Sales'; + + @override + String get return_text => 'Return'; + + @override + String get cogs => 'COGS'; + + @override + String get cost_of_goods_sold => 'Cost of goods sold'; + + @override + String get gross_profit => 'Gross Profit'; + + @override + String get operating_costs => 'Operating Costs'; + + @override + String get sales_category => 'Sales Category'; + + @override + String get unit => 'Unit'; + + @override + String get category_no_data => 'There are no data categories yet'; + + @override + String get category_no_data_desc => 'Sales category data will appear here'; + + @override + String get product_analytic => 'Product Analytic'; + + @override + String get view_all => 'View All'; + + @override + String get sold => 'Sold'; + + @override + String get revenue => 'Revenue'; + + @override + String get cost => 'Cost'; + + @override + String get profit_per_unit => 'Profit per unit'; + + @override + String get total_sold => 'Total Sold'; + + @override + String get ingredients => 'Ingredients'; + + @override + String get low_stock => 'Low Stock'; + + @override + String get zero_stock => 'Zero Stock'; + + @override + String get stock => 'Stock'; + + @override + String get price => 'Price'; + + @override + String get out_of_stock => 'Out of stock'; + + @override + String get out_of_stock_desc => 'Product not available for sale'; + + @override + String get in_text => 'In'; + + @override + String get out_text => 'Out'; + + @override + String get available => 'Available'; + + @override + String get total_products => 'Total Products'; + + @override + String get total_ingredients => 'Total Ingredients'; + + @override + String get products => 'Products'; + + @override + String get value_text => 'Value'; + + @override + String low_stock_desc(String stock) { + return 'Immediately reorder at least $stock pcs'; + } + + @override + String get joined => 'Joined'; + + @override + String get ago => 'ago'; + + @override + String get active => 'Active'; + + @override + String get inactive => 'Inactive'; + + @override + String get total_amount => 'Total Amount'; + + @override + String get table => 'Table'; + + @override + String get remaining => 'Remaining'; + + @override + String get payment => 'Payment'; + + @override + String get completed => 'Completed'; + + @override + String get pending => 'Pending'; + + @override + String no_order_with_status(String status) { + return 'No $status orders found'; + } + + @override + String get order_details => 'Order Details'; + + @override + String get order_number => 'Order Number'; + + @override + String get order_status => 'Order Status'; + + @override + String get order_information => 'Order Information'; + + @override + String get order_type => 'Order Type'; + + @override + String get payment_status => 'Payment Status'; + + @override + String get created => 'Created'; + + @override + String get order_item => 'Order Item'; + + @override + String get item => 'Item'; + + @override + String get each => 'Each'; + + @override + String get total_item => 'Total Item'; + + @override + String get payment_summary => 'Payment Summary'; + + @override + String get subtotal => 'Subtotal'; + + @override + String get paid => 'Paid'; + + @override + String get total => 'Total'; + + @override + String get payment_method => 'Payment Method'; + + @override + String get dine_in => 'Dine In'; + + @override + String get dine_in_experience => 'Dine In Experience'; + + @override + String get note => 'Note'; + + @override + String get sales_chart => 'Sales Chart'; + + @override + String get no_data_available => 'No Data Avaiable'; + + @override + String total_days_overview(int days) { + return '$days days overview'; + } + + @override + String get sales_data => 'Sales Data'; + + @override + String get no_sales_data => 'No Sales Data'; + + @override + String get no_sales_data_desc => 'Sales data will appear here once transactions are recorded'; + + @override + String get payment_methods => 'Payment Methods'; + + @override + String get payment_methods_desc => 'Revenue breakdown by payment method '; + + @override + String get revenue_share => 'Revenue Share'; + + @override + String get no_payment_methods => 'No Payment Methods'; + + @override + String get no_payment_methods_desc => 'Payment method data will appear here once transactions are made'; + + @override + String get best_selling_products => 'Best Selling Products'; + + @override + String get highest_sales_ranking => 'Highest sales ranking'; + + @override + String get best_seller => 'Best Seller'; + + @override + String get top_performer => 'Top Performer'; + + @override + String get account_information => 'Account Information'; + + @override + String get member_since => 'Member Since'; + + @override + String get edit_profile => 'Edit Profile'; + + @override + String get edit_profile_desc => 'Update your profile information'; + + @override + String get change_password => 'Change Password'; + + @override + String get change_password_desc => 'Update your password'; + + @override + String get business_settings => 'Business Settings'; + + @override + String get outlet_information => 'Outlet Information'; + + @override + String get outlet_informatio_desc => 'Manage your outlet details'; + + @override + String get staff_management => 'Staff Management'; + + @override + String get staff_management_desc => 'Manage your staff'; + + @override + String get manage_your_products => 'Manage Your Products'; + + @override + String get download_report => 'Download Report'; + + @override + String get download_report_desc => 'Download your sales report or inventory report'; + + @override + String get app_settings => 'App Settings'; + + @override + String get language_desc => 'Select your preferred language'; + + @override + String get support => 'Support'; + + @override + String get help_center => 'Help Center'; + + @override + String get help_center_desc => 'Get help from our support team'; + + @override + String get about => 'About'; + + @override + String get about_desc => 'Learn more about our app'; + + @override + String get logout => 'Logout'; + + @override + String get logout_desc => 'Logout of your account'; + + @override + String get save => 'Save'; + + @override + String get name => 'Name'; + + @override + String get name_placeholder => 'Please enter your name'; + + @override + String get password_changed => 'Password Changed'; + + @override + String get current_password => 'Current Password'; + + @override + String get current_password_placeholder => 'Please enter your current password'; + + @override + String get new_password => 'New Password'; + + @override + String get new_password_placeholder => 'Please enter your new password'; + + @override + String get new_password_not_same => 'New password cannot be same as current password'; + + @override + String get general_information => 'General Information'; + + @override + String get address => 'Address'; + + @override + String get phone_number => 'Phone Number'; + + @override + String get currency => 'Currency'; + + @override + String get tax_rate => 'Tax Rate'; + + @override + String get status_text => 'Status'; + + @override + String get coming_soon => 'Coming Soon'; + + @override + String get coming_soon_desc => 'Something amazing is brewing!\nStay tuned for the big reveal.'; + + @override + String get transaction_report => 'Transaction Report'; + + @override + String get transaction_report_desc => 'Export all transaction data with detailed analytics'; + + @override + String get invetory_report => 'Inventory Report'; + + @override + String get invetory_report_desc => 'Export inventory and stock data with trends'; + + @override + String get about_app => 'About App'; + + @override + String get app_information => 'App Information'; + + @override + String get app_name => 'App Name'; + + @override + String get build_number => 'Build Number'; + + @override + String get package_name => 'Package Name'; + + @override + String get device => 'Device'; } diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index fd09556..bf1b641 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -82,4 +82,540 @@ class AppLocalizationsId extends AppLocalizations { @override String get sales_today => 'Penjualan hari ini'; + + @override + String get order => 'Pesanan'; + + @override + String get sales => 'Penjualan'; + + @override + String get finance => 'Keuangan'; + + @override + String get product => 'Produk'; + + @override + String get form => 'Form'; + + @override + String get schedule => 'Jadwal'; + + @override + String get inventory => 'Inventaris'; + + @override + String get customer => 'Pelanggan'; + + @override + String get purchase => 'Pembelian'; + + @override + String get today_summary => 'Ringkasan Hari Ini'; + + @override + String get today => 'Hari ini'; + + @override + String get new_customer => 'Pelanggan baru'; + + @override + String get refund => 'Pengembalian dana'; + + @override + String get void_text => 'Dibatalkan'; + + @override + String get increase => 'Bertambah'; + + @override + String get today_top_product => 'Produk teratas hari ini'; + + @override + String get rank => 'Pangkat'; + + @override + String get quantity_sold => 'Kuantiti Terjual'; + + @override + String get total_orders => 'Jumlah Pesanan'; + + @override + String get average_price => 'Harga Rata-rata'; + + @override + String get perfomance => 'Performa'; + + @override + String get total_sales => 'Jumlah Penjualan'; + + @override + String get total_items => 'Jumlah Barang'; + + @override + String get summary => 'Ringkasan'; + + @override + String get net_sales => 'Penjualan Bersih'; + + @override + String get daily_breakdown => 'Perincian Harian'; + + @override + String get orders => 'Pesanan'; + + @override + String get items => 'Barang'; + + @override + String get tax => 'Pajak'; + + @override + String get discount => 'Diskon'; + + @override + String get total_purchase => 'Jumlah Pembelian'; + + @override + String get pending_order => 'Pesanan Menunggu'; + + @override + String get history_purchase => 'Riwayat Pembelian'; + + @override + String get all => 'Semua'; + + @override + String get select_date_range => 'Pilih Rentang Tanggal'; + + @override + String get no_date_selected => 'Belum ada tanggal dipilih'; + + @override + String get selected_date => 'Tanggal Terpilih'; + + @override + String get select => 'Pilih'; + + @override + String get cancel => 'Batal'; + + @override + String get total_revenue => 'Jumlah Pendapatan'; + + @override + String get total_expenditures => 'Jumlah Pengeluaran'; + + @override + String get net_profit => 'Keuntungan Bersih'; + + @override + String get margin_profit => 'Keuntungan Margin'; + + @override + String get cash_flow_analysis => 'Analisis Arus Kas'; + + @override + String get cash_in => 'Uang Masuk'; + + @override + String get cash_out => 'Uang Keluar'; + + @override + String get net_flow => 'Arus Bersih'; + + @override + String cash_flow_chart(int days) { + return 'Grafik Cash Flow \$$days Hari Terakhir'; + } + + @override + String get profit_loss_detail => 'Detail Untung & Rugi'; + + @override + String get gross_sales => 'Penjualan Kotor'; + + @override + String get return_text => 'Retur'; + + @override + String get cogs => 'HPP'; + + @override + String get cost_of_goods_sold => 'Harga Pokok Penjualan'; + + @override + String get gross_profit => 'Keuntungan Kotor'; + + @override + String get operating_costs => 'Biaya Operasional'; + + @override + String get sales_category => 'Kategori Penjualan'; + + @override + String get unit => 'Unit'; + + @override + String get category_no_data => 'Belum ada data kategori'; + + @override + String get category_no_data_desc => 'Data kategori penjualan akan muncul di sini'; + + @override + String get product_analytic => 'Analisis Produk'; + + @override + String get view_all => 'Lihat Semua'; + + @override + String get sold => 'Terjual'; + + @override + String get revenue => 'Pendapatan'; + + @override + String get cost => 'Biaya'; + + @override + String get profit_per_unit => 'Keuntungan per unit'; + + @override + String get total_sold => 'Jumlah Terjual'; + + @override + String get ingredients => 'Bahan Baku'; + + @override + String get low_stock => 'Stok Rendah'; + + @override + String get zero_stock => 'Stok Kosong'; + + @override + String get stock => 'Stok'; + + @override + String get price => 'Harga'; + + @override + String get out_of_stock => 'Stok habis'; + + @override + String get out_of_stock_desc => 'Produk tidak tersedia untuk dijual'; + + @override + String get in_text => 'Masuk'; + + @override + String get out_text => 'Keluar'; + + @override + String get available => 'Tersedia'; + + @override + String get total_products => 'Jumlah Produk'; + + @override + String get total_ingredients => 'Jumlah Bahan Baku'; + + @override + String get products => 'Produk'; + + @override + String get value_text => 'Nilai'; + + @override + String low_stock_desc(String stock) { + return 'Segera reorder minimal $stock pcs'; + } + + @override + String get joined => 'Bergabung'; + + @override + String get ago => 'lalu'; + + @override + String get active => 'Aktif'; + + @override + String get inactive => 'Tidak Aktif'; + + @override + String get total_amount => 'Jumlah Total'; + + @override + String get table => 'Meja'; + + @override + String get remaining => 'Sisa'; + + @override + String get payment => 'Pembayaran'; + + @override + String get completed => 'Selesai'; + + @override + String get pending => 'Menunggu'; + + @override + String no_order_with_status(String status) { + return 'Tidak ada pesanan $status yang ditemukan'; + } + + @override + String get order_details => 'Detail Pesanan'; + + @override + String get order_number => 'Nomor Pesanan'; + + @override + String get order_status => 'Status Pesanan'; + + @override + String get order_information => 'Informasi Pesanan'; + + @override + String get order_type => 'Tipe Pesanan'; + + @override + String get payment_status => 'Status Pembayaran'; + + @override + String get created => 'Dibuat'; + + @override + String get order_item => 'Item Pesanan'; + + @override + String get item => 'Item'; + + @override + String get each => 'Setiap'; + + @override + String get total_item => 'Jumlah Item'; + + @override + String get payment_summary => 'Ringkasan Pembayaran'; + + @override + String get subtotal => 'Subtotal'; + + @override + String get paid => 'Dibayar'; + + @override + String get total => 'Jumlah'; + + @override + String get payment_method => 'Metode Pembayaran'; + + @override + String get dine_in => 'Makan di Tempat'; + + @override + String get dine_in_experience => 'Pengalaman Bersantap Di Tempat'; + + @override + String get note => 'Catatan'; + + @override + String get sales_chart => 'Bagan Penjualan'; + + @override + String get no_data_available => 'Tidak Ada Data Tersedia'; + + @override + String total_days_overview(int days) { + return 'ikhtisar $days hari'; + } + + @override + String get sales_data => 'Data Penjualan'; + + @override + String get no_sales_data => 'Tidak ada data penjualan'; + + @override + String get no_sales_data_desc => 'Data penjualan akan muncul di sini setelah transaksi dicatat'; + + @override + String get payment_methods => 'Metode Pembayaran'; + + @override + String get payment_methods_desc => 'Rincian pendapatan berdasarkan metode pembayaran '; + + @override + String get revenue_share => 'Bagi Hasil'; + + @override + String get no_payment_methods => 'Tidak Ada Metode Pembayaran'; + + @override + String get no_payment_methods_desc => 'Data metode pembayaran akan muncul di sini setelah transaksi dilakukan'; + + @override + String get best_selling_products => 'Produk Terlaris'; + + @override + String get highest_sales_ranking => 'Ranking penjualan tertinggi'; + + @override + String get best_seller => 'Penjual Terbaik'; + + @override + String get top_performer => 'Berkinerja Terbaik'; + + @override + String get account_information => 'Informasi Akun'; + + @override + String get member_since => 'Member Sejak'; + + @override + String get edit_profile => 'Ubah Profil'; + + @override + String get edit_profile_desc => 'Update informasi profil Anda'; + + @override + String get change_password => 'Ubah Kata Sandi'; + + @override + String get change_password_desc => 'Update kata sandi Anda'; + + @override + String get business_settings => 'Pengaturan Bisnis'; + + @override + String get outlet_information => 'Informasi Outlet'; + + @override + String get outlet_informatio_desc => 'Kelola informasi outlet Anda'; + + @override + String get staff_management => 'Manajemen Staff'; + + @override + String get staff_management_desc => 'Kelola staff Anda'; + + @override + String get manage_your_products => 'Kelola Produk Anda'; + + @override + String get download_report => 'Unduh Laporan'; + + @override + String get download_report_desc => 'Unduh laporan penjualan atau stok'; + + @override + String get app_settings => 'Pengaturan Aplikasi'; + + @override + String get language_desc => 'Pilih bahasa aplikasi Anda'; + + @override + String get support => 'Dukungan'; + + @override + String get help_center => 'Pusat Bantuan'; + + @override + String get help_center_desc => 'Hubungi tim dukungan kami'; + + @override + String get about => 'Tentang'; + + @override + String get about_desc => 'Tentang Aplikasi'; + + @override + String get logout => 'Keluar'; + + @override + String get logout_desc => 'Keluar dari akun Anda'; + + @override + String get save => 'Simpan'; + + @override + String get name => 'Nama'; + + @override + String get name_placeholder => 'Masukkan nama Anda'; + + @override + String get password_changed => 'Kata Sandi Berubah'; + + @override + String get current_password => 'Kata Sandi Saat Ini'; + + @override + String get current_password_placeholder => 'Masukkan kata sandi saat ini'; + + @override + String get new_password => 'Kata Sandi Baru'; + + @override + String get new_password_placeholder => 'Masukkan kata sandi baru'; + + @override + String get new_password_not_same => 'Kata Sandi Baru Tidak Sama Dengan Kata Sandi Saat Ini'; + + @override + String get general_information => 'Informasi Umum'; + + @override + String get address => 'Alamat'; + + @override + String get phone_number => 'Nomor Telepon'; + + @override + String get currency => 'Mata Uang'; + + @override + String get tax_rate => 'Tarif Pajak'; + + @override + String get status_text => 'Status'; + + @override + String get coming_soon => 'Segera Hadir'; + + @override + String get coming_soon_desc => 'Sesuatu yang menakjubkan sedang terjadi!\nNantikan pengungkapan besarnya.'; + + @override + String get transaction_report => 'Laporan Transaksi'; + + @override + String get transaction_report_desc => 'Ekspor semua data transaksi dengan analitik terperinci'; + + @override + String get invetory_report => 'Laporan Inventaris'; + + @override + String get invetory_report_desc => 'Ekspor inventaris dan data stok dengan tren'; + + @override + String get about_app => 'Tentang Aplikasi'; + + @override + String get app_information => 'Informasi Aplikasi'; + + @override + String get app_name => 'Nama Aplikasi'; + + @override + String get build_number => 'Nomor Build'; + + @override + String get package_name => 'Nama Paket'; + + @override + String get device => 'Perangkat'; } diff --git a/lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart b/lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart index cb22eae..4db02b2 100644 --- a/lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart +++ b/lib/presentation/components/bottom_sheet/date_range_bottom_sheet.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:syncfusion_flutter_datepicker/datepicker.dart'; +import '../../../common/extension/extension.dart'; + class DateRangePickerBottomSheet { static Future show({ required BuildContext context, @@ -9,8 +11,8 @@ class DateRangePickerBottomSheet { DateTime? initialEndDate, DateTime? minDate, DateTime? maxDate, - String confirmText = 'Pilih', - String cancelText = 'Batal', + String? confirmText, + String? cancelText, Color primaryColor = Colors.blue, Function(DateTime? startDate, DateTime? endDate)? onChanged, }) async { @@ -26,8 +28,8 @@ class DateRangePickerBottomSheet { initialEndDate: initialEndDate, minDate: minDate, maxDate: maxDate, - confirmText: confirmText, - cancelText: cancelText, + confirmText: confirmText ?? context.lang.select, + cancelText: cancelText ?? context.lang.cancel, primaryColor: primaryColor, onChanged: onChanged, ), @@ -104,7 +106,7 @@ class _DateRangePickerBottomSheetState return _formatDate(range.startDate!); } } - return 'Belum ada tanggal dipilih'; + return context.lang.no_date_selected; } String _formatDate(DateTime date) { @@ -187,7 +189,7 @@ class _DateRangePickerBottomSheetState crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Tanggal Terpilih:', + '${context.lang.selected_date}:', style: TextStyle( fontSize: 12, fontWeight: FontWeight.w500, diff --git a/lib/presentation/components/field/date_range_picker_field.dart b/lib/presentation/components/field/date_range_picker_field.dart index bf495f9..9450368 100644 --- a/lib/presentation/components/field/date_range_picker_field.dart +++ b/lib/presentation/components/field/date_range_picker_field.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:syncfusion_flutter_datepicker/datepicker.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../bottom_sheet/date_range_bottom_sheet.dart'; @@ -22,7 +23,7 @@ class DateRangePickerField extends StatefulWidget { final double height; const DateRangePickerField({ - Key? key, + super.key, this.label, this.placeholder = 'Pilih rentang tanggal', this.startDate, @@ -38,7 +39,7 @@ class DateRangePickerField extends StatefulWidget { this.placeholderStyle, this.decoration, this.height = 52.0, - }) : super(key: key); + }); @override State createState() => _DateRangePickerFieldState(); @@ -83,7 +84,7 @@ class _DateRangePickerFieldState extends State { final result = await DateRangePickerBottomSheet.show( context: context, - title: widget.label ?? 'Pilih Rentang Tanggal', + title: widget.label ?? context.lang.select_date_range, initialStartDate: widget.startDate, initialEndDate: widget.endDate, minDate: widget.minDate, @@ -294,7 +295,7 @@ class _DateRangePickerFieldOutlinedState final result = await DateRangePickerBottomSheet.show( context: context, - title: widget.label ?? 'Pilih Rentang Tanggal', + title: widget.label ?? context.lang.select_date_range, initialStartDate: widget.startDate, initialEndDate: widget.endDate, minDate: widget.minDate, @@ -412,120 +413,3 @@ class _DateRangePickerFieldOutlinedState ); } } - -// Usage Example Widget -class DateRangePickerExample extends StatefulWidget { - @override - _DateRangePickerExampleState createState() => _DateRangePickerExampleState(); -} - -class _DateRangePickerExampleState extends State { - DateTime? _startDate; - DateTime? _endDate; - DateTime? _startDate2; - DateTime? _endDate2; - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text('Date Range Picker Example'), - backgroundColor: AppColor.primary, - foregroundColor: AppColor.white, - ), - body: Padding( - padding: const EdgeInsets.all(20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Default Style', - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), - ), - const SizedBox(height: 16), - - DateRangePickerField( - label: 'Periode Laporan', - placeholder: 'Pilih tanggal mulai - selesai', - startDate: _startDate, - endDate: _endDate, - primaryColor: AppColor.primary, - onChanged: (start, end) { - setState(() { - _startDate = start; - _endDate = end; - }); - }, - ), - - const SizedBox(height: 32), - - Text( - 'Outlined Style', - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - color: AppColor.textPrimary, - ), - ), - const SizedBox(height: 16), - - DateRangePickerFieldOutlined( - label: 'Rentang Waktu', - placeholder: 'Pilih rentang tanggal', - startDate: _startDate2, - endDate: _endDate2, - primaryColor: AppColor.secondary, - onChanged: (start, end) { - setState(() { - _startDate2 = start; - _endDate2 = end; - }); - }, - ), - - const SizedBox(height: 24), - - // Display selected dates - if (_startDate != null || - _endDate != null || - _startDate2 != null || - _endDate2 != null) - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: AppColor.background, - borderRadius: BorderRadius.circular(8), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Selected Dates:', - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 14, - ), - ), - const SizedBox(height: 8), - if (_startDate != null) - Text( - 'Default: ${_startDate!} - ${_endDate ?? 'Not selected'}', - ), - if (_startDate2 != null) - Text( - 'Outlined: ${_startDate2!} - ${_endDate2 ?? 'Not selected'}', - ), - ], - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/about_app/about_app_page.dart b/lib/presentation/pages/about_app/about_app_page.dart index b98252f..9b42104 100644 --- a/lib/presentation/pages/about_app/about_app_page.dart +++ b/lib/presentation/pages/about_app/about_app_page.dart @@ -3,7 +3,9 @@ import 'package:auto_route/auto_route.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:device_info_plus/device_info_plus.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; +import '../../components/assets/assets.gen.dart'; @RoutePage() class AboutAppPage extends StatefulWidget { @@ -107,7 +109,7 @@ class _AboutAppPageState extends State return Opacity( opacity: _fadeAnimation.value, child: Text( - 'Tentang Aplikasi', + context.lang.about_app, style: AppStyle.lg.copyWith( color: AppColor.white, fontWeight: FontWeight.bold, @@ -142,7 +144,7 @@ class _AboutAppPageState extends State height: 100, decoration: BoxDecoration( color: AppColor.white, - borderRadius: BorderRadius.circular(25), + borderRadius: BorderRadius.circular(8), boxShadow: [ BoxShadow( color: AppColor.black.withOpacity(0.2), @@ -151,10 +153,9 @@ class _AboutAppPageState extends State ), ], ), - child: Icon( - Icons.mobile_friendly, - size: 50, - color: AppColor.primary, + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Assets.images.logo.image(), ), ), const SizedBox(height: 16), @@ -247,7 +248,7 @@ class _AboutAppPageState extends State ), const SizedBox(width: 16), Text( - 'Informasi Aplikasi', + context.lang.app_information, style: AppStyle.h6.copyWith( fontWeight: FontWeight.bold, color: AppColor.primary, @@ -256,18 +257,24 @@ class _AboutAppPageState extends State ], ), const SizedBox(height: 20), - _buildInfoRow('Nama Aplikasi', packageInfo?.appName ?? 'Loading...'), - _buildInfoRow('Versi', packageInfo?.version ?? 'Loading...'), _buildInfoRow( - 'Build Number', + context.lang.app_name, + packageInfo?.appName ?? 'Loading...', + ), + _buildInfoRow( + context.lang.version, + packageInfo?.version ?? 'Loading...', + ), + _buildInfoRow( + context.lang.build_number, packageInfo?.buildNumber ?? 'Loading...', ), _buildInfoRow( - 'Package Name', + context.lang.package_name, packageInfo?.packageName ?? 'Loading...', ), _buildInfoRow( - 'Device', + context.lang.device, deviceInfo.isEmpty ? 'Loading...' : deviceInfo, ), ], diff --git a/lib/presentation/pages/coming_soon/coming_soon_page.dart b/lib/presentation/pages/coming_soon/coming_soon_page.dart index 4215c2d..8e309b1 100644 --- a/lib/presentation/pages/coming_soon/coming_soon_page.dart +++ b/lib/presentation/pages/coming_soon/coming_soon_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:auto_route/auto_route.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; @RoutePage() @@ -114,7 +115,7 @@ class _ComingSoonPageState extends State child: SlideTransition( position: _slideAnimation, child: Text( - 'Coming Soon', + context.lang.coming_soon, style: AppStyle.h1.copyWith( color: AppColor.textWhite, fontWeight: FontWeight.bold, @@ -134,7 +135,7 @@ class _ComingSoonPageState extends State child: SlideTransition( position: _slideAnimation, child: Text( - 'Something amazing is brewing!\nStay tuned for the big reveal.', + context.lang.coming_soon_desc, style: AppStyle.lg.copyWith( color: AppColor.textWhite.withOpacity(0.9), height: 1.5, diff --git a/lib/presentation/pages/customer/customer_page.dart b/lib/presentation/pages/customer/customer_page.dart index 9b63756..a1e4e5f 100644 --- a/lib/presentation/pages/customer/customer_page.dart +++ b/lib/presentation/pages/customer/customer_page.dart @@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import '../../../application/customer/customer_loader/customer_loader_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../domain/customer/customer.dart'; import '../../../injection.dart'; @@ -31,7 +32,7 @@ class CustomerPage extends StatefulWidget implements AutoRouteWrapper { class _CustomerPageState extends State with TickerProviderStateMixin { final TextEditingController _searchController = TextEditingController(); - ScrollController _scrollController = ScrollController(); + final ScrollController _scrollController = ScrollController(); bool _isGridView = false; @override @@ -72,7 +73,7 @@ class _CustomerPageState extends State floating: false, pinned: true, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Pelanggan'), + flexibleSpace: CustomAppBar(title: context.lang.customer), actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.search), ], @@ -148,7 +149,7 @@ class _CustomerPageState extends State crossAxisCount: 2, crossAxisSpacing: 16, mainAxisSpacing: 16, - childAspectRatio: 0.8, + childAspectRatio: 0.65, ), delegate: SliverChildBuilderDelegate((context, index) { final customer = customers[index]; diff --git a/lib/presentation/pages/customer/widgets/customer_card.dart b/lib/presentation/pages/customer/widgets/customer_card.dart index e11fe96..cb512ae 100644 --- a/lib/presentation/pages/customer/widgets/customer_card.dart +++ b/lib/presentation/pages/customer/widgets/customer_card.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/customer/customer.dart'; import '../../../components/spacer/spacer.dart'; @@ -175,78 +176,6 @@ class CustomerCard extends StatelessWidget { const SpaceHeight(12), ], - // Status Badge - Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - color: customer.isActive - ? AppColor.success.withOpacity(0.1) - : AppColor.error.withOpacity(0.1), - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: customer.isActive - ? AppColor.success.withOpacity(0.3) - : AppColor.error.withOpacity(0.3), - width: 1, - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - width: 8, - height: 8, - decoration: BoxDecoration( - color: customer.isActive - ? AppColor.success - : AppColor.error, - shape: BoxShape.circle, - ), - ), - const SpaceWidth(6), - Text( - customer.isActive ? 'Active' : 'Inactive', - style: AppStyle.sm.copyWith( - color: customer.isActive - ? AppColor.success - : AppColor.error, - fontWeight: FontWeight.w600, - ), - ), - ], - ), - ), - - // Additional info if available - if (customer.address.isNotEmpty) ...[ - const SpaceHeight(8), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.location_on_outlined, - size: 14, - color: AppColor.textSecondary, - ), - const SpaceWidth(4), - Flexible( - child: Text( - customer.address, - style: AppStyle.xs.copyWith( - color: AppColor.textSecondary, - ), - textAlign: TextAlign.center, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ), - ], - ), - ], - // Metadata info if (customer.metadata.isNotEmpty && _hasRelevantMetadata()) ...[ const SpaceHeight(8), @@ -284,7 +213,7 @@ class CustomerCard extends StatelessWidget { if (customer.createdAt.isNotEmpty) ...[ const SpaceHeight(8), Text( - 'Joined ${_formatDate(customer.createdAt)}', + '${context.lang.joined} ${_formatDate(context, customer.createdAt)}', style: AppStyle.xs.copyWith(color: AppColor.textSecondary), textAlign: TextAlign.center, ), @@ -335,7 +264,7 @@ class CustomerCard extends StatelessWidget { return colors[index]; } - String _formatDate(String dateStr) { + String _formatDate(BuildContext context, String dateStr) { try { final date = DateTime.parse(dateStr); final now = DateTime.now(); @@ -346,13 +275,13 @@ class CustomerCard extends StatelessWidget { } else if (difference == 1) { return 'yesterday'; } else if (difference < 30) { - return '${difference}d ago'; + return '${difference}d ${context.lang.ago}'; } else if (difference < 365) { final months = (difference / 30).floor(); - return '${months}mo ago'; + return '${months}mo ${context.lang.ago}'; } else { final years = (difference / 365).floor(); - return '${years}y ago'; + return '${years}y ${context.lang.ago}'; } } catch (e) { return dateStr; diff --git a/lib/presentation/pages/customer/widgets/customer_tile.dart b/lib/presentation/pages/customer/widgets/customer_tile.dart index 414967e..eb7edd8 100644 --- a/lib/presentation/pages/customer/widgets/customer_tile.dart +++ b/lib/presentation/pages/customer/widgets/customer_tile.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/customer/customer.dart'; import '../../../components/spacer/spacer.dart'; @@ -245,7 +246,9 @@ class CustomerTile extends StatelessWidget { ), const SpaceWidth(6), Text( - customer.isActive ? 'Active' : 'Inactive', + customer.isActive + ? context.lang.active + : context.lang.inactive, style: AppStyle.sm.copyWith( color: customer.isActive ? AppColor.success @@ -260,7 +263,7 @@ class CustomerTile extends StatelessWidget { // Created date if (customer.createdAt.isNotEmpty) Text( - 'Joined ${_formatDate(customer.createdAt)}', + '${context.lang.joined} ${_formatDate(context, customer.createdAt)}', style: AppStyle.xs.copyWith( color: AppColor.textSecondary, ), @@ -326,7 +329,7 @@ class CustomerTile extends StatelessWidget { return colors[index]; } - String _formatDate(String dateStr) { + String _formatDate(BuildContext context, String dateStr) { try { final date = DateTime.parse(dateStr); final now = DateTime.now(); @@ -337,13 +340,13 @@ class CustomerTile extends StatelessWidget { } else if (difference == 1) { return 'yesterday'; } else if (difference < 30) { - return '${difference}d ago'; + return '${difference}d ${context.lang.ago}'; } else if (difference < 365) { final months = (difference / 30).floor(); - return '${months}mo ago'; + return '${months}mo ${context.lang.ago}'; } else { final years = (difference / 365).floor(); - return '${years}y ago'; + return '${years}y ${context.lang.ago}'; } } catch (e) { return dateStr; diff --git a/lib/presentation/pages/download/download_report_page.dart b/lib/presentation/pages/download/download_report_page.dart index 3e02303..cbafb74 100644 --- a/lib/presentation/pages/download/download_report_page.dart +++ b/lib/presentation/pages/download/download_report_page.dart @@ -113,7 +113,7 @@ class _DownloadReportPageState extends State pinned: true, elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Download Report'), + flexibleSpace: CustomAppBar(title: context.lang.download_report), ), // Content @@ -134,9 +134,8 @@ class _DownloadReportPageState extends State >( builder: (context, state) { return _ReportOptionCard( - title: 'Transaction Report', - subtitle: - 'Export all transaction data with detailed analytics', + title: context.lang.transaction_report, + subtitle: context.lang.transaction_report_desc, icon: Icons.receipt_long_outlined, gradient: const [ AppColor.primary, @@ -205,9 +204,8 @@ class _DownloadReportPageState extends State BlocBuilder( builder: (context, state) { return _ReportOptionCard( - title: 'Inventory Report', - subtitle: - 'Export inventory and stock data with trends', + title: context.lang.invetory_report, + subtitle: context.lang.invetory_report_desc, icon: Icons.inventory_2_outlined, gradient: const [ AppColor.secondary, @@ -479,7 +477,7 @@ class _ReportOptionCardState extends State<_ReportOptionCard> crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Select Date Range', + context.lang.select_date_range, style: AppStyle.md.copyWith( color: AppColor.white, fontWeight: FontWeight.w600, @@ -489,7 +487,7 @@ class _ReportOptionCardState extends State<_ReportOptionCard> // Date Range Picker Field Style DateRangePickerField( - placeholder: 'Select date range', + placeholder: context.lang.select_date_range, startDate: widget.startDate, endDate: widget.endDate, onChanged: widget.onDateRangeChanged, @@ -542,7 +540,7 @@ class _ReportOptionCardState extends State<_ReportOptionCard> ), const SizedBox(width: 8), Text( - 'Download Report', + context.lang.download_report, style: AppStyle.md.copyWith( color: widget.gradient.first, fontWeight: FontWeight.bold, diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index aa9f981..63beb84 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -126,7 +126,7 @@ class _FinancePageState extends State pinned: true, backgroundColor: AppColor.primary, elevation: 0, - flexibleSpace: CustomAppBar(title: 'Keuangan'), + flexibleSpace: CustomAppBar(title: context.lang.finance), ), // Header dengan filter periode @@ -221,7 +221,7 @@ class _FinancePageState extends State children: [ Expanded( child: FinanceSummaryCard( - title: 'Total Pendapatan', + title: context.lang.total_revenue, amount: summary.totalRevenue.currencyFormatRp, icon: LineIcons.arrowUp, color: AppColor.success, @@ -231,7 +231,7 @@ class _FinancePageState extends State const SizedBox(width: 12), Expanded( child: FinanceSummaryCard( - title: 'Total Pengeluaran', + title: context.lang.total_expenditures, amount: summary.totalCost.currencyFormatRp, icon: LineIcons.arrowDown, color: AppColor.error, @@ -245,7 +245,7 @@ class _FinancePageState extends State children: [ Expanded( child: FinanceSummaryCard( - title: 'Keuntungan Bersih', + title: context.lang.net_profit, amount: summary.netProfit.currencyFormatRp, icon: LineIcons.lineChart, color: AppColor.info, @@ -255,7 +255,7 @@ class _FinancePageState extends State const SizedBox(width: 12), Expanded( child: FinanceSummaryCard( - title: 'Margin Profit', + title: context.lang.margin_profit, amount: '${summary.profitabilityRatio.round()}%', icon: LineIcons.percent, color: AppColor.warning, @@ -304,14 +304,14 @@ class _FinancePageState extends State ), const SizedBox(width: 12), Text( - 'Analisis Produk', + context.lang.product_analytic, style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), ), const Spacer(), TextButton( onPressed: () {}, child: Text( - 'Lihat Semua', + context.lang.view_all, style: AppStyle.sm.copyWith(color: AppColor.primary), ), ), diff --git a/lib/presentation/pages/finance/widgets/cash_flow.dart b/lib/presentation/pages/finance/widgets/cash_flow.dart index fa11cbb..fa6e0cd 100644 --- a/lib/presentation/pages/finance/widgets/cash_flow.dart +++ b/lib/presentation/pages/finance/widgets/cash_flow.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; import 'package:intl/intl.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/analytic/analytic.dart'; @@ -57,7 +58,7 @@ class FinanceCashFlow extends StatelessWidget { ), const SizedBox(width: 12), Text( - 'Analisis Cash Flow', + context.lang.cash_flow_analysis, style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), ), ], @@ -78,7 +79,7 @@ class FinanceCashFlow extends StatelessWidget { children: [ Expanded( child: _buildCashFlowIndicator( - 'Cash In', + context.lang.cash_in, _formatCurrency(totalCashIn), LineIcons.arrowUp, AppColor.success, @@ -87,7 +88,7 @@ class FinanceCashFlow extends StatelessWidget { const SizedBox(width: 16), Expanded( child: _buildCashFlowIndicator( - 'Cash Out', + context.lang.cash_out, _formatCurrency(totalCashOut), LineIcons.arrowDown, AppColor.error, @@ -96,7 +97,7 @@ class FinanceCashFlow extends StatelessWidget { const SizedBox(width: 16), Expanded( child: _buildCashFlowIndicator( - 'Net Flow', + context.lang.net_flow, _formatCurrency(netFlow), LineIcons.equals, AppColor.info, @@ -119,7 +120,7 @@ class FinanceCashFlow extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Grafik Cash Flow ${dailyData.length} Hari Terakhir', + context.lang.cash_flow_chart(dailyData.length), style: AppStyle.sm.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w600, @@ -136,11 +137,11 @@ class FinanceCashFlow extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildChartLegend('Cash In', AppColor.success), + _buildChartLegend(context.lang.cash_in, AppColor.success), const SizedBox(width: 20), - _buildChartLegend('Cash Out', AppColor.error), + _buildChartLegend(context.lang.cash_out, AppColor.error), const SizedBox(width: 20), - _buildChartLegend('Net Flow', AppColor.info), + _buildChartLegend(context.lang.net_flow, AppColor.info), ], ), ], diff --git a/lib/presentation/pages/finance/widgets/category.dart b/lib/presentation/pages/finance/widgets/category.dart index 747ffba..df21ac6 100644 --- a/lib/presentation/pages/finance/widgets/category.dart +++ b/lib/presentation/pages/finance/widgets/category.dart @@ -51,7 +51,7 @@ class FinanceCategory extends StatelessWidget { ), const SizedBox(width: 12), Text( - 'Kategori Penjualan', + context.lang.sales_category, style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), ), ], @@ -60,10 +60,11 @@ class FinanceCategory extends StatelessWidget { // Show empty state if no categories if (categories.isEmpty) - _buildEmptyState() + _buildEmptyState(context) else ...sortedCategories.asMap().entries.map( (entry) => _buildCategoryItem( + context, entry.value, _calculatePercentage(entry.value.totalRevenue, totalRevenue), _getCategoryColor(entry.key), @@ -75,6 +76,7 @@ class FinanceCategory extends StatelessWidget { } Widget _buildCategoryItem( + BuildContext context, CategoryAnalyticItem category, double percentage, Color color, @@ -111,7 +113,7 @@ class FinanceCategory extends StatelessWidget { ), const SizedBox(height: 2), Text( - '${category.productCount} produk โ€ข ${category.orderCount} pesanan', + '${category.productCount} ${context.lang.product} โ€ข ${category.orderCount} ${context.lang.orders}', style: AppStyle.xs.copyWith( color: AppColor.textSecondary, ), @@ -134,7 +136,7 @@ class FinanceCategory extends StatelessWidget { ), ), Text( - '${NumberFormat('#,###', 'id_ID').format(category.totalQuantity)} unit', + '${NumberFormat('#,###', 'id_ID').format(category.totalQuantity)} ${context.lang.unit}', style: AppStyle.xs.copyWith(color: AppColor.textSecondary), ), ], @@ -161,10 +163,10 @@ class FinanceCategory extends StatelessWidget { ); } - Widget _buildEmptyState() { + Widget _buildEmptyState(BuildContext context) { return EmptyWidget( - title: 'Belum ada data kategori', - message: 'Data kategori penjualan akan muncul di sini', + title: context.lang.category_no_data, + message: context.lang.category_no_data_desc, ); } diff --git a/lib/presentation/pages/finance/widgets/product.dart b/lib/presentation/pages/finance/widgets/product.dart index d545d82..7f41843 100644 --- a/lib/presentation/pages/finance/widgets/product.dart +++ b/lib/presentation/pages/finance/widgets/product.dart @@ -81,21 +81,21 @@ class ProfitLossProduct extends StatelessWidget { children: [ Expanded( child: _buildMetricColumn( - 'Pendapatan', + context.lang.revenue, product.revenue.currencyFormatRp, AppColor.success, ), ), Expanded( child: _buildMetricColumn( - 'Biaya', + context.lang.cost, product.cost.currencyFormatRp, AppColor.error, ), ), Expanded( child: _buildMetricColumn( - 'Laba Kotor', + context.lang.gross_profit, product.grossProfit.currencyFormatRp, AppColor.info, ), @@ -109,14 +109,14 @@ class ProfitLossProduct extends StatelessWidget { children: [ Expanded( child: _buildMetricColumn( - 'Harga Rata-rata', + context.lang.average_price, product.averagePrice.currencyFormatRp, AppColor.textSecondary, ), ), Expanded( child: _buildMetricColumn( - 'Laba per Unit', + context.lang.profit_per_unit, product.profitPerUnit.currencyFormatRp, AppColor.primary, ), diff --git a/lib/presentation/pages/finance/widgets/profit_loss.dart b/lib/presentation/pages/finance/widgets/profit_loss.dart index 8692aba..929c04e 100644 --- a/lib/presentation/pages/finance/widgets/profit_loss.dart +++ b/lib/presentation/pages/finance/widgets/profit_loss.dart @@ -46,7 +46,7 @@ class FinanceProfitLoss extends StatelessWidget { ), const SizedBox(width: 12), Text( - 'Detail Profit & Loss', + context.lang.profit_loss_detail, style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), ), ], @@ -55,7 +55,7 @@ class FinanceProfitLoss extends StatelessWidget { // Total Revenue (Penjualan Kotor) _buildPLItem( - 'Penjualan Kotor', + context.lang.gross_sales, data.totalRevenue.currencyFormatRp, AppColor.success, true, @@ -63,7 +63,7 @@ class FinanceProfitLoss extends StatelessWidget { // Discount (Diskon & Retur) _buildPLItem( - 'Diskon & Retur', + '${context.lang.discount} & ${context.lang.return_text}', '- ${data.totalDiscount.currencyFormatRp}', AppColor.error, false, @@ -73,7 +73,7 @@ class FinanceProfitLoss extends StatelessWidget { // Net Sales (Penjualan Bersih = Total Revenue - Discount) _buildPLItem( - 'Penjualan Bersih', + context.lang.net_sales, (data.totalRevenue - data.totalDiscount).currencyFormatRp, AppColor.textPrimary, true, @@ -84,7 +84,7 @@ class FinanceProfitLoss extends StatelessWidget { // Cost of Goods Sold (HPP) _buildPLItem( - 'HPP (Harga Pokok Penjualan)', + '${context.lang.cogs} (${context.lang.cost_of_goods_sold})', '- ${data.totalCost.currencyFormatRp}', AppColor.error, false, @@ -94,7 +94,7 @@ class FinanceProfitLoss extends StatelessWidget { // Gross Profit (Laba Kotor) _buildPLItem( - 'Laba Kotor', + context.lang.gross_profit, data.grossProfit.currencyFormatRp, AppColor.success, true, @@ -107,7 +107,7 @@ class FinanceProfitLoss extends StatelessWidget { // Operational Cost (Biaya Operasional) - calculated as difference _buildPLItem( - 'Biaya Operasional', + context.lang.operating_costs, '- ${_calculateOperationalCost().currencyFormatRp}', AppColor.error, false, @@ -117,7 +117,7 @@ class FinanceProfitLoss extends StatelessWidget { // Net Profit (Laba Bersih) _buildPLItem( - 'Laba Bersih', + context.lang.net_profit, data.netProfit.currencyFormatRp, AppColor.primary, true, diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index e9057a6..8295f6b 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../router/app_router.gr.dart'; import 'feature_tile.dart'; @@ -36,25 +37,25 @@ class HomeFeature extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ HomeFeatureTile( - title: 'Penjualan', + title: context.lang.sales, color: const Color(0xFF4CAF50), icon: LineIcons.receipt, onTap: () => context.router.push(SalesRoute()), ), HomeFeatureTile( - title: 'Pembelian', + title: context.lang.purchase, color: const Color(0xFF2196F3), icon: LineIcons.shoppingCart, onTap: () => context.router.push(PurchaseRoute()), ), HomeFeatureTile( - title: 'Keuangan', + title: context.lang.finance, color: const Color(0xFF8BC34A), icon: LineIcons.moneyCheck, onTap: () => context.router.push(FinanceRoute()), ), HomeFeatureTile( - title: 'Produk', + title: context.lang.product, color: const Color(0xFFFF9800), icon: LineIcons.box, onTap: () => context.router.push(ProductAnalyticRoute()), @@ -66,25 +67,25 @@ class HomeFeature extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ HomeFeatureTile( - title: 'Form', + title: context.lang.form, color: const Color(0xFFE91E63), icon: LineIcons.fileAlt, onTap: () => context.router.push(DailyTasksFormRoute()), ), HomeFeatureTile( - title: 'Jadwal', + title: context.lang.schedule, color: const Color(0xFF9C27B0), icon: LineIcons.calendar, onTap: () => context.router.push(ScheduleRoute()), ), HomeFeatureTile( - title: 'Inventaris', + title: context.lang.inventory, color: const Color(0xFF00BCD4), icon: LineIcons.archive, onTap: () => context.router.push(InventoryRoute()), ), HomeFeatureTile( - title: 'Pelanggan', + title: context.lang.customer, color: const Color(0xFFFF5722), icon: LineIcons.userPlus, onTap: () => context.router.push(CustomerRoute()), diff --git a/lib/presentation/pages/home/widgets/stats.dart b/lib/presentation/pages/home/widgets/stats.dart index 6a1f612..1b91665 100644 --- a/lib/presentation/pages/home/widgets/stats.dart +++ b/lib/presentation/pages/home/widgets/stats.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; @@ -21,30 +22,30 @@ class HomeStats extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - HomeTitle(title: 'Ringkasan Hari Ini'), + HomeTitle(title: context.lang.today_summary), const SpaceHeight(20), Row( children: [ Expanded( child: HomeStatsTile( - title: 'Pesanan', + title: context.lang.order, value: overview.totalOrders.toString(), icon: Icons.receipt_long_rounded, color: AppColor.info, - subtitle: 'Hari ini', + subtitle: context.lang.today, ), ), const SpaceWidth(16), Expanded( child: HomeStatsTile( - title: 'Pelanggan Baru', + title: context.lang.new_customer, value: overview.totalCustomers.toString(), icon: Icons.person_add_outlined, color: AppColor.primary, subtitle: overview.totalCustomers < 1 - ? 'Hari ini' - : 'bertambah', + ? context.lang.today + : context.lang.increase, ), ), ], @@ -54,21 +55,21 @@ class HomeStats extends StatelessWidget { children: [ Expanded( child: HomeStatsTile( - title: 'Refund', + title: context.lang.refund, value: overview.refundedOrders.toString(), icon: LineIcons.alternateExchange, color: AppColor.warning, - subtitle: 'Hari ini', + subtitle: context.lang.today, ), ), const SpaceWidth(16), Expanded( child: HomeStatsTile( - title: 'Void', + title: context.lang.void_text, value: overview.voidedOrders.toString(), icon: Icons.cancel_rounded, color: AppColor.error, - subtitle: 'Hari ini', + subtitle: context.lang.today, ), ), ], diff --git a/lib/presentation/pages/home/widgets/top_product.dart b/lib/presentation/pages/home/widgets/top_product.dart index 9e8f436..3500d3c 100644 --- a/lib/presentation/pages/home/widgets/top_product.dart +++ b/lib/presentation/pages/home/widgets/top_product.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/analytic/analytic.dart'; import '../../../components/spacer/spacer.dart'; @@ -19,12 +20,13 @@ class HomeTopProduct extends StatelessWidget { ).copyWith(bottom: 0), child: Column( children: [ - HomeTitle(title: 'Product Terlaris Hari Ini'), + HomeTitle(title: context.lang.today_top_product), SpaceHeight(20), ListView.builder( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemCount: products.length, + padding: EdgeInsets.zero, itemBuilder: (context, index) { return HomeTopProductTile( product: products[index], diff --git a/lib/presentation/pages/home/widgets/top_product_tile.dart b/lib/presentation/pages/home/widgets/top_product_tile.dart index 841d68e..108163f 100644 --- a/lib/presentation/pages/home/widgets/top_product_tile.dart +++ b/lib/presentation/pages/home/widgets/top_product_tile.dart @@ -44,7 +44,7 @@ class HomeTopProductTile extends StatelessWidget { // Header Row - Ranking dan Revenue Row( children: [ - _buildRankingBadge(), + _buildRankingBadge(context), const Spacer(), _buildRevenueDisplay(), ], @@ -71,7 +71,7 @@ class HomeTopProductTile extends StatelessWidget { const SizedBox(height: 12), // Metrics dalam Grid 2x2 - _buildMetricsGrid(), + _buildMetricsGrid(context), ], ), ), @@ -80,7 +80,7 @@ class HomeTopProductTile extends StatelessWidget { ); } - Widget _buildRankingBadge() { + Widget _buildRankingBadge(BuildContext context) { Color badgeColor; IconData icon; @@ -115,7 +115,7 @@ class HomeTopProductTile extends StatelessWidget { Icon(icon, color: badgeColor, size: 16), const SizedBox(width: 6), Text( - 'Rank #$ranking', + '${context.lang.rank} #$ranking', style: AppStyle.sm.copyWith( color: badgeColor, fontWeight: FontWeight.bold, @@ -157,7 +157,7 @@ class HomeTopProductTile extends StatelessWidget { ); } - Widget _buildMetricsGrid() { + Widget _buildMetricsGrid(BuildContext context) { return Row( children: [ Expanded( @@ -165,14 +165,14 @@ class HomeTopProductTile extends StatelessWidget { children: [ _buildMetricCard( icon: Icons.shopping_cart_outlined, - label: 'Quantity Sold', + label: context.lang.quantity_sold, value: product.quantitySold.toString(), color: AppColor.info, ), const SizedBox(height: 8), _buildMetricCard( icon: Icons.attach_money, - label: 'Average Price', + label: context.lang.average_price, value: product.averagePrice.round().currencyFormatRp, color: AppColor.success, ), @@ -185,14 +185,14 @@ class HomeTopProductTile extends StatelessWidget { children: [ _buildMetricCard( icon: Icons.receipt_outlined, - label: 'Total Orders', + label: context.lang.total_orders, value: product.orderCount.toString(), color: AppColor.warning, ), const SizedBox(height: 8), _buildMetricCard( icon: Icons.trending_up, - label: 'Performance', + label: context.lang.perfomance, value: 'Top $ranking', color: AppColor.primary, ), diff --git a/lib/presentation/pages/inventory/inventory_page.dart b/lib/presentation/pages/inventory/inventory_page.dart index c864417..ce2a57c 100644 --- a/lib/presentation/pages/inventory/inventory_page.dart +++ b/lib/presentation/pages/inventory/inventory_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../application/analytic/inventory_analytic_loader/inventory_analytic_loader_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../domain/analytic/analytic.dart'; import '../../../injection.dart'; @@ -95,11 +96,11 @@ class _InventoryPageState extends State String getStatusText(String status) { switch (status) { case 'available': - return 'Tersedia'; + return context.lang.available; case 'low_stock': - return 'Stok Rendah'; + return context.lang.low_stock; case 'out_of_stock': - return 'Habis'; + return context.lang.out_of_stock; default: return 'Unknown'; } @@ -189,7 +190,7 @@ class _InventoryPageState extends State padding: const EdgeInsets.symmetric( horizontal: 12, ), - child: const Row( + child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, @@ -199,7 +200,7 @@ class _InventoryPageState extends State size: 16, ), SizedBox(width: 6), - Text('Produk'), + Text(context.lang.product), ], ), ), @@ -210,7 +211,7 @@ class _InventoryPageState extends State padding: const EdgeInsets.symmetric( horizontal: 12, ), - child: const Row( + child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, @@ -220,7 +221,7 @@ class _InventoryPageState extends State size: 16, ), SizedBox(width: 6), - Text('Bahan'), + Text(context.lang.ingredients), ], ), ), @@ -254,7 +255,7 @@ class _InventoryPageState extends State pinned: true, elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Inventaris'), + flexibleSpace: CustomAppBar(title: context.lang.inventory), ); } @@ -308,7 +309,7 @@ class _InventoryPageState extends State children: [ Expanded( child: _buildStatCard( - 'Total Produk', + context.lang.total_products, inventory.totalProducts.toString(), Icons.inventory_2_rounded, AppColor.primary, @@ -317,7 +318,7 @@ class _InventoryPageState extends State const SizedBox(width: 16), Expanded( child: _buildStatCard( - 'Produk Terjual', + context.lang.total_sold, inventory.totalSoldProducts.toString(), Icons.check_circle_rounded, AppColor.success, @@ -330,7 +331,7 @@ class _InventoryPageState extends State children: [ Expanded( child: _buildStatCard( - 'Stok Rendah', + context.lang.low_stock, inventory.lowStockProducts.toString(), Icons.warning_rounded, AppColor.warning, @@ -339,7 +340,7 @@ class _InventoryPageState extends State const SizedBox(width: 16), Expanded( child: _buildStatCard( - 'Stok Kosong', + context.lang.zero_stock, inventory.zeroStockProducts.toString(), Icons.error_rounded, AppColor.error, @@ -361,7 +362,7 @@ class _InventoryPageState extends State children: [ Expanded( child: _buildStatCard( - 'Total Bahan', + context.lang.total_ingredients, inventory.totalIngredients.toString(), Icons.restaurant_menu_rounded, AppColor.primary, @@ -370,7 +371,7 @@ class _InventoryPageState extends State const SizedBox(width: 16), Expanded( child: _buildStatCard( - 'Bahan Terjual', + context.lang.total_sold, inventory.totalSoldIngredients.toString(), Icons.check_circle_rounded, AppColor.success, @@ -383,7 +384,7 @@ class _InventoryPageState extends State children: [ Expanded( child: _buildStatCard( - 'Stok Kurang', + context.lang.low_stock, inventory.lowStockIngredients.toString(), Icons.warning_rounded, AppColor.warning, @@ -392,7 +393,7 @@ class _InventoryPageState extends State const SizedBox(width: 16), Expanded( child: _buildStatCard( - 'Habis', + context.lang.zero_stock, inventory.zeroStockIngredients.toString(), Icons.error_rounded, AppColor.error, diff --git a/lib/presentation/pages/inventory/widgets/product_tile.dart b/lib/presentation/pages/inventory/widgets/product_tile.dart index fe3a1e7..916fcf9 100644 --- a/lib/presentation/pages/inventory/widgets/product_tile.dart +++ b/lib/presentation/pages/inventory/widgets/product_tile.dart @@ -182,7 +182,11 @@ class InventoryProductTile extends StatelessWidget { ], ), child: Text( - _getStatusText(), + item.isZeroStock + ? context.lang.out_of_stock + : item.isLowStock + ? context.lang.low_stock + : context.lang.available, style: AppStyle.xs.copyWith( fontSize: 10, fontWeight: FontWeight.w700, @@ -202,7 +206,7 @@ class InventoryProductTile extends StatelessWidget { Expanded( child: _buildInfoItem( LineIcons.boxes, - 'Stok', + context.lang.stock, '${NumberFormat('#,###', 'id_ID').format(item.quantity)} pcs', _getQuantityColor(), ), @@ -212,7 +216,7 @@ class InventoryProductTile extends StatelessWidget { Expanded( child: _buildInfoItem( LineIcons.dollarSign, - 'Nilai', + context.lang.value_text, _formatCurrencyShort(item.totalValue), AppColor.info, ), @@ -259,14 +263,19 @@ class InventoryProductTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Stok Menipis', + context.lang.low_stock, style: AppStyle.sm.copyWith( fontWeight: FontWeight.w600, color: AppColor.warning, ), ), Text( - 'Segera reorder minimal ${NumberFormat('#,###', 'id_ID').format(item.reorderLevel)} pcs', + context.lang.low_stock_desc( + NumberFormat( + '#,###', + 'id_ID', + ).format(item.reorderLevel), + ), style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -301,14 +310,14 @@ class InventoryProductTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Stok Habis', + context.lang.out_of_stock, style: AppStyle.sm.copyWith( fontWeight: FontWeight.w600, color: AppColor.error, ), ), Text( - 'Produk tidak tersedia untuk dijual', + context.lang.out_of_stock_desc, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -330,7 +339,7 @@ class InventoryProductTile extends StatelessWidget { Expanded( child: _buildMovementInfo( LineIcons.arrowUp, - 'Masuk', + context.lang.in_text, '${NumberFormat('#,###', 'id_ID').format(item.totalIn)} pcs', AppColor.success, ), @@ -341,7 +350,7 @@ class InventoryProductTile extends StatelessWidget { Expanded( child: _buildMovementInfo( LineIcons.arrowDown, - 'Keluar', + context.lang.out_text, '${NumberFormat('#,###', 'id_ID').format(item.totalOut)} pcs', AppColor.error, ), @@ -476,12 +485,6 @@ class InventoryProductTile extends StatelessWidget { return AppColor.textPrimary; } - String _getStatusText() { - if (item.isZeroStock) return 'HABIS'; - if (item.isLowStock) return 'MINIM'; - return 'TERSEDIA'; - } - IconData _getCategoryIcon() { final category = item.categoryName.toLowerCase(); if (category.contains('elektronik') || category.contains('gadget')) { diff --git a/lib/presentation/pages/main/widgets/bottom_navbar.dart b/lib/presentation/pages/main/widgets/bottom_navbar.dart index 8ea33ff..3876d5c 100644 --- a/lib/presentation/pages/main/widgets/bottom_navbar.dart +++ b/lib/presentation/pages/main/widgets/bottom_navbar.dart @@ -33,8 +33,8 @@ class _MainBottomNavbarState extends State { ), BottomNavigationBarItem( icon: LineIcon(LineIcons.moneyBill), - label: 'Order', - tooltip: 'Order', + label: context.lang.order, + tooltip: context.lang.order, ), BottomNavigationBarItem( icon: LineIcon(LineIcons.barChart), diff --git a/lib/presentation/pages/order/order_detail/order_detail_page.dart b/lib/presentation/pages/order/order_detail/order_detail_page.dart index b13c89f..4fb774e 100644 --- a/lib/presentation/pages/order/order_detail/order_detail_page.dart +++ b/lib/presentation/pages/order/order_detail/order_detail_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:auto_route/auto_route.dart'; import 'dart:math' show cos, sin; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/order/order.dart'; import '../../../components/appbar/appbar.dart'; @@ -22,33 +23,33 @@ class OrderDetailPage extends StatelessWidget { expandedHeight: 120, pinned: true, backgroundColor: AppColor.primary, - flexibleSpace: const CustomAppBar(title: "Detail Pesanan"), + flexibleSpace: CustomAppBar(title: context.lang.order_details), elevation: 0, ), SliverToBoxAdapter( child: Column( children: [ // Order Status Card - _buildOrderStatusCard(), + _buildOrderStatusCard(context), const SizedBox(height: 16), // Table Visual Card (for dine-in) - if (_isDineIn()) _buildTableVisualCard(), + if (_isDineIn()) _buildTableVisualCard(context), // Order Info Card - _buildOrderInfoCard(), + _buildOrderInfoCard(context), const SizedBox(height: 16), // Order Items Section - _buildOrderItemsSection(), + _buildOrderItemsSection(context), const SizedBox(height: 16), // Payment Summary Card - _buildPaymentSummaryCard(), + _buildPaymentSummaryCard(context), const SizedBox(height: 16), // Payment Methods Section - _buildPaymentMethodsSection(), + _buildPaymentMethodsSection(context), const SizedBox(height: 24), ], ), @@ -58,7 +59,7 @@ class OrderDetailPage extends StatelessWidget { ); } - Widget _buildOrderStatusCard() { + Widget _buildOrderStatusCard(BuildContext context) { Color statusColor = _getStatusColor(order.status); return Container( margin: const EdgeInsets.all(16), @@ -123,7 +124,7 @@ class OrderDetailPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Order Number', + context.lang.order_number, style: AppStyle.sm.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -157,7 +158,7 @@ class OrderDetailPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Status Pesanan', + context.lang.order_status, style: AppStyle.sm.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -197,7 +198,7 @@ class OrderDetailPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, children: [ Text( - 'Total Amount', + context.lang.total_amount, style: AppStyle.sm.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -222,7 +223,7 @@ class OrderDetailPage extends StatelessWidget { ); } - Widget _buildTableVisualCard() { + Widget _buildTableVisualCard(BuildContext context) { return Container( margin: const EdgeInsets.fromLTRB(16, 0, 16, 16), height: 220, // Increased height @@ -284,14 +285,14 @@ class OrderDetailPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Makan di Tempat', + context.lang.dine_in, style: AppStyle.sm.copyWith( color: AppColor.white.withOpacity(0.9), fontWeight: FontWeight.w500, ), ), Text( - 'Dine In Experience', + context.lang.dine_in_experience, style: AppStyle.lg.copyWith( color: AppColor.white, fontWeight: FontWeight.bold, @@ -347,7 +348,7 @@ class OrderDetailPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - 'MEJA', + context.lang.table, style: AppStyle.xs.copyWith( color: AppColor.primary.withOpacity( 0.7, @@ -417,7 +418,7 @@ class OrderDetailPage extends StatelessWidget { ), const SizedBox(width: 6), Text( - '${order.orderItems.length} Items', + '${order.orderItems.length} ${context.lang.items}', style: AppStyle.sm.copyWith( color: AppColor.white, fontWeight: FontWeight.w500, @@ -470,7 +471,7 @@ class OrderDetailPage extends StatelessWidget { ); } - Widget _buildOrderInfoCard() { + Widget _buildOrderInfoCard(BuildContext context) { return Container( margin: const EdgeInsets.symmetric(horizontal: 16), decoration: BoxDecoration( @@ -517,7 +518,7 @@ class OrderDetailPage extends StatelessWidget { ), const SizedBox(width: 16), Text( - 'Informasi Pesanan', + context.lang.order_information, style: AppStyle.xl.copyWith( fontWeight: FontWeight.bold, color: AppColor.primary, @@ -527,24 +528,28 @@ class OrderDetailPage extends StatelessWidget { ), const SizedBox(height: 24), if (_shouldShowTableNumber()) - _buildInfoRow(Icons.table_restaurant, 'Meja', order.tableNumber), + _buildInfoRow( + Icons.table_restaurant, + context.lang.table, + order.tableNumber, + ), _buildInfoRow( Icons.delivery_dining, - 'Tipe Pesanan', + context.lang.order_type, order.orderType, ), _buildInfoRow( Icons.payment, - 'Status Pembayaran', + context.lang.payment_status, order.paymentStatus, ), _buildInfoRow( Icons.access_time, - 'Dibuat', + context.lang.created, _formatDateTime(order.createdAt), ), if (order.notes.isNotEmpty) - _buildInfoRow(Icons.note, 'Catatan', order.notes), + _buildInfoRow(Icons.note, context.lang.note, order.notes), ], ), ), @@ -590,7 +595,7 @@ class OrderDetailPage extends StatelessWidget { ); } - Widget _buildOrderItemsSection() { + Widget _buildOrderItemsSection(BuildContext context) { return Container( margin: const EdgeInsets.symmetric(horizontal: 16), decoration: BoxDecoration( @@ -612,7 +617,7 @@ class OrderDetailPage extends StatelessWidget { child: Row( children: [ Text( - 'Item Pesanan', + context.lang.order_item, style: AppStyle.lg.copyWith( fontWeight: FontWeight.bold, color: AppColor.textPrimary, @@ -629,7 +634,7 @@ class OrderDetailPage extends StatelessWidget { borderRadius: BorderRadius.circular(12), ), child: Text( - '${order.orderItems.length} Item', + '${order.orderItems.length} ${context.lang.item}', style: AppStyle.sm.copyWith( color: AppColor.primary, fontWeight: FontWeight.w600, @@ -647,7 +652,7 @@ class OrderDetailPage extends StatelessWidget { separatorBuilder: (context, index) => const Divider(height: 24), itemBuilder: (context, index) { final item = order.orderItems[index]; - return _buildOrderItemCard(item); + return _buildOrderItemCard(context, item); }, ), ], @@ -655,9 +660,9 @@ class OrderDetailPage extends StatelessWidget { ); } - Widget _buildOrderItemCard(OrderItem item) { + Widget _buildOrderItemCard(BuildContext context, OrderItem item) { // Assume we add status to OrderItem model or determine from order status - String itemStatus = _getItemStatus(item); + String itemStatus = _getItemStatus(context, item); Color itemStatusColor = _getItemStatusColor(itemStatus); return Container( @@ -786,7 +791,7 @@ class OrderDetailPage extends StatelessWidget { borderRadius: BorderRadius.circular(6), ), child: Text( - 'Diskon: -Rp ${_formatCurrency(item.discountAmount)}', + '${context.lang.discount}: -Rp ${_formatCurrency(item.discountAmount)}', style: AppStyle.xs.copyWith( color: AppColor.error, fontWeight: FontWeight.w600, @@ -811,7 +816,7 @@ class OrderDetailPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - 'Total Item', + context.lang.total_item, style: AppStyle.sm.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -845,7 +850,7 @@ class OrderDetailPage extends StatelessWidget { ); } - Widget _buildPaymentSummaryCard() { + Widget _buildPaymentSummaryCard(BuildContext context) { return Container( margin: const EdgeInsets.symmetric(horizontal: 16), decoration: BoxDecoration( @@ -866,26 +871,38 @@ class OrderDetailPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Ringkasan Pembayaran', + context.lang.payment_summary, style: AppStyle.lg.copyWith( fontWeight: FontWeight.bold, color: AppColor.primary, ), ), const SizedBox(height: 16), - _buildSummaryRow('Subtotal', order.subtotal), + _buildSummaryRow(context.lang.subtotal, order.subtotal), if (order.discountAmount > 0) _buildSummaryRow( - 'Diskon', + context.lang.discount, -order.discountAmount, isDiscount: true, ), - _buildSummaryRow('Pajak', order.taxAmount), + _buildSummaryRow(context.lang.tax, order.taxAmount), const Divider(height: 24), - _buildSummaryRow('Total', order.totalAmount, isTotal: true), - _buildSummaryRow('Dibayar', order.totalPaid, isSuccess: true), + _buildSummaryRow( + context.lang.total, + order.totalAmount, + isTotal: true, + ), + _buildSummaryRow( + context.lang.paid, + order.totalPaid, + isSuccess: true, + ), if (order.remainingAmount > 0) - _buildSummaryRow('Sisa', order.remainingAmount, isError: true), + _buildSummaryRow( + context.lang.remaining, + order.remainingAmount, + isError: true, + ), ], ), ), @@ -930,7 +947,7 @@ class OrderDetailPage extends StatelessWidget { ); } - Widget _buildPaymentMethodsSection() { + Widget _buildPaymentMethodsSection(BuildContext context) { if (order.payments.isEmpty) return const SizedBox(); return Container( @@ -952,7 +969,7 @@ class OrderDetailPage extends StatelessWidget { Padding( padding: const EdgeInsets.fromLTRB(20, 20, 20, 0), child: Text( - 'Metode Pembayaran', + context.lang.payment_method, style: AppStyle.lg.copyWith( fontWeight: FontWeight.bold, color: AppColor.textPrimary, @@ -1159,7 +1176,7 @@ class OrderDetailPage extends StatelessWidget { } } - String _getItemStatus(OrderItem item) { + String _getItemStatus(BuildContext context, OrderItem item) { // Logic untuk menentukan status item berdasarkan: // 1. Status order secara keseluruhan // 2. Jika ada field status di OrderItem model @@ -1167,26 +1184,24 @@ class OrderDetailPage extends StatelessWidget { switch (order.status.toLowerCase()) { case 'completed': - return 'Selesai'; + return context.lang.completed; case 'pending': - return 'Menunggu'; + return context.lang.pending; case 'cancelled': - return 'Dibatalkan'; + return context.lang.void_text; default: - return 'Menunggu'; + return context.lang.pending; } } Color _getItemStatusColor(String status) { switch (status.toLowerCase()) { - case 'selesai': + case 'completed': return AppColor.success; - case 'diproses': + case 'pending': return AppColor.warning; - case 'dibatalkan': + case 'cancelled': return AppColor.error; - case 'siap': - return AppColor.info; default: return AppColor.primary; } diff --git a/lib/presentation/pages/order/order_list/order_page.dart b/lib/presentation/pages/order/order_list/order_page.dart index 8e00948..6ae011b 100644 --- a/lib/presentation/pages/order/order_list/order_page.dart +++ b/lib/presentation/pages/order/order_list/order_page.dart @@ -3,15 +3,13 @@ import 'dart:developer'; import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:line_icons/line_icons.dart'; import 'package:shimmer/shimmer.dart'; import '../../../../application/order/order_loader/order_loader_bloc.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../injection.dart'; import '../../../components/appbar/appbar.dart'; -import '../../../components/button/button.dart'; -import '../../../components/spacer/spacer.dart'; import '../../../components/widgets/empty_widget.dart'; import '../../../router/app_router.gr.dart'; import 'widgets/filter_header_delegate.dart'; @@ -224,11 +222,10 @@ class _OrderPageState extends State with TickerProviderStateMixin { pinned: true, backgroundColor: AppColor.primary, centerTitle: false, - flexibleSpace: CustomAppBar(title: 'Order', isBack: false), - actions: [ - ActionIconButton(onTap: () {}, icon: LineIcons.filter), - SpaceWidth(8), - ], + flexibleSpace: CustomAppBar( + title: context.lang.orders, + isBack: false, + ), ), // Pinned Filter Section @@ -285,7 +282,7 @@ class _OrderPageState extends State with TickerProviderStateMixin { child: Row( children: [ Text( - '${state.orders.length} ${state.status.toLowerCase()} order${state.orders.length != 1 ? 's' : ''}', + '${state.orders.length} ${state.status.toLowerCase()} ${context.lang.orders}', style: TextStyle( color: AppColor.textSecondary, fontSize: 14, @@ -300,9 +297,10 @@ class _OrderPageState extends State with TickerProviderStateMixin { _buildShimmerList() else if (state.orders.isEmpty) EmptyWidget( - title: 'Order', - message: - 'No ${state.status.toLowerCase()} orders found', + title: context.lang.order, + message: context.lang.no_order_with_status( + state.status.toLowerCase(), + ), ) else ListView.builder( diff --git a/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart b/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart index 1d562fb..71aefc9 100644 --- a/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart +++ b/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import '../../../../../common/extension/extension.dart'; import '../../../../components/field/date_range_picker_field.dart'; import 'status_tile.dart'; @@ -36,7 +37,6 @@ class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { double shrinkOffset, bool overlapsContent, ) { - print('FilterHeaderDelegate build called'); // Debug log return Container( color: backgroundColor, padding: padding, @@ -50,9 +50,6 @@ class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { startDate: startDate, endDate: endDate, onChanged: (start, end) { - print( - 'onChanged called in FilterHeaderDelegate: $start - $end', - ); // Debug log onDateChanged(start, end); }, ), @@ -70,7 +67,11 @@ class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { right: index < filterOptions.length - 1 ? 8 : 0, ), child: OrderStatusTile( - label: option, + label: option == "All" + ? context.lang.all + : option == "Completed" + ? context.lang.completed + : context.lang.pending, isSelected: option == selectedFilter, onSelected: (isSelected) { if (isSelected) { diff --git a/lib/presentation/pages/order/order_list/widgets/order_tile.dart b/lib/presentation/pages/order/order_list/widgets/order_tile.dart index 77311a7..c9ecbfd 100644 --- a/lib/presentation/pages/order/order_list/widgets/order_tile.dart +++ b/lib/presentation/pages/order/order_list/widgets/order_tile.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import '../../../../../common/extension/extension.dart'; import '../../../../../common/theme/theme.dart'; import '../../../../../domain/order/order.dart'; @@ -46,19 +47,19 @@ class OrderTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ // Header Row - _buildHeaderRow(), + _buildHeaderRow(context), const SizedBox(height: 12), // Order Info - _buildOrderInfo(), + _buildOrderInfo(context), const SizedBox(height: 16), // Amount Section - _buildAmountSection(), + _buildAmountSection(context), const SizedBox(height: 16), // Footer with Actions - _buildFooterActions(), + _buildFooterActions(context), ], ), ), @@ -67,7 +68,7 @@ class OrderTile extends StatelessWidget { ); } - Widget _buildHeaderRow() { + Widget _buildHeaderRow(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -94,12 +95,12 @@ class OrderTile extends StatelessWidget { ), ], ), - _buildStatusChip(), + _buildStatusChip(context), ], ); } - Widget _buildStatusChip() { + Widget _buildStatusChip(BuildContext context) { Color statusColor; String statusText; IconData statusIcon; @@ -107,27 +108,34 @@ class OrderTile extends StatelessWidget { // Check isVoid and isRefund first for display if (order.isVoid) { statusColor = AppColor.error; - statusText = 'Void'; + statusText = context.lang.void_text; statusIcon = Icons.block; } else if (order.isRefund) { statusColor = AppColor.info; - statusText = 'Refunded'; + statusText = context.lang.refund; statusIcon = Icons.undo; } else { // Handle status values (only pending and completed) switch (order.status.toLowerCase()) { case 'completed': + statusColor = AppColor.success; + statusText = context.lang.completed; + statusIcon = Icons.check_circle; case 'paid': case 'finished': statusColor = AppColor.success; - statusText = 'Completed'; + statusText = context.lang.completed; statusIcon = Icons.check_circle; break; case 'pending': + statusColor = AppColor.warning; + statusText = context.lang.pending; + statusIcon = Icons.schedule; + break; case 'waiting': case 'processing': statusColor = AppColor.warning; - statusText = 'Pending'; + statusText = context.lang.pending; statusIcon = Icons.schedule; break; default: @@ -163,7 +171,7 @@ class OrderTile extends StatelessWidget { ); } - Widget _buildOrderInfo() { + Widget _buildOrderInfo(BuildContext context) { return Row( children: [ Expanded( @@ -177,7 +185,7 @@ class OrderTile extends StatelessWidget { const SizedBox(width: 6), Expanded( child: Text( - _getOrderInfoText(), + _getOrderInfoText(context), style: const TextStyle( fontSize: 14, fontWeight: FontWeight.w600, @@ -198,7 +206,7 @@ class OrderTile extends StatelessWidget { ), const SizedBox(width: 6), Text( - '${order.orderItems.length} items', + '${order.orderItems.length} ${context.lang.items}', style: const TextStyle( fontSize: 13, color: AppColor.textSecondary, @@ -239,7 +247,7 @@ class OrderTile extends StatelessWidget { ); } - Widget _buildAmountSection() { + Widget _buildAmountSection(BuildContext context) { return Container( width: double.infinity, padding: const EdgeInsets.all(16), @@ -264,8 +272,8 @@ class OrderTile extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Text( - 'Total Amount', + Text( + context.lang.total_amount, style: TextStyle( fontSize: 14, color: AppColor.textWhite, @@ -274,7 +282,7 @@ class OrderTile extends StatelessWidget { ), const SizedBox(height: 4), Text( - 'Rp ${NumberFormat('#,###').format(order.totalAmount)}', + order.totalAmount.currencyFormatRp, style: const TextStyle( fontSize: 24, fontWeight: FontWeight.bold, @@ -284,7 +292,7 @@ class OrderTile extends StatelessWidget { if (order.remainingAmount > 0) ...[ const SizedBox(height: 4), Text( - 'Remaining: Rp ${NumberFormat('#,###').format(order.remainingAmount)}', + '${context.lang.remaining}: ${order.remainingAmount.currencyFormatRp}', style: const TextStyle( fontSize: 12, color: AppColor.textWhite, @@ -311,7 +319,7 @@ class OrderTile extends StatelessWidget { ); } - Widget _buildFooterActions() { + Widget _buildFooterActions(BuildContext context) { // Don't show anything if order is void or refunded if (order.isVoid || order.isRefund) { return const SizedBox.shrink(); @@ -326,7 +334,7 @@ class OrderTile extends StatelessWidget { if (order.payments.isNotEmpty) ...[ const SizedBox(height: 2), Text( - 'Payment: ${_getPaymentMethods()}', + '${context.lang.payment}: ${_getPaymentMethods()}', style: const TextStyle( fontSize: 11, color: AppColor.textLight, @@ -337,59 +345,10 @@ class OrderTile extends StatelessWidget { ], ), ), - if (order.status.toLowerCase() == 'completed') ...[ - _buildActionButton( - icon: Icons.print, - label: 'Print', - onPressed: onPrint, - color: AppColor.info, - ), - const SizedBox(width: 8), - _buildActionButton( - icon: Icons.undo, - label: 'Refund', - onPressed: onRefund, - color: AppColor.warning, - ), - ], ], ); } - Widget _buildActionButton({ - required IconData icon, - required String label, - required VoidCallback? onPressed, - required Color color, - }) { - return Material( - color: color.withOpacity(0.1), - borderRadius: BorderRadius.circular(8), - child: InkWell( - onTap: onPressed, - borderRadius: BorderRadius.circular(8), - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(icon, size: 16, color: color), - const SizedBox(width: 4), - Text( - label, - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w600, - color: color, - ), - ), - ], - ), - ), - ), - ); - } - IconData _getOrderInfoIcon() { switch (order.orderType.toLowerCase()) { case 'dine in': @@ -406,11 +365,11 @@ class OrderTile extends StatelessWidget { } } - String _getOrderInfoText() { + String _getOrderInfoText(BuildContext context) { switch (order.orderType.toLowerCase()) { case 'dine in': case 'dine_in': - return 'Table ${order.tableNumber.isNotEmpty ? order.tableNumber : 'N/A'}'; + return '${context.lang.table} ${order.tableNumber.isNotEmpty ? order.tableNumber : 'N/A'}'; case 'takeaway': case 'take_away': case 'pickup': @@ -419,8 +378,8 @@ class OrderTile extends StatelessWidget { return 'Delivery Order'; default: return order.tableNumber.isNotEmpty - ? 'Table ${order.tableNumber}' - : 'Order ${order.orderNumber}'; + ? '${context.lang.table} ${order.tableNumber}' + : context.lang.order; } } diff --git a/lib/presentation/pages/outlet/outlet_information_page.dart b/lib/presentation/pages/outlet/outlet_information_page.dart index 49e122a..b33f925 100644 --- a/lib/presentation/pages/outlet/outlet_information_page.dart +++ b/lib/presentation/pages/outlet/outlet_information_page.dart @@ -3,10 +3,12 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../domain/outlet/outlet.dart'; import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; +import '../../components/spacer/spacer.dart'; // Outlet Information Page @RoutePage() @@ -79,14 +81,14 @@ class _OutletInformationPageState extends State expandedHeight: 120.0, floating: false, pinned: true, - flexibleSpace: CustomAppBar(title: 'Outlet Information'), + flexibleSpace: CustomAppBar(title: context.lang.outlet_information), ), SliverToBoxAdapter( child: FadeTransition( opacity: _fadeAnimation, child: SlideTransition( position: _slideAnimation, - child: _buildContent(), + child: _buildContent(context), ), ), ), @@ -95,7 +97,7 @@ class _OutletInformationPageState extends State ); } - Widget _buildContent() { + Widget _buildContent(BuildContext context) { return BlocBuilder( builder: (context, state) { return Padding( @@ -105,15 +107,11 @@ class _OutletInformationPageState extends State children: [ _buildHeaderCard(state.outlet), const SizedBox(height: 20), - _buildInfoSection(state.outlet), + _buildInfoSection(context, state.outlet), const SizedBox(height: 20), - _buildContactSection(state.outlet), + _buildBusinessSection(context, state.outlet), const SizedBox(height: 20), - _buildBusinessSection(state.outlet), - const SizedBox(height: 20), - _buildStatusSection(state.outlet), - const SizedBox(height: 20), - _buildTimestampSection(state.outlet), + _buildStatusSection(context, state.outlet), ], ), ); @@ -190,62 +188,65 @@ class _OutletInformationPageState extends State ); } - Widget _buildInfoSection(Outlet outlet) { + Widget _buildInfoSection(BuildContext context, Outlet outlet) { return _buildAnimatedCard( delay: 200, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - _buildSectionTitle('General Information', Icons.info_outline), - const SizedBox(height: 16), - _buildInfoRow('Outlet ID', outlet.id, Icons.fingerprint), - _buildInfoRow( - 'Organization ID', - outlet.organizationId, - Icons.business, + _buildSectionTitle( + context.lang.outlet_information, + Icons.info_outline, + ), + SpaceHeight(20), + _buildInfoRow( + context.lang.address, + outlet.address, + Icons.location_on, + ), + _buildInfoRow( + context.lang.phone_number, + outlet.phoneNumber, + Icons.phone, ), - _buildInfoRow('Address', outlet.address, Icons.location_on), ], ), ); } - Widget _buildContactSection(Outlet outlet) { - return _buildAnimatedCard( - delay: 400, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _buildSectionTitle('Contact Information', Icons.contact_phone), - const SizedBox(height: 16), - _buildInfoRow('Phone Number', outlet.phoneNumber, Icons.phone), - ], - ), - ); - } - - Widget _buildBusinessSection(Outlet outlet) { + Widget _buildBusinessSection(BuildContext context, Outlet outlet) { return _buildAnimatedCard( delay: 600, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - _buildSectionTitle('Business Settings', Icons.settings_applications), + _buildSectionTitle( + context.lang.business_settings, + Icons.settings_applications, + ), const SizedBox(height: 16), - _buildInfoRow('Currency', outlet.currency, Icons.monetization_on), - _buildInfoRow('Tax Rate', '${outlet.taxRate}%', Icons.percent), + _buildInfoRow( + context.lang.currency, + outlet.currency, + Icons.monetization_on, + ), + _buildInfoRow( + context.lang.tax_rate, + '${outlet.taxRate}%', + Icons.percent, + ), ], ), ); } - Widget _buildStatusSection(Outlet outlet) { + Widget _buildStatusSection(BuildContext context, Outlet outlet) { return _buildAnimatedCard( delay: 800, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - _buildSectionTitle('Status', Icons.toggle_on), + _buildSectionTitle(context.lang.status_text, Icons.toggle_on), const SizedBox(height: 16), Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), @@ -272,7 +273,7 @@ class _OutletInformationPageState extends State ), const SizedBox(width: 12), Text( - outlet.isActive ? 'Active' : 'Inactive', + outlet.isActive ? context.lang.active : context.lang.inactive, style: AppStyle.md.copyWith( color: outlet.isActive ? AppColor.success : AppColor.error, fontWeight: FontWeight.w600, @@ -286,29 +287,6 @@ class _OutletInformationPageState extends State ); } - Widget _buildTimestampSection(Outlet outlet) { - return _buildAnimatedCard( - delay: 1000, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _buildSectionTitle('Timestamps', Icons.schedule), - const SizedBox(height: 16), - _buildInfoRow( - 'Created At', - _formatDateTime(outlet.createdAt), - Icons.add_circle_outline, - ), - _buildInfoRow( - 'Updated At', - _formatDateTime(outlet.updatedAt), - Icons.update, - ), - ], - ), - ); - } - Widget _buildAnimatedCard({required Widget child, required int delay}) { return TweenAnimationBuilder( duration: Duration(milliseconds: 600 + delay), @@ -396,8 +374,4 @@ class _OutletInformationPageState extends State ), ); } - - String _formatDateTime(DateTime dateTime) { - return '${dateTime.day}/${dateTime.month}/${dateTime.year} ${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}'; - } } diff --git a/lib/presentation/pages/product/product_analytic/product_analytic_page.dart b/lib/presentation/pages/product/product_analytic/product_analytic_page.dart index 853c4c2..33b0683 100644 --- a/lib/presentation/pages/product/product_analytic/product_analytic_page.dart +++ b/lib/presentation/pages/product/product_analytic/product_analytic_page.dart @@ -3,6 +3,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../application/analytic/product_analytic_loader/product_analytic_loader_bloc.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/analytic/analytic.dart'; import '../../../../injection.dart'; @@ -136,18 +137,7 @@ class _ProductAnalyticPageState extends State pinned: true, elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: FlexibleSpaceBar( - background: Container( - decoration: const BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: AppColor.primaryGradient, - ), - ), - child: const CustomAppBar(title: "Analisis Produk"), - ), - ), + flexibleSpace: CustomAppBar(title: context.lang.product_analytic), ); } @@ -214,7 +204,7 @@ class _ProductAnalyticPageState extends State Expanded( child: _buildSummaryCard( icon: Icons.monetization_on, - title: 'Total Pendapatan', + title: context.lang.total_revenue, value: _formatCurrency(stats.totalRevenue), color: AppColor.success, ), @@ -223,7 +213,7 @@ class _ProductAnalyticPageState extends State Expanded( child: _buildSummaryCard( icon: Icons.shopping_cart, - title: 'Total Terjual', + title: context.lang.total_sold, value: _formatNumber(stats.totalQuantity), color: AppColor.info, ), @@ -236,7 +226,7 @@ class _ProductAnalyticPageState extends State Expanded( child: _buildSummaryCard( icon: Icons.receipt_long, - title: 'Total Pesanan', + title: context.lang.total_orders, value: _formatNumber(stats.totalOrders), color: AppColor.warning, ), @@ -245,7 +235,7 @@ class _ProductAnalyticPageState extends State Expanded( child: _buildSummaryCard( icon: Icons.trending_up, - title: 'Rata-rata Nilai', + title: context.lang.average_price, value: _formatCurrency(stats.averageOrderValue), color: AppColor.primary, ), @@ -541,7 +531,7 @@ class _ProductAnalyticPageState extends State Icon(Icons.trending_up, color: AppColor.success, size: 20), const SizedBox(width: 8), Text( - 'Pendapatan', + context.lang.revenue, style: _getTextStyle( AppStyle.sm, color: AppColor.success, @@ -552,7 +542,7 @@ class _ProductAnalyticPageState extends State ), const SizedBox(height: 8), Text( - _formatCurrency(product.revenue.toDouble()), + product.revenue.currencyFormatRp, style: _getTextStyle( AppStyle.xl, color: AppColor.success, @@ -570,14 +560,14 @@ class _ProductAnalyticPageState extends State _buildStatCard( icon: Icons.shopping_cart_outlined, value: '${product.quantitySold}', - label: 'Terjual', + label: context.lang.sold, color: AppColor.info, ), const SizedBox(height: 8), _buildStatCard( icon: Icons.receipt_outlined, value: '${product.orderCount}', - label: 'Pesanan', + label: context.lang.orders, color: AppColor.warning, ), ], @@ -645,7 +635,7 @@ class _ProductAnalyticPageState extends State mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - 'Harga Rata-rata', + context.lang.average_price, style: _getTextStyle( AppStyle.sm, color: AppColor.textSecondary, @@ -653,7 +643,7 @@ class _ProductAnalyticPageState extends State ), ), Text( - _formatCurrency(product.averagePrice), + product.averagePrice.round().currencyFormatRp, style: _getTextStyle( AppStyle.sm, color: _getCategoryColor(product.categoryName), diff --git a/lib/presentation/pages/product/product_list/product_page.dart b/lib/presentation/pages/product/product_list/product_page.dart index cc71457..0c4aa78 100644 --- a/lib/presentation/pages/product/product_list/product_page.dart +++ b/lib/presentation/pages/product/product_list/product_page.dart @@ -6,6 +6,7 @@ import 'package:shimmer/shimmer.dart'; import '../../../../application/category/category_loader/category_loader_bloc.dart'; import '../../../../application/product/product_loader/product_loader_bloc.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/category/category.dart'; import '../../../../domain/product/product.dart'; @@ -83,7 +84,7 @@ class _ProductPageState extends State child: CustomScrollView( controller: scrollController, slivers: [ - _buildSliverAppBar(), + _buildSliverAppBar(context), _buildCategoryFilter(), _buildProductContent(state), ], @@ -95,13 +96,13 @@ class _ProductPageState extends State ); } - Widget _buildSliverAppBar() { + Widget _buildSliverAppBar(BuildContext context) { return SliverAppBar( expandedHeight: 120.0, floating: false, pinned: true, elevation: 0, - flexibleSpace: CustomAppBar(title: 'Produk'), + flexibleSpace: CustomAppBar(title: context.lang.product), actions: [ ActionIconButton(onTap: () {}, icon: LineIcons.search), ActionIconButton( diff --git a/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart b/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart index b6c975f..9acc80d 100644 --- a/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart +++ b/lib/presentation/pages/profile/pages/profile_change_password/profile_change_password_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../../application/user/change_password_form/change_password_form_bloc.dart'; +import '../../../../../common/extension/extension.dart'; import '../../../../../common/theme/theme.dart'; import '../../../../../injection.dart'; import '../../../../components/appbar/appbar.dart'; @@ -39,7 +40,7 @@ class _ProfileChangePasswordPageState extends State { (f) => AppFlushbar.showUserFailureToast(context, f), (user) { if (context.mounted) { - AppFlushbar.showSuccess(context, 'Password changed'); + AppFlushbar.showSuccess(context, context.lang.password_changed); Future.delayed(const Duration(seconds: 2), () { context.router.back(); }); @@ -59,7 +60,7 @@ class _ProfileChangePasswordPageState extends State { pinned: true, elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Change Password'), + flexibleSpace: CustomAppBar(title: context.lang.change_password), ), SliverToBoxAdapter( child: @@ -83,7 +84,7 @@ class _ProfileChangePasswordPageState extends State { ChangePasswordNewPassword(), SpaceHeight(24), AppElevatedButton( - text: 'Save', + text: context.lang.save, isLoading: state.isSubmitting, onPressed: () { context.read().add( diff --git a/lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart b/lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart index c3886ae..2422388 100644 --- a/lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart +++ b/lib/presentation/pages/profile/pages/profile_change_password/widgets/current_password.dart @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import '../../../../../../application/user/change_password_form/change_password_form_bloc.dart'; +import '../../../../../../common/extension/extension.dart'; import '../../../../../components/field/field.dart'; class ChangePasswordCurrentPassword extends StatelessWidget { @@ -11,9 +12,9 @@ class ChangePasswordCurrentPassword extends StatelessWidget { @override Widget build(BuildContext context) { return AppPasswordTextFormField( - title: 'Current Password', + title: context.lang.current_password, prefixIcon: LineIcons.lock, - hintText: 'Please enter your current password', + hintText: context.lang.current_password_placeholder, onChanged: (value) => context.read().add( ChangePasswordFormEvent.currentPasswordChanged(value), ), @@ -23,7 +24,7 @@ class ChangePasswordCurrentPassword extends StatelessWidget { .state .currentPassword .isEmpty) { - return 'Please enter your current password'; + return context.lang.current_password_placeholder; } return null; }, diff --git a/lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart b/lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart index 4d404be..ad133f6 100644 --- a/lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart +++ b/lib/presentation/pages/profile/pages/profile_change_password/widgets/new_password.dart @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import '../../../../../../application/user/change_password_form/change_password_form_bloc.dart'; +import '../../../../../../common/extension/extension.dart'; import '../../../../../components/field/field.dart'; class ChangePasswordNewPassword extends StatelessWidget { @@ -11,20 +12,20 @@ class ChangePasswordNewPassword extends StatelessWidget { @override Widget build(BuildContext context) { return AppPasswordTextFormField( - title: 'New Password', + title: context.lang.new_password, prefixIcon: LineIcons.lock, - hintText: 'Please enter your new password', + hintText: context.lang.new_password_placeholder, onChanged: (value) => context.read().add( ChangePasswordFormEvent.newPasswordChanged(value), ), validator: (value) { if (context.read().state.newPassword.isEmpty) { - return 'Please enter your new password'; + return context.lang.new_password_placeholder; } if (context.read().state.newPassword == context.read().state.currentPassword) { - return 'New password cannot be same as current password'; + return context.lang.new_password_not_same; } return null; }, diff --git a/lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart b/lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart index b19172e..53ff39d 100644 --- a/lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart +++ b/lib/presentation/pages/profile/pages/profile_edit/profile_edit_page.dart @@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../../application/auth/auth_bloc.dart'; import '../../../../../application/user/user_edit_form/user_edit_form_bloc.dart'; +import '../../../../../common/extension/extension.dart'; import '../../../../../common/theme/theme.dart'; import '../../../../../domain/user/user.dart'; import '../../../../../injection.dart'; @@ -64,7 +65,7 @@ class _ProfileEditPageState extends State { pinned: true, elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Profile Edit'), + flexibleSpace: CustomAppBar(title: context.lang.edit_profile), ), SliverToBoxAdapter( child: BlocBuilder( @@ -85,7 +86,7 @@ class _ProfileEditPageState extends State { ProfileEditNameField(controller: nameController), SpaceHeight(24), AppElevatedButton( - text: 'Save', + text: context.lang.save, isLoading: state.isSubmitting, onPressed: () { context.read().add( diff --git a/lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart b/lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart index bce6ffd..9adbc51 100644 --- a/lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart +++ b/lib/presentation/pages/profile/pages/profile_edit/widgets/name_field.dart @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import '../../../../../../application/user/user_edit_form/user_edit_form_bloc.dart'; +import '../../../../../../common/extension/extension.dart'; import '../../../../../components/field/field.dart'; class ProfileEditNameField extends StatelessWidget { @@ -12,9 +13,9 @@ class ProfileEditNameField extends StatelessWidget { @override Widget build(BuildContext context) { return AppTextFormField( - title: 'Name', + title: context.lang.name, prefixIcon: LineIcons.user, - hintText: 'Please enter your name', + hintText: context.lang.name_placeholder, controller: controller, onChanged: (value) { context.read().add( @@ -23,7 +24,7 @@ class ProfileEditNameField extends StatelessWidget { }, validator: (value) { if (context.read().state.name.isEmpty) { - return 'Please enter your name'; + return context.lang.name_placeholder; } return null; diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 3faeeff..48cbc92 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -6,6 +6,7 @@ import 'package:loader_overlay/loader_overlay.dart'; import '../../../application/auth/auth_bloc.dart'; import '../../../application/auth/logout_form/logout_form_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../injection.dart'; import '../../components/button/button.dart'; @@ -89,7 +90,7 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { MainAxisAlignment.spaceBetween, children: [ Text( - 'Profile', + context.lang.profile, style: AppStyle.xl.copyWith( fontWeight: FontWeight.w700, fontSize: 18, diff --git a/lib/presentation/pages/profile/widgets/account_info.dart b/lib/presentation/pages/profile/widgets/account_info.dart index 270e5db..70e3df1 100644 --- a/lib/presentation/pages/profile/widgets/account_info.dart +++ b/lib/presentation/pages/profile/widgets/account_info.dart @@ -34,7 +34,7 @@ class ProfileAccountInfo extends StatelessWidget { Padding( padding: EdgeInsets.all(16), child: Text( - 'Account Information', + context.lang.account_information, style: AppStyle.xl.copyWith( fontSize: 18, fontWeight: FontWeight.bold, @@ -45,7 +45,7 @@ class ProfileAccountInfo extends StatelessWidget { ProfileTile( icon: LineIcons.envelope, - title: 'Email', + title: context.lang.email, subtitle: user.email, showArrow: false, ), @@ -54,7 +54,7 @@ class ProfileAccountInfo extends StatelessWidget { ProfileTile( icon: LineIcons.calendarAlt, - title: 'Member Since', + title: context.lang.member_since, subtitle: user.createdAt.toDate, showArrow: false, ), @@ -62,15 +62,15 @@ class ProfileAccountInfo extends StatelessWidget { ProfileTile( icon: LineIcons.userEdit, - title: 'Ubah Profil', - subtitle: 'Ubah profil kamu', + title: context.lang.edit_profile, + subtitle: context.lang.edit_profile_desc, onTap: () => context.router.push(ProfileEditRoute(user: user)), ), ProfileDivider(), ProfileTile( icon: LineIcons.lock, - title: 'Change Password', - subtitle: 'Change your password', + title: context.lang.change_password, + subtitle: context.lang.change_password_desc, onTap: () => context.router.push(ProfileChangePasswordRoute()), ), ], diff --git a/lib/presentation/pages/profile/widgets/app_setting.dart b/lib/presentation/pages/profile/widgets/app_setting.dart index 8e623be..563ef57 100644 --- a/lib/presentation/pages/profile/widgets/app_setting.dart +++ b/lib/presentation/pages/profile/widgets/app_setting.dart @@ -1,6 +1,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../router/app_router.gr.dart'; import 'profile_tile.dart'; @@ -37,7 +38,7 @@ class _ProfileAppSettingState extends State { Padding( padding: EdgeInsets.all(16), child: Text( - 'App Settings', + context.lang.app_settings, style: AppStyle.xl.copyWith( fontSize: 18, fontWeight: FontWeight.bold, @@ -74,8 +75,8 @@ class _ProfileAppSettingState extends State { // ProfileDivider(), ProfileTile( icon: Icons.language_outlined, - title: 'Language', - subtitle: 'English (US)', + title: context.lang.language, + subtitle: context.lang.language_desc, onTap: () => context.router.push(LanguageRoute()), ), ], diff --git a/lib/presentation/pages/profile/widgets/business_setting.dart b/lib/presentation/pages/profile/widgets/business_setting.dart index fee212a..d7789be 100644 --- a/lib/presentation/pages/profile/widgets/business_setting.dart +++ b/lib/presentation/pages/profile/widgets/business_setting.dart @@ -1,6 +1,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../router/app_router.gr.dart'; import 'divider.dart'; @@ -30,7 +31,7 @@ class ProfileBusinessSetting extends StatelessWidget { Padding( padding: EdgeInsets.all(16), child: Text( - 'Business Settings', + context.lang.business_settings, style: AppStyle.xl.copyWith( fontSize: 18, fontWeight: FontWeight.bold, @@ -41,8 +42,8 @@ class ProfileBusinessSetting extends StatelessWidget { ProfileTile( icon: Icons.business_outlined, - title: 'Outlet Information', - subtitle: 'Manage your Outlet details', + title: context.lang.outlet_information, + subtitle: context.lang.outlet_informatio_desc, onTap: () => context.router.push(OutletInformationRoute()), ), @@ -50,8 +51,8 @@ class ProfileBusinessSetting extends StatelessWidget { ProfileTile( icon: Icons.people_outline, - title: 'Staff Management', - subtitle: 'Manage employees and permissions', + title: context.lang.staff_management, + subtitle: context.lang.staff_management_desc, onTap: () => context.router.push(ComingSoonRoute()), ), @@ -59,16 +60,16 @@ class ProfileBusinessSetting extends StatelessWidget { ProfileTile( icon: Icons.inventory_2_outlined, - title: 'Product', - subtitle: 'Manage your products', + title: context.lang.products, + subtitle: context.lang.manage_your_products, onTap: () => context.router.push(ProductRoute()), ), ProfileDivider(), ProfileTile( icon: Icons.download_outlined, - title: 'Download Report', - subtitle: 'Download your sales or inventory report', + title: context.lang.download_report, + subtitle: context.lang.download_report_desc, onTap: () => context.router.push(DownloadReportRoute()), ), ], diff --git a/lib/presentation/pages/profile/widgets/danger_zone.dart b/lib/presentation/pages/profile/widgets/danger_zone.dart index 9d8c873..e9d443c 100644 --- a/lib/presentation/pages/profile/widgets/danger_zone.dart +++ b/lib/presentation/pages/profile/widgets/danger_zone.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../application/auth/logout_form/logout_form_bloc.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; -import '../../../components/spacer/spacer.dart'; import 'profile_tile.dart'; class ProfileDangerZone extends StatelessWidget { @@ -28,27 +28,10 @@ class ProfileDangerZone extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: const EdgeInsets.all(16), - child: Row( - children: [ - Icon(Icons.warning_outlined, color: AppColor.error, size: 20), - const SpaceWidth(8), - Text( - 'Danger Zone', - style: AppStyle.xl.copyWith( - fontWeight: FontWeight.bold, - color: AppColor.error, - ), - ), - ], - ), - ), - ProfileTile( icon: Icons.logout, - title: 'Logout', - subtitle: 'Sign out from your account', + title: context.lang.logout, + subtitle: context.lang.logout_desc, iconColor: AppColor.error, textColor: AppColor.error, onTap: () { diff --git a/lib/presentation/pages/profile/widgets/support.dart b/lib/presentation/pages/profile/widgets/support.dart index 42193fc..6b077a5 100644 --- a/lib/presentation/pages/profile/widgets/support.dart +++ b/lib/presentation/pages/profile/widgets/support.dart @@ -1,6 +1,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../router/app_router.gr.dart'; import 'divider.dart'; @@ -30,7 +31,7 @@ class ProfileSupport extends StatelessWidget { Padding( padding: EdgeInsets.all(16), child: Text( - 'Support', + context.lang.support, style: AppStyle.xl.copyWith( fontSize: 18, fontWeight: FontWeight.bold, @@ -41,8 +42,8 @@ class ProfileSupport extends StatelessWidget { ProfileTile( icon: Icons.help_outline, - title: 'Help Center', - subtitle: 'Get help and support', + title: context.lang.help_center, + subtitle: context.lang.help_center_desc, onTap: () => context.router.push(ComingSoonRoute()), ), @@ -60,8 +61,8 @@ class ProfileSupport extends StatelessWidget { ProfileTile( icon: Icons.info_outline, - title: 'About', - subtitle: 'App version and information', + title: context.lang.about, + subtitle: context.lang.about_desc, onTap: () => context.router.push(AboutAppRoute()), ), ], diff --git a/lib/presentation/pages/purchase/purchase_page.dart b/lib/presentation/pages/purchase/purchase_page.dart index 5775227..fa7558c 100644 --- a/lib/presentation/pages/purchase/purchase_page.dart +++ b/lib/presentation/pages/purchase/purchase_page.dart @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../components/appbar/appbar.dart'; import 'widgets/purchase_tile.dart'; @@ -93,7 +94,7 @@ class _PurchasePageState extends State elevation: 0, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Pembelian'), + flexibleSpace: CustomAppBar(title: context.lang.purchase), ), // Stats Cards @@ -105,7 +106,7 @@ class _PurchasePageState extends State children: [ Expanded( child: PurchaseStatCard( - title: 'Total Pembelian', + title: context.lang.total_purchase, value: 'Rp 8.340.000', icon: LineIcons.shoppingCart, iconColor: AppColor.success, @@ -115,8 +116,8 @@ class _PurchasePageState extends State const SizedBox(width: 12), Expanded( child: PurchaseStatCard( - title: 'Pending Order', - value: '3 Orders', + title: context.lang.pending_order, + value: '3 ${context.lang.orders}', icon: LineIcons.clock, iconColor: AppColor.warning, cardAnimation: cardAnimation, @@ -139,7 +140,7 @@ class _PurchasePageState extends State mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - 'Riwayat Pembelian', + context.lang.history_purchase, style: AppStyle.lg.copyWith( fontWeight: FontWeight.w600, ), @@ -154,7 +155,7 @@ class _PurchasePageState extends State borderRadius: BorderRadius.circular(20), ), child: Text( - '${purchaseData.length} Orders', + '${purchaseData.length} ${context.lang.orders}', style: AppStyle.sm.copyWith( color: AppColor.textWhite, ), @@ -220,20 +221,6 @@ class _PurchasePageState extends State const SliverToBoxAdapter(child: SizedBox(height: 80)), ], ), - floatingActionButton: FloatingActionButton.extended( - onPressed: () { - // Navigate to create new purchase - }, - backgroundColor: AppColor.secondary, - icon: const Icon(LineIcons.plus, color: AppColor.textWhite), - label: Text( - 'Buat Pembelian', - style: AppStyle.md.copyWith( - color: AppColor.textWhite, - fontWeight: FontWeight.w600, - ), - ), - ), ); } } diff --git a/lib/presentation/pages/purchase/widgets/purchase_tile.dart b/lib/presentation/pages/purchase/widgets/purchase_tile.dart index fa22bf2..e850031 100644 --- a/lib/presentation/pages/purchase/widgets/purchase_tile.dart +++ b/lib/presentation/pages/purchase/widgets/purchase_tile.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; class PurchaseTile extends StatelessWidget { @@ -219,7 +220,7 @@ class PurchaseTile extends StatelessWidget { ), const SizedBox(width: 4), Text( - '${purchase['items']} items', + '${purchase['items']} ${context.lang.items}', style: AppStyle.xs.copyWith( color: AppColor.secondary, fontWeight: FontWeight.w600, @@ -241,7 +242,7 @@ class PurchaseTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Total Pembelian', + context.lang.total_purchase, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, diff --git a/lib/presentation/pages/report/report_page.dart b/lib/presentation/pages/report/report_page.dart index 64b99e8..d790f86 100644 --- a/lib/presentation/pages/report/report_page.dart +++ b/lib/presentation/pages/report/report_page.dart @@ -1,14 +1,13 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:line_icons/line_icons.dart'; import 'dart:math' as math; import '../../../application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_bloc.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../../injection.dart'; import '../../components/appbar/appbar.dart'; -import '../../components/button/button.dart'; import '../../components/field/date_range_picker_field.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/payment_method.dart'; @@ -117,17 +116,17 @@ class _ReportPageState extends State with TickerProviderStateMixin { backgroundColor: AppColor.primary, centerTitle: false, flexibleSpace: CustomAppBar( - title: 'Laporan', + title: context.lang.report, isBack: false, ), - actions: [ - ActionIconButton( - onTap: () {}, - icon: LineIcons.download, - ), - ActionIconButton(onTap: () {}, icon: LineIcons.filter), - SpaceWidth(8), - ], + // actions: [ + // ActionIconButton( + // onTap: () {}, + // icon: LineIcons.download, + // ), + // ActionIconButton(onTap: () {}, icon: LineIcons.filter), + // SpaceWidth(8), + // ], ), SliverToBoxAdapter( diff --git a/lib/presentation/pages/report/widgets/payment_method.dart b/lib/presentation/pages/report/widgets/payment_method.dart index dcb1396..3a5e676 100644 --- a/lib/presentation/pages/report/widgets/payment_method.dart +++ b/lib/presentation/pages/report/widgets/payment_method.dart @@ -57,7 +57,7 @@ class ReportPaymentMethod extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Payment Methods', + context.lang.payment_methods, style: AppStyle.xl.copyWith( fontWeight: FontWeight.bold, color: AppColor.textPrimary, @@ -65,7 +65,7 @@ class ReportPaymentMethod extends StatelessWidget { ), const SizedBox(height: 4), Text( - 'Revenue breakdown by payment method', + context.lang.payment_methods_desc, style: AppStyle.sm.copyWith( color: AppColor.textSecondary, ), @@ -80,7 +80,7 @@ class ReportPaymentMethod extends StatelessWidget { // Payment Method List if (paymentMethods.isEmpty) - _buildEmptyState() + _buildEmptyState(context) else ListView.separated( shrinkWrap: true, @@ -190,12 +190,12 @@ class ReportPaymentMethod extends StatelessWidget { const SizedBox(height: 16), // Stats row with better spacing - _buildStatsSection(method), + _buildStatsSection(context, method), const SizedBox(height: 16), // Enhanced progress bar section - _buildProgressSection(method, index), + _buildProgressSection(context, method, index), ], ), ), @@ -410,7 +410,10 @@ class ReportPaymentMethod extends StatelessWidget { ); } - Widget _buildStatsSection(DashboardPaymentMethod method) { + Widget _buildStatsSection( + BuildContext context, + DashboardPaymentMethod method, + ) { return Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( @@ -426,7 +429,7 @@ class ReportPaymentMethod extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Total Revenue', + context.lang.total_revenue, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -457,7 +460,7 @@ class ReportPaymentMethod extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, children: [ Text( - 'Orders', + context.lang.orders, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -480,7 +483,11 @@ class ReportPaymentMethod extends StatelessWidget { ); } - Widget _buildProgressSection(DashboardPaymentMethod method, int index) { + Widget _buildProgressSection( + BuildContext context, + DashboardPaymentMethod method, + int index, + ) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -488,7 +495,7 @@ class ReportPaymentMethod extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - 'Revenue Share', + context.lang.revenue_share, style: AppStyle.sm.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w600, @@ -560,11 +567,10 @@ class ReportPaymentMethod extends StatelessWidget { ); } - Widget _buildEmptyState() { + Widget _buildEmptyState(BuildContext context) { return EmptyWidget( - title: 'No Payment Methods', - message: - 'Payment method data will appear here once transactions are made', + title: context.lang.no_payment_methods, + message: context.lang.no_payment_methods_desc, ); } diff --git a/lib/presentation/pages/report/widgets/quick_stats.dart b/lib/presentation/pages/report/widgets/quick_stats.dart index 49d847c..b99ac72 100644 --- a/lib/presentation/pages/report/widgets/quick_stats.dart +++ b/lib/presentation/pages/report/widgets/quick_stats.dart @@ -24,7 +24,7 @@ class ReportQuickStats extends StatelessWidget { return Transform.scale( scale: value, child: ReportStatTile( - title: 'Total Orders', + title: context.lang.total_orders, value: overview.totalOrders.toString(), icon: Icons.receipt_long, color: AppColor.info, @@ -43,7 +43,7 @@ class ReportQuickStats extends StatelessWidget { return Transform.scale( scale: value, child: ReportStatTile( - title: 'Average Order', + title: context.lang.average_price, value: overview.averageOrderValue .round() .currencyFormatRp, @@ -70,7 +70,7 @@ class ReportQuickStats extends StatelessWidget { return Transform.scale( scale: value, child: ReportStatTile( - title: 'Customers', + title: context.lang.customer, value: overview.totalCustomers.toString(), icon: Icons.people, color: AppColor.success, @@ -89,7 +89,8 @@ class ReportQuickStats extends StatelessWidget { return Transform.scale( scale: value, child: ReportStatTile( - title: 'Void + Refund', + title: + '${context.lang.void_text} + ${context.lang.refund}', value: (overview.voidedOrders + overview.refundedOrders) .toString(), diff --git a/lib/presentation/pages/report/widgets/revenue_summary.dart b/lib/presentation/pages/report/widgets/revenue_summary.dart index c3603d9..b3a020e 100644 --- a/lib/presentation/pages/report/widgets/revenue_summary.dart +++ b/lib/presentation/pages/report/widgets/revenue_summary.dart @@ -103,7 +103,7 @@ class ReportRevenueSummary extends StatelessWidget { ), const SpaceWidth(12), Text( - 'Total Pendapatan', + context.lang.total_revenue, style: AppStyle.lg.copyWith( color: AppColor.textWhite, fontWeight: FontWeight.w500, diff --git a/lib/presentation/pages/report/widgets/sales.dart b/lib/presentation/pages/report/widgets/sales.dart index 96b1d79..09f46c9 100644 --- a/lib/presentation/pages/report/widgets/sales.dart +++ b/lib/presentation/pages/report/widgets/sales.dart @@ -37,7 +37,7 @@ class ReportSales extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Sales Chart', + context.lang.sales_chart, style: AppStyle.xxl.copyWith( color: AppColor.textPrimary, fontWeight: FontWeight.bold, @@ -46,8 +46,8 @@ class ReportSales extends StatelessWidget { const SpaceHeight(4), Text( salesData.isEmpty - ? 'No data available' - : '${salesData.length} days overview', + ? context.lang.no_data_available + : context.lang.total_days_overview(salesData.length), style: AppStyle.md.copyWith(color: AppColor.textSecondary), ), ], @@ -71,13 +71,13 @@ class ReportSales extends StatelessWidget { // Sales Summary Cards if (salesData.isNotEmpty) ...[ - _buildSalesSummary(), + _buildSalesSummary(context), const SpaceHeight(20), ], // Chart Container salesData.isEmpty - ? _buildEmptyChart() + ? _buildEmptyChart(context) : Container( height: 300, padding: const EdgeInsets.all(16), @@ -105,14 +105,16 @@ class ReportSales extends StatelessWidget { if (salesData.isNotEmpty) Row( mainAxisAlignment: MainAxisAlignment.center, - children: [_buildLegendItem('Sales Data', AppColor.primary)], + children: [ + _buildLegendItem(context.lang.sales_data, AppColor.primary), + ], ), ], ), ); } - Widget _buildSalesSummary() { + Widget _buildSalesSummary(BuildContext context) { final totalSales = salesData.fold(0, (sum, item) => sum + item.sales); final totalOrders = salesData.fold( 0, @@ -137,7 +139,7 @@ class ReportSales extends StatelessWidget { children: [ Expanded( child: _buildSummaryItem( - 'Total Sales', + context.lang.total_sales, totalSales.currencyFormatRp, Icons.attach_money, AppColor.success, @@ -151,7 +153,7 @@ class ReportSales extends StatelessWidget { ), Expanded( child: _buildSummaryItem( - 'Net Sales', + context.lang.net_sales, totalNetSales.currencyFormatRp, Icons.trending_up, AppColor.primary, @@ -164,7 +166,7 @@ class ReportSales extends StatelessWidget { children: [ Expanded( child: _buildSummaryItem( - 'Total Orders', + context.lang.total_orders, totalOrders.toString(), Icons.shopping_cart, AppColor.info, @@ -178,7 +180,7 @@ class ReportSales extends StatelessWidget { ), Expanded( child: _buildSummaryItem( - 'Total Items', + context.lang.total_items, totalItems.toString(), Icons.inventory, AppColor.warning, @@ -204,11 +206,15 @@ class ReportSales extends StatelessWidget { children: [ Icon(icon, size: 16, color: color), const SpaceWidth(6), - Text( - label, - style: AppStyle.xs.copyWith( - color: AppColor.textSecondary, - fontWeight: FontWeight.w500, + Expanded( + child: Text( + label, + style: AppStyle.xs.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ), ), ], @@ -395,10 +401,10 @@ class ReportSales extends StatelessWidget { ); } - Widget _buildEmptyChart() { + Widget _buildEmptyChart(BuildContext context) { return EmptyWidget( - title: 'No Sales Data', - message: 'Sales data will appear here once transactions are recorded', + title: context.lang.no_sales_data, + message: context.lang.no_sales_data_desc, emptyIcon: Icons.show_chart, ); } diff --git a/lib/presentation/pages/report/widgets/top_product.dart b/lib/presentation/pages/report/widgets/top_product.dart index 7e914d9..0f4bd81 100644 --- a/lib/presentation/pages/report/widgets/top_product.dart +++ b/lib/presentation/pages/report/widgets/top_product.dart @@ -34,7 +34,7 @@ class ReportTopProduct extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Produk Terlaris', + context.lang.best_selling_products, style: AppStyle.xxl.copyWith( color: AppColor.textPrimary, fontWeight: FontWeight.bold, @@ -42,7 +42,7 @@ class ReportTopProduct extends StatelessWidget { ), const SpaceHeight(4), Text( - 'Ranking penjualan tertinggi', + context.lang.highest_sales_ranking, style: AppStyle.md.copyWith(color: AppColor.textSecondary), ), ], @@ -66,7 +66,11 @@ class ReportTopProduct extends StatelessWidget { shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (context, index) { - return _buildEnhancedProductItem(products[index], index + 1); + return _buildEnhancedProductItem( + context, + products[index], + index + 1, + ); }, itemCount: products.length, ), @@ -75,7 +79,11 @@ class ReportTopProduct extends StatelessWidget { ); } - Widget _buildEnhancedProductItem(DashboardTopProduct product, int rank) { + Widget _buildEnhancedProductItem( + BuildContext context, + DashboardTopProduct product, + int rank, + ) { final isFirst = rank == 1; final isTopThree = rank <= 3; @@ -320,7 +328,7 @@ class ReportTopProduct extends StatelessWidget { const SpaceWidth(3), Flexible( child: Text( - 'Revenue', + context.lang.revenue, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -364,7 +372,7 @@ class ReportTopProduct extends StatelessWidget { children: [ Flexible( child: Text( - 'Avg. Price', + context.lang.average_price, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -423,7 +431,7 @@ class ReportTopProduct extends StatelessWidget { const SpaceWidth(3), Flexible( child: Text( - 'Sold', + context.lang.sold, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -465,7 +473,7 @@ class ReportTopProduct extends StatelessWidget { children: [ Flexible( child: Text( - 'Orders', + context.lang.orders, style: AppStyle.xs.copyWith( color: AppColor.textSecondary, fontWeight: FontWeight.w500, @@ -543,7 +551,9 @@ class ReportTopProduct extends StatelessWidget { const SpaceWidth(5), Flexible( child: Text( - isFirst ? 'Best Seller' : 'Top Performer', + isFirst + ? context.lang.best_seller + : context.lang.top_performer, style: AppStyle.xs.copyWith( color: isFirst ? AppColor.warning diff --git a/lib/presentation/pages/sales/sales_page.dart b/lib/presentation/pages/sales/sales_page.dart index a54d53f..d5eed33 100644 --- a/lib/presentation/pages/sales/sales_page.dart +++ b/lib/presentation/pages/sales/sales_page.dart @@ -97,7 +97,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { floating: false, pinned: true, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Penjualan'), + flexibleSpace: CustomAppBar(title: context.lang.sales), ), // Date Range Header @@ -138,7 +138,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Summary', + context.lang.summary, style: AppStyle.xxl.copyWith( fontWeight: FontWeight.bold, color: AppColor.textPrimary, @@ -177,7 +177,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { child: Padding( padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), child: Text( - 'Daily Breakdown', + context.lang.daily_breakdown, style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, @@ -412,7 +412,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { children: [ Expanded( child: _buildSummaryCard( - 'Total Sales', + context.lang.total_sales, state.sales.summary.totalSales.currencyFormatRp, Icons.trending_up, AppColor.success, @@ -422,7 +422,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { SpaceWidth(12), Expanded( child: _buildSummaryCard( - 'Total Orders', + context.lang.total_orders, state.sales.summary.totalOrders.toString(), Icons.shopping_cart, AppColor.info, @@ -446,7 +446,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { children: [ Expanded( child: _buildSummaryCard( - 'Avg Order Value', + context.lang.average_price, state.sales.summary.averageOrderValue .round() .currencyFormatRp, @@ -458,7 +458,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { SpaceWidth(12), Expanded( child: _buildSummaryCard( - 'Total Items', + context.lang.total_items, state.sales.summary.totalItems.toString(), Icons.inventory, AppColor.primary, @@ -530,7 +530,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Net Sales', + context.lang.net_sales, style: TextStyle( color: AppColor.textWhite.withOpacity(0.9), fontSize: 14, @@ -668,7 +668,7 @@ class _SalesPageState extends State with TickerProviderStateMixin { borderRadius: BorderRadius.circular(20), ), child: Text( - '${dailySale.orders} orders', + '${dailySale.orders} ${context.lang.orders}', style: TextStyle( color: AppColor.info, fontWeight: FontWeight.w500, @@ -683,21 +683,21 @@ class _SalesPageState extends State with TickerProviderStateMixin { children: [ Expanded( child: _buildDetailItem( - 'Items', + context.lang.items, '${dailySale.items}', Icons.inventory_2, ), ), Expanded( child: _buildDetailItem( - 'Tax', + context.lang.tax, dailySale.tax.currencyFormatRp, Icons.receipt, ), ), Expanded( child: _buildDetailItem( - 'Discount', + context.lang.discount, dailySale.discount.currencyFormatRp, Icons.local_offer, ), diff --git a/lib/presentation/pages/schedule/schedule_page.dart b/lib/presentation/pages/schedule/schedule_page.dart index 89ae7bd..7aaeacc 100644 --- a/lib/presentation/pages/schedule/schedule_page.dart +++ b/lib/presentation/pages/schedule/schedule_page.dart @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:table_calendar/table_calendar.dart'; +import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; import '../../components/appbar/appbar.dart'; @@ -213,7 +214,7 @@ class _SchedulePageState extends State floating: false, pinned: true, backgroundColor: AppColor.primary, - flexibleSpace: CustomAppBar(title: 'Jadwal'), + flexibleSpace: CustomAppBar(title: context.lang.schedule), ); } From 3f75bffd09f0ced2cf04ce3976ab83c1dc6d86a7 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 20 Aug 2025 13:57:00 +0700 Subject: [PATCH 090/108] feat: pull to refresh on home --- lib/presentation/pages/home/home_page.dart | 219 +++++++++--------- .../pages/home/widgets/top_product.dart | 4 + 2 files changed, 117 insertions(+), 106 deletions(-) diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 78ba82e..114ccc9 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -67,119 +67,126 @@ class _HomePageState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, - body: BlocBuilder( - builder: (context, state) { - return CustomScrollView( - physics: const BouncingScrollPhysics( - parent: ClampingScrollPhysics(), - ), - slivers: [ - // SliverAppBar with HomeHeader as background - SliverAppBar( - expandedHeight: 260, // Adjust based on HomeHeader height - floating: true, - pinned: true, - snap: true, - elevation: 0, - scrolledUnderElevation: 8, - backgroundColor: AppColor.primary, - surfaceTintColor: Colors.transparent, - flexibleSpace: LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) { - // Calculate collapse progress (0.0 = expanded, 1.0 = collapsed) - final double expandedHeight = 200; - final double collapsedHeight = - kToolbarHeight + MediaQuery.of(context).padding.top; - final double currentHeight = constraints.maxHeight; + body: RefreshIndicator( + onRefresh: () { + context.read().add(HomeEvent.fetchedDashboard()); + return Future.value(); + }, + child: BlocBuilder( + builder: (context, state) { + return CustomScrollView( + physics: const BouncingScrollPhysics( + parent: ClampingScrollPhysics(), + ), + slivers: [ + // SliverAppBar with HomeHeader as background + SliverAppBar( + expandedHeight: 260, // Adjust based on HomeHeader height + floating: true, + pinned: true, + snap: true, + elevation: 0, + scrolledUnderElevation: 8, + backgroundColor: AppColor.primary, + surfaceTintColor: Colors.transparent, + flexibleSpace: LayoutBuilder( + builder: (BuildContext context, BoxConstraints constraints) { + // Calculate collapse progress (0.0 = expanded, 1.0 = collapsed) + final double expandedHeight = 200; + final double collapsedHeight = + kToolbarHeight + MediaQuery.of(context).padding.top; + final double currentHeight = constraints.maxHeight; - double collapseProgress = - 1.0 - - ((currentHeight - collapsedHeight) / - (expandedHeight - collapsedHeight)); - collapseProgress = collapseProgress.clamp(0.0, 1.0); + double collapseProgress = + 1.0 - + ((currentHeight - collapsedHeight) / + (expandedHeight - collapsedHeight)); + collapseProgress = collapseProgress.clamp(0.0, 1.0); - return FlexibleSpaceBar( - title: Opacity( - opacity: collapseProgress, // Title muncul saat collapse - child: Row( - children: [ - Expanded( - child: Text( - AppConstant.appName, - style: AppStyle.xl.copyWith( - fontWeight: FontWeight.w700, - fontSize: 18, - letterSpacing: -0.5, - color: AppColor.white, + return FlexibleSpaceBar( + title: Opacity( + opacity: + collapseProgress, // Title muncul saat collapse + child: Row( + children: [ + Expanded( + child: Text( + AppConstant.appName, + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.w700, + fontSize: 18, + letterSpacing: -0.5, + color: AppColor.white, + ), ), ), - ), - ActionIconButton( - onTap: () {}, - icon: LineIcons.bell, - ), - ], - ), - ), - titlePadding: const EdgeInsets.only( - left: 20, - right: 12, - bottom: 16, - ), - background: AnimatedBuilder( - animation: _headerAnimationController, - builder: (context, child) { - return Transform.translate( - offset: Offset( - 0, - 50 * (1 - _headerAnimationController.value), - ), - child: Opacity( - opacity: _headerAnimationController.value, - child: HomeHeader( - totalRevenue: - state.dashboard.overview.totalSales, + ActionIconButton( + onTap: () {}, + icon: LineIcons.bell, ), - ), - ); - }, - ), - ); - }, - ), - ), - - // Main Content - SliverToBoxAdapter( - child: AnimatedBuilder( - animation: _contentAnimationController, - builder: (context, child) { - return Transform.translate( - offset: Offset( - 0, - 30 * (1 - _contentAnimationController.value), - ), - child: Opacity( - opacity: _contentAnimationController.value, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - HomeFeature(), - HomeStats(overview: state.dashboard.overview), - HomeTopProduct( - products: state.dashboard.topProducts, - ), - const SpaceHeight(40), - ], + ], + ), ), - ), - ); - }, + titlePadding: const EdgeInsets.only( + left: 20, + right: 12, + bottom: 16, + ), + background: AnimatedBuilder( + animation: _headerAnimationController, + builder: (context, child) { + return Transform.translate( + offset: Offset( + 0, + 50 * (1 - _headerAnimationController.value), + ), + child: Opacity( + opacity: _headerAnimationController.value, + child: HomeHeader( + totalRevenue: + state.dashboard.overview.totalSales, + ), + ), + ); + }, + ), + ); + }, + ), ), - ), - ], - ); - }, + + // Main Content + SliverToBoxAdapter( + child: AnimatedBuilder( + animation: _contentAnimationController, + builder: (context, child) { + return Transform.translate( + offset: Offset( + 0, + 30 * (1 - _contentAnimationController.value), + ), + child: Opacity( + opacity: _contentAnimationController.value, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HomeFeature(), + HomeStats(overview: state.dashboard.overview), + HomeTopProduct( + products: state.dashboard.topProducts, + ), + const SpaceHeight(40), + ], + ), + ), + ); + }, + ), + ), + ], + ); + }, + ), ), ); } diff --git a/lib/presentation/pages/home/widgets/top_product.dart b/lib/presentation/pages/home/widgets/top_product.dart index 3500d3c..b95b8a1 100644 --- a/lib/presentation/pages/home/widgets/top_product.dart +++ b/lib/presentation/pages/home/widgets/top_product.dart @@ -13,6 +13,10 @@ class HomeTopProduct extends StatelessWidget { @override Widget build(BuildContext context) { + if (products.isEmpty) { + return const SizedBox.shrink(); + } + return Padding( padding: const EdgeInsets.symmetric( vertical: 24, From 9775e09659f44a2c096b29cbfe4077b9029c3517 Mon Sep 17 00:00:00 2001 From: efrilm Date: Fri, 22 Aug 2025 15:26:16 +0700 Subject: [PATCH 091/108] feat: readme --- README.md | 560 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 543 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index fe0072f..76ed710 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,565 @@ -# Apskel Owner App +## Apskel Owner Flutter -A Flutter-based Point of Sale (POS) application designed specifically for business owners. -Helps manage sales, products, inventory, and business reports in real-time with a simple, easy-to-use interface. +A POS (Point of Sale) application for business owners, built with Flutter. The project follows a layered architecture (presentation โ†’ application โ†’ domain โ†’ infrastructure) with dependency injection, state management, automated routing, internationalization, and code generation. -## ๐Ÿš€ Getting Started +--- -### โœ… Prerequisites +### Contents -- [Flutter](https://flutter.dev/docs/get-started/install) 3.32.8 or newer -- Dart 3.8.1 or newer +- Technical Summary +- Requirements & Setup +- Running the App +- Architecture Overview +- Project Structure +- Key Dependencies & Purpose +- Code Generation +- Internationalization (i18n) +- Theming & Assets +- Environment Configuration (`env.dart`) +- Development Practices -### ๐Ÿ›  Installation - -```bash -git clone https://github.com/efrilm/frl-movie.git -``` - -```bash -cd app-path -``` +--- + +## Technical Summary + +- SDK: Flutter (Material) with Dart ^3.8.1 +- Targets: Android, iOS, Web, Desktop (Windows, macOS, Linux) +- State management: `flutter_bloc` +- Routing: `auto_route` +- Dependency Injection: `get_it` + `injectable` +- HTTP Client: `dio` (+ `awesome_dio_interceptor`) +- Data class & serialization: `freezed` + `json_serializable` +- Localization: `flutter_localizations`, `l10n/*.arb` +- Assets generation: `flutter_gen` + +--- + +## Requirements & Setup + +### Prerequisites + +- Flutter SDK installed as per the official guide (`https://flutter.dev/docs/get-started/install`) +- Dart version per constraint: ^3.8.1 + +### Installation ```bash +git clone +cd apskel_owner_flutter flutter pub get ``` +### Code generation (required after clone or when annotations change) + ```bash flutter pub run build_runner build --delete-conflicting-outputs ``` +> Re-run whenever you change files using `@RoutePage()`, `@injectable`, `@freezed`, or `@JsonSerializable`. + --- -## ๐Ÿงช Running +## Running the App ```bash flutter run ``` +Select a specific device/platform: + +```bash +flutter run -d chrome +flutter run -d ios +flutter run -d android +``` + +Example release builds: + +```bash +flutter build apk --release +flutter build ios --release +flutter build web --release +``` + --- + +## Architecture Overview + +The codebase follows a clean, layered approach that separates concerns and keeps features modular and testable: + +- Presentation (`lib/presentation`): Widgets, pages/screens, and the `AutoRoute` router. Contains only UI code and wiring to BLoC/Cubit. +- Application (`lib/application`): BLoC/Cubit and application-level orchestration. Holds input validation, state transitions, and calls into the Domain layer. +- Domain (`lib/domain`): Pure business logic. Entities, value objects, repository interfaces, and (optional) use-cases. No framework dependencies. +- Infrastructure (`lib/infrastructure`): Repository implementations, DTOs, and data sources (HTTP/DB). Performs `dio` calls and mappings between DTOs and Domain entities. +- Common (`lib/common`): Cross-cutting helpers such as API base, DI setup, constants, extensions, theme, validators, and utilities. + +Data flow in a feature: + +1. UI triggers an intent/event in Presentation โ†’ +2. Application layer BLoC/Cubit handles the event and calls a repository/use-case from Domain โ†’ +3. Infrastructure implements the repository, performs network calls via `dio`, and maps results โ†’ +4. Data is converted to Domain entities and returned to Application โ†’ +5. Application updates state, Presentation rebuilds UI accordingly. + +Cross-cutting concerns: + +- Dependency Injection: `get_it` + `injectable` auto-register services/repositories (`injection.dart`, `injection.config.dart`). +- Routing: `auto_route` defines typed routes, generated into router files in `presentation/router`. +- State: `flutter_bloc` models states/events and isolates side-effects in BLoCs/Cubits. +- Networking: `dio` with interceptors for logging and error handling. +- Error handling: functional style with `dartz` (`Either`, `Option`) or well-defined BLoC states. +- i18n: ARB files in `lib/l10n/` and generated localization delegates. +- Theming: centralized theme under `lib/common/theme/` with shared design tokens. +- Assets: managed under `assets/` and referenced via FlutterGen outputs at `lib/presentation/components/assets/`. + +--- + +## Project Structure + +``` +lib/ + application/ # BLoC/cubit per feature (analytic, auth, product, etc.) + common/ + api/ # Base API client, endpoint helper + constant/ # Application constants + di/ # Dependency injection setup (get_it, injectable) + extension/ # Extensions + function/ # General utility functions + network/ # Connectivity checks, handlers + painter/ # Custom painters + theme/ # Colors, text styles, theming + url/ # Base URL/endpoints + utils/ # Other helpers + validator/ # Input validators + domain/ + / # Entities, repo interfaces, (use-cases if present) + infrastructure/ + / # Repo implementations, DTOs, API calls + l10n/ # ARB sources for i18n + generated localizations + presentation/ + components/ # Reusable widgets + pages/ # Feature pages/screens + router/ # AutoRoute definitions + env.dart # Environment configuration (BASE_URL, etc.) + injection.dart # DI entry point + injection.config.dart # DI generated + main.dart # Application entry point +assets/ + images/, icons/, json/, fonts/ +``` + +--- + +## Key Dependencies & Purpose + +Runtime: + +- `auto_route`: Automated, typed routing based on annotations. +- `flutter_bloc`: State management with BLoC/Cubit. +- `get_it`, `injectable`: Service locator + codegen for DI. +- `dio`, `awesome_dio_interceptor`: HTTP client + logging interceptor. +- `freezed_annotation`, `json_annotation`: Annotations for immutable data classes & JSON. +- `dartz`: Functional types (Either, Option) for explicit error handling. +- `connectivity_plus`, `device_info_plus`, `package_info_plus`: Device and connectivity info. +- `shared_preferences`: Local key-value storage. +- `image_picker`, `permission_handler`, `open_file`, `url_launcher`: OS/device integrations. +- UI: `flutter_svg`, `line_icons`, `flutter_spinkit`, `fl_chart`, `another_flushbar`, `table_calendar`, `shimmer`, `cached_network_image`, `syncfusion_flutter_datepicker`, `pdf`. + +Dev: + +- `build_runner`: Code generation orchestration. +- `auto_route_generator`, `injectable_generator`, `freezed`, `json_serializable`: Related generators. +- `flutter_gen_runner`: Typed asset access generator. +- `flutter_lints`: Recommended Flutter lints. +- `flutter_launcher_icons`: Launcher icon generation. + +Refer to `pubspec.yaml` for full version constraints. + +--- + +## Code Generation + +Common commands: + +```bash +flutter pub run build_runner build --delete-conflicting-outputs +# or watch +flutter pub run build_runner watch --delete-conflicting-outputs +``` + +### Asset generation (flutter_gen_runner) + +`flutter_gen_runner` is integrated with `build_runner`. Running the commands above will also generate typed accessors for assets based on the `flutter_gen` section in `pubspec.yaml`: + +- Output path: `lib/presentation/components/assets/` +- SVG integration: enabled (`flutter_svg: true`) + +Usage in code example (after generation): + +```dart +// Example usage +// import 'presentation/components/assets/assets.gen.dart'; +// Image.asset(Assets.images.logo.path); +``` + +Generators used: + +- AutoRoute: Generates router and typed routes. +- Injectable: Generates DI registrations (`injection.config.dart`). +- Freezed: Generates immutable data classes, copyWith, unions, etc. +- Json Serializable: Generates toJson/fromJson for DTOs. +- FlutterGen: Generates static asset access under `lib/presentation/components/assets/`. + +--- + +## Internationalization (i18n) + +- Source files live in `lib/l10n/app_*.arb` (e.g., `app_en.arb`, `app_id.arb`). +- To add a language: create `app_.arb`, then run code generation. +- Ensure `MaterialApp` is wired with `localizationsDelegates` and `supportedLocales` (already prepared). + +--- + +## Theming & Assets + +- Theme files live under `lib/common/theme/`. +- Fonts: `Quicksand` family is declared in `pubspec.yaml`. +- Assets: `assets/images/`, `assets/icons/`, `assets/json/` โ€“ referenced via FlutterGen outputs at `lib/presentation/components/assets/`. + +--- + +## Environment Configuration (`env.dart`) + +The `lib/env.dart` file stores configuration values such as base URLs and debug flags. Adjust per environment (development/production) using flavors, environment variables, or branching as preferred by the team. + +--- + +## Development Practices + +- Routing: Define routes in `presentation/router`, then run code generation. +- DI: Annotate services/repositories with `@injectable`/`@LazySingleton`, generate code, and call `configureDependencies()` early in app startup. +- BLoC: Keep UI logic in the `application` layer and use `BlocBuilder`/`BlocListener` in the `presentation` layer. +- DTO โ†” Entity: Mapping resides in the `infrastructure` layer to keep domain pure. +- Error handling: Prefer `Either`/`Option` (`dartz`) or well-structured BLoC states. +- Linting: Follow `analysis_options.yaml`. + +--- + +## Useful Commands + +```bash +# Install dependencies +flutter pub get + +# Format & Analyze +flutter format . +flutter analyze + +# Code generation (single run / watch) +flutter pub run build_runner build --delete-conflicting-outputs +flutter pub run build_runner watch --delete-conflicting-outputs + +# Run by device +flutter devices +flutter run -d +``` + +--- + +## Additional Notes + +- Launcher icons configured via `launcher_icon.yaml`. +- Platform-specific configuration (Android/iOS/Web/Desktop) resides in respective platform folders. +- Review `analysis_options.yaml` for code style and lint rules. + +--- + +## Launcher Icons + +Configured via `launcher_icon.yaml` at the repository root. To (re)generate launcher icons, run: + +```bash +dart run flutter_launcher_icons -f launcher_icon.yaml +``` + +If you prefer the Flutter shim: + +```bash +flutter pub run flutter_launcher_icons -f launcher_icon.yaml +``` + +Ensure you have the package in `dev_dependencies` (`flutter_launcher_icons`). + +## Contributing + +1. Branch off `main`. +2. Make focused changes and provide a clear PR description. +3. Ensure build, lints, and codegen are clean before opening the PR. + +--- + +## License + +This project is private/internal. Contact the repository owner for usage permissions. + +## Apskel Owner Flutter + +Aplikasi Point of Sale (POS) untuk pemilik usaha, dibangun dengan Flutter. Proyek ini menerapkan arsitektur berlapis (presentation โ†’ application โ†’ domain โ†’ infrastructure) dengan dependency injection, state management, routing terotomasi, internationalization, dan code generation. + +--- + +### Isi Dokumen + +- Ringkasan Teknis +- Persyaratan & Setup +- Menjalankan Aplikasi +- Arsitektur & Alur +- Struktur Proyek +- Dependensi Utama & Fungsinya +- Code Generation +- Internationalization (i18n) +- Theming & Assets +- Konfigurasi Lingkungan (`env.dart`) +- Praktik Pengembangan + +--- + +## Ringkasan Teknis + +- SDK: Flutter (Material) dengan Dart ^3.8.1 +- Target platform: Android, iOS, Web, Desktop (Windows, macOS, Linux) +- State management: `flutter_bloc` +- Routing: `auto_route` +- Dependency Injection: `get_it` + `injectable` +- HTTP Client: `dio` (+ `awesome_dio_interceptor`) +- Data class & serialization: `freezed` + `json_serializable` +- Localization: `flutter_localizations`, `l10n/*.arb` +- Assets generation: `flutter_gen` + +--- + +## Persyaratan & Setup + +### Prasyarat + +- Flutter SDK terpasang sesuai panduan resmi (`https://flutter.dev/docs/get-started/install`) +- Versi Dart sesuai constraint: ^3.8.1 + +### Instalasi + +```bash +git clone +cd apskel_owner_flutter +flutter pub get +``` + +### Generate kode (wajib setelah clone atau mengubah anotasi) + +```bash +flutter pub run build_runner build --delete-conflicting-outputs +``` + +> Jalankan ulang perintah di atas setiap kali Anda mengubah file yang menggunakan anotasi `@RoutePage()`, `@injectable`, `@freezed`, atau `@JsonSerializable`. + +--- + +## Menjalankan Aplikasi + +```bash +flutter run +``` + +Menentukan platform/target tertentu: + +```bash +flutter run -d chrome +flutter run -d ios +flutter run -d android +``` + +Build release contoh: + +```bash +flutter build apk --release +flutter build ios --release +flutter build web --release +``` + +--- + +## Arsitektur & Alur + +Proyek mengikuti layering yang jelas: + +- Presentation (`lib/presentation`): UI, widget, halaman, router. +- Application (`lib/application`): BLoC/cubit, use-case orkestra ringan, validasi input UI. +- Domain (`lib/domain`): Entitas, value object, repository interface, use-case (jika ada). +- Infrastructure (`lib/infrastructure`): Implementasi repository, data source (API/DB), mapping DTO. +- Common (`lib/common`): Utilitas umum, konstanta, theme, API base, DI bootstrap, extension, dll. + +Alur umum: + +1. UI memicu event โ†’ +2. BLoC di layer Application memanggil use-case/repo (Domain) โ†’ +3. Implementasi repo (Infrastructure) melakukan HTTP via `dio` โ†’ +4. Response dipetakan menjadi entity/domain โ†’ +5. State di-update kembali ke UI. + +--- + +## Struktur Proyek + +``` +lib/ + application/ # BLoC/cubit per fitur (analytic, auth, product, dst.) + common/ + api/ # Base API client, endpoint helper + constant/ # Konstanta aplikasi + di/ # Setup dependency injection (get_it, injectable) + extension/ # Extension util + function/ # Fungsi util umum + network/ # Cek konektivitas, handler + painter/ # Custom painter + theme/ # Warna, text styles, theming + url/ # Base URL/endpoint + utils/ # Helper lain + validator/ # Validator input + domain/ + / # Entity, repo interface, (use-case bila ada) + infrastructure/ + / # Repo implementation, DTO, pemanggilan API + l10n/ # Berkas ARB untuk i18n + generated localizations + presentation/ + components/ # Widget reusable + pages/ # Halaman/layar fitur + router/ # Definisi AutoRoute + env.dart # Konfigurasi environment (BASE_URL, dsb) + injection.dart # Entry point DI + injection.config.dart # DI generated + main.dart # Entrypoint aplikasi +assets/ + images/, icons/, json/, fonts/ +``` + +--- + +## Dependensi Utama & Fungsinya + +Runtime: + +- `auto_route`: Routing terotomasi berbasis anotasi. +- `flutter_bloc`: State management dengan BLoC/Cubit. +- `get_it`, `injectable`: Service locator + codegen untuk DI. +- `dio`, `awesome_dio_interceptor`: HTTP client + logging interceptor. +- `freezed_annotation`, `json_annotation`: Anotasi untuk data class immutable & JSON. +- `dartz`: Functional types (Either, Option) untuk error handling yang eksplisit. +- `connectivity_plus`, `device_info_plus`, `package_info_plus`: Info perangkat & konektivitas. +- `shared_preferences`: Penyimpanan key-value lokal. +- `image_picker`, `permission_handler`, `open_file`, `url_launcher`: Integrasi perangkat/OS. +- UI: `flutter_svg`, `line_icons`, `flutter_spinkit`, `fl_chart`, `another_flushbar`, `table_calendar`, `shimmer`, `cached_network_image`, `syncfusion_flutter_datepicker`, `pdf`. + +Dev: + +- `build_runner`: Orkestrasi code generation. +- `auto_route_generator`, `injectable_generator`, `freezed`, `json_serializable`: Generator terkait. +- `flutter_gen_runner`: Generator akses asset terketik. +- `flutter_lints`: Linter rekomendasi Flutter. +- `flutter_launcher_icons`: Generate icon launcher. + +Catatan versi lengkap tersedia di `pubspec.yaml`. + +--- + +## Code Generation + +Perintah umum: + +```bash +flutter pub run build_runner build --delete-conflicting-outputs +# atau untuk watch +flutter pub run build_runner watch --delete-conflicting-outputs +``` + +Generator yang digunakan: + +- AutoRoute: menghasilkan deklarasi router & route. +- Injectable: menghasilkan registrasi DI (`injection.config.dart`). +- Freezed: menghasilkan data class immutable, copyWith, union, dsb. +- Json Serializable: menghasilkan toJson/fromJson untuk DTO. +- FlutterGen: menghasilkan akses asset statis di `lib/presentation/components/assets/`. + +--- + +## Internationalization (i18n) + +- Berkas sumber ada di `lib/l10n/app_*.arb` (contoh: `app_en.arb`, `app_id.arb`). +- Bahasa baru: tambahkan `app_.arb`, jalankan code generation. +- Pastikan `MaterialApp` menggunakan `localizationsDelegates` dan `supportedLocales` (sudah disiapkan). + +--- + +## Theming & Assets + +- Theme ada di `lib/common/theme/`. +- Font: keluarga `Quicksand` dideklarasikan di `pubspec.yaml`. +- Assets: `assets/images/`, `assets/icons/`, `assets/json/` โ€“ akses via FlutterGen yang dihasilkan ke `lib/presentation/components/assets/`. + +--- + +## Konfigurasi Lingkungan (`env.dart`) + +File `lib/env.dart` menyimpan nilai konfigurasi seperti base URL, flag debug, dll. Sesuaikan untuk development/production (bisa dengan flavor, env var, atau branch khusus sesuai kebutuhan tim). + +--- + +## Praktik Pengembangan + +- Routing: definisikan route di `presentation/router`, jalankan codegen. +- DI: daftarkan service/repository dengan anotasi `@injectable`/`@LazySingleton`, lalu generate, dan panggil `configureDependencies()` di awal aplikasi. +- BLoC: simpan logic UI di layer `application` dan gunakan `BlocBuilder`/`BlocListener` di layer `presentation`. +- DTO โ†” Entity: mapping berada di layer `infrastructure` untuk menjaga domain tetap bersih. +- Error handling: gunakan `Either`/`Option` (`dartz`) atau state terstruktur di BLoC. +- Lint: patuhi aturan `analysis_options.yaml`. + +--- + +## Perintah Berguna + +```bash +# Install dependencies +flutter pub get + +# Format & Analyze +flutter format . +flutter analyze + +# Code generation (sekali jalan / watch) +flutter pub run build_runner build --delete-conflicting-outputs +flutter pub run build_runner watch --delete-conflicting-outputs + +# Run by device +flutter devices +flutter run -d +``` + +--- + +## Catatan Tambahan + +- Icon launcher dikonfigurasi di `launcher_icon.yaml` (gunakan `flutter pub run flutter_launcher_icons` bila diperlukan). +- Konfigurasi platform (Android/iOS/Web/Desktop) berada pada folder platform terkait. +- Pastikan meninjau `analysis_options.yaml` untuk standar code style dan lints. + +--- + +## Kontribusi + +1. Buat branch dari `main`. +2. Lakukan perubahan terfokus dan sertakan deskripsi yang jelas pada PR. +3. Pastikan build, lints, dan codegen bersih sebelum mengajukan PR. + +--- + +## Lisensi + +Proyek ini bersifat privat/internal. Hubungi pemilik repositori untuk detail izin penggunaan. From 91965667ec525f677072b885498f09a42318691f Mon Sep 17 00:00:00 2001 From: Efril Date: Tue, 12 May 2026 00:52:14 +0700 Subject: [PATCH 092/108] setup fcm --- analysis_options.yaml | 1 + android/app/build.gradle.kts | 4 +- android/app/google-services.json | 48 ++++++ android/app/src/main/AndroidManifest.xml | 14 +- .../apskel_owner_flutter/MainActivity.kt | 2 +- .../drawable-hdpi/ic_launcher_foreground.png | Bin 15575 -> 27082 bytes .../drawable-mdpi/ic_launcher_foreground.png | Bin 9533 -> 13934 bytes .../drawable-xhdpi/ic_launcher_foreground.png | Bin 22122 -> 47056 bytes .../ic_launcher_foreground.png | Bin 37952 -> 110335 bytes .../ic_launcher_foreground.png | Bin 57322 -> 208308 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 5702 -> 7714 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 3184 -> 4277 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 8350 -> 11857 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 13547 -> 22368 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 19191 -> 37459 bytes assets/images/logo.png | Bin 81011 -> 1469933 bytes .../Icon-App-1024x1024@1x.png | Bin 153634 -> 670051 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 678 -> 775 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 2236 -> 1772 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 3898 -> 2918 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1295 -> 1266 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 3820 -> 2966 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 6521 -> 5130 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 2236 -> 1772 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 5911 -> 4438 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 9999 -> 7950 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 3114 -> 2340 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 8026 -> 6123 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 3646 -> 2794 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 9312 -> 7333 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 9999 -> 7950 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 16280 -> 16034 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 5105 -> 3797 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 12394 -> 10699 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 5548 -> 4136 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 13328 -> 11751 bytes .../Icon-App-83.5x83.5@2x.png | Bin 14970 -> 13874 bytes ios/Runner/Info.plist | 8 +- lib/common/di/di_firebase.dart | 8 + lib/common/utils/fcm_service.dart | 150 ++++++++++++++++++ lib/injection.config.dart | 83 +++++----- lib/main.dart | 9 ++ linux/CMakeLists.txt | 2 +- macos/Flutter/GeneratedPluginRegistrant.swift | 6 + pubspec.lock | 126 ++++++++++++--- pubspec.yaml | 3 + web/favicon.png | Bin 519 -> 835 bytes web/icons/Icon-192.png | Bin 19191 -> 37459 bytes web/icons/Icon-512.png | Bin 74653 -> 297867 bytes web/icons/Icon-maskable-192.png | Bin 19191 -> 37459 bytes web/icons/Icon-maskable-512.png | Bin 74653 -> 297867 bytes .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + windows/runner/resources/app_icon.ico | Bin 3206 -> 4299 bytes 54 files changed, 407 insertions(+), 61 deletions(-) create mode 100644 android/app/google-services.json create mode 100644 lib/common/di/di_firebase.dart create mode 100644 lib/common/utils/fcm_service.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 1d331a6..a69a437 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -14,6 +14,7 @@ analyzer: invalid_annotation_target: ignore use_build_context_synchronously: ignore deprecated_member_use: ignore + depend_on_referenced_packages: ignore exclude: - test/generated/** - "**/**.g.dart" diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index fd02140..a9884f6 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - namespace = "com.apskel.apskel_owner" + namespace = "com.apskel.enaklo_owner" compileSdk = flutter.compileSdkVersion ndkVersion = "27.0.12077973" @@ -21,7 +21,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.apskel.apskel_owner" + applicationId = "com.apskel.enaklo_owner" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 0000000..4ba90e6 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,48 @@ +{ + "project_info": { + "project_number": "765730035527", + "project_id": "apskel-pos-v2", + "storage_bucket": "apskel-pos-v2.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:765730035527:android:beffb797b781e715241e62", + "android_client_info": { + "package_name": "com.apskel.enaklo_owner" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAOZwVSQwUeeM9BjcyTOK9GUh8AmTWucuc" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:765730035527:android:498defd7071336dd241e62", + "android_client_info": { + "package_name": "com.apskel.pos" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAOZwVSQwUeeM9BjcyTOK9GUh8AmTWucuc" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0a0b209..7a2c596 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -5,9 +5,11 @@ + + + + + + + + v|QuZ!c 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�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�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

!@aNA7 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%0DU#3%{C{Xjz<2R#m#Q4@KL8gMa=i*?8+(gDG4 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

2a17xF38T-(ptpPK`cYKXl*oi|X0L6UF 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%0A`3y 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

^jl2G8!^EivmF6DXLKksZrCJDY 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

J&O-rn7b%d(BPc28#4a zS|YQOwd&bqK$oAT2c>V>kwQ$^U@V)ExNE8yao#_V9zQ#)Xc{L72f)o+bnkpyjp6t^ zh970u;uI5K`e^5Y3oN}pVL|glUGJd|dkF#0Xakf`V$TI^II(j!$*g&=wlmpxrGYcp zhGb^zH8yhdneV_SfAmM5|LmuJ=%?0Pzwt-@(Xa697`!(d67( zmV(AM&gVFjrJJAw(GJ!`>2e!D!^VTOax6#SK4q3jp3W;Xu98(TdNW53@S~g8=pbm3 zHURC*LOQ4Y{fsHgI-a{8;Wq%ddTe=4*Q>iZnZ;~0dvmlx?uly@(CsCuM^<<>Q0^Nh zJRjav02%X+$P7(F*PI!`N7AC<rYDMinMc#FeHy;i}=q=sFFbYi;M{Wcu8I&}Vy&G3V7>!BTE^UHJ zLr-u)?&NZO6SyHqAG^IjUb7nHBLnpLuXM^+C7$WsF{(+@%vS2BaqRDvZ z0kQZjdBYCyvxt^S(9MHCFN_x3x@C`%=QHtf1qYa^Ga*RWRq;&7a3MzqEiPO1;LcgM zM{5KUtm9kvAdim;1#|EpX57L-!K0)TGHP)Q!eUQ_R3|#bj!#joK+UPip+NK zKDNjERt`2gtxb39c4l*&U}>G0z#BhkP+{=myV~z-%;9S9F_Dwl@J7Ud)X4|UsxxHW zT|zGn)=sR^okn7YX}jk-f7WzadEJSnN>zWnM3nJU39cl(93`Ye=b&|D0$F0isf+TP zoLDaiXj5>)&^E2D6JDCemp;3f)iO~&adO#q?B8j(B%I~Wq_^4&2kU;{6Ec7f-h=OV z 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%0Aop{umGbLxZk-I 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%0DCcr%$M*z;m}uZ(@4a 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
  • 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�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

    FWPZL!TYh3grO!2b529Y1+u@BP>Rj-?x{5*u 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ాxF& zCeYcKw4UuIV1g2@^8^T((>V8n^LIy@{ZD-K^LWv}4z@X0di#-hbJ;Kc{j0z2ql>(` zJ{?*Hv$-J$9B?FgI}Js;36^4bo)Am!1F!@tN`+}$L=VD`*5Flxqq**fHOu_>*MSF*(oVk7%?FGBA+} zz%cjax`*ECdIA0+k?#MR}u-GAT zqxpV#91Ij2@O?UZn2m*nEz^|1BMPr5AOcI#Y!~gDB8h(UhK|AKkEkRR(2#r+*N>u<2V+9W^q7`yMZqA z_yzWDFg)fOlg`FV5cpsS3_8TA)Q1(NmYD);c?pCH=xbfZ#ls-_lBxmdNIt)b5TVBe zq(JB?bZ62AQXv@VS|!lUz06j0t}#J}W37OhmJpywNyXFaUxY~OyFI5TH`{=4p`#`u zI{-45B;WMVMt$Hl082o$zX7djT!=XPi#0gbC^JlO8K|}QOyo(e2pqyo>#bG1&!2Op z{){ESDqECtPDBJP8T=_qnzT_YwGa~}Cn+W?U_1?}H&(NbiR>PN_GLL@@4|d$Z(Hln z^VNL5upMqXx+L_D3PKrfBz-ilp}HKj(W;e^l0Y{^tTL)cTSPXp^>3zV$S%uXr|y3g z2SFRsp8u{nXPELM#~}i)YjId@AM_0qjH50nz%?(@1v(pYQUHj!Yn--_wr{Cx8BT?B zph`A8Y>K!~ye>n89@k7O%8+>f{=EpyMqDo}-kDVHM3wAIA=eA1a~n_v@&)+to~_H; zV6-G%4t9X(4&3|oijKmns=H(F>bw>rv97rG>%Q@liH(J80rzVmE)p^vP!=q^l51k` z1Qu9xC6h(2ve@SLh5k=wBWtlh5&~Be`xjqMhRl=qm`a(oagcfLhYwU>TMe^j`?_v*a`IAEZ*uuaUs&8?UkJ9uy2LnLjIS5i-6~bqjMZ1 z5)Hh+y+!V-2l}mxS@|HwO|IWYG$Y`t=b%Ha3hYt5$I{$^;J@Vo{!~=h-*-hz#y* z6&ZxUDb+F_3(kj&@;TbfCBl##>lm28;kmmTh`VU(b?>1b?40KsBC9)a$5y8WDm@_E z)=`LE=%x9rg~Vo+QFT}d5h}6utSPWNz2q@b%Tqk@qzP@4Ri*KQ)~enjGg z<*eEv4=^GxXR#u10b+aOM5{GM?I`D?LO9>c!!W1-xd3Tiz-(@RM)RKq6>V#T zq~9h$IufgReUf|}i*!D_Kxsq@2q#)hUoJ;M8Rch{Pyq<%p2N{??TG-D8NuRXy_l<% zlBvd`L2~iF(7_om1=LboMFVD&2LSW?r4|X`w5jyJnR9$O)j(^)p(+P@*;Y;^6EChU zi9A%v9$;ZMJy3$=QR-6sGO(Cm%znXQKiSSTdmOX=gM|ef0^LC5;+g}LHbSrosP>22 zFT%{L=Pod$&FtAw#JYj$D4~cqLRI$#bW^oGT%ZvENi#Sn-Q>>O{QguFm&O0oiZb4Q z$2_-eP=|ni<&Z@rxEP6No;W4$6iz%M>|{83=;!9UIP^gCdOC+iI(Z#7p4}DBzGTIo zv^pjl;i$d#M|e-A0j@-1iSwLVmn7(xNM71NWFzaE1DB~KbmB5X8BSCik%!;`!fqM@ zJuN`3d1mAw;kKpT^Or-gI!~YbL2enV8N1SMv-S(Q3X_9zltOak%)ZC9#El$9fg>{< zT9QnSXWfNH?ZjI4%9c$3i5ajxr5r)kVThJ0%lo_wudg5Y`QC`WP#2KSWk;*9B(UO= z){cu|CC|~ixiIW}W-vk>*9%WtmZ~1-dWBVb7+Y55^Ud-~_A`%Yy#KtgF7EGA;ja~` z+W$^j3Ki4?LN!|DNve?EC7Ui^#bBqI*IODZ9xoyQ6mhfq%27#qRmft#HO9kGF9CJs;(>DIk^D z4Xoxqj^5k@J+7%h4()(JBgaAjN)GJ}&`DK(F7zvf3hENTf#BoGp*46i=qG5muhui> zj(DC5`1O$T@@e<>823ajC*`1=)`@ieu2A-&6+I zI}vO19)KZQ{2WoLqz*+=>c2C3`0-kP@h6hk)>$Spk5|EI*1#FS0Fd)Z9V+Nr2=J|h%lnJn~WGMH) zHrRr>)fq#?g+9-E3k0wxkX-X&iV;HOu~ZSIG~3ddG4%-KubMPt=YkTy)!LRdgjmTp zrix~dU3MpnSEUb6Cks4$UI3?!AZ;R~8klYuviZ}Bvm3nvT`HQVdkwgNsH4udn>Bls zIpnSv(OUlwXl^@Ou zXbn2ea_V~MJa4T9r#=IzeOm}z4CDg0kjVu+9c=U&KAvE7vd2Er99)21kG$?&xOwi>XII)j8NcvYCGZWr7fgg$er)wVM3duL|XFPImKJ!(V{OAvl zBlkz%!`mwu!L@G=!VrySb-lS^xvV(H8V8oRfdkgCykFoGiHqDNLhWC6HvCe<^g%|X&fz*3_D z^hgz5bPxV|kqC|`+L?u1ce(E;qSbQj0K@~Jgkm4Ep0IOvMG8NH_rh;S9FfK(v-6}0QQI{N)Hi?iA2TOp`o~%}K zAQ6g0T9TiwJbF(HVpJ0ZNv!q`eg6}jIdbi&y2FJ_5n-lCaNG0CQig=%%xJO597O~} z>w=vF0_aj?5i}qv;)qNP3)cyd0W@TDuc~NdPlS!gz#Rzf?#sA#NUalruZRqJ|s-e*i9L09az#Gb?pMBLsqQL0tOV~glu9c!nkKOKMXv7ELB{^2?%fs0Xsxn@Lb-MI=n zfsnRd2i(%s?7qPmiKm8pnpcGg6(Ez9T+oer6az)5A;hAcY%o0xseIH(yeJAnVpRYH zIHVzpHkke9w3HsC?){1ny}*`W`I zV+el`Y@nL03i$o;=jB-Mg|`aBcIpxye68-xGp znmtIO4sb=g-dt;08gH-=r4=O(WH+edVCy%o|B}Lk7xCUDp}}RZb3=BtN68Qf5eNvW zqyRV#!?i)O*ijA_(+Ayscp|x9iwflOH4UIA{~d>@ z)h(8uH%!14@59i_)Fvj)zQ%@bb9>TbrY0A7!pB*9>1Ux8`&_HXA8_fF=cu4rV9uMFR zxAJtAa9;oFApMX2i7&qU<4=CgE4_K^VRJ%`e*2JbjAMT$i<7X#zGNgSOM^tGxOyvM z4;`i&y@Wt6!<+NHU1(J-PdSW;1hJuvpFl>Hi~Z>!%QG^Cn0)l51!C1F*BzxhE5IE1 zb}2kXt(%T?MFV>wmm^>?Mto{i*wGW3w!V8jo6ITQstm%+yc5;wr0OXr(w&(f)N+7kkJtXs+UmmFu$tA^X;RmO$Bj@pAQ0Q1-b z__Y}6KSWZvFk<-dN*VfCXU}P)b#fdSt!}uZLLsqMAvVdd>BOP-m6KntwKQs&Y$9UM-N;{9Go6_H9+58g?lM#%_3IEsAs8@n1Pvnd)~3#Y{=$L(l6_>66W zE&^`ZLm7IV&&ND1fp-R$ajI*iz|hR*xw{L2h!gIF)ZohcY`v5|;X->%0s{;}=F^+XDWs?hUFp zZm9q*1x2T%`&v$sK-`SdIAR%?a~I(#DozACTQvY&yW2H*l&_fr#1&M=iEyK`08?q+ zPPA|q66`n-vynrNtAOURBdYszLaclazE(h*Fk`{FK%d-vw`h}-TalPb?ZF(~6~#0+ z>e2}~Qkl71_GTYq0ino!Z>2|QOxmdjT8(OdCp=0ZumlLS@Tyxmsx=X~D0Kk90i(=W z=ekp^xdBB4x0e3%8q-RR=nKwu2cYP_oaBlb4+aMdmSdwaX`hx*yGlMFfLDQBrE2*6 zf3>xyJm>oc5Cr*O$ki`oGP>DY>Lf?+y0Ev25qscXpU?a0k)#h83Pw}Q*D3zjWL0OP z>pld@V@_Jn7HDkea0}(t%rg+F-t#71-BI2h4miN*buxnm>`3j;8AUt`mSZrZ~~$PLUxZ z8LWPC(K_-?+98@ZA$hLt;8+{rQt2a)u5WCk36Uf{(rsS*RrbEUX4M75Hn+<61oSF} ze@*(c3QDM$XG(OY&XxsJoHvxtI77-K&Bh@KlMK?IWM zQS7)|m~-$EN~dVsbdsYjAE&Fy>emhQrJ}EpH^mM>?1Hs%SCZ~);nEDLYvR-t(j>ED zf7m>Y9p+l7Av^31JrVo->Bs(j{da!d_s3Vh?I-=Nag2fK)u{!+yrc7eet8=$!cf7( z7>>;CBhv_jIpt%tfcqM-SmWrihc6w2klg$f{G)T@d@bzAlW+i{5e^2SZLS zH>DP|4^c-JporZ#)d8V3IB%R0!d8xq4m^Pf=FkHvY34YC5n9lpKo7_3+3t_GniFk< z<+-6}4-pd$k`Yo#TPAGK7tIYZ3l|1Sjxa(FG=Ys}x2Gr?zmK5Bi(iitV&{@`?ZcBP zA7P&iDg;i0lc#$;<=FX1&Lj_kWUj-`#XNdB(+e`BYcYy^HR29-A<%brZPjTA z$%IezGt%EEpqwWiB#@eC%p3$DId{%|r}uTRLc9Aqr*q`BCYB@Ek7o{mz1O{dGnICr ziu?NR;9{0MomL_BqH9H@zsn#wwF3kM<02UK`s!Ge*QV4Li{I_ycUBgJ*0TjIP7xq+ znF2iL`>iZm+)%t%%^m+Kdln`sS<8T=iKXMfX>q5&gG5RsBQix{l~hSmQwY#B5~)7r z1cD;z_*Rsv&AL7Z0&qbh=8cDhJ{)@n$q9Heg4Kuf%xx*Z+r&ym3mnCa9mhZ$PbwMM zKFwGbvKO!CYx&SLaEgn7QVOpnwZM>9Ap$u}OUT|y<-j~W2=eY3Uu*F%!~qO%j8kiT zQ;vW5_IhM<09CX&`F(=x<>#-G}4lxnX(FEk3^xM+}wk~Lrn6{3snphB0j%g&K zNE|d;MRXN12&RQa#YA3Rk70VqPsDk=%88yqcdiA`6u(MJR27NK_E_u8ZP^3pOc9{3 zZc1x6v_H3qeLi;&$sBU*3$9vN3fX#pm{gZIVfFzGKs?@%v~&wVh3ZdqV-zP9vgsv~ zfy8q-pA;vWjYq&@%h{t3qS_Skki2Up6#}{UjENoe%5%w3EhWJkp7agJqU7`l&;WGW zvBz(!RzLM9)qzmt@i3GJq;Yo-$--!~NdVF~(VOdqW!kiO4XT-QHN|y}( z;XF!?ZU>#f{N#tD4*+ZBEw>Z__OnL*UIL7*@l)jFt{$QUq5SmbIPQL>FL84oZ!J2G zZ37A}@%ePix7C%35O4OaHy9ytLIBDLaAC+Rlp^Jvf~~)~dVK98d8a8X>|4(d?!87F z0IR)OwKe`n%>aRU7GP67gdK3fya=fhP#S0MYPZje0QOIfhH86CGW z#t0mW=y!o#2V55h6YZ`fNkZS7q!?Ob2!Ug-9TB=4uNdjN2$VCvvekXaLn|xjXIdfA z^S)B81uB%c#xu27Ua?(M0Ft6x1p^>9YhPdmrmjQRj88d8ZyQryS6r{1;Qr7)hQ`i5 zRBr%FY7c!c_oe1aL=}UYhX@$;O@lrk9;#`jswAl70%Go|U9Z7}4mduJc~0@o^u5Lu zQjGu$KZ>jjutjR3XqS9LD4pL+HAG}~qf|_g1kuubwTKN9iykwpow)aP0}c%8-a1Mp zWqN$m@b1zXoMFX><_VBL!_F$9K)~2W4gl+LG|$DF`ar-@Wzmqko#ruWkMMU0we|^c z*ftC);KzFWJS^y!|2(es)BMDjz3}5N`pw=&p&XP$XNOpmD2H2mC%8QXKPM2Gss{j0 zpxeYDl7)w|VM%%qpe1@XcEZ=;B_#6r2Q zx*0`3Mfx0_VB0&&pLNKKAe;X4v*sY1#x-GwoLq%$PIDg_6mpQcj**J^XEMzr=qg2| zr2oEeD+L0h4jI5NOC+G=bPIwHM?hl^6cbPYlma40o9#$APny4IMI};Xpn);W0MMSe zRFTsq2+mYLBZ43{Y*?f&zIK9DV zhi-q%W}7h8Q1Z;M>cyv9$l{2pw#ux_oQDV-JyLs@DlkM}>?jaKm(Yd=pM*|~&dw}W z?+-e}5h1Cr#!ES`r*h*+ypTJ!0qV}M+~5Iv#MZ=qemHHtoMeC+m_M~y*?Z*ldsA%PR^yHD0e;7B<>i)ga-DBG3Iu_14JD(qjfPbR zg{960%oZV$v!QiUjAAmnT9_h*Wul0qR(`(Xp4iFP4HjF(R2EAjTc#ao+^-Gf0gg`7 zX^qv`Z?GubR6lQsEYRcDBgH~~QEl$oMvP>iUiC()$Y7RREV|vH2_cbClFQFt*191{ z6lXp&6jhDsI#AxDnhO&~vq>bKZ>VKqu%3l7zAxG(z73_+ z1SiVqKBN$FO|ZI8A`7%85vjGKwOK_FIjvNjvO$$jd+)T0nA)cmAvdl691542t4+^} zRrr~%#V%WcJE-pPns3?PtxFqS!_#SWvVr9X;o1n^_6jmGsfU!^!p& z)ee2qW~sf0YZ>Tx0e43taf@8x+$Dl!g?wdqJZSmpiLIJ3US~YF24ss#;CAMDRVIEw zwSq7?p;3AM`D5Z?;$T+OXbnb%YI&Ui0|~91F&&>ExaLgs_oEYmf6T!?Uiw-;;mgb~ zKjqJlxK4c4i(mf!FaG5VulR*{yr4IPgA;bo>`0ttHN^rAz z5{K+@bT7gi_yD1jQ?1`hX-WXHqgCJTj4(K+y0mHrIm3lcZ5E`BHF187kC+sWwmr3kHjNLBh}RIpJa zsZA`kWRxl)Ph=2sCJO-sfnHwR712OmBxnc(1XPgdt5vm`h=ODp4OMDwUXap+i1QE> zAemtjCbWOtijj&80KpWB@V$wQOGn~l3F!={=HMs|xL!Htm#gg~C%PU9MMW(SkC|r# z6#&&eN(KU5fgJ5YDj|62E@=H*Ver@w@aNO}o9mCVevx!bMH`pxmXr;UR8Od$1PBn4 zqQl=MXO`VDZe(0)TX(GFsD=cZc@XPB4Qm==BJ`0?-8lpd8U&!Nh-$=0uEUW^fkvPO z))UU{cfE~34zXmA>?E67fmOOjVr&Z!a?JY){v=VBk{~)LH!jn7#cUc8v(I`cO9!@3 z)g+@Pz~j|PBj*-ADIBDlE5?r!!y@Y?J%rY0(Q*d<(jy_7r2x7@Sm08D*4mwR+|egq_y z=elNUkDjH0a>EW)O9(fPy(6+;V=V+MJBlfY|&ta#+fb{M?$+?Q96fnaMt zL^p0pdKVU|Db0S?R45PtP|aYu@j|F2o1?Lb8z{-0Rba98%xs%z0s)Fv%C>aD#rV)0 zI~E)+9dHcLC9e?Z77$0x9JmGpqpvC~2Y{K_8i6Jm5C%deAYB1UrKwCgDtJlS!SiQ& zu2(VNKVnFQ(0`fMAh29VUBmW=lGr0KY1@_-ccIjey$rUhrTS@@0o>)NDQ#cHcDalJ zTmmz+-r`ODwo_wNhtzWiWrPR!LE(1Jbi&XU9=q0?nd1$C0RgiGf?X25w$s1 zI!`Ch8BXD%m}j~bh}xXB0iac65lHNPPX?M-6;nXYzJruHgT`t@W#!OPN;E$?>K4d~ zx1!m1kUXM7Xv=P<#v?>>h`77KdDeR1u}~r~8zgSDNz3Fw$ufRF>%; zr-&!No9m|uv{k*|K!1ogVWK@BmC{6!b$4Xos9&mQaqI}RXB<%vEdZKU-h(L;ezj~p zdIIuPoWzXsq$f75&F(%W%&LHVw2O=q!5XT~;XSHAZ-Z$=%8hsTr;XD02VA|Mp)j@s z-l6YA17r6%J}VY>+;FNvgh{vLdKMPo*an;)G019azi9r`80_&A9?w3no1OR>{~Yh~ zC;05!57Wu{>Z^VESAFFT=zwHzXuZdQFc}O_HbBFdVgXn=x^W@J-jh8qIlU+luyt$W zLKVE3=S>6h$PX2+0H8=0uX`16=W$gWd7<1eW}=Cq;uz%yYY#ZL#*R1az(dY9ohSm5 zp6jyDuM`M!-1%5^x(&M1hBs8uDM1Go$H4eVba6IFN@^w(alpd{fvBr@vj%`<$C6xA zD$OX_5~HflPnd21ibfjW@L4quVR)7KoLo>5JItTVMY*QfGAc& z_c>ka3Z{xDe`Jo6%y1;#@CPf7_rQVB}gwv?7<} zre_{fpc5TRHQ?(jgFTJm2sVIyAuh81*MMlY&Fe*4g6TCOb08At;v6jz2Bji@E~b}0 z5R$5piHXFLygX64vEoGllk+h0e@C`84lIjsmtx3)(BBMT9>pRH1fz=uLaQmGuP&031-7t-322j;{5!+#7rEH z>H(<+3}R-h$Yl5EX$OA^ytlJYFXKE(;ymN1dc){`yYk!k}*{s)}y3lVNd z$D)a)99`z!3ZQN(S6Ye!jwwMuqlLB&CIDb#*FwZ*EeR0Fw&zFJ zVL$aos>cdI@EM1~|#H|X z5qFQ-X!<$DZY&r=hykS`!J0(GD%zz+AUBJc8X#gX#2}ZSplYNM4>`r8E>}_vv5`WJAy*Ve|yJ)?)8nqzO%mKU} z;v6EtT<)=3@yjl$2k1jANL5e}$TZUR2L0ep{aiXj(=%CnVfc~go=g0E6+9X zOgSmbI%gj?ZeUd8s2j$66p$V@GiVo9nrjj1U?Z!=C2j{o1-Ri<5Y+~IbKhRKr%mA~ z2oxl+f6#CMLMy`G**r(z0RNAEyzWPN@{|62laGJJd*dg)g)jY_5%d=*5jo;Eo*&6D zp$IMtZ_@-IFrA9{DF+i`uLK_s=+&Vk-v-l$(13<_!f#$fM%ja~4U@BHU{~7MfqrR( zjeW@NcjQ6fG*++=W%PhV161aUBwR!yWE?scQhAYpx0ya4Bn(zR7r&enJT}NwpQq<+ zK)zdlDkzc)n28F3u+q3XhF+mu+YU;-rBNj;^|M0R2E1oR_ZXq2VL1|c0vOdaDpJX^tUzW zC(Ung73C7d64>m*6~TG{#y`3yGH1^DMFJoOXwWlDmK$>ZVI|2($LYwsH6MAP0IT!s za59hvpz`CmaA8MJ^w%JJKoFS}-mRj}2232Ee2kseUeI~M3XwAgcLYwH<%@k36O@xH&4oto~JXYMF-Aja&#y1Qk zP4JMUTLE30>~iY8rRX=uWFxWQ`X4LT*c&QZRB$H&#pT#4Qk+x*A_DdKPO|=Pm8t7E znjgu%7Y0YESh+xabe}pC0+9{1Hx#)Dt#y+xuEq}8o&Zq6eRb@rQz{@E6=M&qkYGDR zMG~4M8lC#mnxQk=m?a0RP0+N@3j~i_E$W;;ZsQ6^G`})-8sL(H@BJfZ zP+cAp3ym9=YB~+4M2gV{$;m@8g{w{A@m@XOu1RC!8Yt!JOSl*zKny*vs}A!_oO_qb zqM*(nI_gxL6zIlQEe3uQ*Jq`pvk!ZZK_=jGvCI{k3z5<~r>(kSQ7r&Boz=DtemFkO z0mM|M_C7d24u1uADv_%FapPRKeLi0mnpj5N(6f`~cNu;v2{U%3n zz^fDpVcTPchApfJ1}9B>uR(#8n7!p9d?J!|3oINGG}IL*0!n9s$ZG`#Wcyo@V=D#| z5SisOqZN!5WU#%JtX0l>ybszG|M7wQF3dhmd&VBR0ft3A+&!axRmT&z2IRE)3m;M^xI+y&2?@)`Pks@+l$Oj!9{^- zr?gZML!c*4BCd8|?YQueRb*?z*mPVBi0QBEFw_&col^)LL+_a@U%?s~ z5!z6e*6X-W8khy=Z;JH5!^v;Ja2pYl4Qrq@mYs~g---fx|E`$^de#+1FadB3ll@=m zptEOtDu=lr&q}s(A=DH4v=I|1bP9#QA#YVVhzYEE5C97K8E8po56i(1H523POL(s6 zt=7wK;Nmq2z%WG%I|wksExncs3@Ylm&;%bEmsnb7x#*lPx;6u#LQZi8A{MKjW+)1; zWtf4;RP70ldkT~y6s<3)W`f6n_rv02LRPBRKuSU)Q>zK`n(=X;d-tnlFZF`k&2cR) z^rB;m0&?ZZ!~x*aVUd^XS5Owu?idLuQp`El9g9psH*%e*_JbDz+H(02fdYZ{Ru9$? zF+&oCk@lF*3y#)1{~)zqncARMf=&6iW$9F~05Jt<0wHyQW%|g#D(z*d9IWObnUhod zAj9^9^F*G8>-Y+Q-4k?Hg4fOt&aV#9)STwZVdDqvg6fx$O(+pDezr)6SdsbEf#p`F z(=rieE@dBdU~!GmkqlUAKPI0{E@fX7aQtRg{mNCfQ#jh~4O4sSgO5!nFQOcH|^b6Ue!(!C{Ax5(#< z3I>TZFlgstEfTY1h}&q+1sz>gG?1*D3Nx*Lzen>akfcbF z58dn-Ac>_;L)vzae<`YFJ1auFp~!u=$cmb?7MTM`re#yJP-Vf5Xj-`8|WD4 zIDfAG@2dLa=!?7)Y&iZB4!92l+;+}|PW_ZV9SVi3f$jCIE3g%xo$F%x4kzLpl?C#OW;qNN!l#)P(zj313>23_IQS_ViJWeGTP|%I;p%|Ff zfu7C@&^l~5G{8A5gR|YIXktH##5FW#@%SEncQqROWbP=x+IxaT1%a@0nqhFc?TaZ= zErN)ozzmYM7F8tOY~e>@sAv5e37G@&y&-Sb$9V2~fwR&7)mB=R#z`t0rhPG`gAbQe z5ufQ0v>h50es)jId)1fVJaJP1ET*S1+;(zErjQ`>vxJH~7F@f+!8XWd+1}B8(l5Kw zv1PBIbAW4y#T*H-L-PU=?yQs0vzA(R3V?j!p856pLnTt%^wD3zrX2MOUCg9FTL7 zn5e&_W|j^B4|3-+ak0`#B*0zLzVGB%nIJF_SzYM3Xp{%cYJ42YgAg8iD$0Akrr+Al znh{?ALI4?xPjG9x(^1Z z;Pox-=e=>AhN93J1R$B*M3GKehyk=I<;Am2Ac0tnWob6{$35sFN*tp3y;+4X@3b z76?_8_DQRDx^|v?QV!`|=lqtsq@_G5JIQdAh;!wN)s9r}Vv0boIG|HG(?B1hpauA> zP>5!pYY4^|Y(C6r7fyRENV(R^0B)Y&HLZSFb76;psw>C`rM^-=?I!u+g4qB@*4o4E z^&?Wpd&l@J&9lBRb2v`AtM4~te?*jkuF#|j_#F0n(n?@aF#{4gp5gPK#DgPGt=47$ z~+VE6VF= zPvnqMOb9#@f;2 z_YjY_o%Lho>1x&MBG+;O>ym12O@7^ zuXBG8kRMwt5?lUwfyCg{6VVVtHgbwTmk4Ir9uE}>Xs!vSK633}#p)aMSZRWt57aA%>a-BzoTa<}qgkAoG8 zbBxcwgZ*Bc;Hec!K^w#?8XM1ulqXq-d-UAv3TpylMx&cD&&nP-Kl;*rF=uHB{PDmd zlervak?h%#DIYK#f)kxlfKvxnPQaZG=K^*kmp7NH)g$K6&LFt;^+_B!5*EZmnRA$H z|3P{J+c2XiKtQbuxKwZ_mo^y`eQq#qU>rdgJ0a?ft*G*pS$7_fK$wIg4#ve5aIJ-9 zIg$VX^YmNMY0c}RQ@23zF@w;G6kbaQyMS~D)-}EwBfcvU&XWzwhXZ0&4J036H@q?w zK~6;z*Hx%mqv+^ZYVStFGp*k)Mz}3c_CA4f%%=x@XwP_G>1JG54kjZSqq1=I`SCF$ z5Lg7Xq5WYcMerH)AMPwm>9ym<7l0`jGQ6WG5wL@Z4Q)H`ALpwt@AKIsisT|h0+CHi z7n%!2W3?g7JOiA6+ z6(W8~qM8J@tXiT(N1G$&+$xArYwsI5%$O`lj!m41OR6Ra_o%|OhZCpW61nQAd%};P z^G!>xAX3)=6OGj(6p}g4?ik{;2ztBoKr!prjva3%igMp0j^m!=S$U#VD*(1?TG&22 zbv5+3itrC3^-wFUR#Z$*aqt|(5G5ialv-d%D;@yUL`AFJqHs4sbZ930c^gxm_nxW3 zQ9n$*ief(hrL)oFz$h{_&IW_tFKuTD=vJXd0W5(9gADYo+5O6)LOHXXI|JHB2G3C7q%q+o{8F0vq7NPpeY1ocQV@AtgudHhl+D;&OwDuL0&vb;KQXrej7;Npw z!gKTy??VnjK(_VW9S4DFf3PlIfzf#fku)a;$N-`@c2V{o#p`UmRS1w&(6gw1*6=e@ zPjo-h8RWlKZQ81Gv_9cl1|`3c>Ii|alDZ6ysXL%?wNeAHqJlPcmm;nJ+9ZKl$;JTw zw_qJwXInYs82r#8F?op-{U2$2G;ouk-c{Nc0({-9U$Yg_Hc6#GNGq+##UIhf4{q0M z(6gH_bY*)h8dx0C+tmBYB+d!&)quzt@}rrnt34Tr*pIai1uxHe<2_+T2$gQ7*GY7m z$XF0xky;Dwvk7o6{1#bc|8{wvb*`VYZrejwJpmlTgHOa%AJ{*8q(gZv1?L>)bX%Pd zLprI5wmNap7BdyJ+DlC;ua4k782|(_ z{9HNCC!Gi8hi4xU#f1eu3z%~h0ve98$&q!NmyD$-(wh820w$OClJlwjnoQS3V0d%I z>C4Q(Td37ufKj~19AqGOp)Tbr+X89ZKOiL&x_g5EJGG4O0nfI>!5LD zP{Ck2OU_*kf)nQtMLwdX;XSp)=6Vbz^>@X8%@M&#Ox1ixHwo0eR9X>R-f9#h&#gj_ zgn}|inR3W!*jSV@l&>!*Hgcj11cp*1DDpq#iKHNkn;PfB#7PRca_+cZawX;4`dSxY zTaseIV8f)qeD48f?t4$*3y!zV?O}dC zmgMOGTQ81ULf1)K1EQ6w=^&?~an>j2Pb87nwp-?<){#j7syL+h0nk{;3vl1z&~t_e z0C5z$cAoE%G0RviCaSYBwMQm*UJ*PN8%*s*MMT5vm-jYmi~v;?BBpW*XB+^<=qt-f zPTc~;DBGwK2)0VPM4SvMRKTOQ096`6B48S*aJ}IoS;qCML%F;^ea#23vngE$M+qzy z`IAkNzcQ&YK168;wBErrVO5g>62GU$ZaGDQ#IcBj;MqHBh9<$AA~}Iz5jV&t456#F zn_g=`D}wK0117qr?nLQ+N1DyK@_*@&QEq<)0U#cVBm%E`*h0=vZLRq^6O>*BJ4%34 zXU4N?5wY<|DU&l7K|;ljK0hze5qhoo?78VYM^KH^?zmG;va{4KccL$nC_BgYfu>DV zbfk!AI<>rISqD9H>zS0z%rj^AtOt5;CTv8wHX}ZC$^qB+aA2;>(Kx`--Ev_ZllI#_ zMiYny1T=V$(dw0sp0#hkjyKnbMA~x3wa*D|>hXb|`+)opI+KcU1{6(o7w|f!Q~A%6~}!opl<={@Eq#1?Y`^+5*AHY&%I7?MiTS@MrwS3#hwT< zBhyJaaj2&LrV4;jWfB6Yo+6LsHB^s6fvz|%LToEqnhoXjsu-W@BDweNO++Lux%`>9`ET=I)TT5b^vL+*_XAySU#21N3GsdT+tgK``u=YaDATu}Y*) zg3k*cnkKgwNGZfU;={Er7ASG==uI| z3q{#C(UkD50wl^>X9nLe{_quVIDeM6Mp{>fS|B)piS9Y_5>g1rS&GM%co04S zBI%}C@KZj(K%wpE9;eYm5-T2ueV#~&Koko_K{Ce^eWxR$D60=yKj(PIs;a*2*u^+* zTL2^b6ixJgL&V;*`WE5^G4FC&|I)T zwJJm>qibYk4QLwCFM7YmN`J#Vzw))GkxQ&`K@r2!0ZLnL|? zPzx(sdAA%BRtgP9P(jCRB2OXaxK2%wT#IKfR3otroJpJ97(?uYb07VBb6*APKJ;X!;BhkkrYOld^ zbT~66BFg9Iy{+X#bd53r9V*)1fYLSGa*&U4X}uSki2d9@1axunaFg92n5|Q}zrhp= zFh$@>1E}VpEP_aP_6PxMSEuKi^d3-w!xd;nSP7a$h={~+#Y;wSPf;RTzM4W?D><^Ayix{@z!Sga5Km-n9$5`^v6^@zFo?x5M;&+@@s0}J^0C7N$zi49w zwX_~Wzv-|SKtJ~XZPeU>2=8~L^3oOuu(n+d*+=woJZ2pRy13r@@!pnwr<_#f5mS4h z9KEpJ6?qwF%+QWZALnLNMNNAVsxr^9U3kc(x)Q(bq%%^Qf0tZbzR0DA1_e5i$%=gcK6BPjoYsB2qH~5a8E;1DJwd8b%Zq z1?2dZiV#5TQ=z^bJ%lCm&Gv{XUr~S*(Rj9iGszNYb*|GD9@6I>C0RgwGOV`eJh%v< zo}p3z)c$7GM6z2-laZ@?yjlc;0HX8QJ=XQ8{_j5H*{qv`>Zy&;A|bng=~5wJ!h2#Q zyq^(LY^j)J$9l`Z;5e3$W;Mqei=7#=o4|3G2o+jEKAP-bD7`{dBRLJepFV}2c|)YD ztMzj|7Mes*gSEW0&QV*>Mnl;*=d;kj;`{|$St$x!1E$;OSo?mP1UR(*q+T$oP;FVi z2^i;+^M0u)k*pjI7si_)Soh?PmowK*PUU%iglaW(3usGa;qw7Npri=V7DW%y3P-k0 zoQws`~|&-!?eNm%H(6DxIWEDa}n4YSj)X) z)oevZ_?(UGg<8ttX#%m0z~zlG`Nj}v(#fX3Gy2s)Q#2nPbSA_I1wt|<%f=n0mdO4Q zNkd{(foz$0It3V9r+sbbC-bHhdcE+2E4+Ea%u@35}3}hcvw@bxTJmjRB7u5=VR-5z2EGq1KJKh~O>hCQG{1?;ZnQnF$b6 znC(g*jx!oO*f>zg&Gdmrcu4r(iGGE@U`U%KqudBeWFgQkkhemlNdpneT^{hov=$n6 zsU$?krGOyRiZW1Gu~1hW8T@np%hLA)#2~`(4cP%O%}DFR5p^Fr;mUzhJdlwFpn4aU z{BwSTM1+c%UZFjXn20^CHph_rpy5rZ3J=)HbcV2n7l?BOTT0WxIspY>E!w~o=_kz2 zB7reB@uWp4DvU(*jdqGk#MmXS^_<8WijrsN^HnSN-$z9x-2M)rbAK(ic%628-0dVF zv=`|J#DKwNry@xTv&d@bkYNGNEzj#(Y&n!_3kwsw8t;bHT}~yEZ^e^Cq?`#r-JNV~ z3Fx|LAWHNynLV@&Q&yv-LP!lp;}AwL;8-MF1}H-7QaSC6?uZnCB5xwhTg=0>zmq9m zD7HrG`4%|^B71{!UKd;AWk`T|*^LX`XMH*aAa$Ksfw%>9t>Un7K}3orodj2W9;^lI zn`d;x9`Ia0AfI48a(4YJk7(eDqS@glpdNq2Qe3Yu==$lXtG2Li%YY$)QC9FMpp##t zbZY`G2YR|^yf{>GfU`FxC$dOSI#0;VA0Qc7*0T3O_eBB)bvP%?0!mA-ID zrkV&p?Jz6<^SiP(s_EaB$PJQ%jOI_8fSe)&(Gm$`mFbouq22CIX$9mFsJJmv!djOE z(=|mH3rJO1_bzDx+lEvM0W{a+j!m*H1X88q;5^(UPP{ywY|$UUQ8le_A?I6Aor?BHjRKj&VB=3+tEZOCToOqrd zCVl&cyN!jPMgB&qs3VkW6x!owUmr5~)CAEzjTzq>dJ+Bo3e>`0I?D4GiX+R2-waLL8<NyIQ(>_^BG{ndX?l-W@{gG1Zq5C{%;DuhQh zV;#wLgWsif%3CwbKto4WgVY9DfYcI>>y;wIOTYmLIAJ}N%M0C0_B;UhNprn)wsq~|ZZuJcImEy%JA%vfztuN`)j4+r@XdR4&2!yMPR}SvJJd{Y(B4v zHJS*mo1kTa#<@k9aI8<-lqPl5QyGB!oclIO+=kRM+9MFT<0i*fl2{bbAyMg03$m#} zaM5B3A_!Vr_b_%gZJKhx;$DGk06v`@w)hd~5}{}X0&AHNATJS-Fc|D0@uldUZ^ndZ z%J%a7YP3>pO!~5gW1{z_P3k}`AnkYqa87;bTCMBLKp?LI2kFVui30;@N+3S5r!tv%)$t)`vaXsSClZ}hk=ddaGYKWzZ#r&U4kq)+p>!!I-xi}( zVI}PF5Q!k@Q5A6KJc_D?y=U3+%6a}-GVN=~F}G}41*uZe#>4iD&+H zF;-vA=jV0UA$)fWn31%hGC_(@C}JwYgVFF?a&=u#YqzAKC&<*^gi>f#d2L#7_)<#LPzu@{KXc2UUN7@AU0V~s6!mqr4oo(fM2%%aNitO%C zs#mhYeDucc{Cbg4)3vD@8#ij_*r!0d1E0p{*1W}xJ0r&0r{3c@1c1*FlabrAD*`E@ zbqS`t?2f@KwzusW>znrh*=oUpDQ;UOe8D;?ey(f=0ni(D2Q0!nEdi-^>uGu^m~A5% zjjojPOmi1bhvR>_?~N~N?meZF*pG7owI>CXLsY1}PQ3z}H2NOxonpJ0=v`w*C*Z7$ zQ6Q~-1!AMS_XLZUU=za<+-|8i??U6?+EUo>mYAZ19!q$O@z|J<~Hjw>}o`GueH z`~D^UeDr-jql_zm%x9jT_S503AK=UW_U5&K+cv!&EJcKMh=&-hNb^5@@5;p8HMyEg zkr^|ysc7y*jJz;9;XcePUQ+-rI>ZLUityMmaWqTEGTfGo_f8F8D9{8JG>NpmqQzLsB?w9q6i;6rTld%0JP3Vt%4jf#W~)gXriOf{Plq0c|HN>OgV3vFuCRyk1Kh&M85F; z(tDQslxhY6x(17Tt`i4eOAC>kojK>+5G?-4yQD1vq*~#lWdzt!pxA9-#)kkowT`{+ zLi;Gv`-D^jBdm%O4|%|OjbQpi!WH3T3f6^zPcUC}4Jp-=SDyfCkuamYmMRo0FEV8# z=6TeKz$pb-7>PPZjC=Gk9)$+dbQ297Z5_vE2p`bVN&`BRMaoSz1(GThxoKI)W>SeE z;}j;(a@I4=1?`Ix(e>RTgTrlM9lZ>#GwokFU1@n`D9RyFw6sS9w11_278~gGGEw|Q zp=1va878n*Ye<%7A*Nv$VY1^Ra4E31g7@#p(Q*`D(Z7I6Lq)BuUI_?LOWLc}t)Xgo z)BY%cuA+KN=WL6diyp7>RQFCtd_wcUHPk8$6FRHtXo;*c*b}*OyfE5WwtQ5iY7YE0 za|)Eqveg>WD6Ikd0Q4de2 zS>@WP0t$qVA2IXQP#a(o47$4%L6FL0Coa?Z*L%Rd+p_Yo^Udu!^RU4Dc*wa`Mr5cR^(g7>q`4pxy*>IUgPvV zCI`O-m`(0zg*aN?ki=e2fXRw2|1-9v@>(}7Rg3EbP}Ra`g_Q)lr%`D1si^?XAST+b zdGkO^MsJxkLB7Zi6?Q~}fIkbk0T(6boGKDO$`9@br`50%NMTR<4Clj25li*&P&#di ze9^p7)#G)BM+Nu-Qx9LIgyC6fIPWZQO& z2(a{@YXz$LQE2Tk6*U}?sIh8R-A|DfOn(iOi^&!hMxHCns7wer>fQPrL<;O3szC!B zT@2H$0ANQ_iMmVaYo*|TZHMfT5V2J#KEJp2t}P}M)$duWUh5i%QZT4W?OzoR*S(w3 zEHu-UJC04AGa14WHP^R)?r%z~CFBFq(QdA}N-W%fN^wUv`qrA#UZOqFR%rlWXN%07 z^WmiBneNj*f`f_rs8j$wX&nkehHOTgkfkbk=(F%%)S2O95HloiU;L3j=Q?kH|Arr( ze|~etL457+`pWzJI$!#5lKkHD(wpnDaE{m*1FP*Q`g!y6a<(IAheQC73qX?|7 zG8C>9Dd)~I#R10{pOW{SaTb^i2^SI%nOOO7A|y-qN()eOs{3X!qytpj&WIQ%_xg@( zfoEMY{AhBdU7mW4c3PMff$Zsi=Z5JYZj*J zywWJrdw}!8?hGfI<9^&45ZzupqN$FCYM$hjGAJEzajygwA2N+d^r==J0Y;$tey#&W z8T8$b{7yFj==oCWfeuC0$%NAo3T&czsD+{<*#qv<`P)lHyAq6g3_+1YlnnT_u~|Tu zrQJa0MaLU#W#_%fM_@`wr@^QIlg67y3ZMV2lJ#IKrp<8%js)@DiYJ0r+Hs zzP`MWP~kkSxwW)D1|V{r_9K z-nvI0sHq}!!7;bZYA$Aut*yA$p!1ujTR?hc2^xpGws=08M9Y!ioWmpy4rK!w73KO_ z!M3ahSRU5}+KOH!H49~mbB|sd6W!rhPV||qAUd12e(av0kmAR zlb8e-fAR@$AINsT`Y7lcbJXJ5eyc?c(CJf61KCAXO?n$NuML5XQ0kv9M|FnIH-RF% zvxlKq`!x;G-j91euCm6uN2(k;6AAqDM8`m|=Q9e50^34O?{MWn2Ph-AYHlKW;Rqxh z{E%O=HwYR`z!V`28d4-cz!uI%K*?c7#6+P<+L7pK)d1)q=yt(97gJ*ocy<#Y>ERk0 zdXK({7@BnuOh`2dN~~bO-PltXqU>5=!=QeTlX+?da2y*Z6Si=0C?7vDpbCt3QxWZF z(wtgmE+E(m^t~rqitGV${=EOhf^U*>bD_++N1(L@SUGl+kDmsyASqbjT{dk&d5vik z-g|Ri0h~g6KIy+7)0>4F)dAn`>Pb!K#Wz zsNMtjJC{w9aM?UJ?rJHq0gmTJy9?E>|Pql`$-ot)I!>zx4E z3dOJK5DTv|O`;HpD6VzcQeVF}(?1re8JrFW+^fAq?Qi!3fOCHNJ*_k%C8D&I>82{p zB#HdgJx=xiex@9mxRNdKd8+ff4tn~9x_c-z$>G_TO)%0>l3sUbI3B(|?*-*a#JZ#Vtl3f^n#tmoxYwE-Ga zlr?!iO)ZU4W15)No8yh!{fN9=FG>wN6a50ysg`M|RDBuVQ3rYc`uP48)3&Wm-O-Nx3l6 zx%ij48H}VnQmxnIyo-Do!e~?hB1;4&`Tq$P5rogqa!9Swp33GjF+&QdpPB=zx+bHz z8R8Va3YLy=7MWA&_k3g zh^%p;u~eN2Js)c$h~c(cWk4vu#~|No5eh~$2M|~h$V!nhD1!G^S`3$Wur7fPA_t@m zOv4c`lT{frPTkrkUhgeJX8G?qEepdrw<=s1zz}XOo(O^I1*Py%vNARzmt>KzuOSZu|`LpN2IvP&pGr4HemBYn-F#DHZfY!L%ct#iC z;*|g$ClM(q0g;!4QV~`2fc7wlh}GQ7QE{qCsPcToamLVUNvO3^)ziw+dGO<`d~{wA ztHqpiO5WmHuR|VFk;1_dCn=jO+pXTslVcw-(Tgbl4m+F;62m=iEU&@4e-Nf#FULs@ z5z-Fn6%?I{Kw;sEdt|xKpCN>Ut++CCB;VRyey4yCAQlC%TikLE9nEPPGNy-VeYJot z7d-*SIuXJtNLB)3`bGn3lhVj$acYo^J4J|VYAV>_4mh%`=6C`%lg0wR$T}tb%yw`= z&Lv+9McjH`vqHdUyd%*eU|D|f@D~eM_i@-ACG@kR>-aU}taHep{n|HpMmtZ|Ak)_z zVMl>cP}!>n!C&{OK+Z^YX@5!*-;`)$YYd}Vw!gQE-f?qpMRG^`spsjfd*2*;gWA%K zwbuwNbM6ymcT`sIp=3DFeJeWO2b_Bjd`*8ym$U30AV_7-HvkpPG^k)pK`;W{j#8Gs zi$HD**c!K#$O5Kw_W*d_n&kWigbEUpOwhj4`nfe9ydM7=5!koDd~bM5w}=Ji)^AiS zRP7zwlvPwaAb%4Luk4I39$X)<8*VuxT2VoVB(@#`)(Z) z4=@c!yM3R*bj_08gi=d3v`09`Q`j&9sC&S?YpIYtPyjJN67lAm^|IQsO`$y!8Ek`D zBrZ$-bgS-E1ZyQQ&{adE7QjCD8t-k}tpca4K~Zok&e>hrB-gflH=`;|sEOmlXjH6w$txyTo}cWoKDu!*;iQV{^7Y ze*KCUzV6RY{K232C%)>%{s#a4>AwEUt|UUh1ASsf}0YQMm;wbv=VB5C@ zbAH@r&cHTQM2=(KuukJdy*Q1GA{WZ7$h-_f1; zGN5w_yh!rwF`yIyjEF1m7^lr1G2RC9k|Pm%Ac9$rDaoi@1Oz54+_JG1C0VJ@c1-k` zst^gegA%BS#kH#O4MmNY4#5_)dtp%x;Z%p=qbFIUl8HsfiG$9x$R$2XvGV za*V9z@la+k5=O#MQKq6&)_@(_!v@(_Wg$Vuk{mjN`!>J=Fol#{3k3k2Lz+F2^KF8? z2_W24-A*_6BQTE)IdGC(yGR^D=a=lnaNuR2#`F6@2T-wt>8i+#OUNChc-@4^#?^cXX@&ejl0$Ekct=f&N?{#6TPiZZWQs_mB3W~DA<{-m(ZM}Y=P8)B7I zJ@840EOs%&K-WI=A@a6l9}8-!KE)+zZy8WKscGb(h`z^Owebz-wlpROJa05ExR@Y9 z=^VQy9@yx5!BP!`=$kdcbSy#&=-93A2H+yzd=#acg-El83thXdXyk%PPskS0<>Ir! zeq}vKSct$MyvXt3&&R7Ia1I#1_Wbz?!u=op{M1f-?F1Gz%BspR#u^Vx1&vb zpEG7~v;shd`&L^H<9_P#W-~GK zC&Dl5JE<a|9TwoaiKY29Xf|1tK$jv- z4UsM_!V-L4EgZSh=M>`Fb6Ep`;M7ri&>dLOKrBUn6u*9+#InzkF>~ck2DGcHz0iCb zG;NUZ9>-bWn7HV<4tmZUn)4nTS^N1t9;=2K2j=;P94yTF1lgOVVqul~Oh9p`)R+sL z80bQgn<^5PGgkYYsd0+6v6x!|Dlj%(J(}qO-n%1H5AZDP2Ve)I*QiHL3E9z*!(EDe zag2E1)7DI&eV0}DxT(4pmMa!Aj9C;`LW8CFH7U)fRoGxs`tYMAb2P{-3k`AuD|4UR~ay9 zQRw+NUboVnAUSoS@*be%72B#dZd7_V?Qx@U^3XL$rIi~%?>$a@M~;+yR3RbI8@xYL zZO*-S1ev$pz}EbFlTHq}KhHJ3Z$@dMR?psNh8nC{P$R9^>YG%8Qka@~_dQsm1cVJ( zV*br5Fw^9bp3y+Jr1rapNa5?HsISx%;+HBKr|72BAxxf}dI=?lRHAu-uNZLY^#Z7d zhX|EwN1<6)AWcA_#x_(r2*`WsmFT-CdOnVe?jvLiTlceJkX|Yvshui+mQj1{DTBO} zE$IoHVQ<+M6=MvMNF`=E>ONg+N+*E`3xH~iL}EKgR)YS~h+aeBPCXs@K34r~?@R3l z7a8oTNv}BSO5oJTXt-FS&jpk9ye|{ysw?67f%c^cwTfaV17V9U`2q0Rp*^BtgcVMN zS&6&1;!DRSalc^p0??yyV~Gatrxn0!Gj*@WkJTR2SzX+u^a+@ zV8Cii1>oXEyj;jAEdgu1nb_3A8TVhCd5Tt3m_5#K$f)aq}ka86itHfv&Pga>qx9>Rf0dOAysIvA<)ChU;|u|-YS3B`0LJig=n}cJK`aYeyBIX zq>GgRcG9$#Mh+gXJrHoK9^Qt=!_iO>JTf1v*uJiVc~m&Kh5tT84x_+wOjZ9L00|i# z7OChYi}zW@5U50*E|$>l#Xqwb5S?a5?n^QaGfJ>-PL9y`{B&1omn71&ouw6VU3rTy(LU`!|7Q zc0Lr@PVZ$Ek_;(4V$H#9L$pLn@qX1e+G{d+6ON*CPW)8O!ik|Zw0w+R&dyJf zX0nN?c|n{RC2=CwT~4i*D93K8eo2wc8}dk&AQjQw=kfGCcAtPzODK9^a%0A&0ZT2< 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%0AfWfZ*ee>Ni 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 g0 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%0DBwQlHC(7_8mi|7+3R3 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͐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

    ZvnJEVWw#2O@-0n@5T6 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

    it- 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 z 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

    ^e4ku&nu)q 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%0D-gJfa=9c-18 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 z

  • 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�#U)2;|sG0L1l;o&(c@GZu#>F;PWK~>FlOM%&x)#$x2 zcWM%pGzQ3URPqm?cL8rFaH2p{2-&Sn#hHPOcM9lAj&bfO4IlRQ&z*PL)lt*Q31k%g zY4PtDgR>_*qIs_G0}Q4rY~{NeMu!#v zZ1Q>Hy(AXk(tfkH_6hf4Y7a^PU$<<~RKC!Py;T7SBrwfJJ4z*s!q4geCbW;xDDZI1 zcV@T6CYnC00HT9yom`tx{zK+RFUC3B3`zw%txNP`XBq3Z8kdIh6$A*DbT0L8W3W}>ITb10Dw!o&-TcI&FLxD&*4r1k-2(un4bU5{| zh`}dNpb@Hew-mV9%N(n+oMVs$(N+Oha2h^vG!Cnx&##~Z_n0`XZ<-AtZv>%1nd1m1 zLOqOwYl5L3a;+JwEB-7E^D#pLtUmKShBhL=zW#~GWMHOhm=ER1vDPPts?b_LvOXlv zlw7wF2_)Ao&>X`j8ttZM-6F|6$kb#FRrs@k7~JpC4BR`!KnRH_Nn-(`33_xOdeL>q z#wtO?rspdq0b&V^P<4J|@Yv022S^)DMbX3R+C~R4kelv=v?X{ZT2xL`wSn%z=iEXG zsRE}?jBTuSZv7s2B1Ppkbru|rsIwVCt%wvOVCKX{UjVrwN5-hVBXT_Ejyq_y?kIPGF4Y z^lMbl8d1Og@?W|7F(3IyAH3snkN?$Iyy9h_{`kA@yyxMYH*vaT%fvRQ$UX&bPJn>p z9@v9|S*$#U^KLq%aa4ob43`L2poZ)cpo(dz((QnO_o_-2QwD8(aeMLr+7*AOs^5SU zXNr&!fLRPIFI)@Q!~w`1*&+jj)T9yy`u@&bJ%W(4Ko=?JW!vmhldItLD0F^UYP(Bo zM2Sz#LX0%C8kNOl){aTGhE7t0-jwwA`UwXlsRV+(=b`E>4}%y7-RlIk|F8SP6=Xma z3 zOcJvvbUv1T+KLSnjDdgWy~}kT$OiB@OP^aK9l8!{A%w&5U!A`BqJsXP%XqMM_^3Rq z>N01g-HENvs)_le@%N)_3%8oV;%HTLAhwEn)B|xm$~vC`WQo~vW{h=aSwke#XhBdK zDV(}52q0>pVqz&-OB<>5P6`Y4xpVnijUs{3#W-8jNZUat|1P@7uZD{@YZElgxK}K4 z=tStSwqmSS+fv11tAw7z=N3@%5@L^Ziyg{MUez@;wn5&-FS*wzuX%!Ic=?^8jrSDqpq0Q$*X?^7P`ECSVqUMoAm&XAL zAfEI~^K=3-)D9|51QeojwV66uWKzTtz$~i4 zR@aI}N^FCZims)2#lnbgNKOk(0tYx+0Aiwd*-iOf7Xe+k@cJzgKY>S8w!pgM0RKFk zukx&RrYQOJ-yHD=c#N=Fnn&!#bHj;6(o67_Ig3*Qs?2Mhtxr^9dmwl|I%x6=y~KdK z*|s%dJEXHL``R7YlG79t1nrobv_40-Orbl+Zf)f zgl-+sP=60CW_59va`RNJaYpUHj|RiUz6~w`n zV6rtr7ity_AA9db1JkV40;^zTMR2{RM&uYJMIThLgU+ObTs&;EZQN+&7dlu(S*xIn zz!5V&qDRY=)~o$?7Bpq z9`3zPSCIR>_igvY%E`;ikJTUOWx!0$;pZFo~@#H`Bx=;V~ zzwkHaW#RVQZo{=JR{;q05bt_JASaFD1q7HVhuj25b4xHQ3aY&4^ z2ftr7&^La3H0xZo!QelWc7vjtK8LZGVUHSJ=0HyYiPJDS9wnK) z|4ewCQI`IvjE3cA1}DFx|P)h$;${GUuQ(4(+@4pCB43$)f~_ zWH6y_GX{WE0M2A2CHO<|HoZBr{|kZRk$@HXJ<2ZpGppho%MZ{CiRxZ0UNMtNsOpst zUdq0MRp~fO!T`ut@)|lpG&NOOpS#_ltAk_wC4J30hekRO?9oo1>C~S1Lkunm)C1FD zFb2V3zzJ||iw9AmhN?tjq##(yNUk5-pAy)zoWmAz+_4KWC0`q|cXP2YY>x=IhrZD3&_HYgt_(hclUTSk zm>6ms1vr`$I@fv@{Z1=jwYJAlRT;7=)wR}bWvOO7FyACt@6YT8B>u(qIdeKINjhiu zHLhH2xOVj#uHU$USHAM)cRl8@cfRf`zw&Fp<`;h9r8j=(_uqK)%60=cFZavdPp6B# zI?#PJOsU}~uXN%_{sE9T0pGgyk6OuDHAhB`vGu?HH$SmI;qJ%f0}tKv`~UsFzw!g0 z{W+ig!neNdt(f~w^v)P>zZA2t8$BgxcWN;(slHEF&pS^>AuHofP?<+N?h;cV=*OV( zhgR+H6IrF{L|ebprvjuUKry^lLRG7p-xAWJW)bs&nvB8rF3jG^Vw{r+`&0t0pRt|W z_0OT!2FBA+ ztf;9`&<&_c%N)VuUgfLxGwlleJpP&B3}7v>YO3u=siGd*!@bES(mv7NW4#YYx0=bz zwPSLxEQ=!0WR2``eNptidXX>KS%Z6=oJ#;(F+D?b!HSawYQDnoti5J|ci>%(z? zVrnQ^Z(om=jmIJK%%?|3F8@&~QZ7aS*ur6vM8;JOx35gCX_s$huXhiH;7)zW??l{o`|ULHarA2}O43AQeOP z+-OzN8=S4}=a93nP~TUuYMX`FUHViYu2Bw$_JGit96a1f#GMsxtnYPz$l^P{-^ChQ z?ZHG|!C;5k1Eh^)Z0cD%f_iivYyfKFbG@Wm8zY6-LZVTr&t{TvA(jCJ;5C9tRrE#d zs6=nAzYnmFo)yF)AuqIOkzkO@>itnQ_A{mSVGJb(VhyCu!hovu^j&Z$I&!cA6H?(v zAX19Nh(p!i?1hBBUrdE$GLf^98>{y`d%Wr+`7;0zLnAJ<{tfo-M~1+H!zu3W#s+<|}kPrvn9fB)J*{?woT)K}lUd}z$enpdw3ff+k6FOXYd2k%JQF^knSn_3g6D2ad#K55H77;&~8 z6sXhzSS>wfAASB#WtB)28k_86>zvV3lvXB}qoYrw?K1`5Ns|}M{St6690uIvcH67f z>g#5r-%}bGNL54lEKw!8wkzraDfM|rfUK&r0%}(rVC!ZuP-|4p`)K63T*=e;*1x+dg)rHU~YgS7v+B3;vFK@4{TrGI#%Rdu(#!}@n134#V z28IB9xq9_W`~2ukwE!o?vT>{gr&uU*3$27TdA@1L9YhL{Cmn${SHPY}Pp-4p0+~W; z5D|+>xO}EJli4~fe3xRLq))fZhFmP4U46D4270{AN>-t}8L`0h7`ltLpEac|pnD`S zqgwY&pp=dPMk9Rzdij>+vT;Ookk9sc*>T= zM09rru=SREpH8@X?b^lF?dqws@BYY-_+$U^WiR{15BU7g`=a>g-}UVv;i@vi5DyRF z!h4`&vHrz7xBgS;&I!zn9&8ny2=tDz)rc7PzWwd_XFv0^>cv0%;zz#j>%R6=zTzvs z{O2xDH*tA$C(ys|t5|`Zf_c%v-htWsYWoZq3r4G=EOuM%(pL+%59%qW#EF^Fx_n1a z3$??&{;i(zsYH#MJGI(C(XHNjW+<(sYgWm;)hhY`28a3cBSC6ERMl^wYhM*rK$ZC! zsAO-y$N2H*Syb`3x}N-QGXz+y6gZ&bNP~Nzn%t4Vw<^^=SxKEZ3Y+c$pW0Gu?dZ%? zFdPD_0;lQk+zC=}ECWHCkbv||G*0|`J#X&>yFAyv4AK>p5*IV}L@_Dp0luZ1OqCCQ+ddkZ+?s zDEpATlxsp=2@{Bo00^|dJ8f30NQ^LGqDK~>;;B$pJ!#pmm?6MbK!EnG^!Z*ks3n8G zU+~0gWf(xS^=346GD3!|J*H)1wUP3l`HsP$bdl3 zLRlxw&E7#EAy?a9VU9%HdfTl~=yV{V5~E5M6PTzjCtRd~jgYVsH_-HS2foXgg8`yx z=*xkHdIi9QHnbV&V8XG2nqL3x00nX?7CLfeYE=}Sn7c3ENnv}_>3GN1@&=}Wg`Su{ zvxOZwpV2*I41gK157BnQ4jQ4vxG^w}N>auevDe}yhWbxqIbkQ-U~-#Go=czrMfwJ* zei#a%d0o@VY+KN6$dM-=HD+)m|179$?ZCD}K~0X;PT*=m8f?+FTJ3tIshp>_tq6{BtNY^~OY47RDvKy0i$Z(#0g zcHwXy98k4bB7Zt-0j%+p={{ut9Dp7GTO`z)(6ItK?u9Dgr8fBmo36QB6R z|Mb#d{>9I}>&`pha(UU<=fmjBnUSO1153nuQopuY4QeM@s_+&HTU;;@U*$&`UYY0s zMSU_P2JA!=LB!Ut*MJ4M3S}6VM%zKR3-y(#tYvEqJA{76pBcgAfB-zH_hdq~ssSrQ zz|mU}B83)6RxKaTgV21X_iY$?o=|a zpX2-20xTOm18x&BKRaeOz;%l! zW&VQFlnOwE>*;ZYkNVH#@f?A!=!nz2tf(G&aZz)x{J!V?b9~8{{!QHV_{Y8EzrFas{KK$@2;+rO-OqAt^}xd*%T$M1$}n8{a2Op zCVjjlAQ;kjs&!XFL<^4tJWtMnHCMg?%%iWo)Url4jlRd9gQj*_wBcTmGzG??~3K!Ma-e4y}*VOWMggi$Amv zO32Bm<$J-5J^h_&=-fk|CI2oU@V5od6qLv5J^B#iEdln*+j(YVDCTO^>1=#qU?t@A zi#9M~J1J8dgvC!1u(aK&^X~`uBf$dgDr&T1pOD?H z&?JDCm&$csyV@QZ_H1kNioVM1`t|-`+_Z#U<=^>Kv2>1*z-gC&^NNp-yBpcNSDU`4L^k#qtfTB_`%XgJ{oEK);CO0Px< zIpU3;VFW23q>#P5eOwc)76n7r zt&1N`a%RL1hOD8_AjN}~5YdPVnB}OkmskWLI~|y&NR;&+7kZgOw-vy*s*f~4Mmqs1 zA<7|&4h8*8=mPi<3Lyj}bRo4!(}tEHNVJeaETheFF-Ou-kaH+2S@vSpLKQUsKD2f= zeys&2TI(@1^XzB%-4j%y#X@ldRXY!M`NFA}i1SSZXwx}R9B(JR487=ARZ@?&;V;tu z5C1;3Zxrp@O*dfT)+L! zx4-!hUjJdwdG_Z&=b6v^vk$)WyT4oAd*53pF};r64aKqdpCHe(17Knjht8N#A_C$s%zZj)0RWPzzs%xgZ~qPg z6b4(I0KwSZ>f`15)?jttOuPt&DHaU$@3m}k)=&$ViZ0-p_D{nVz%J#-M)6~4P5Cf z_>cegr#|5BCp_WB-}!yt|9vlh@z37<-(U6XaoZiY=V?D-Pok7@oUs3GYg_q5Ylr{$ zKnoqghM!rHd(RrN#dhT?E+2U)KInsVeu~g%$nm(wMFscQz!Rtcmc(Hx3 zApju&CGD-dY%KxCg#!K*juSp21DF3wc;)EEDJp04fxv&@=4bgkTg>Pt*i6acHsXr(5 zcO9^zzw>0;Psb|G_iDv5>wkIJvB*S0|Fibp%f%DN^Q=6yy9o~J!ANcv1CGt8wjyCWm45jU3CEt zLxGPHX0RWIin2mhf&uLMU?Ehkjb)rJ=ia0%rVQw6fQ=@aR$eB07$5fNxg784Sh&bU zGT@0Rw4Kz8Xx?w>KuhG0&X&nl9f^SUpc3le(K_ltvA@J@2<5sA*dxo?FY9;0F z0QYH5J9vF|fa7p%EQ|j#ArYLKi*m*px`0QgtX}hIyyKpG@W6u);#qH^1=@ zy~mTE{Nl&mb@%>F-}p@#dtoCgGcQkjqUYsdwsg_pRLOsIShYZ%w-K)&*~Ud;AZssN zY*+BY7yeYg?sdO&`aeB zlwyncn!=( zQVv9bZ3t)?Rh`VD(c&+KKuFmw~g3RVpA zbfnlIvDO7ciO&$gMR3Ri(p@K`J^J_OImnYqapz@_t&-i21HkXsT!je`g=t>pFM2u=e>T90rX z<#49eGRC&Dlo(~`H>>sez_G9X`|vSQ#UHLMixp{`9I@VGwe~EqM(-^~Sx2x^9|5TC zZS)4~q^K;m*eter+&14!C*=xgQ$7L&v@#Sg2*GjXe?V09!15>jTHbMtTz3TW@oO9< z1lDY^_Pv*_GmA2jIq0{BD{Hi@RowEJJMi|myy-n}+ECe(RgxeEE?d_0bI8t9simdWey@E-G*oCAD+s+vWc*V3SeYhS}Jn3Yn23 z(^k?*zK&j_ z&gPDlSli}6iET|!03+}-9V;?BA{|_n@ZHJvJdZc!+nUK`X>Amp!;_CzEZ9>7Y5qY? zT0~c)ou8n4RjlWVP+BqQVdnt7cQM$eo0%49MA+Qp*4!;{Z$JA#~w1K_e8Pt;A^D-%Ad*y-I@!{7_+or zOgwc3TDh33^l`Kl@Uo~N8DtDW@oQ<_;XDTd7@RjW<8zAZsih1|T*&P6^D1bWv7VLh zOj|fpaAhTW`n?1gYtzXVaU8?xGX%4hrzn;vhiB*UjMpxJlAaua6Z?1mT=qGCQtdOr z!`Q>%HSd697w6d-W^_0=b}<8%DWYBOmJ?zw61UxQ3l~;JodgqCQz|7hBnFsln@;;e ze-*C`@B(L~9+ZLLnp>Q5$epTcq<4}IKs^Vc--jsjrgKnILU)XM z`w$t6#-?6*^a{*M3&;u+=hJ&slN#y}%L6C2ApIxDp-{^}Co#H3UybDkTFs)l9JQ-* z%@za!5pfoDFt`WTMS&g9rHFJI3ES)QNdHGe+6KcRJP*`%1QeaIO^`5gQaZ&L{C@7T9 zfP!&PP>56|t2u3;1K6B^X&WOIv?-$Ex`im4f!I_d*1EGg7fSS0qsgO{BZ3{XPP$?U zGt|$djLA@9#Wi4MFj#iuvuh3fl5#b71TJ)P+!=QzzuI>Bm}g5wcfhp^#@T$Qbc zTPl+46OG7i848g`bA%|-+IffKk<_P_TRqnsZV|CJ07`wWX$fFmyNmrX=X~&j1_WZW2#f> zKzDnY=$7s4W#^{D%Gsz9ax{8W_t6%X8ZCWeAD^cL-K8RfY({H23M@pu<~!SwgbaIy z?XKRzi6!XlTM0Ag>C*WEan`~BEaDRatQG|#CaO0&!Hz}$XX#C!?X9UerYp!!T3MW! zs+7c)yj3(tH6{k(_*PY?XgnK-dO3p{fq!y>-Y<2#C@~SzAP~BPU|M7@wRmclsERFW zE8lCZUFPZ2GsS=b=tIEJhfoQL*aNo9fIG$i#NS(vtF=L_^!&{bbojUCaWPh^qR#Gz{H$Vmha-ZRsy{! z;G~=?Vdi~x6?|25l|WAPVk5N9CCbGQR?WjKRI?VUS7Cv`7f`v265psDvQtdJ_6FQz zj$#3F2ip*A=g$i#CGaDXH2aCxBm%D2RMJSWfcB39<@{ctu*;5im&E_DCL)kYDYccN zfZ@7gm;xSDB}ZuD!H(Gj(I-r49L#8qC1eV>cL24M{ThLo1XH-=O49co4gNi(Lr^M8 zc4@TZv@aE?03a~YJMC-f@0c4G&xpPU0$8fqJKoCLt6TCcjU~#fGsqC5P&+{JY{n6g zZ9w~s067_ZRm)IM*;=tsmcE4ioc=$5F3rm29Z$99v5k{$id{S0^Uu(s1RC&}djSKq zc_naMhmg;m>a1IrR_~1@11GQmoMp=!N8wa9NWrYk6~*9JTHkEZW1J_SXuq|rH4ZCc z(6m%=P^`fGcr1oJ*FDAVk-=*E*~UOR@O6k*Xhp#~w82O8>_ws(4a7X?9Ze@U&jJ#A zF;-G&_8AaE6;oH1gZ<^L2-F7wf!@!}sstR?!!x*ZvXfTG zteUJWczvM$o1Rp3#qlge#uRw=&i(H?-oyJ^6ojb`(f->fMWbq(r?hnD{3il*ASxRr zSV}W#xj(Z*^KEftlHNW*s;PEta!}o?->PcI4mwF!>#;7iSre^i15oNgs=}NUT$`m! zt8+IiL|+2T(_1KI@crn7xsW0UXuX*{by1a`&&&}kd<4y@EuCGc-^+@>I3{tl9Zj?S z!OqW0xmE7P(=+wX_i0uWPIJecJ5l=T+56s)JbWMSz3<-rlRouNzU;NX_1ho(p6~IL zU%dNW-no9{hkmdJwoU}*bjW)wC6=*sRvE|j?)3v9@7#*P=-WmFfK%_MnpORIpYyr( z;Jx>rKK#S}@SlI55B#9t{rqQt;oqo^dE?4;T-?|wd^j#J3P=B5Y1E_?$peFdrK^#O zCk^IMOi%Y+k2ua=qzzIwl)Qzs97+QaM8!2Q)k1?+Ug{oFp@$Ofq#dk;kSYq7p&m6w zAy@c$fI#BAVQBul#XzY{tKeFTz3grzlmF<0Vv0a-`Z8t#SQS-1C=3D<(BrsF@{Ohv z6>cVz`&`LC|8$%!qTVy1L?adG^A67-=xbnaBrB_k#Hx6Qg8wjUC|G&!#6*IEuUylN z77z&~f&)x3HM>{9gz3m7drew+tKbkTsi7Zm^NBv&b&~ zsRu!Bgdua?0#RE^+BGoHtO+7R=Oa6p&!!}cEWmJbp6E)2^`UFDAu=U=#-}KQe|nZU zE-=hWFwK^pv@sMJhL{`lrF_m*%*8Xp`)N_k%%lGb0*8@UERbc3O7GQ2-s*Ed&YDe2 zEGe|)ZkwZ437QQ(i@`Sj9CLccf4#;b>(3C#4M!R+L*pyOYMCk}OQ^T6>R{z0kmIx(aA`Op1c-1+z?;NExK|Lt%3gEzeU zCw;;n|GAr&mw4d82XJ{RTx=V18_1rRCu`0q`EMn0tz@((+b)aoLeB}Dpq5Zg0&4p8 zQ!x@pH~JKyZodN3Iui0-wxJ4|kKSTA@^eatUJZ^-R+8Qws_@IdoB=K#TgdpAv+YsR z4p1vA8MLs*9us;8P+s43+|FlfPnlAf9^IHyo+pSaHto(h1d6gdm0Ptegr+_?P&(Mf zt^Ls@X^^eGew3fH2h=kU*T4kZ!tk)nd0I?X|%vp!S zGq^p3#TBrCQ3ktoG?ff3L!fwm1b^;m#n$hILHd?oSNs>Y*TAAiHuUoXE9Cdc&hBF` z8!QgbUO7}2^B-)>E}^^B%Akoa_N8dVtv7BVO;rel)pcP+!aZ(am1hM3z;bRhw63^7 zNWbW&p}-@!;A5!AgDbzP#CC%4gQ~a96|WZEjfi={RK?V&1g(aW1fe*hw3+hOT^M6y zwOc`%ohqFuRuzdAhCGQ@N^evb$)f_-Ks)p|vQ6u}w{ z%S+K9lt)Ogdmt}B)`E?l1TJ|dhN!MIU`td|x*G_s_qt;W{JPa+ zO(DmKO+Z(2fRr zx&Oykf9?PM%^&`uA92^e`wu^jE6H+cRfnca98oX5gly|dfoOf#weALe--w8qm@y<$ zIja!0KY|`PE=Iih4X@wc{b}zR+lW7S?)QA(XMEZ-KkdI>zj}d(AGyTbPuTVCsXzoH zVc`@QSTmCc0>-LWrfmwH@185PrK(lHs4VIG(>9?+iIlCfy)0FktrF{3A42=Z=v&DE zuXXAjirQ9otY_6+Kb)BZhGS*C(X&@25yA0C6VgS|?u;n(+|aqRs;+2*AMIqZmrpR$ zf!rnanJWlbRRP^`vV&UGRk@=+qsOWK#x<$Y5_yxOUvx*1_SYz(BbSzOV zyU9oSPpws;j_RrJFWn*EtMnBSNU%ZzFo;={PWevyJ_k~c2MBhpndx4wWRM(s9y1ys zfkb8U0$S;}R4Q5Tw0H!O5;wAZo{|SgXWG|5Q@i2t#Eb`YmP}E%LwE4Y_8gu|=Dewj zi@=-Iq!&GzTLMz?1*@izH7X^S&=cceiG`Uf{8k94CHoEQybs;&WPD7&RFi>S!_q+T zt2mB2jG^y8_nf2$t<&<5O?rR1fB~OOvP?1+geqQ(Uhz}t$hGa6J}1Q*0gr6NStWkxPB-kE8uq0vh7Zp_4_GPKc3TiaMHrmj{b7LC0Ez60gF8UX8sO@7 z6<2RuMF99uKl7sZ{Nz9N$v<%8`t=Y04?q1veB?)c)Ma6gQ*~YB$OUX3kfcI%_@*@u z4hTZGP=3n)yWo=Us*Fff;E|gTKk`8z_`z3R^Lwv-+duv%-}1~aefH=7$|E-~$Ab^t zfBEp`#I>s%>U8*xs%G_Cg|*sSS^$X-3fc9}mY9=lCG*aCW^0;7f?#4mtt|C}qhb2B zN8zDsjS4Mh)M7=smDA(PC`#BGQCz!NK>`U}xnAIczp*UNN82YOk5e_q234?0{V$Z2 z`sm*QO@L;l9|(=?Q~!GvK@C0_lS$1^s{)z1)hO&NI5v$ulSTq11SpvBC)hs8!ddBa z*aE?e3KqtKEd`7RtkPe{9bEcKPO!PAt*Uba)D&>?ICaKBTkY|KPGT$SQ3WK6)p;g8 z6LPT_W@Cwa!EGT}u|Q~NYSO1qE7WAB9L z4ZHo95uG%%I;e5f!M2uYwM{zVb^%k*?f64ArE0!YCHK-3;0ilDeFawYM<0J5#i~LB zjU8+BI>5rH&S&fMk0}N6S^`Q4M$=fcP{;gm70OGtwgl$4;(zdt`MDj_#bOGIYZ`vZ zBVeYV&E=nKFT_UHNg^zHvwl8qx#c#56c0(GG|JBpi{AJ`8SJUfMD&E|$|?YhX6*wc zghIiCdmI>?feSile5waD?R!NND^OMNYT+sd+0Yn226KE4J7rc(MqrIdfGZlq2#o`P zT!|h$vcXBE1DSNdO2_ShWcjQ?hlGX_P^ta{{Omp^zPg$hnts3ptgvDI1w3vo?d?Uo zPNCQgFf}en6#|c=NR53cBl}9o+&{>KTY^XqoI-!5zDv>>LkYb;C!F|8+)5w|t9lkr zD&$CH40^g~bPNe~sUna^C61s$0b?+k>EH;yC^R;W&1+Q}6jZ+I418aOcR zdW_Xdz`ab3-{X177)0t)l@DO`OFOal8nHbik((~3$|kNTSkyjakXGMAfQo}th6xV* zBAJA9XC26erZdE9v%nxd)WFF$6t*c630G+X>s{05BI0D_-~7*WUGqKlDRi zbnUj=p8f;h|9#^VKK>Jv6BTAer!xbYGlfzm3^l!?aQtT zv#?#{wTta)?$7_;=Z(+*k}r#ES8n|7zxd%F`m{g!NuT&iB=F!PH!*hL1R~_Iz&j@? z1@tkFjQ)d;RmKO-wGd_;$+iZa^-)3AQpj|I74=z6kjge%PLM%r ztIw~_?698437)EC4LP4RtB9}RY5{|J>0l_hh7^z)v?sC(GbF4u$kngt7d?q#3764waROvz%$~Yddf-8l>|CXQlhWKeFftyS*Y323bJ^yBKnw zUSWzkx3V?$FU4$-O=_>3?o<)zZna~O(9q~DG3Ej4R45?KBd&4M?%<$7U$=zq3TTi4 zQa(ox$XqB8fYgH{=SJbQPYtXu)y5uSCs4UE8EW??V-u2l6cGcc$8ur@PnSlUT7 z{Xf*Y5-xNAD2=yE-SIiu8p!30wg2fDO*D~)DnxKA9oC(T1uXK%3!Z|ZXY!pFLqSgs z1zoT~?>X6zud6XeFG_yE$Zi}qM2SIYqt-N-;GHtK<1-n$ud5gY0SN;XcHJ&;aj{|c z2|xN{KmO#u@ugq>;s+jj;K^VA4SzSj{7b)l&#|3ObH6@;x}tu&lpAUn|L~~mXq!Lf zE|0x_^lfZW4-pwLXW?J{=nvPk{_qbd*NRiQ+%!y5FVBd5`8;KxQXmCqnH`N>=3?x_4A3&IQ_-oR^YY zgTIZrlSLL?qL|l8?5yw)^cuOhgyqC2FmPb7VK0jE^{y&>HIP>B7tj<%dc2e40%_?6 z&$}0^vCdi<$et_!>ca=Hg!=?4?{mp(bBm;V#2=n&f#By?w8kCE5AHkPSw5*(0xlM1 zv~&t|FS-}&6+JQc223OGR*Qv_duv!#tppOCi;)`Z+4=ca@h_nQZF^r6GrS(M87r*dj;TwhV~gT;Y0-~x(6WM5`a)x1Ig&_u=%U}0`zNC3NGO*u1-X<}%* z{Qc?ub8Ml#UjEbo2F#c+;2{rhe<8c+c&Q~eEMo_=rTIO)LxEgv?2HY${&N!SKMFFk zSO)!Xx#bofQqd@&ii3k+G7Mq`kmtRt7(*NR=svhq54{UgR`7+A##VAfp&|tlP&KrI zO4~}(hYl(atXTyzydKTw0})_Al>>!B#s#u>I$-z4cPmje0FaBZz+}zcVN#oBV99%J(a&;aFC34C2bwV0vUdBJ)kovR|<5YrT zVXAWVmTNFvnGfh)y#DUJ5A9Q`dauudok00xPCwEzd!7lvt_LOs&&n**W5qBBIh z2r4kxQ_;aGp38%2{~eBXe8V2lj1GR_lylk=UT# z?q-s1wP>v81UO!>;l4tS&k`UI;6EqFrZJ8>*cSvIbPiHrnV&I|z4gt#-dw2?a6zz! zd+a|8MPfs&08ioYn8>xR0>4r$7=kcdNrOiWoXk!*-o1xFDERpb5f_M|`O03SF|Z8< z>PY0q_q*ec$KmE958U|lKlj%$M?T`GC zXZ+^ny`89sg8I1}fLT#=90NcFd$Qs@ z33oOhfyT}xK55GeSP51%*y0hY@wV<|&t=!)?6AQgPr-yUY_=W~<#%zn)I7dM(zI$= zK{TF1rVUPjk)rllMVGU615QZ&PZJEfBNPjTBcJr&t^^;lwW=df%vDZ~PLlSE#J{qwGbg;hlZB)Ke!ljBlSPGFnc6Kn-CcvGz;ozLO-M9Fze zZvkdJgcCovcd=C3)(OxERp@B1zxx z-O0sq;O-|V1}R4z0)}VtbFv##EgsRO;)IhoSND&Y0*zH!@smRVCu|#6oS>86x)X^N zM@0mwNsg&h9U}S)gw)ds1Y#K{GXq+28B=mOlTa`iKsV#8^Q2f?rS-8XlucBUy;wOY zf%b)#9s$6jRSs1bGbH4zGmpXy4umFKB+<#vt2O|KfSUG!wJ$DU@HB*A)L0A?*&u;U z2IdIl5mbx8lz4JCg&7gRP-S^s+fX<6xOVMYpH3%S*5wC(_Om|!M}GEa zUih?Uf8KNEw|vL9Y*)t>r-y(zb-HCbu*?6P{jV3+J_i8vy~T86O3L}{+<&r?JR(kFWtt4tqU=*Qhi843E6lq41r*pC$a6@Lp)?r@dkYK_ z5YtnMqpr}Z%rK)Ysl3<~93j}~NZx;Ii($a6XyP|>K3pGG>{-$rHntda7 zO-m4ap~%xlAuxNV2&LX5{Lf+yl-JaDbv>Wj4H75;G6o>fjTsYbysf^A;LZ-{ou`3< zD)|NW%%hL{*N!bXPZMtI4T)GY4rwtQ2)bIMXHSi#^_W5!rE9fmXfMm+#sZH*dzyY9 zwZJORjB4rwh(XX2xs3JmWDeK>W*5gjBe@nUjt*pda)pxU4j2F+!=R0FGdhqzTL;_I!gkq6GCPrmt2+h-7q+evqNO9bDNY}vrVObyU&k*~-49i#`eGA}n zx#~>#Jh-N0yS1GwQ9mZHt0{enAEZktfmI4=I6Ti(8)*JF*u-7!j$^` zHKs_5c8(Ak^=Lcmb2M{3yADGHfc-$`daXP`2K{Tp!X=Y|n7MA1{5c(3vkd4D7=-t_ zm7=E^mDcm2dpW9x!376w)}i%(WVCoao2hA5~uJgbI!@D*YI_FUrDV6-xpVLoCFojkC z9qQ+A3ad;R)}HKbO9=ICnWZ|64OwV?D8Uxd>GS?6Q?E^5qyua@oj_00(6S1qC9B?5I59p*vAR&)Ijx z&pFMBx4-o**gGG3(a*f_d9QuVZ-40Tzwvkf{VliO+CTh)ABV~6Vk8yz!oMEtCCsa2lL#!1VMiOh|g}^a-su5Y3LTG_TnQ`L8 zKPF6plSU?!IS2^d zmzZWoo9Ev31ew1`EU~w>J0yxQsm=ylS@^Zbd&sGS$preo2 zz`$Yk=p zf_{`JPBNwd(NtCCRzjB!#FF|Ye&NhUP62kz%$AqrnIuFv7U(Y9}j{K`8tyG zU;zNJFW?1}edZ!3aYdT3M}@Q?K%Y6xe$n?kfaIMNIBGMZcjnIN{R_YpqXRfp(u2X? zaNM-a6F-k(5YKQbkY3`T4St%64e10^Od1vCmHY#}9EldX&H;f~z;i(HQ5dM(^jN0k zAK(G^QoQwK@)sa2m0v}GBhx`=X*=u}1&m}LF=ZY$pvCT60Mn3V4zp+U)=3b7_{xyp zLJ<&v#XD&;kOLRnz?BQV7ZS4z7jc2xZo9SbzyH3+{k^~c4_@?yJD&KffAGft^`39P z?;Z0y{@J&0SD5@OtWMs%;iq=6*NZs#6-gTByq2m_z-0{Jq7bK3)E9rj7hQSm zwcG3ZwX5H=UtT`>1<(J!uX^a_!}x=@ycv%?{0MeHNf+03mtUuf|CA4&8s`l4vp04q zmeXCC4gP#Fu5o<9SVWa>(d`SQ__r7ZU6UjJz<+1Fx)Yq!@79S)GbauSG*I=wtFX^T zEP=crke~|tRMl7k{1UF+o0an}epkD=IeLu(v{>}dncWH@ZJ zD*vrqq+;bU2Jb?kdqL@Pl|RktCp_893?fK#2R#?dF4k>4Pkw1bY$s{soD&r~#S9cU z1Fa9!9w&|SsJu7Zu)CR`x`m2%T!0h;9D%OX&)7LYg(0APR< z@#ZR7!3%)Q0k41Y#LNUg)FxG`m55q13ONK?ct~g-ALXOfrzy?@c-0cF?N6 z7eBk{Bh5=f0S;C%P~Okb<&pq*K#0H5?G{>Vv@nIzK>?$VehEF*zfa_0Tsn{Su#wN! zn3qClU?=pcpEu$<*I22L;b1=*d(Fy%CtkVYT1qVex+6l=4Oc)*I_bgRbLb#}wP+#ja6kIiUp6K|5PL~0YRi~s= zm@Tov!yx;6(1AIrE;}a^H^zxVu_ynFeWFVJy_4WWgCWm^?p_J(m=sr8^LxAL+b^JN0~&oHsdHpdYf|DBN}WAQ+D$Lzv(S==k(QzYd5aXaU~f{%*(83jO_~M-qkfxQrG#V=y@&2rUK^0O~LROilx}@r{*Q%KnI50jOPws4>G(3Cs;UCn$(!-*!f7(t(2i zme3)9+(^q?1$r=;FS)F6K&}L(B9_@;QlUE@;7A>LHM#?7WmJe_zi|v{2&4$xlVH-A zOs*3tacocn1hykw<_cEkLsLOw?fxN97J=1<6yRtjY63QLi-n7)Co~{e!jnN@!oqr~ z&n;Jab{mo*^wIJi&&H2Ueun3U$FV8v`B+&nXI_eaJOwr%N^7Jc}=o$Md!V zz2MI(v~+3=hW`_CvMy$CC$IKn*l?3*%KYK2ch+^4Hzh3BrY`BhSg*yPIo@`j*E-!;^Oap z_1Av!lb-mb*Zs%~Uhr|h`P;t{zxJ|Up4YG4A}YzE{0izhGi*Gi&|;4>2eX1(KRP58 z1_1lsWYovJw#Bx;@ISpU?!5Dk{E>h4W54%nuX_2rzwWia`fL3If0jGUzHw!#a6e~YMxHTf=V-?wdEEqT^E9K|~+XebI z9^Yn+?{p6W6d(qGQ7O^}=`<|fAs~v#vq1qc2pg-)tv{|@{~j)r2lWJ~M9&4NA@n!7 zrPI{b;E8q*iu*y0_B#yZfugg|n21@2Lg-qgKxc`vCaRz|#571(<~v}9s191F-&VB2 ziZz0ZAf*y-UC_fBh8GH^&KcIKb(l*%8>LOCm7C@=GFruGRH|ZbgVBwH8Y6noG8!~3 zF|B$@MJp2Z5j1+dz{M0sDRrdv8Qv*om=_I^$U zAQQ8I+IP$bE+4tX>D~u0A2{KgzWE!!`HgRS(|bR3`M|Hf)8p^D_}ahof1@tvWdI}` zwwk$_6w`+B`uV&%15X`DXC$&(Xs06xL?mZ|H}k=`Tly?A| zY#?k)_4$e5s8dxaBU6gsMyMG!4?whHK6M3PICHh51`riaE$5SPB6$yzG@&9lFwJs8OeBrT==V}!EKmhKFD?N#~G->29+ z1jv+-D<06T$lv%wd+@}J@?zc`vdN{f;fpJJX)Jrdi9 ztkWZP^8?@SeYQXSY0td;)_?j>p8b|LzTwI5`mXQt`)|4DZMgT|ci{5oB_a}2RejV{ z(S^2y;%+JqOjgJHBv44P-ctJqSpt}zKkotuV+LycpMaf(2q*m(m}`mcm5VMC^V27v zDg6UySin(8aMC-)7}VVRa_s1W*900=+GjO=s&K-%VXnj#JgZuHYaJAnKL8Gq)|xH# z`I=IrKUyaIb7%|FDJEkHJ%;JyS{P+#jS_Ay z+W_XBZA3l|Xz9R2z=DtnG6Adr=?Px#G!Du!s@R&Y*c%1uT?uHDwP2pkcbarA$Y_l; z1l%skeH$nhN`R(~(^$)lxf+jZ`~S8bmyK0=kCius;*ct+|DFJi;(w?JpP=o{a|DjT zgsKffWj!CggqV0u11%(lRnztpWdp%JAGo5a5fCLKZvmK4Ka%rVw?LBa34R8=5#VBH zt8%>t>A`BWjYe6qz3GD2oM)vC4I32gaO$$bVT*#3@IJF=+Cn632}myb`Dh#&KL>7% z%XO*eQ3W=uASM=GTnc`tJ8c0W@n$!L%YG+3FP zp|=eingf7Xl$8>iYH&ipfa&ef&$f-wO0aQUz$*1TYr~VvJ_SBh1qD#F2u@0<#=ftM zhY3XQ1QntsenSw!i8n{M@%?zJL?aVwx||FAzRk2KN=dApL<>poBgrj2wC>5Av4W_Y zQ;7Lo4v@}*=xubNc3sHEa-gLkn9k3RpP+z8{q0le>Ll$C8Y@Fq!Nd+b%RucrjX>#l z1a4qzyq|m8X2}ruK@9|%3%SeLukk*ra=Y4qVl^L3?5F5>W&)sg^{u%T!APV*2|K4= z_xEyKUfg`-VZ8m#@4ziLZh7PHzUI{*`lJ8yM?Uh~zw=vv=iT4=DHm^e^PA>|+z~NO zyIl@Yw4-YRPkhqv{$F49)&IxMhi}&P8@Hh=Pe21>L-mjobuitB(-}gkn>Mc_u%!`N%`i5d zUFR`FvRO1%Y7jw#zD3;DQ`F56Ww+|A^~!k;bVCi^&WQG{y~2T)?WYp{jFX`2$p1|S`R zm0E}eplp$SlR*ZZ9@gLnBG@kCN{BNmRpohZ(&Q1Ii!Bc>Ofac+zc%fh*<`WWOG0O5 zh#CkSf#7HZ-+FT;(t#n;C>J0d`Z(cSS8ix+8Cmt&6cktYVQ{0=MuR}~ke?ywFi>oJ z=p(7+WTL~@7NF?>i3(PYLlt?(BdoL#XARvUP|rc{U0|%i5y%V(?P64H*`;oYGl@WZ}@$h7ho~vl&cQX9c14Xbn9$| zdia5qNFr9kVttAuIB%c_($j^48Yc!#TF>ALn@$eTmjR|?pgfj;R3NSO)RVv<7SDqc zCRP2iIaZKn=3GBV6|+8J+XimG?N(g9b^|Z`>HqlAx7@h>*T4E}{`Rl_v+w-Qr@r-V z_nhAQ{ocQ3)dB0Mv;{pxS?j5^eu_^Z^WA224Y4N2b zku8Dr;bi|wjIJA}#!71076``QDst>-cvKtP0(w<%SwLn|N_m4 zlq#|!tEol9n0!}zsM;(9n(T-b(+~mkesN9Rg0Na872nft2{h5&Y%mdoib^Z*s9ye> z>nm_X73R`@0*wfkS~6;Z9eiyjci~bnXy*@ML9E0bLE&5r9rlW6Yx#xMK8#*=hNFVX zw#agBSBLl@=E}Q5F}*<(UZX+}`*#`2R*`L&?NU*Yzc0WME}qdYO|@SyzD>)9LChCd zaQp1pg@eGrLO>Id&AwJ59?UUvZ!Eb&+3#+!T?H(nmcSSmBpV%*;Iazo2|s@^=uh=ZbbQ{Y*Dz?#DE|KLMH*Rpz<%lC8 z@f-&V5{n8t-VPxPQS7Ib2$CraT+&3uME6(~DmX}qLUnS6tbTt{6j1u!4c#1~gd9BV zAmtAQ23A>!J*l|9zSY$wSJLPVp@7grb`T{nXDOIDoNBD+;_HkAI65j}dL9}S?9;Qj zx-qo)sG)hlaUkkC^klV3t}htC2e7IW9Dm5E1C7Fv&|oUqBtugbjwSR!U)7^UMOI>> zK+{958FL*;L1-#~>3UR*2V5Ji5LFZWtkFPh>dQ?4BGIJb#7o;3m%hhzWm z1ZmG2si&VAk(dB3Y$)_B5vhJcfZ~3d-w>csUAMMPVs%>}X6kuTRA5eK&`5Wk4brpO z3+kYIXxyL9Ran@O>zt8m>>#v$oD)w0M30T;EMnh23O1#9wqxV>oqzY50Dz#lp1xZf zxB4{sKDo}-7$Kph0p%w&N1GxPApW61QEyft#0?H=glfANtL| z``X|8f{**SkEfulP_)olkIz9ZRFa6>#ea_c?{nz~4?2YX!mpe|EWMPo>L;Fw- zjbALBik0Gm;M`ykwxz@Z>kw9J-ObvaZ1-XdrCO+1%~x+O3K1Ks_aotxB_+yiP>~KP zBGh`7Dxe8*6`O!wYSM1SptFfHXDZw2fW90Vt17of3Wg|mW{9js;m=pFQe8?2mtYr>~6c|C)yNF-5D)wjzUd+KVl`yD&EfyFFQ(sB|6ZWrs{}PYI?&GD zB8cH$e($-S5)v>w+cZGt0cz)$r!x1BR6ataOLU^U^ZUx!$0(q&-tP+cz#qq z?H_*gx12ujum0uj+SRLb?v=R#=;U^z_Yld6CwUEBF!9G%eVvSTPg>Z9e9lya1+bIx zfBw(^8GrgufBJaMYhQiezxv4^`}k*m%Ab10z3+IS5EFR`T;h~_Q(bE=fW2iaf?z+m zzNf~~TkeEOe^-lb3B~Y$``LjILormCnfm))cBoX;>6)^u`^w9hv`!^(4TRbo(JG*T zpWnPOECx|?tE8&mB|t;$gqj57YHtE(U9|gV7O3E25xf8}5vxel(hS&@h?c|)Eo?X? zrh0$^^fyz8L`SI*!ZXPN4Ovgc55laYU<83H-WOD{jS^fBgCeLn11}hpN0-)%zejAB z_j`TjWU3*dHSL?)8N8;|sM=vcM`8}D-b*(t5Nk{$#Ii7$6S6b2$j&o6n6KN5=I+*k z@*O`rZ#~NjAjkmbRH9h{j<KK0+G0*jp)fer#X}^7ultx zzL!La{km#3RsLylWeAw!WEll})nrnGXU^I-tRV3X9bZ|4qtId`JI^dojIjBS&^bFZ z&J?$7bji0>uaVCyN%lv{g0$wquJObA`*Hz7@nFDli@Z@Bz%_rL@sDGzgjf^pZWirN zF_)s>a>-o*jbq7>QIEmk15O|mZ}Z~w0IiC*wlcK&C9e=&OObO`0#u!5^+8jUixo1* z0g&t&^j-7|6FG?_VfNGzJ8N9J= zinxDI=vFfn=`=mP7D5m3(pD&-bX=_#2G4?H_g)5Vo00X=!#spa9ApQF=sA%?Jc4>d%b%C6MoL3kzrZ7)S zg**FLLpznBz@@2VL#mb6$B{FRIp+=bvBj?M4Oh|m-W{5i+fb0-x?jBbiw;z3CCCZ4 zs<;AEGIBgCQ--F5ayGh7Fw3Rrr@&PeOjsvf>Q+D_w7m86I+uR_ZvJjf8v{B;aUjUC+~XPJOA!K`p5t1&z>GW#dhrqu3o)@kxq25KrW&X zV^wi&U(uYbP_jnIK4VoesYn4R0DzpL=uT11awU51%Z5d;lu)sUmA{(!{wWJ8&pOCm=V>lAHuB`?`F6#RXuAhuDV80@(Zu_scM=RPKE)C7kJ zAYe3!iLz{|_pp2QwnxfS3M^(~lX`9j!5I+9LtmSkLr=vDvbd13z@bp@d>2IuN3H|U z^$M&`WiriMV^gVw?;drwYYAKwy_$)-fM^}RLcpUptKF*(Y{mVg$Q^-%iWV>_*W3+{ zCk-e0rL)}xwo7NJ49J2unrC<%jKBbDkO#9y1cxZ%sqwpFO88@V#<)NHc(DftWJ|}& z>`LaMb!S=ZVD)H3NQ*-8P11(f;5kj5FDi_fl;l_dx)(A+nMg6uV(mHiiO-u0sAvCs zAIk!tEB<{W4t|qZAwXbL@aOXz(QBRI9tC}@z3hPPON9z9(E{*PeDJIm z*#2!Qe^a2Ji7QvGV7q!1-}SxE`;ff4 zz4{BjpM3v=_wQfyh0n&7D_6R@M{e1Ha3@oRMizN#OI6;>F4ssv@#lJ@sc$qQvU5V>>6ObyTdo1Rg8K znY2X?V5YQ+Iv86(F|Dh%8r2pD;_Fl8<{xQaw>;3#a&+ptT z`OZG?e%D%a%~@4r)Tk<~?^$yBBRUp{WIg{>EN+39zjI0n+hITs7?dx}BAg&-$GA(_ zhi9sQ)PK9wZN=(=Q{@I)F?&%dP$+@xI>2YP_LoT9<~p}(5Yp0yU>{XFqzB;?UbjS6Cuj@T6dlq7C;$`eDL{YP z0{M*ZLJEtiPqzBV**}vg)B2WUtWs<+mB8OItp-lz`pK9KN6niZvjwImEcv(`O<*!cUY=p*!%;b==fKdq)fB1W+}GdN9-xs;J<5juLz460uI;^$&62IVfve6_K+*s za=@2DQe#ub!_Afkjloc~8tOJ3il_sz#uY{Zu{GGL>rgW=c0Tq%WE|@SsU7??W!)A~ z;-x9k)E-fq3=zyy~f+`-CTa`7PHk?)c^Z_TTUq{?fxLY7cA!%9$=hE(;lS z2iEv7HcA)T^CR{zj_s=YY9!8>We;5K^S;R5BDb@v*>gPqdCxg}_Sbzw1LMy=_0ga9 z;^%+!^PZWJb#?O+2w?8Jveq=bM<&A8)W3-g%S>h>mQ#kYsy^3?#DV_4LQw&wsWa}< zC1!`T*Q!>!icUt^8=p0O7P>}&j@j8^%M3#q>@IN5xRd4q-9LZNN(IW(X_t=mAQ+%~ zY1vn2rETv+&Xe{il$Fpc^b*qLEoP??Bh*Voz=SlnXdQi4D1-=r?_|I=Y(&uC1N=p+ z)tbi&b|3x~fi-v8dqMWSUDv2jdfN~z51nYNvxhFk;Q1I}aK5SOG1`QfN*hCDmy}DK z*wM>Zd*ARq#o@nwbVdV3wVKD)k%X6@)n2l~qZH$0jg{FUsCHW~ejub*TH%tF4sZZV zpW*sRhZ$}Hrjrkx+%FF$7wdlN0)>)cH4N0#B$c=*?KcJ7R?*3YP;Hi0^7Qguj_3GZ z55Z$9-)pHlz$ zDNg}9wnEiDJI}HM;|#er4JHoNSfBj&(n@IwZ3g(1%fa*!C^pa$^Uk~PiRV4{x%j5% z|FisyfBrB2@(=&}fAf)V`;dpe_Hs_V=}m9Kb_T?rn3oe79UW(=t_Ch~b>+M{AC`69 zytUPTsAV%Gd3Hj=pojeeMChuCaf?_8^y(O2lI^3_V;~DLlOyBiAwh?dKC=tCgC(O% zZuI2-E&=dxX<<;A!A61nT{ue}BA4B~kDdKg`<(FfqgaFoANnn{|i84JhDQgl` zJBij(QFy(04{NfZ0I%&)OL4Kr?;+8(OI@KXf7glHg1)-MwzL!xCKcE$y4D$^4VyUa zW3|Q^0!N|+efSvY+Pg>k$+{OXQJQTpKUj?pm0%$G>{`Bl1Ra^*Qzb~TZDyD3i_Fjrj!yP|L$gp&R};;l1w4> zm13r>!c5wh*g@ia`kAaOYuz);K49P3`f}NsvH{h4N2Rc<)-whsu2via?+3*Y6H;PL zsRU3`N=R*@WFKIkS8HFm8mT1>Xxrp&-or^rd^L&Zu1$W+CEL7r3X-k5qMB`n3Hf6$ z#r0dRBc}iHSc`!I=giZAw}NXntxI6=pfCUv!!Ow=1_u@s$YBL8emppf)v*GH2*5Hh zN(viQ1bJCNKr#s!s5YtwModVLE!ftF1I*-DsMf0a9wX=uvRp3{lB(PiPKpUAS*)71GbTb(Q$Hq>}96=>`e>E8cbU9-p#QRo z1%h^sgbD>7=`5Ds#~46({WgsRaTWwaa#jV*Di`othd$Q`1#*FH3!nwwozc*mrGlC4 zLGqx1(B4UmrQ?f{E0gQ}madTon8kD*af)<-NDF_*%Bb;O5hye8&N0;Nh*I#*T;(8J zCcN#K?bygojzl_pwn#9R5SVBP1yBB2MPLhNS6${Y0_Z^y?r9Mnp;8Zhe~uNvlUPw; z7svZapSj=}$QX;P3T)^ojBKQ8p*Im2(EI18l3avHs{XuD+E0OPJHz?K8AfK@dfRP% z_gn6~?SmfvAusuj-~7!-J?^oOjeq)$->~0$`|VNt&6qthN6wLmnw6PbS6@};S)K%R zKFo65ao`C@%8H2{44wpq>5y-q)vtW{cg0tJ<L&Ji6^-n3Im>+yR9#|hXUHz>9oUk>*nM7cO~exrhsYrGM6B$1Ncv_VNITZBflsmP zH10#uYb@IhEN!}ST)tkbCc>&F0t2m21Uz+xK$}2{)OZmgPR7s#{W}dLb}5&<+Ohg2 zw61R(;0(qBNea>y!0lExoy`Y#`H3l)Szwt3z;$6607R%VgpWh&#Wl-h6Vwo3Z|5$V z5hCzSty4KFSRTd_$kzX6ntZAy!CvG80w*X5t2czbc{kW3P1&^!3-}PL7ebykm4dx=mlP#%s&3uo^$sLUrMT9hqOJsuXF9Iwa-Ft zw+E06*hx~%gSefoq=$)V5K@NETDwA0&)mSt*-Y76G=cVsP6;s-e5qWkCW(&J*lAgL9&_PEm*{TZml5)6|);5e%?)cqYp+T56SwqmV-d zj9lkXHnZf@WkLB0TQNc*YK#5qs<&-JM`K?CP_##C~~&kt1Sc=SZAg+=5^D zg`ayvX|{o_@Xb)I6r^WcYf!0{)0z+>_@%k-uo_bb#()mH?IT= zOH%Fzuv1APFkGwtAAFBHXBUNmup0Ju``{a>E8D36-QJvUJ>VvWYo!EC^fdsu5#KheB z?==rHaP9=VAuv4+Y^AX10@ZGMr=>M=Hs6DiA(FCDM{`K|H8hA91;W_}!S`^G!i_-H z4$PIK=4uB-nk4sAdwVK25ZFhPP>Ry;Ffc%%u`BkD$(|6UcoJ1oR9+23@h{J<}I-i8Eq6 zaWpn3X_4*nMy;1(EFe~##kEuU*JLR$JOA&1ClKWEHsac~YiN)LwI0d=VhW{r&T0UX zUNNv3qYueZ_EA?EY_c<)T~8=z65|ocCU{$~2XKvEfWVX;ju|M#-~$eUB)eMIo)XxI zrG}X9mP1ugdALI;%d2cuLQSr4FfIyKA!#q`@-1B?0}v~V_!e9z=pA8bnLJ#uvSThg0k$EPzI4MfwlTDFi}To z-*Ax0sNkqWuK+fI&JAeI?#vi)F>Y@1p=zKN2Bn>F89QtJ$v{D1ku~lD&L(Nny#<&_ z>S4klmx>?}$YFX)AUn4OHW11C@1QK%vIrd4^*AFgwfZ3p?q7E}hls6Ec0MF;7!j)T zW?%?sg#eKi&ei~9lrl!@=K$^PREAyUDJeA!VlW~ZvF=feySi6LH`hgq0bW0qz2il4 z6X^l2L3$LJ)Bz*IBsF_lfIkltI*}M!d-jwVyq47)p5+c;4EAJj6TA#76tu2>zl+@Q zJ!}lXrDn(+$`)yVZfA%HoNWVl+;IoC(fHM0{`I&0zz_S7@4tD^<==VsSARwSqo;le zI!6rbXpGCKadw3nQRr^k0Hb|rmo`AY&<6tp@qiklB%of4WX+yHEsr!*q<3o% zeZdU>MK`jt0_qvkTEAL1>g}4keygTdL{bHRCa^;rHA&bjP_U{ZJ5-tmMK~%q6G7uf zL-x-`R(h2Lcq)$w2P~6hv$KLrG1t&N*;jz-JrN9i=gtVpk3!k>BrVV_LS5=GtbJud zMYgb@tc-t`V5i1V(?u+jH!4_bDf<;BWN7N8)SEzWaKJ|;-eNvvI1~_ypsgsC!!)e6 z5hhz@6-xqtpzM?Hw@>8H5`n2q5 z_s#oo?bcgxZ9B&p8-C^2e&w%!?BD<7?|to`{K30E=24%DSG??{k=tlZ+nEuYtPu4H zj)#$$=*|x7E(7cE`V5}@$NEcSPF2rFBWsd?x%=+7?0@yI|Ml(7Z+P^Q7+7D(y`r)O z`>Wnn1Fi1O0Fm^|)j$Hqy z?DZipPmVx#e;pAuA#2X*48R1l@UugVCyCTm&MDwO+hrK^(R^18H@a18!qv9`*a4|9 zcwLbsvbCJ@(Cn4bo?g`_|GqC^%r%lyK>(J-MiXy_$~NrE3%KgJny88K$fn5rL7J16OD-u7|u(C_4ULdBQmRI3KJP`?2N1&xt2q{+-b1X97i3i4aqnCvx zQP4~PXJ{R#dM!ctw}=l>4!aKDW*=Ji%>m?8GAQ_OoZQBk-}lEpyi$gCuQ)xfU0lb} z49Ho2DAVICO>(0`0LBJO9&-4lrGvQ>b1LAp{xoHfE*W63l*<{e`OX$Kd+)Blv?1dl7X+lpurRP;vXMbXAe0d%sHfCVOuJtK#!=G_nSIQ&Td@;73bcfM5m&!SB`B$ArPSK(w;@ zW5f#DLK*260d(BI^7=!;Ob2r0I)DMns;xR;M&9p7U{>JT4W|OifDcBhy|ME(g3X#L zp>bhs2I(5@aQOrRJyO5JOiG$?aAswZL@I|+*+^nTk6J1NkBs7II1&w1-3MII5lBkz zr7obVVgSwg=iNYVQma@oF=7R{srSY0H{h%i0A=F6U&kt8NCWq9)?O1=!wm^>tgFZ? zzgwQ*SfwLWBdBR&o&(Ynv9>eU{@`pQ<&Mb}kDT!5-D4ZFWzfTs|>1uafuU|A@c@U&IL0nem}uIO2j zV=MZv!jJywYqn4O^iRiKcir{okNNu_^WyLQ?tl5!+r@TcUR~kxYRAo+S3m~NGEr5? zf!Hsr%V(+W(hSgeS*vWApfEBJC;@BfNYY|C5VRQaZtWR;f3(1C5coI4^F2$QYmWs$ zvH>1#4xKOqlv*~mbx+#%M;1hxZhn_hBD>?3>XQ**W?|4-WtT@T6FgOk2nyB&7qBv{ z01#}PmxBRh2sp0nd^?h-oU@c6HOTe^n~(x(qLIO%Ve;`AI2ErI;Ag_p9r?e)U^7|S zedjtTDF@|<)gtByoZL*;3a<4t9Kg5R8C0#&lyg62bdrG-gAx)2L$)IeYKeO^k1XZ8 zh@PjhCT(L&TG}F-yOk;8we0RaPlJIfRuDq6Di4mtAh#MWRjHQlF7%6i5RI0ra$F$^ ze1Ii^r2x+JnB&+&x_{bjL`nIjl`Ptts%Gg@QGIn}({y6G7wKswmfyLr)%GLWI~Fu` zSuHj(JF(_-h&W&olFy}{)d`VKL{F*+)Ns(}G=sz%#-{hq%so)6G;zfrz{+}cvLSBk zAHof*q7gHp&_F7H(jE>yx8lDe;tLGu1*e*WkF#-l#@QQ!Ew*S-G3Km4OUGJoLJ|Dw;& zZ<&qWl*w%bH(EOc(>?2L|6jI#1$A*6vf|iU)c`K{OKiDa&F-_a%>AAl_u}!7d))b} zU-fGI&A<5`|K}%u>NS7sfpEInEzi>~C4rW9<{CK0U)%cd{qXy> zR$y6%Q_9n70PG@GSl$rL&Q54$-od?N0M|H36ohN{^=<&FK$3|A?3%tHEaqts2oZa= zqtwV&Z%^OF=bm#tAV_-1=4g2S_l$yTX4TeohEWf3O zuOXj3<%79C>K!4)V9rKGD#l|Xh@_F6XHZ?h5(mY3HfM_O*wpp#fsTu)+H#zM^{(&7 z+|v=$-;t33LL&&mbuE%H(BDr1P#y{ZaNT^Ua|D|TorKlF;D;HQDWD`UU0jUtXIohe zeXou*0*O$U)BqQQQW;t6(&u!b{JW z??90%4P`VqUPSLl&lG5lFcDMRq0Xh^$<#zoD=tQnO|%s8GCK;n|UT$w-C<@mi%S!6wD*@Md9N_OSud#-Qe zd(nn29WEI}?g34f?_P|y8-=hjU4dPbf!2&tXkVCN=laWFdQY1hcTE-4oDniOJvknv z?T#4XwwUqIJ43gmJTfpPgI9jeQd1OPx0kUl&>_*$Pi6+hCX&V1_v#(ZQd7f8BZZ!1 zjN7Ak0yTF)<8u(9EQ*#ldIbllLSHgKi5Zf1VPy|`PIZT+F)uYkEC&r!@1z^F3SP?c$n_$WfIWs7H<4o zEQsUXkMNfSSjduND|F}O)g=(9kNBvMyn5a1Ubp|~5BE_FHj&K5#WFI~!LM9V1RkM)-e7vIGWjlzc$Jv&a;ZRwpFDAZbTT zAY!R|mG{v2D*Ww1^%bx(zgr)lAy37IUk7g`1(XP&qETNeDM&FeTjW>+9Z5Tw#*A@{ zj0>R?b;d(H`%!nGz$4WNPlO%i5r9-agda(= zp=o~>9W>+#Rwh;iL<1=G4oDn3MiW;&ZV??Y=5mSD$|~EYH$)oRzO;O=R7KTlh)BCi z1rSvn0|3gZCV{o4pK$$lmb$F#u@OarLwiVhZIK}iw8(=ua!`rWBFf=%t)@LJ^H<0P zBt!QHC0I?PaUL?eJW~eDwM@r7O9e;8LyFWHaHibEQY^wLtWNZV9?5z)$2-v&D!t-f zJOWVfHO56;^VXg>!O=sYzxD3i2(cj$&Gkwt>eiV7&+E~xe`qXZAWG*uCZEx)iR2k6 z2BoB#_gQAC70QIavXavsA2KGiGBWeJ7ZQ%O#i$1@04OchryXCph`=<~4 z%YXfyfAYgW?8AQX;UDzyzxS3mzZpOLZ~pbo*e-DM>XLSeBX9JOjIOuW&}=G2I}$rxf6KwV`6{(s=8-Kkiu(Wn{B z94j6&NJURX-apprB8alG!u98j?|3f++iZTkH?XS#H2H241Z?uhPWe3rt_#2dzq_*J zvJLe5iVY+~S5v|%skw;@D89o^+!0;qDWL`mJz1JyV&f#_B*;SZR-Jt z4A%3&S!u_a)3}A0K}$jVRfS5|<8$w@893LW-bc324Yd0)6nj^>5oKwCLibWWhQ-eUf!L{laFTg&^Z~?O%1-Ki>0}c- z_KHgw9~4r}BM%LMh|gAB5utOLb{7e=F${D2yy5jyVLnH8>=3Qm9*_a&@1~F_PHf$CSVch?q`_sXKv6b!v>$ zx-?2ETg*Yrshx($5ukyYAwVOiv$v$+yxS5x<0ynpG1S2^V%4HRuLea1oVCqKiDN3r zlYuBO*eLL;DjhqZE*_P&ZGV(y}4y@fIq?RLdV+)cJJd9I& z+LF==1&niXt2FeL?Cv_1(OlBANkds=0=s$4(HoJlQU@5vI!J8F$?sa=jVNDT1*S(4R2?MRUoZUjUlElKvOZIkJm>e`=;o>z+* zpU}7-J#S&M`Oa>lN}X3tHdt0T1DIFKQ3I|kbQ7SHcXk5$XLAC<8VS@4f_gSHcajpe zyV*{luk>8q*n6UilL1gg+Gm#|6N@|dM$Mgp5(&P(anB9B=}m70#@Qdf_yyner2q2= zzw?go^!9K6FW&AQ-|^vsEIdE2-9Uw`>wf93hV^_#!* zz-!lT#jST-uW^2Xi!CU5+*0K|YAPoXhYa?8kWeVw4n3X6B^9wHwgRHmSXE~ik(5B# z(KLZzs$(}Dnk2s^)rRD4k&UgX#%X!40kY=O)$o6HxzS+8(~PzD8HT`bN^Y!1bZ9m_ zBXEnunYGk3vKuM!Mxc?CV@MP9A)#|J1lUvmRsiJH1eA0?EgKr)2K39HELK{jN5p&r z5zz`}iY09#ViH){)YRvDWjpvl9n1%}ND*(Q_I5%qe&!h4_<5iG@H^l5=KSvOe&xJ&ZNrXvo|*IPY|TX_@pD5z$=c})a%g=~z`3N66Rc#iAG zeq7Da3RuaUK*ugbtq4vD4JbBkO!Wca?%8#ZCDO-@5Sxp~_rPF`@n=vfXOHNtvS@^rCN~0`UcBQOV7~Vh-=rb15g7$HASjq z_8r{>^JQnr3spD-)k~;gU7471*ZTpv>QH%Z6>z{c{2~$%awKH9-Fzu#YwQew*6jEW z1vUgfc^LiW0vgQ@@>8F6iX~zhrIfRBkcjmynoXeSP1_fq{56o@1!_tSlpp2Gnl29U84AgKO+oG41z zBR~O>vmePi`BH|b;4ELGhZ^H`pd+zGFbG!w2?VwPgVa=mx&URO(TLMpc^uMw2mE8z zwIg1`Cajfh}4sz=5NoBG}MTvikv^A+IAlc5dtikYodSJztxrF!N-6 z1R`1CL4u7EeO7cwvO%A}KUD5wqHd@(gx#F^e%JuftfJm;DEsDrk3{C=b;#0jf91yS z8%&O(^jr!`bDRPGc#h*4!F9@1&|EBC2&6J!Kos9sPKxe=0*7~3S z^Vi<_13%*7uex#H{x`n!J6_t4c*Mu{#rZ`|^p<1~5{Pa#{|bSB!)E`HE4km#PCr(n zmV=$IWA8?F%yXu(>P8^Dd%ynr*S}$Y!2k0B^z2N!(>b|W|a0_FPkX|&jP&+>gA8CP8!7#)RWP62~|o$Du8B?8X{#YRH6a& z$^T`rCgM&%wM_~UhyHoD18nf77QAU?WMnr=^h*ViERn5p+d`{eBM>NxNJGgMozeY^U-z%pfEjh^#f(!2Ed zJ(3lC4P&(Cjc;r5j;s$=A5^M%ce7M++D7U;H*)nBT6;(~wrPsiA0|5zQ29owi@NWx zqfZDNtY?K31rcm4Or?auI7zY^y@E(sL4bniOZqDn8LaaS*zT(hp9q|E;OV@Jg4Yni zktX}J|Mj-kdp})&HYppbtMxAC-mMG_wghDFBIGKc5p4hrlL~r)c@Tr=BM=uCILi&c z{_DT;_K*C8PyM1_|GnS*{5$S=&;!2j2Y#^M?|t4Qu3cQ)3mA!R%t(0t8jujz>bz%TB$0W{4osALPrMv=db_P_@EDX|9<10Z+Y`mp7cfE@Qi1F&GXN; zvwQEmc`q(+-o)jsi0VE@vN>R%D-pG;-kt=s6AQe%?!ta0JDJMJs^+{+C^bwa+$H5^SrtgU@3cR}(8|tA;<`6hvW1xs z+Gfh-Ps<4y=av)c>o^sat1RgIx6GG+8S*DYWxU`M5c zNHSd)PV{h2F-UEb{P4YVuQI_>bwyHUhIR;)R043-z=(D4Xs->}Gh~`qD19gIe@=j@ zb{rD}PTqMn?*&aIhBgqociJqGAoTxwPt7w<<%MipDG3AjjF^kKtT{0vaAoy}epgSq zroT*)5>}aTjfqG2*U)n@YfWW|h{R%zJJb^hO=Yr5)&;Il>@KsU1hxY2Zm`;=ec2}- zqct7Fu}PVHV^0(agwy=UttR>y0kL7|?Ekg%jWr0h-Z?*)`CMwptIK#z% z;T8-uY^?zw2-QYouIuytGJtL^IulTVQ+i;{bvG-mbETaK*U2GNgB}f+#fI2Wdkr2C z0cWtID6^}*0`_uXxq_L(svw2}bxEkxq4biE2n0Ce3bTZCsG;ARGAzE&);hQ7`Bict z(u0SSj3Q@@>QX}ndx>-p29wem8m(%wX;CMEhqCO>*2-;>p$Z$LpuDZgPP@ZrH(1M4 zWSFmt%yy%2Rb&ra>*rA^4#*mXT}Ek*E|H`(rVRzw8ZK+ra~bf&vlJWK{@wY)}H7_*UtT<;G$$)Jr5SWGk7RA z%&`PYMTK<8yB!ndW>?-TP`09WeJ_pj?%KyX&g=}S1UfP2j;otDF5hz3ooBCm)16mu zc;oBFUw+tM{PoxU@gKeGD_-*APk#JkKl6=m^U#O%^S|l&z&`hijLtBT7%n}KtzUoY z{(+$mknIovNHzsv=8o=)in%4mjNB`b=Y_sr6L_mT9yEUQH-7u(um18con61S{k;$T z(1-ulTRr5hfBC0=@+aS`6XTBCZ^Z-dxD{vT8b{)u0Fu>e>;ol);Mm1O9zT#ny*9E% zLSbdtU?3$ zX~v-8TBB=mNS56sl-UP}K$P1MXbUJC4j?vOsiouylUWK=8bFL=Y5`zyNPA8GRy!~T z`=$&q=1*r6_;(DF^Ac79u0U^~Gf*k;70|RB-&3>x+s~46n!yaFN8C{npx|9cAb>@l zhx*lQCJzLjon434C^uy_+N3A{+2bNT!qn?9Hv1kCpE{r=C+GXi;7C~R&q8^eX{LIS z9HfA=R*@d&Dv^zRC-<+2Y#9MR_p%EDI&Ov=k-#Xdz9`x&q5Xm2HPY%Dfq#H|5(tj3 z)FgscTBz5{5*6+(mS8YZG8BXOn!M12iH(ed(2L}_C@WV06J>F-A4H}dnS>*hiDt7` zxYMJyW+Y0)bEkD1l>779)LV#rHunSoY=P}8asAd?aocUTA+OznZ+ZT={^fW0^Y8Fu zfBSvk?|@Ed^q$9Hwm7Q9w?Gm?m7kxBSlZzo6Z&6F)^VWzH2ewVRRYE+P4=f>w6C z3}!|ZGPNC{GP=%GD80!{yJ(2??{xe^on(kmbf|Au~UfVQ}%tR(oNNh?wTPD0Zw8I$@-d8%{i6c{P zX#lgU$|A*Za+X>9o8t0-J+IU@1Ht3=PXqGB{#SGEz4R40Wz|W*-78lqfU9 z9D0}Gz_E4x(!SJQ&P)by#sA$JD9yXK+Jg3;4IcSD5-RIHT!J%nZKf+ypn~J}0<6X5 zS&3tPhxS;6_Jz)g_6vYD{lLxrx(1Y#XTvZXWxdnY6j@#UBR2-Q@I-+;`3#jE@cT!? z(-k^f@0;g@HKTD{1B~HvOXN(%cI?lFQkiTtF97PH-b|3m5 z93S;5Qc7#b?5$8I&;!7n^Jd+=c>~vOx$P`!%**{=eAI`0#P&14@LzH3ZMXm72YkT) z^JD+~72omXw|c9$zH4@&_QKWWO%g^bfvRa#>nv0Fs)$nW2H7k$v)t=<63phLif`fI zjF#J37xoY+tU2~_bPPV#EZa@-Wp6$Hi*u&+#L9N54;UR(d9OA5PQ+@*!)KB@hh$<) zUK}u|>XI!0tAwh9O*bnfolh(P@8_sEv^!QIer|?cilKrV{zYIFlLl8O*Aij7x*sP(7x$EXjfZthy^mQRfwqUs%kF_P*|+ z{eA=~-6tZY)^f%?aF95RZrCGYdVhq@sDd~9P{vmzsZ3_OM?@UmTKWDJPcRw8cmgq{ zNLc)V&Z5wF^->w6sJ zY=Ak~^T7YVKTFSGK2L94`+JJO1p3C!oAK1A{u6xb3%?cb@^0_?M?di&e)tow-SWWy zx?kPI<<%vwZeC%aaW(ZGW+6sm-*<$XyLPEwxPevs&iX(S>i}GTePpzm%yRFd0$B5| z5tCGTF+(|Z_PUhy4P|L%%iS;yuquG}i7fOLFqQCvl1(iCYb9DmD75W@%Kl`RkFrD) z0zj+DTqD%YpIl4rx^@E56T1>7Ok6RE&{_*LRwAVV^~vIWSZ!8aQnH0=%mscX!EOa@ z{w(zjTFD%)9|8ijDh-wIU@0-xN&H@B%1K1Q$-;K9|Sf zIfKqeR@Qua%8q1A`&?-$-a?H&mJ>s@o zwyWviNSgKivg1}#9E{)Tvva)whYey|mq!$gbGLb_WZL%91EdOqQ@CYpAja!C@9fS?0 zVg-hw2Mn?4o+xk{oB^@q+9A&w%8sOhlOF6!Z6~!np`0?Yb0cto{{^P?jO+*xl|aC> z$KhGwQUd_U)hQneV2&V(2MHmbJdf}pHWCE@7Fj^B&cz6^GM;BmsWNU}Yg zc>xw62AFv%>Fc2P8tHP46d+X~tE}Iezisd=Ko1ZsqxmjU-2%CnHCWz!N9Q6*3| zw06!6$1qtJ020G{F_<@>hP>cfRr~ z@3`aQ>}UVWFZ5sgOMf-;Y%tuKdvYFm>5?~Qu`z2yj1 z@=b_rsx@jTlJAZLvT}4)#u*Q3NwU;j`P6@>w=1^Gwq$TVu9e{X-D8)qu&-HR4IWh)oHB zSOA!T$qaSQZlvD-#o_lx^kpTfQ%{6&!L+EstLwuo`oSRGWnuoHaw09&M84kz~D8E~KZ{INt%3_UwZ(TObAeyVINCYGY0=`ABm zh=@m%<$5ArV!*SN({Hy_)+IS6OTOh#lk(y%$2w~~x>Pj|#UCEG$O#wJU~p6zs9FIu zEpTW-x!2R%X#^+5NG<0e&RH}Pr}QH>A1jP#XhgCI+F zHL|i<;+e@{pLT`5rbjT&UzU!gZW9fRimcJh90HjHk8|$0cI_h1&#%|T#RY!-fBxzR zJnAzZ|G3}$)nER&TP|*W;J^NX@9z)%&<{Q{?S}3dE1+B(k#y9Gu^WZxlmW4wz!Ax< z|C|7l2r%|}Ga6?YQCC-UKRY|WjuE)IU*6ch{pGK~)BefRV!L+n=I?v;_deo%-}ilf zZeH&5-W&I#_PMhA2Cz}UzEr5S?A1C`0{$idLOvuWF=Gx@8@T>(?mT27v~^*Q)+ za#*{7VC@Zuam zKW<$~guB<(9*SR}z0(HNkgOl<+8^5E%97Iz9mkjBA?c3@nnl^Q& z{36qn;^f76oX8Kz@y1CI1}v}C%R41TlNDPMFvkVe*iufkA^gHHVOB`RM^-fa=JdU6 z{FfMMVnFUAV%48G^GLSQo=f}I|ehJoh_arzSyr1qSzyt}02{w?@g^}(M90Y~V z?30*iX7m-9DLi3Ns9=tX97~S{R6wF?=-+`*U45*eY2*;dZ=^a9hX5%8$0)my0zg47 z2^9heP6t6Iq(&WHuTQe@Je;N2%L%R=mfU0N&N$n6z&rcE9lJ#^{`NX001=xwr#`JjT?B- zgC2m;B;?|8F1iPVe-W&VT6Ne1E+2yZo&=(PLiS#M$`;8r4~Y z{ANA-*{ZjY5icDNy-auVWjI%+KsS}rd2~6O8+cY9j!KgE+jImg2Jn7IQ zV|5(2JT8I~#VLlHZduu25LFUKln6%JEGv(qOE%gdk*2zQuA~w}76Z>ACR-~RX6;E; zAGY44Z!xH9J3HAjf)-uwG^1|`X4rbDW>8GIwGXlq{J+ZFaBJqO|D$TEltGJi)(X9( zsI=wsKYg4hD~?Gp#o_w`%EEfR5?vexgi!WE=i2_TBqLm7{8o5j1wt=Bx_Zx`B-w7)-8p3Hv{uHI@e?n_Mb=?l;8jDM`i&s%B7mWcu4%fa|on zr#N~MO?Y@BH|z_tlmIi?a@XbLF&nOTZIAHwG*(*m_y_iLbR3QAGdiJ z6C#ilXo~S(3L=}XAiI|WP81E004Se(@cok9W*-EM9Nj%Jo8vnBDx)*gnQjewKf<-wf3&tt zFmHe01@3#f>z+Qn13xTh=;01K2AOBl-k zUUT^fmLCGB9UjHT=D@Ol>W=_De>8BlK#lBsn*-w7|rB44&H_NXS>ot=cOmGLEIg1+ z;@-Y!m94rVpUyuzAesP)z-)>$?vrYEeaq?jAbHYXC; zUK#Lva+*~w9m45+H10ng){=jlJ=ycEKxJAdCMJ1o#TV{7RG`G2(TqMCg(Fv|%10bypyUR!F^m4E6qa#s@jL0`*>!)}*=~nsn5#5HXE(qmjVt;i+u!ST z8xvw>=8-_}tsW@K?1THdK|&h)L=E>V=O3x4%=NFQH@qr2FbP$4at!!p>vTcQx;!tPAHQuJ}$_LWp4pz~+WJpesW<)y^!*I71i)jgj4U^jGUozu>~gF3WrAbqIa2G*z+j1_ z!-2g5kw7l_`WTzoDcy4_2vWAc^^P+f+$M$^?WF^5fk0{2mF@Ta6*>k+0An!!H(~<@ z$1Qf6%p#iLQoFr3Nh0niXP~w2CP(7P%xCz%umCrpP87OMsG%ej;c6X59^}tRGOHsK z*eAB@7Z{nie#}+fKp8~rEv>`yQbm+-{EVs2H(o<~U{{{ew3W8x^MNSf{mB{+TKl;P%=}&t){>7`l zt8cmGmfwHOKlsd-{iCNm;d}n#U-&D(eKiZ0mzSuX(Q|J!379e_q?Ybjjb1C#3Yrmt0gM{s;>sNs$ro?f8R`Edjs1~`^&ifgV2PTL4iBa|bL zl5M1?HPC~C_$`*7^_Ahwy@>$?gA57)VyWqta3mPSOEaY)T4%cGw~kJ~dT&x%x#1t0 znd&_oLnRT=^N}p}TKiqMe5Cvc^rgzCnBb*&~);mg`<6 z90bn605O5c!l;26@+)3{y-fQC8fAlHM>&h8q{<_61!m0L1E+HQRMNS@{tQRc;#f8v z3gNQnB2f5alU8!usz#@8an--R+)^L~qhYemwmAb<$S`Qv{d=$S(^{vY;IeJ5xxCt= zs)3PuQ@+&FgT*3X+0bP_v_4h9mh9g%6hl-sHp|^R5SgqRjqZ8lDl$i3yZshiZ0Gos zKl?uq{>m?Z=4XBPcfI_d-2Q+EKj_hqehj|sss9LX^R{mX0KNBBonhl-LJ~fLOfvuC zDQsBces;BRlx7`f;^d1z?Lr7c<^^3oT%4Fli!jLK)Uxnf`_d04bl`RIR5D zK(f~j*OmLbs?fW>tGP05AdS{^xYC*Cy-n|NkqyuyGP`=zmQy)ivK_~BP<_Nw0^iFl zgC>DAWmOB!-UT6lV>xzk+5jJV9vNJz9lDx*1&XF+dM#0ydxFiG1tl3|s)L0P)`-<&LR9A&F1{_A)$~lt!Tf*K)4%2VtfbZ6W+HwWjp5bKxw&L%nuy#$v!T6CE(h!|KJRPlr4$Lw@Gb8(wyR z5_e0m7tIozSa6dAIDW%5XbNIF35>_UA^UUovl`7d@HAYyFJ>?VHYG`9Y}^8`4AN4a z@EcS(^#9G;D`;5qXdi%6re|Z|6h4RnW}92?PnoW5BN#J?UQ4PdEcJ4G#4(Nw`W;2b zR4C|vS^!Z^jMBkEa^e8GrN&UkJx@ZZMS!^0oE_Sk@YTczjMZ=|)1*wQ#+{pWY>5VI z^*3d^xGZ^&nz=AdG5FfeL0#q<$C6Jb24y|9qb^Y+<1+qC(A&3zj3_gd6C}s7XDdand zMYg#tAmJK(0cr0{W#iZVCC{sw-$f3kl?;5>gY}oX)}g8h5eBPCo%YvSUnv?k?`3d0 zKxUznGd7UH5)j#y4q$U6E2YRd+qCbwFLX7;#x{0CcE+UuBXZe;NbQu2IzKx{CdRg% z&1=_h!?wlQZ~yjhzvJKifDinkH@xn3f9aDR@rh@zeARdN^^3CxGP-6Wa&PpRl{N{V zdka#1Fm z-}6_W_S7$V>IZ$u2mj}7+xo`k4b*NxNqaOE3`E9JR~IR#7O=c796W{C?x4-9EX~N} zT2DWXfw42Q%T|YMnd;*dXt@)1!)G513~WnRNf$J^fM93cV+y;9T}^Nt5mmM<`6>f{ zV3nvX1PH7kB(yhLa<^9CjE4N3i3bSe(e{?eYS%XgxLymOS<)wRnOPghnpS=lqK4FO zve6<*mKvc&YFQQ_nd8CMH{y)X$M2#aJfYVSU>)=7w9cDV24C-?rbv1ovS_ddzFXxQ zv?qn4TEI@NT*{;XqZL%)@UO(a6CEtua4A3s)~se?`d(^}Fo~^z%+2R`39ADF2J+$W z?ABan`8j>AtN~DrLf6&x*GI$*;O}VpV%g$`x`5MH zQz>S03UFN~g0TX+G?78)rS+UL2S6Wf3KX-*@ymP!eKlg;N9Pgvd0%8hQw3t7;sQya zRkkT2LbMJ5Cq(!{0zpu;>3r#(mB@ff+K;jK`OS#FcKz(?mW%5E62J9Zzx{TPdDJ7n z;eY(*Z-30&{<#M~;F(|Z%>I;5`P9BRKiebXe9p_hn&@pCbIY*-%b1?n)c?zH!u(z9 zi2Kdl|8s&H(J1xoB}~b#ao^2-zUD`Ms2}s_e-PNt-||EM_WM8Xz2EEoe(Bn^i+gWe zUGPj~Sp0R@s*O--^J6Hb5YzsJBRxa?( z`Rq8F0t(pAVrj|VMLRwPeLApXXIV^x|3;lQ0h{IZCEFB0G@JjrCcIpB)j-!yno5~& zmpktj5d@_g5fsKtf?Q6=F33ob06{JHv_TlYVOTXb9T3 zCH+UCd!XmlN`98ff$nAh4zep2VFO9_L*z*(7O7)|Q%f1sw4c$yo{LyO@cmP1n}}h+{#icTw zL9)G2W-eHdSRFV^u{}7(*3p%g0=R^msxZ^VV1#7@^6rvEjKs>stgNPj2Lz2Nfsv}; zRO?sE1G&ySocDk2 zELxyD0vYTwXX@THl^E)S&>WWJbl)++dRl?j z6;lW-r-5r2{4-pD06nsq^&f54;!d-_D@gK;+FLB{u3G zBB)Z}D^V#$G@^#oAKXXTiP}g6Fj`ABO=P(PN1ts3_9CUWOw3MfL&T0UdmKlY*v4?Y zOOTR4VytqJ(fr?B#243ph!EJuKs9hS)D&)<;Udps#@@HydMh%<`S1SL@4nXuedve0 z`0hLJ`D>r}@gH;k(pSD>o^KbIH?UtjtF6%;V<3tHQBTVGzsV{Tck z@MkBtckQ)z_lUEB1omp=@BGeh^|w6#1$gCmedoM>>utaLq$fS;E1vj-&-?M)ZhgRA zSNo3IFL8C%=)OeFK%No6j%1Cqo7!;lg&UoT$(Ms-EkElZQ_X!0xE8@`AfupFMD!}L zQvATjj93meWRn>v-5w;1?V{4FI)x zhr!k`B@8H&d5%9HGX;w*%~bm=_WJFPvS-%qTd zijDWUb{r4aSS*K$g7(+*y>pUE2vjyo&Xe|1HR=X1`aK6Soq?Ev9Ngz7gy^T~=ay=y z=r29tXq`~)k31n~;5Y!xaE$=JUr7K4PJACN6`$1rsb?bf$BpiqRTHPH{bjKE;bx<; zSdCsJemNUdiB!YH?7%K!A*2fHsna6{dX12B86=u^lGYsVm%*4$`_Jdty(0A1Ehcek z1Dy>);n>b`em-zu7ti~KZ|Jvu$9K5u z!dB?)x($6HvKxCvz4RsD znqU59Uxj=2%R9gRSC+_Xoqo=Es* z$L36gI^YZQF9|(rVpglEn{02@B8>`@DkB3*Fq4SJ0Xz#!QP2<>iaN4~0-o$Q64>SQ zt4NrXKxMCnpbeCy?k%MO_&u{p0vdL)p8$W3j&%#PyGl6ZS6U>-l+$(7KCf#` z`c0`I(1jhXPX0LYjVFW<_5=7wpyw2!!1#Wj!U)d9ueCd#+r$m@*a-G&=%Sj!_L|eG z4gg)c4>#;>*zcE_8Mx;H`!F1;K7)SB>uZ5!G^O!XA~5v5cJdR6QN;Hvt`U|^wq08(qyOVY_~@h0G`XXrp~qK!`W6@xbd{ZvQ4)Qd`&1}LLA zlH<>YgX6;b9XD=txj~*}-^}Rc0IClO{TMp5aq^jv0wJsb&^@_wr1)7Y9?))jsDIB~ z&$!3{=o$2`Q+r`Gi46580JHeOrlpol7O~0%5bAG%W_mh?fV%b~VwLo;H-m{7tar9? zvr=J^Kx(>!8vzcaR4i&l7&5LI=mDGw6p$!Vv%wL_9NE>?BXFJ@E-o%`e(MFs#Kq73 z!he4MPyOV7@XXi#+3Vl$6Ce2r`CTu2+12^A>t_vg^-RR5um-$*+b49u;Ub)PTP{O? z+K+j_qgmC|q;yor%;>St{R$Y{wkB!abN5~GJ+J!Sc+PXaw*Su`|JiFl@Pj_|Uw+kB zJoSZt=RMx*_j=o~&xsp1?nNt=o+?3MlE9gJu5PvW2|;j1;eIv!O%R1}*29inXR=h% z)O0LT8uJ0$Ck`tU(bdbY`{I^4AK7pP)eZ#u{tH-(+=YI(WWNV}2^ciGmqA3Lnn45s zDX^%T>NWnY=t1G&W+@Z6*_Bz5jSgo@_^MYx1E@4dp@j02fky4}ML`urDzJAigvQ|u zqLguKtKt@Zm%YUafE^4%L2|8<%So)nfKPfI6uFb z*DtQ2Zr;e(zTr&|edIrQ^ymDypZnP-Jn*gF>LFkC^smO_9{U;d`nBuT9cSH*S#ypp z2loJg>dp>S_MQ=Ep*N`<)>yZ!RZ?3dFBuT)M_zOQT@!(*N(8PlGP-N~7q5CXp76P! zi`>Q=p7P|UJn2in>>s_l^X%%bd+r7Ho49%NY6No5recO8)Hrw$0qk=sW3J3>aNKVi zxUi5}v%3j2_hM;JqfnQ{ecx6pIiq|Er1fCMlCH`lGwa&>SW7P%(BzVlsQ2oT;jbK zt@WdUD^a59_zgS{Sji6FyFBdTl37yFizGnABFlh4oS$8+FQH?U>?Y+X1RNaqE~gw| z9Yiy@V{IHAqi@i6?@>Aq{voLpVOyyCu5Rc^c_=s~nc&YVrl3T8VgXW*?eTY*Z6!|B zoEJz!2plpAH_6kp^zh6~1+mHwJLur^8FYw636U1vh;e{MC@_IQ757#GF%Ri^L7n~? zER4GjtDi_dw1!}xg-(?$XfK97w+NY(oc^SFWC%nMST`l}`py9NU$@I0_)Y_-x_CU zXV?Gx&;OTq`@~QAq?fM?d=0>sw#+qWzZZ*SEboqnjfgOZ`#;f|+`42V^@C z&O$Vc95_ux?jQ+p9zr#Z-UE?yHZpn^r;LoqQCD;CH@^PQ;)$RCr0q4Y`O!Dra_cR> z@}*z)<Nuibhp_F1@j-@W`|d3x8Xy0HgXdwb*=_U@~LewrtCC5v1|*DQUtOaFn9wP6tomqOU-7>Eu1#HSMQ9e zXLc9?zV-vkPt?0`sR`vmZWyKXcPxDxd?-<~yjOx98XKsQcZCyg;L@7K|epW?q_c)Yx$C>SBOi0wMyAjS#7zUF2-?6lhfRi%FnUMP<`I8{LkT zsW2c`w$y$yp92HCUSKu4F{kagWa|c~2!duBUCXL(0?IN$AmRZ{aFUHGQ2~7rREk9L*__Tii}0vs2Da7Zy?6C9FvOg7tX;Pn>%t9aQ5~4Ious;YA4V^VDfAkZi9bxh>L$hn9P_GgRW{pL(hkrel;~hnf(ee- zj9NoN=s9v0bgkcXT=#1@;!6a*A?L&dfMa zQyrdzuaz;7OmJnfvX{f;h&kWCyr94W>mroV(KRTq*UGJEoG2^P*)IOu0e%P&MbRjm z%9Fgxp7lMeb}&L?faG`$^n%ZA&;Sh4m=U&!XuWV03|>yiQWN90ZTp| zn6)zV2D#3#6R$I~e2kmp?|JMWf8TT3MTne~O=Loyrb(1ASkuo(;IuHnHRV=mn25N4 z6T5@tPk}wwJ*&gMrT`H58v+~ridbrhU{Y2+hLIYx$0>3r1c!%%CZ^Me5BAV_#V{E{ za2~kn3V=Qo4LoWIWFbLt&F^%^hy(_S zh@lzOEd_u-OY*?Ph6yUGIb71gW`0&109LUyAhIS^0^s|{3dUKEaavMy>?@KZ%o+}{ zlZ!xcxlN|ln55r`fe;DVnLv}cVHFSw4O^7es4@Z}k|j5Syad%RBR0gAn3oinUG6vY z?EJjWuU*IOx7~`Z2mbB9{lWKt>|-DM9XtAApY^!MZQuO-Zx->y_%#uMaQ>Njltdhn zw;Tvzon6!Y2!J;FptJz~r#uwE*Id5(Ro@qX z_$PmG*W14B+x_Uj`d6>|!gqe>ce$$@$gOen#wCzrH7bI#Hb-Y%2PCoNb#zt}otpwr zz7xd`vTIlY1I=Nq04v*#!?@4M^6MPZGr@#!24$PhXgZ_T@ZT9?RlD~(1a@VhKmyR@ z0UaUlDMzeK5>+h<>h!k4HXn^8qc2EBpzEVlW3M-(cgr%1R#w@5(i#0wwh#&|OT8|z z-g?85JYJL;0%q+bwK@Tc{J#MP3=%#gmJE_*W39DV?&RbPbcT3 z-JB01Ba-n+0Bb~B>ulJZ=v&rW!*P%HQ;u+XC-<|i#Uw*>T|}G`bkW~h@fl2i!=ySQ zadvir5rysS4ENo*7cYO=cfRk}f5Y=$@TS+j?mZs(ptsJi{;Ds(@#xR^%5%Kak+ zvJ2>m-L=&Xc&wjRm}guK(HcbsOj7~iY-@CL99|H-GwXZQMSH9()q;Iw;@h@`UE29` z){gTd2FeBVnFgXz1Hf4&a#6r&(yn${Y7MO_bWO_jS7!R8CfvYoSEibu0U{>agsw^n zs+B}Ep!XQQZrz%)&S5FIK&8K{?M=b5f}SL4uWBjE8Z>5IQ&acUbPfUF3Uh`BixB*_ zJFrt_!Ezk|VBQkfLg1D?34opxo+^-VCVa9lO^du{${wMHhlmQ*ju{jcJmI}qn*oBmP<_zaC} z5I}{1rOuoS<50OV>ph# zeJL}Max^3kz@R}H)wY9{hZ&J%s#+kg^Jq92y|TYykT01oE0dKCS75AANq`Y*(#QMH z!Oylb(e7fn)CVF*V)Z^y{kAsY2xq}{AH}RO1kAP+&(yP$=U?i+m0YM3P=GvmY%cAJ%fBUqw7#s zx(rse=M=d_28Mc4ae>XP5jEPOZDvGPjfaHz^l^NQQPX0;6;t1tmFDI-o;E zvStu`K`c!iVO5imM2xEMpvxN*K+$uBz(dKoJs@y&n@d~b8a}{s z8DACu;XnR#pXJ4yKjsrY?iHW%aUcB^ANJ87dvEQ)efz!44D5})=Gc&PprbYwGWUdc zRTsJj9bajz(J|pr^89GYR7GGlZGNCpIaIWF(wGUkq8?N z;(yCM6_jyUdjX-k0 zUR%Tml`txqw5)YKhcj6u!wLj|;r$iL<4B3%XLSC%Gnj2la6-grXwcV6kVF_n^5@*= z0=C*8)rm2BWmj`MV`)S0d`c0r+gsl9=KDVNQy=~OZ+hNyo-xkPZtjOgYuF+Pfr;8dr9>-}t$J)oSZ;}Z%}F&& z5iC+4Ik797Z<5mE-Ut+#y_*1f=e{NOWL#X6&GZOxSyo_R!}cX4E3%~oYXeEX05-f+ ziC3QhM`e!@tqeP0l7RL0bW80FIzlzeIvd)Tjme$^Xm&!E&v2*v(sxjO)-Ze3C`sN+ zWLIjGAVDwZ-Ukp9`#b?dZIJ9|()hf{mAPluSK|;D0FR>_!4n6%!SX8F?m4{%+6TUW zl|>vRIu>|rw6fb=m{zK`42b#WNnVQxYVck{$EdqeyUIYa5mrg*9y;~zM0lfOWqqfm z`Jug`&vdmKk+P#bM=sLFRiwapAAYNMfEZikKVxC5I3fUN?_2w=bbeU!2gL|dHMB{C zMoYoPW`>6eUQ-wBlhnvK14l1`HlbZgd>&_&ADD3K1t&%!d`jX?zBYiB>Gj^RO$OF^ zA}`x3*6HQ3*)t-#5Gx6*^Nd7DA8JB|GZEF}P6-(IG>Q?x6;K%nc#4q~dW`A2cZ7O5 z?ef1sumnlxD5W@4t_AJ`5@0eh+`FcM*v>d+%M1Y*Rarrl04?pjWmk;DWYd}6$C^iu zQ_FA19hB=29lRJAUD$(Jh$sSfP58#jwkLm56>JiuPKd|%Vi69}wE$MDJN#*Ox4i(t z>|{Zpz&@)jvp*U|Im_X?V}vDrmJm7}%9oj{6X!b-&@yN<0J1Aw*?(=M2&o8o4;TKAPESD=}QZ->s&IX`q5Nk}32Kc&)}zqeKM1JJUTTxHm)>2-ri0ME77t25*qW z5Q1kg4g~;#_v!QT_fzE|>9UCqN>;(?2S+Ih)|n(I&*S?MG=70YS(0b)h|;x95!_#? z_nOZB>pi%q0NA+E#(&^UoPz+F_A$vbtmdSV1G9EqKfjJ~p1AeaTM^aq>hJr$zx}w! zKK=)~@#jC{BR&$Z{+@q6uibJxlXf*nqk`vW6YGy=a%#qEJRu8u#JrFxmVr6KV8zf( z-a=ygaD=U2Z%3PQBR4N^j2FJ}#qqp<`aHbx^>4oKVw?Z_TVL|hCqL%VkA4lnhIsef zb03>Hph#&X5p$1ir>zlgq>fM<%4}-%SI@R z($0Wzzp?KDv$s|wILopL)Uh!??{_xj--yT=aPk|YMf$=Z((jeQ-T-ajib#5SU<}!S zQUD*?DG_mG`I|xcv5V+?(5!j(+C_sTe!F0y7eH2;gXFw#BmMl!bSvm}K&u*WsR!w= zoT=h&H*mfGSs=;m7=r-cb(jHQR<3MKifG_#ol1_V+^;Fq-x?w;ru?=_ywv24?u-GJ zNeZhXC?d@DE_V@6YZZcH7H0&km|W@XX0LA`)PG{iujXP0dih>HU&(5vn@oxbCD_HkA<)jZXs(X(QlU2OY}tE+h73%)tO@ta-{_uh5a>pt)E zKIa>s_Oz$I=Fh~I4v4^KX)ADoH zVnYNc>+)v+sL7bQ1^feR?t2NSmEJEq_6z8j<@k^)z}aqP-D@rqgSY9^&TCVp!0#9l zY+~0Fy(eZU6Fvioi6{b9H<3d$yZyt@PB7gK)ut19?OMA-h2ZS$en|S!2T>q^UjnQI z;C1pj2vn-1L8vSA{Rk2n-Hn(mzu?Z2ytx5RL(uyx`=BNmZr?if5U#mrR-fNbtZ9W@ z@%tKBqYL>G1S|<+YjQuRU`7N%tqBGgp+<^cBRwE$m130k2!ijdt;%YS0rZ|AZgKAk z?bjXXG||pCWYj)4zR{QPB^yC2XwE9PnKX#txA=UVpJA$FCc&u<~;bl1eFjQ0$5>?0v{>F ztS8h09rrKB&Q?{lOuX&WU^y%GE5)I;4{>PbjkXUU&4@n z$sn=;xI;W&`tf~;l@JG7o!9j_hTQ6Iuci?OwT%Xn&wIR|aS$iTcT9P^f_xDYF5zH{ z!l4>-gIec|0S`pWH24D&CN`4Iuyo&{=7(Vbs#qe@(Sp`Pfts5Uj!1SU)#9vK_UUX) z@~x}mH3l=l03>}6zW4Qv$_omN!+~Ky-xI6OA2KxS+4W3FfdP{q9l*wS>2j1+bFXv8 z_6s^ci(nB564)N9ZO5R&9zr61CxCh{Jq)1F?z-o8Q2tSyi0WV-qjbK8Bx6>W@e^3NBDpr5$*!=`k{Qz>1X18 zzW^Iuoc^fiBm|w&HGmn(9OLi(-f!W#&-teO&hLCh-t7F7hriGJ{rC&N^@U&i&hPry zej|{$=iYk}(bz8;a%~u0p-f&D=A;y$L$!uYa5CG@=>UWTf@%^gmfsAtKj%ym?Z;F= zGGq(=WPIH0#!P2&eU)ArWG8_`0XvTl+4z*hwlYkq`gKpybo?_7kZJ!d0VL?>{W2Tg zYqeEzz93Hb5Ey0P6)G8GKMG|-jC)$XNH2RP%vOky5M(OIpMdM5=i`0wnx0r-V%qnO z2G>(f;8?!Yh#m;+m?D)~0zzK^e=itdxKS#)5j9X*?4mElgtO;-u7N^?2;3)xuk={k1U#yXl63uD@j#btEf`Wg$5BL0crW?dIH|pd{r9OI5c%2%@QUzoWRu*o7mc<4 z%g;rx_riBVqM{~{XWP+y7>;MS=eKRcwQINFzWeUMpZ&?7yu%Z|_{m@RGe7+^??3mO z@Bf$n(mRc3J^LB^$9(K3=NMy&d}>xjV@Sm&TjYYw)=u_~+e9r1sXUH0s+mHp>d8}E z*A2wg+$Uzu+Q#`cjPC5Zakb|&zv3(7g)jOxRPV2U+~XeiEzf-RGrsxu>$kl5?wePr zt4rLt@5T!JuP~47sj~V&tl*t5I2gFZq6E4;0%%mOD-QxFtj)W0;}Hr zAhigA0@wqk0oGp=;JT@u0q5!L_fm%4fT54lQ5*liTT2kP4D}$|{ zMJuZxn6>jPxGVl75O1YYtqShdtKfueRarro>d*y9YUl5lNIQ0x-%0(cNnGohXOKB* zmw;(^Ocd8f_Nl#%M8uXe^rhK0CQYhWrqmgHr-e)Rn={t>B3dICc|U>1UdMlzN;CXk z(C(0bs4m+7h6BixS5Y%Y4EBCV^%f8?caM}dd17E%EaC!o`m7?uO`thf136Ybt0sO1 zDmgi!%W7wydmjJBlGLkQg-1apWjLDm@%yMmiIb8pf_{I8v+^yVZz~4v3zEmJ8bZqZ zhx|1SqI;0c=EM>c)g@xAjWxYK!jg+jU(E$uI5kLmN##}`Nm}hP(?h`$QVRl&iivFB zn-y{=N(99U2pnXI2#YNHRgu0@o1lavAXS8Y0o#_Yn5JzwNrfH+C2|omp0cnEC#+h~ zJ5Um22Ade_3dF)$*y~VYYYgC6j){^tIjE^%9zdpRU^r4MEw>N=A~=@=4IMUt96Brq zJ=!!##71v=gh|RiibZh-5_aMzVPNDYu)ttzfq4ZBBr9sYEPwCnJPZgdIdj|Et+|>v z1>BORP@Cl8I01Z2?@`JrN%&&-WlV;GjZR+Bvgq*qccxv$-a~7^D?#{jC=(WvHFLdn zcMd|eSyB@NGS0x-h$FquDq~PnE~`}z5`)A>BG_@d`CM*hX~hTCt{Szdh;w!LH{sD9g-DPbIy)Vy zdVeyP%RolJy%GHUykAQDLbdxH$LCW7NQ2`TGuZ7v8_Kk%noUAk{KP95v-r*@euFy$5nE7JZy$jvRf*10T>MBER?5ul_6F_QG%by8rmo zKl#Cbw?{n9VaIM3I9@fSSlyPxqj&wTD} z*Du~cRp-Rz%^myI4mXoRGK-o;mC@WGRgp8aCLm9m|8TP^Yt>ZoOsvTz(V9P9)_O4r zm9N99m4*SDR>s!=1k&v62P{EcKwDkb={mtceOQq&6hH~c=Wz71vidGhgXNsDa3RmF zpSfwILjfja7Z1QM;#NUi=8;)gBt#sl2Fvs;F>Dy*Vl`;K;F!Gk9^xD)>xV=LlxAT^@!=w90On;n#kK#*35>dakUJGf4+VPHaJi zjkcdi%~k_65+1}y^E_f)o?Sb~#rYXBH`L|TwU2+~r+)cse*8y13h2M_?tkk&uRrCB zzX*@`_>Z6G=NC68_VdwW%^yKj!-~OWg;?~>me)hAU{so`=_|N$_*Um5Q+iS-?cin@l zxpNHL0BYwundMq`+602iM(m93uq%@(B|uHZl*Gt@XTggUYX#KKUPHjgV5$V%Xfp^> zEPZc%o(=d&dQWHnHAR5;q`MH8(o zX#pCm2YnU>a=LFTp?dQEN}cYRl_tpTsf@6Gzfh|O48gd*w@Nk8y+H5j4Ex5^7&`)| z*(@nW6`~4zKz18TRbVqr`M-8mDT{rQkzQ+MVzMT`J0^N(JX@H@T9@7jJKc$3pnd3S zsS!@dBr%eUr)W_F&a|7v(fOV|S4otCw}}ClWXvjGTJQPj3lN|xp*!f~66)|T(CK}b zf!f&!P;DXvGIvb*E|ML5UO)T{ECmPuT?D6rH(Dj@w5e>#AZ#a+X7v-Oh7-X$EIgx% zkXZJT3$(Tfsu{$WwHn!igr`duTCMFASJv@o& z|ItJUVJN;^VOX6#pml$7G)gAJA;7Hfb5K>p18nfwE3vF%6Zsfx*X>$`FU7Ev2r6aT z=)4(k%oUd`d+dbS*~YGcrL3zn^qDQ?DuD%4G5SKW-V@$>`-!GeWgA8&b_1It(D8po;)Jl7~JTYgF*DDLOE0E^rBP*P|e0LaB2n^6`FUxGU^O` zq8UsU21d`-cy9xk$4h00ENNB%0s+HxM5meVKnT3*K4L6Ts|6Q011bZX+&MwGHfC71 z!uK;0EKx|WeqtM;x}?AuKx>}6i3b2Ibe9r|^2?^C*+}DS|s~YOTWJ?fU_qWdU__fkQyDPBPCsX8r48)o`G2{RYuwxu51%ci~S~pCPUqj6u;~<_A*iIA*>5RPs z_tUY1i)1hvCG@>U4r<-3?l7?ds|R#eJK39nlN?BYvbkVNErS#CAhov}$bmC;THjI) z#^p^{n~Y$jVU-|ME_XmC0N7S~R&51rkRTL_=*cNHp_Ce?!q(hgP zx_>~-|5*Pn1KkTc@qmg&w%2Fdr#YFd8NgsXk#D;5F8uo+{K0tEbDoRe`JLap=YbEn z?RP)*k&pV9U-8vn{;%Hp0T2G2Ee9?!ado+4zr0C@vQgF4lXY&@1x&Cm5zI1J>bkP! z%7V87&`{Qy05z2n3BKpmbc+E+x8&mjT6033@3{!>tg8b7^cBfN*|lEwy5;mCfI47V z+z3tzSOv(I;VCFwt}=XKlOk#;oTId_DDN5yX)gw{jpq2!SlNUq;S(c$v~4q zs>=vqz$&2CA`Ziif2G38wr!JYfJqsylHMU>hC~;&;jObtyR7I=g@ftfIZQL~zH=Pe zC9WkHxTS=at5*ZmkdIlpffVD$91ExBN@A+%Lo#JpwGD_xj>i!>uHf4son))BOK{&J zo%!U?86$F^Q6WJ8qu0Ln>KI4)LLfLs4Uu!-Ydb%WjOd<)TW`IEB;L(S{Fk5mg}?Y^ zPk;Jn{mQTZ)@QuaL*M!xpZTn3;ln=ULoaW;?e+~Us^7Z{ytr+QjX|OGSiqf-* z2w%5lwoC;du}oV{6=B}Fh?k`(es6uU-i<-0LOEbp#W#e@L|BpC-$72Hh=_H^FK<^ z`Tdo->cORyM-Tsw4v_*kHs`}3dzTo{Rn~6M=MjAb?k50C|8J=Y43NR>aD*AFlkWU5 zA;F-2jru#wC6A#LoI$hqz~D>aT5PE#kTTDRW5l6JCIMVt?~wHqm=bKNvRBRJ0Y6Q;Kqt!*O!h?_??Sp7 zX1x@o53Ny&v{((Y)L1i4?vM8t$9oU1-zN1(j$9Cd?@-DUXYg1Hv&xpBJ`*HM6v!v{ z-^hr_=y8@96__J&v0aNekG}ol7TkIFowt9*S3K~$F^A?-0R zs0p8c@cX}qm%Z$z+sj|^-FWSv{7K#MfCv2kqaX8_=X~~OefIai+uwZG*Cl|fn^(B+ z@)CRPTE|i+abP9`xKPcq8$hAK`uWOLtJ>PDZdgQO6mS>qrHF!LdSM3MQ0fRm?a1Yg zG&h^4tpwOZnOoLkh7?~6u9hEYomUZuags?IK^b4nz)U{#5;|97l?DV~!l1iS7i7WG z(B;ZSAkI=X#z>7G#CqABS%no~FyWO)&|?W<#PUDPYL_+(|K8y9w_ZlH&eOV6-CD{y)<71#ZVWDy3k$;u23mfXFbAWa0CoS+NP&PU5r;h`Tg7q!?Uim3 zq)@{%{aze4lJN_Ta)kE|E8A~K$O?@!nWEml!g=;-`AUE#Kv-4|lem44i3{*z+ zoVUK_$A9wOp84!&edaIy(trDy+ppjD&`+4KZ#gZRHyPVL<9k3M93$82XfqyT_f+B^y1r+@b6#v?!R5&fsHd;R>& zfAP=%;`3khZBPE75Bi}0e31k9+_*RHyXVfXPVD=Yde3l;S;I~raaE0)yINQX=r@kW zXb#a!wehuxij} z%UNLRo3?AN2>^2Jevc8Wya~3wbl)Okv528%(*;Jo77Zt2TRvY`(c1I2`4>*fD3v+T z)9b6 zs>DELZ;X46gnFGMskI4I?@yn{5sGUJk+3z-dVmV?(V@NrwXk%jKI1sbhIZNEffySz zg|(thKK!cTYsq8_h{105JvnxV%u!$)ls`eixw8*;$U_cqg{h&+1Oag3N;}e1hjA(~ zZvh21uQ33{%0#yK1WH0Jzi~F$EEVrdUiFWJIm?_<4>l_W&&I5o-GKN4* zG%`1?lgq*RMrgOjH9CC-oCPvp=^qPW?QQi_NFK1upl8809x}n zts}VK=RFDc#Fjc_Nw7jQV|HNV4#bxHm3ikIUcdj#fAxL0yyQE+4Zr!DzkZ31U;BF> z`B7i@+~+>;KfTjCz0+$m0yl47;&Sfj{U!q^oMzYM$P|n+BRq^}Swd!e72wFEagx=P zqoyUFa*TGMV%#^uk0~I20>T{pGO1pwFC~x?3|>IpP37c_mOK#INHzOH1MRLqX73NK zSDAByvl6NSzrwczH#aQ#RE}W-T%+FtbStZ?z%m50rhHxo$rbc*oz`>Hrxd0L_^1;H zvJ%s=0#f>Rt_PI4FfnTqU9L%fuGN@NGHLk)5+4Eg4+;?{X~tdlr}jc@O#tqoC`^uO zT?0$K)zzA|q7X|!{1}}V7@9i7=R4vI`kH{VN{w8-2BJd%FyK(FQOowUUS5wa@$U3nw&K8`kE9wVkS8LN;VhVPxq4&5yun-$PXc| zF#Bw~j%&A^;XKX&05|Tv_d!4O@BiJqec3;G+T(uz_kaJRuibX-L7)BD&pG?buX-A8 zd%zu+8^$bjj);p^DUs43X!IV4GXR$W&JWz~wp1Nd%b{9LB%%*lMms-nLQl%L$x`X& zb%d(AG9pR>jUW4WKa!vM>7S0*zv(TP@AJOz^UL4=uU`FGf9@e~{j2-FHn6-AZg z?198C`Sl^y53vXu3(xD;&cJ=L32D3W++I}0%wE}cfM9Y*lY|h_;4E&T*he5}FQ~Q` zI4jE0X|@>G(xOrckjbodHu%}-qZ9zOh=^#8q_gtDDhj^fB5BcdM>E0B{apt+TP>nR zjr1U5qeIWB`&H;YRT_W}RPEs1q(-3WT`nS{5Iwp6-IQ>v86Tnq_{{bu>9fJNf1MfpIsx@wL#kReFpb$M+oR^?^&^3-j5;~Ta61xp?8jwBo^(QC7ppW>#??z<9Oy{Z zwrD#!BO$9lw6m7)Dy&BKJt3)~e54gF#t~TI2+sxFuupq_dCp#JDffV`?>NG~9DP4E z8M>fW1WRqu4XkM&Aii?_MnxcJbAnwdBuo=Cj-_0lqTpr4w_w~m&d-28Y6mT=K*$*m z-BHtJ_DD+pIx(|h?P{1wmlRizhk(1H>n1riePwOU6B|IGLXFeBpvKXutWm536CD^E zQA_wWONQa^7yQJU`Ktx8M*@JOe!UUO?t9K9L{gAMP?l2cf@_@R>EO&tiwcaMfJT~G zQYl2sKtvf31G*dukB)Lswz)>x_o|Elvl+vSr|;o`TDTwp_vm#!d<!m37~NP_W3XY%g#e8aVAybOhXS+`9-7@-L~%6OjYS zPlm4DnlRuRb2pfa7VuQ&HuM77PhnsrK`#<2*C^z65Eu>p90!PZJ$ykD_iPVl(xD>h z5Kz`CDSKz!7OV8alPXr1du5`A2{#4oRsbLrz{Zh;# z2V61}Nni|Rv_`7wr_NX;kXu4lo&?eW!dd&lAUPDkw=(gYf`1HP^q`_)0HYE$j;MPx)Oh5$GfYL-3pQ=V+ zu%nKY3y6y7u>iwBMq(QS-4k8xJ6~}Fh_l?bYjx}SIW8`)0jPM%D_;3AFZh;k{oMck zzkcf@KmKDM5zqYEuO1KktAEwhkW13!u2dj!Klrae0G_?Dyo~-74rqPYG#QN+-rQ@U zZ=40t)g7Y>JE|~7CSp&-*4Xzy`QtzBAO69AclKjH{uB7IAOEr6d+>uF@`lHM*5h9K zgbFo^EuR4bIdZ#peE)p2k% zV`D&@7W_PKC1BuVu7I<(RlOBX$!JJnKGwIxvYaK`kTIAU=*_F5k{Gc2F2Kj z2T;+A!8}8{hHUX@^&#T#MD_{%Iv}UUh4D5s~63XxAfF#}K`~&c%f2m}CH#S37>-2mf_E`AJX4 z8~^lA>ysY!sQ>Y;FM9rCF3zw2+SSz+?!NaPOiWy0!`0phj+H{qiG5}B4N_$!qA`oj z*7hu9mE_DR8B_mefa20=$Z&&X}X|EJG$xC81H;sG6D5 zoSr~1-2z{Ym`A-mCeee5kk;?8TRcgQsr!$bgeE2XXn-tY96jOkpxl8Ph2C3A1UIx( zJ^FetT;J*mCj{M#fNM*8SgO}BHLN5pcXkx^o&IG;qj!C-)re7k#^ec4$Xrr$h%_nH z*$=&Ms)0Bn_9&r{9j#t_hjZYi3D6!}lOVLtCVQX*7OImGs0eP zW$A_QSi%tN#8%A(Qu#iu;X3ZeS#ZSheF-(EY>-fc-3SQ?mkq+WNav>Y9X2g4pIJQ~ zY?ch5{XQCsAtaOMt`Z5>wBe)By(wanlh>0PPgW3cv+;4@_!#4Gj^69TpNrJarjn#} z9^2m?(0b%5k07Xr$^bM%v*oXltJj1%`&0~IHFLKk!UlqIXeiiNM6oA!fcIG~)%giA zh5+JhY&yVL*@Oz!?x(+gK z)tQb~n2mNoDGSQ2RHAhG-U$uq93IJ3Vl^BBRP#xnVptwAC=kBA^T-B6Mbn`mW|b)OOXnIqOT zb|%P6H)0de6XVFexZ$X87Z@J{DYniM@^B!oHTL(rtYQR!F$4qhkRNIq!WIS2hv$2< zf+V#5l=JI4-VYtpRpivJorO?s|AL zlCg=Xv7CK7YUx+E{Rk=rkl6B&_O7nlks>{Mkv-Xg7<{KL0a^Di!#9Q+Lp8rY0Im_h zJ-OxD^QjQhSuYs)2avr1o6cg=eIN$+kIR9EfWNLm37OV%aHJuhb*!EUOOX=W0xl7! zjU%yCB9!^^9oEL6dlOO98pD~|msx?{_@2g4Xd44(pltJeJIBSfTX6lBGxXm0&p-Qf zZ}rt*{mg&%Uw`4}A9>qtw_iNxxnGAzKJrug+AX&gx<*G-&q?h9n|O3pW$I9OH6mj+ zQ;v46fe7V84Qzz|=+;`bCWphPd0OsR|GUZvy1F81B)ZXe-E~+0^H;nyUim%$vVQf~ zegn5(zxAFE`j8L(i4Xp;5B|3I`P=XIpa0gozxSOHz}1Z#xMK92bMBPA$LP-PshQPm z(izxi1rn^t@0~Z&Mt7&dbZR80>ovJAN~2$UI)lrbx9u+MK##+}7nM;AxJrFST7kfk ziHG*S6PG3D$#XcbC>igdMnQ~wy1;!XPWE~_voDz;>+Ts(FqzQu z+b0yeGyUD_iLCnB4BArxwoGXJo`AcUDAwTyB6l{qiP$`+xlEM?Cv^-}u-c{jneau)FWN>#c6P zc1wKh$9_yc>5IRp-{Wt-dyi}9%i9*vDshNLR66m0{~aaUu{OIL;R>jf?Xay`8_;bX z0E=wUxZJBE3bT5ki_?yC+jARR&w1mI{`c>lfAzDT)!*}~?~ez))my*r^FROdKI=(O z`obR`8?fIj%%0fyOH5^D*^rOnFoS*qkZDqa)&i(w+#l^4?zQ|NPH?Q3@FRn1XfXQ3dYQMsCnS3jYmll5`a7P$3#t&UnT%3U8nM=P*;K2K;Y|+ z=>m+U3_C}%D$A!1`W0~kDi82j1>p4g0cAl27@bjWDJevbaGeS+zuEz)6Ci+C4GD#j z1*Q&lQMCzU{$7jVbMrpTUX9qgn4PR_^bT<949`?se@w=QZ}wq#B6_`xFrfA;%-X23P?yMM6r=QBWdlt{QfF zT3{L7B$cMkh@QWQ3lmVe+d!(JPqjt>i)iBi)S;RSSrLKv8KFruBuUtGgQ~aMxn@?K zXF%$NSoWINkU!}LvM@`Nzw~aAebo7j(?>Ml&j~5Q|DPQ;+Vae5{^|0Us%A7v1HzBCw3kqHok3X?njo(8tW zm_QE$q}2C=%_W*u01RNI1`vyqq4&`Qr4Ij04lyeel3!ziS}2HI6C(6?pw$45YfNxA z*au>^-n~>4s{Lk08)`BaY_cbiKAH*#=KT50i|p{43DAOm534z&8qzTsO*NAPdgJ%@ z0>)N~C@>FZ+r1593Q&7C^cDBUkNf0IEv|Nu9MHrMk!g z*TEz8_x8_ujp1kBOpfsHIjr7bKf54*c%|vxnO_!?jz_u#Iz!1pf3-Ui-jreEy3*NDNZ#` z3lrh^>+#Dc|K8{h^VC)yKotDFH}2^l{&zpJeb+0$EB?bz{AA6m{jS@upWpTP&;Fd} zKJf`peD&MB!`r_$0qna(cC+)I`|c~+!HhAgO@@}3eUix~@U8%I&ciN;x+E_j!4Q+d zITNS5YPvny#)W}T`Kq?DVLY*Y70QUD?;11pOq|6JO>_Jb9?cJ|5c zjRNI^4$mPal-FFrD%oaKH%1h)2PL;leUZSN^n1Z`-XfmxfB93FHFXu+be7+}vZuD* z$vqi!P-ZJFd!Uiq8LB4}0pmnXFs*(J+^mT+`S_j_z_{o@pP!vyR!^L57dX4v&~xI> zyYJ4Q_|c#EyDxe9OTXa%{qO(%!|%Is&x7CQArHmJeeB=I6Q1yS{Z}6Luo`1jAhtPo zKF79g zbH?bdz5dJ3{=#_DQ@&*To!|Pkn-BY|fBmPQ{WVYj>JNGN2mNfGUEtn(?!mqH+{+uD zQ~R~n-kORdLx*KT$g_JXi!2vscztBEYo$$Fyk3YTLc13X*RQIzQGhkVPT;Ip4*}jlWs_kE0&Y%Cs1pcNi%cPio3emh zbQ8Sml1-IHuOsgA0@~iG(vyfr%~m{5A8n? z>$N)zsNBHnE=dy)SJS8oCX@QGlm%htI2z>gdL+{g*g2U@3IMCU3UZo?U3DjpGuxp? z1Y!pEV3R=Q33R5cROVTx0$FG42vC^x8e@Ycfuog))W+q72nK6qJ$2|K&6#s+IS5w( zwgUNfpGAHr2?1tg*m;%EhCrqz>uxMI_wdJj0T#^(h^-q~H4X!*5qR+Rm3c;hUH%ix zc!z*Dlo9Qw+_UwJ9Z(H&tPSP*>LuY+euvhTKpFRo`v7 zrgboIjP!FcGdGH3<=oUR+(pVV^)!iKg@k}14shDqxT$*h1^80n&oQVn>>L=BQUox# zwG4b%wGa$vEOlR?6p+N51XB8YSGM_B_fVh-F{2?Or6Sg7!4X4eC$MRaEBO8CjK7TW zp>9waf%ecQ`GFoAh(q!k1MFzJNqrNk$pG4y-i$#2%-VgG^rVQ1@Z3*j#={x>P@jc_ zxO zj>>EfwQnF15uJ>`!x4PjJo1P;L9OH3%D)^qR(}*0D%q;1Z^w4f*5J-;pktQO0huGC zW_93lzZXCAQ$HI&^PhiqeA^4Y9e?)vH`K*hzV^dE@}s}&iBJ68SNy$?_=w*s#OyBY z`xW-f9hdvWMUL2ek2$-yZFE(s&QDNIb&RWKvUwIFpk_)~GyoEWA8`_Zir@?dSwvMW z1=aGNaDlHS*9rx>50XLpF|k3brPMy1vgC?~bp(1x#VQPfVm+ZQEdK`)+0K^p{fTx_ z?v!^aK#~M12FC{O8nFV)Bg6hg^@$|H^W<9G{{#)%^AwvPFeDA7nhP7_0Q=rXV3e|$ zYd!d#ZS_|louVVaSi;y#>meosF1fRx&m_1Z)D+kcKKE29#u6y3k+MLj%YVli5<9c& z4Ip=cblI2)q?Mx~rANRN7o@7;zljJS^M-Y}BAn&1s~)JDV5x-&VvwZ4B6gI{NR40> z?Cze}5o)#5*k_+_k$Y9wcI^V!uU$v>MCEqtAN~FxKIGe9^1?^F{AI8FtT*5JmWOOx zKIE+)^w#+F&vb-0#oH8}mOp z1YHE;E-sQ?M!S2DN?bMaEOX9%A7evQ;_iFjvVX_7zdWDujIYRh?!LV5;UD_&pL^vi z|M{mq@IeoJUCkZ$-FE|5m%9KM&t`RDHm5RNf!*~(a_1@r$`e2epq9pcT9VEBW`fH# zn_ls)flO&BN?pl8Y^TIcFF;elc$EzUPxo~x%i2e_Rce7LiM^4Jv&^n}Z(YpN^#*`R zd&N*YP6Pi& zgZ)~{#6_2g-oWbO@9h``?13IsjYMmGl=)Wj9446{f8ghsWqdR*TKh=`lI|hUyBZhzp2B-pDmSfbh!~v?Ox9V|^*T63ZHlUj zRKFhi*JYOU9)-tByP{Yz!!%Zuw0!j?U;16h$nAI4K_5{RV+ z5&YzNSJ`n3S1v+pC3$P@M=co>ZovkIqZ|it-+446;_yGbtj_hqiSUNPYN$Mt0e1`K zd)7PwAOizGpauTx1udy^NME34b&h;6keD2ypqe&Et60&eezyQO&SN$oYtus4LL^WI zpA1z)56cX$f*W26nW<6*N%Z2hA)qo!rJyky9UDA+mg+bM+T5&ZxxKQQmE;bTju!zY z7A?uPY-o7aa2RO2bA5WfL)jLB@})R1Fiq`k1&;}4`6)$qlR<|X4MjjC8?@mo4geca z;G~TZIaUvd2=&1bxTE}4p!?*$0(>2-i6RanBS$McM)D(9NdzPLEvXn8qY>C(`3(1y z)D#Is40P?hzCkHj6xD{OVt;{ogaDp502aZ(-06l4)^THy*m2gqbr!Ld0^=Yvr( ziBm-a+D)rMjS+c0qyeekOKOrs99e5-^cW~38)Nb&hTbh>Ps)^5cYT*|q+v%0Ba7Go z)WDG$XxII&OuayJI4z{U1<*c#h&@kp;Cne$QaHt|dtW6IvGxVOQyF%UylDZe5rdrO z0JauLK&U*S^-O9|0hSo>w#PDVqq#{*dWaB^)OKi}aUz0$*S;ZCh7-!@xhW*Drd@b1 z3x{pvOv;>G>&!ElEGyfT4Na36eFDS=dhooCjrW?_sM&FLvGw`Ib=-T;eb;{A`@Ziz zU+}Fje%5dP=Kp-xw|VH>{JAGT>B;rP&;NW}T)*A`uvd?o6C(#kdSY-`G67hYYZ$K| zYg^mzIH`W(rl3Q=kTL8gmb+-IdR}y4R<}!75YYn>RsSDhZys-3T2u+Hh;N^J-+eD% z&Sa7xkdO(Pkjx+`A|xmvH~=yzN>`P3S>;f6O%A0sXjzI{v}I{ml~dc@meS$`$t21Q zGKr+hn9QU?CPR|bo9{jQi|9Yrif`|i;;%11^1XM@Is5GW4e`ZVu_7YpTaVo`z3ETh zY`^t8zm2!N=}mn*_uF>7HYTe80RR9=L_t*dc5nQ#ANiqwb?voJz2T9Me8jD7BB8Xu z-J%~HpiLX}zI6gsL_YvnD?rh&NTr}S%=%#7c|fYbf$P9aIgElfL_1U#RAHk*95WP- z-euDj8LI+195^{esLJ&TF!#xvv6lE0b8z6)5Rl^4i`x>k-m`w zs#O#LDcexM1nbvDu#f3oonHb9i{aLT4qK#iC^ZgpplO47rm&48_Z6k0g&8@nnbpn^ zgSai;L>!pR-l|HRHO;pTpdwSEOIJ-D0dgoZCE(sBXB4Ku$JoPs&nO^U=s%STAd<4_Yu!pWSMI%}IZMaekMF*73R4rB**b~epgc5}zH zvy0v4_|h$R?!EUf-+kpT{_?N>;Je=Ow&%~Wf9T?iF4=wNH-0nz=|BC)xaz^z%p2d# zf!r~e_l#_r2pG+1t)I+pCTSlk)7@g2!?XYV@;|j^7I(D%OI+=&l;LU$x(y=6sZC~% ztpV-*fBo0^k1zT;fAwo#v)?e^^sj&DM}PCjf9yy9>!F>^spBV3*#L4tjlXt2$nE~T zigt1$GlJ@#g!0xgfKEhbYf`N*L@Me>NjN)$6lep1a3rdFK8qg6k?#V^fFilHK@~-1 z^>--h9k7{Bbt!rfjCxnZI0q;Ma+?FBWiYQDUBD-4x?@DX14Er4n*t-qgoWyLVC<8u zHeUj&sq_Iza*UZHLNbCy1zEt3pYPC~57q?WuPc9g7Vn_@0+j$rg8!j%(w?4We?!FT zx+o!u5dqas>3rm@*d~h&T7mqOlz%7~wDMF`PRz`zZUMU$xFXoe3Vu}m#A1JIJ_)pG z=V}fJ_LLH$vmh#2-+t_xz)MG z)PPinlu%?nC69MwN1D;5$2g8GR4-MWz9*8M?RrU{hCiTs1G)|w*hSfv0_Rr6GNsf_ zk?iH9n2N>H#5TZ{nqfeuVM>j6T^BhH)CiIVVGcy+S&bMtw3|GMR3SwaBqt3YKcY92Bq-e>^4zQ}E`c3!8bFL#ho8#u7QQHW`u06H1Ts-?wH zN&?FWTyhh%gmUiW=9nbfmYCt#7!L-oYg$SM>58lfyl9|JU*KX;s*qEdsrs?PQRR%5 zqXIb_k)y#^Vxiv$v7w@6j36~eb_zI|=D`i#rHp7|zd*3T4LG4%K8=V1a)3MnFQ9F{0#z@RuXi2Y|W^)XfQ?hA)qE=0hJEoawKgj z#AM}|89W={>cwm|=Om+8bgBv>F_$}ofVCnm?El_jF~O(uWQ2Zv(*4nB!IXDC0j?Yz zfKmK#V1n)m)!K`!&tww~lvRPNM4KAdh5J}nwqCQwonrzG%)@n5O@U^vlmZjb);Pij zLrLPOS|&_Doot&}85mWfSlU&(z<$(yFe72mv~ShL0D#f~MDlqlU0kXSky2j{5U}5Ez)s7W)`$0)EGmLXK=Eg;^rIb;U3A9SlXd+LP3R9B5 zot<4A+S!F~3^#uA#w&j2XMXzou6xyMzSA6+e*IIPw*R9){4d(0AN`ogy;)?Rvtxoa zWXtp!<`WITg47kb8X37GQulX$bj}R!dHs8gT`Md>D>sBoa|ZexaJTMe_5HH}e&?O1 z+ULITS$pLxUxC-X?)CVK_q=Bxz-R7z`MqENkH6=8fA8C#|C~==c+uT%*-UMJ-p)96 z<`m_Q2M1h`ZV{aaxbJ|VR=y8Subex_a)-IfAA|sLD4H+uZ^5o1Lk&P_5=)=S$%j6R z#5kBEmv*fw640_EtYH$7067R9ya#1X%UKymH;Dr0xmvb%w1v`oVuYngXek>^XEC6I zCq^~;dLPf%#X+)2rEZBR%*1Sk=VUMHp@)M}L^0&-$f+1>qpJMm=$sOnaP7g4k}D>v zOG0L;*EAkQV9d0YR>jf+z{tnfIaGCXL{N;PhWc;$0sy;|SYq)rAcc@3rBFSQ%H7Yb z;;VF;iif8h#vam%CD=fx(t+`u>|tHw9KCxw%R_E1&^iZ++G`;F-_-)_&35E>4nF)@DOA z%Zy;wW^?nZWpS6yF4m(~;|RZ;wfW`3)Jm-#HN+pPbRry@|KT_(>iedwl zD;uhRx}zecOSGMU*>zuiNZt)3siFgpnFZA>P}Ti2Az-WhrS(;dG13N+VMxr9oeQ2T zh$b~b0qOyMN_Jl|`T}u^jDzYOR`)klVYpB`K?0dJx-1ZfCeRWw8w{1IAr+CvXVh7U zWLcKEh$y8*b*Uj_Pb_ko=TOl)P5@L(LO7Uq+@w&b0VIYNxYsy!J*OqG&7jh`Go2Z^ zMI@ucuzGGqdBZ^9oC=UCIV!ZT6X>x8+xRH;2PAP&V6##ppiQRQ3P`o?v#kp2mCaE7 z1mUabInqV4!o(RE(_Mr?6d|kMf#-+y7zBkQF`E=#u@E6lXXqU3HPMhp6+)%2r4fkB zi16H`Y9)$Yu5(1)1Hy_3U|LPJ&NL)4)L1xa_gy5Fm;Y90a?I#C@yyGDvARz^ZRI{j zvFZ^jB3{ZKFjXsvzgXN-xX5(Y=V;=`XR(CM>~fL9wNU}JEP|Qqy+{rKQh4)Rt+m?2 zF}aXvYESbk*m)wDHdo_V1sRvjavQ{+!&F>XYa!)b==&=$nVPQ(*hA^~2!p%Un>F=q zkONx+M{X_~@@XBhbc{`R9y;JndDB*TOiN^2@>dCzKBK9HqI{md2>BReE1XIsbj*$AFbM2T28>1qiB95rB*7I6LED4;`Nk)_x z-zs8TKpZA#2Mah%h>#!|(H2jE*AHX9x-Iv_Ls(H{IT+0hl>GYQM!hK02F4Z)^-Kkd;q~(ms&qkcT{HxYd#!ks?#|y z44#|VM;Cx5@ltak7f`h%9I9~$Xl@uqmVy9K)Y_JP0#iyt&2LpWEz-bO&)irbuaq~s zzp8#cr0_*Htw1n`oC*T2S6}k(2ceS77>|A6Ws1?Hir{q|hA#4lgp13L6e&`Q0;U$w zXtHi2uUUmG4NBnN7Q^#kBajew1%XK2V|pY{M1 z2u-h#b}e>x3JdqsiiAlP6{HC;C4xX5FA^JHNVr6L%n?)DIdt^AbK}sob8yGWI}g9) zxBlN}|J=|0?2q5{`Ojamdw8?^z5nZX;Xl3T=WulIXu@)vFwcxuMdCPJ!{S9v%VNQ3 z3H5h%3;a8fp#Z}8%nB70C>Y;i2}?`*D-o8NMgq_i7F#oK=oxct^PTT}_s*~X+Hc}D zue}b(Pn_D{Z1z5X{<%j!_^*HXhkxmX-|_A5xcHJwPdR{XpRs?iMRUh|u-}@uzD=Od z9aBXfpnW1+gJ2chR4%_55IMh&Xrb!xxjcOxij{_B#=g+LerSRO!D7JaG*z)3%RrY3 zt_W)(T$J*LX$eI>%sgA7)<>|Qp%s9U-<5_+iR*O=$Vpn9JpR|Q^u_j)MZ3}Qt1}Bc z6VgItt0LX1Gm=fwZePGvWn`dIfaFvt;EAdVUFS#2cc}F-6bG((7)1i5#xN*azNo|& z21ew8_822%2KTP0kkaH#e;0{Z)B%tJ@$^jy{z+wI0Y|AlvTBMLoh8;A)w9Y&BkMIG z&{u+ag9$kH9!fh4%-gVOXG+V&&dv@Jz_i)H?ha4i)B9(DZMJv6=iT>x?Q35DtlxR* zZ-4hKU-;79t;GfRzw&|j-hcK_@ceImUcdNm7s0*FsY)n)+s!wUGmwOwr6=?{!E<;A zW2YC0*9kJVc!@IB`@1YeU1S)C`g_(8C%PeQ?%my5hgmnb2|(U{`!Rd*&%P*s>3{t9 zwtwc#eC?B;_`3h|fBf1D?|H9#-|ns9%&C(&edaXIoH>n6bLcZ2rv?>-t!ghhg3RMc&+QR-uW)Jz|^|Is=s||G-L=N zkT|Y2OB!DQ5>Vm30^)*i0)qtWU29#>ld6d|TB^+|R>%F*)oM<728_;Q83UydgxV6O zWabc=mYwR{%+&aiESMD$M=2dIrRzbUPbj$=!<2?fG z0~A-!`x;x>o2A(W=`k0sw|Ia_;B|W<Nr^{g($aCMlQPk4V&2Zme-1h#ZCnveD33+T3NU)lJa+=X?2>EB0c$XIR*)1_z`WAFO>$`(ga)=*qr8?r zyTPVL<`RZXg2u^}eGEf+hGvb1)JXzl2d|~bEFjV)0H0K6Iz^aRMT9Hgo5qAaFli4A~HwSWrDndVAs4Zz67CxM{IjwPI$ z0D-|JVph%~i)y9{d=$YW26hcHYsWeP?$U z$4?%^ZMS^s=yk7n|%OCTY`s`hHB zUW+c2ZPIc*3-O=z&lR?pzh7o_`Kh|VXR!?lp2}vGPuO*KW{0`Cc{1(#{`^&%D{K~KXI?f!Nxjk&>(~o`3BY)?A`@Zje^^?EusUP2LHfWn^ND~eYwm8^7 z!w6f>s9gDag3y`MU?Y-5Q%{nZ6>k+Zuul6}dluYlFiHW7+%5V&0ku%lTmo{~3~n7E z(vLSo2f~N-Drct7Ii=CnDK#9TvQ~9I(9x}Zn1e_dbn`%Hsjo&-9*+RJS42ePle9%P zrWGO!1P3jb>!BPJ8w$0wn!SRUA`wJZmg=HhjLaI_)dJGJq*F@Y%hrgLuer2@3hVhm zu9e;)zZ8`QGQK0h2vMoTDgrNZvsy6$>>)h}i&fOw0XckSUuCCMgCNTe0VocQkyv1w zHgEttyF1v~Ok-d5oN?^fsdL``XK#D-YhV4UulvL6UitKs$Btdq8qT@;ng`=y4|!<+ zuJ8V?`4JC)I5wNj#(fj%h@89koMU&h*^y^8v{+Kzreaz%TYFMfmlVT{sN-_mw zw#(bEkjt{IVe6MPB565WqL~|A-~IiAc=H?H+J55S{~P=3k9_#d`Fn>y_Tpdq<)3}x z6Rv&vJ??Soe&23!$BE;JGpAw3!e-5yB}42>#5I>_Z~^*ItGBL5Gyzl+5DIeu6@e6} zl6JgDMcn7-a{xh+S z)LsHA3LF+HrcZEJJz!@;6(q-@tp zZ8LY|WGrfE>{D;rz11#}9S|f5FS5Znc6A0+eVIs+BXtt5Kzem{sDh7-@Y2xsQdfvb zfQTdGi;OsjHjq*YDz$}cy^jcfAXKam1fM}r?i$A>N>AlSGgJKts2)UsgOv=6OV#mi3VHyZINnUb78J23b zhZMl62Q?qg4?O}OtWX2NIvEig6&mRa@0%II!U{rTj0V@KQWlUN*eo_hm0?75u0&7$iq`r$X z{VK?2f+j^+(D!ym*bO`!n=w-6p=h)uImV5{dUfn$&*D`Cj09c+;uS%5W+l4nEmVC0 zK!=vIy+#U*!L-gyGI<8q>3~PVY|?cAnBvB(C}c(Hy_u95Ky_F$-Cy zs(JQQT0ujJTug&j<7QymLiP5pS`l3L1OW}s=XF!f1S|8$xiwqny7mS{6v9}<(Ybzf z0M3DnKlHEu zWxU`!zdasw)q^Lq%rs>t%N(t+*El+GcGN!$!6jWX02R9~XpjI)#Ba!~7XSjFkb};` zGGBmV@JJE>h(ynBJ$rBP=F?;d>rAmpKXLpRUi;cVw%`A~m*I_Xc@vJGJbn7`?&gb+ ze)Lzp{i2I5diV36_nhDVy03rIE$5zpVYa07HF_YUV}IU9=2FMFlRctc z$?2m?DfRa(x%~n_2zwZbgo+&1UZL8U{FUSfTdTo$YyzIS%F$2qE885tzlc z<+3xg5O9vOfD@1+t}7*gL?N6&rZpB{Vpq*Z>GO7mwT7LI!)$|$z~6r6Q@ii|%MV=r z&Ud}*AN|F9u7AkKKK9WEZ_k`Mdidy(!;gC8Bk;7RKO>*|f|5X?a!(TbeMkEB_ z%z%gpOK%KgArpDx#0mT#|Mi#sXMW~I^FeM8zVVyB`L}-Thky8|9`cBXd_Kdle{dT6 zC-&|1nNzv5v*E49Sa{eMKre7rJ=;STBvg%_zpE&=0CYWUc16b_l>j$Y?{&s^Mf(k- z*xmp`NdRsX(OZN7YASjhtF9OXi=hZ@MQaJjy7n@`Kes&F0d@=I99owZAzkGB4w3*f zV#qZz761)BZ*aLIJrG;odx7P%ItT>8#;9u&i-IDIL}ncYIg0ctPg&}mh`L??sRRQ9 zd@ECiJ~|T^6!Db0B8mv9w1|=OAABw?z359j!U{NbrE(0(y?`D8pY9brR&mcWDYxBJB9BZiUL`4uYCZK>zPpbG_b>-0tLcb)o}ulA7H68DxRC+D%h(t*}{-5 z77s6p7cv6YB*{iiQbh#>1k+IUB~bW|&UraoxlE)UdXx<;d1U6udyE1^TI<$)6qYE4 z#pP6#lzccNwJEHCOQK5pkN82c_Z6*?6A%b^72``e9|EIG1c3{HQtU+Lgyyw*s&cU+ z0s?bDEnY1mfl5=lf(e)bpo+cod&!qDcZfg~7)AFaON0PrjSry}*a}W;Cj;{2pqiqp zMWs1bj_U|UWIVHIu0wWjpt4Ifu0d#mh8oNWKir`g^fdSA`=tPlO-A`)?U{d5(;CLt$ zN@8k5YM&Y-wiB#;paQePKNFpFtLFlp>PFPZ@6f$4b*8~2#hFTS4z6$agk@8No}0r} zTOgFvUn-g^P*;0%Nk6cmR4~+i>odF%T5GCtugBJoeg})as2qHqd)hepZ~^}{_acv>8-cjeE-9Hhwu5L|K`WG z-~Eri%g;UkyzU0y_HGCJVY`QR!y=k(+zi$;V9m{mJ445O$&?ldvHlmGB`?raAR>`z zX->Mic=Bp!JPs5-{J7Nm`igr;E(-AI+xg7?)?fbem-%%szYf>G@2~Q6pS?NE?bM;Y zz0ZB?v%mFEAOE$F|Kle-@$sL$@ci>Xecrhj%;tu9p0VBX;15gd^9*OUC*Wz(BiTsA z>69iT^iy-p^Q`q9Xzu8pLb4Gh%&x;dRh8bkZ!u$<_J)I9AhsMYI@L-63poU0AL!I- zP17i1_GD36ApxFQQZIGxdjfho98osD@;41~Hgy(f#f|0MYmc-4`%>MzA{=x;0@Z1! zXN=Sx=nP~us1!tUn&eoF6a#%^OtpZhrE)&&ehdpiW3sokLdp^HItRE+TS|g0yX#gF zCr4)W714LNV|QveNQ_9WXVac0IG8pY%xp4Whh96Fx7{sw;T}7iX?rjqwC0=M+|e*$ zXLrIJTTGi>eC&n~U-8y=z3UrZ_6M*0_V<6_{SQ8N+pULpb~n>`7oKm=d)Bk<8^7h5 z{VN~!=yv$%5!Ea3l(Uk(%rL^;M)CnvPOu}aOt6s4DsZR4|dBkD++b_+?o@My9ilGo?~=tH`dyddKXt z6SIJSR#aS=C$NwW#>S7Xurnjq#79g!QTjkP`hEhCTD}?^ofopTr3}derAgcGB3iN; zTbfFBk`R##MdGm{X5^b7X0Vles9plqaBL^XH9rdd6`8V{Yx1%j)2esF^Nj80qRzMw zaMgUUu0vGto$Ex{u9P$aizLF4(pYJon)bfVr~t|A2JY)#P6mR3qonMf>tq9~JB##MhuH##u~~&Jf;*y03gp zV3pQqV9kW=oSSm39I(z-s21f{Dv%GVyR&-4WSs(IB4I4@B^S7uSSPC|?4VpZPPT}$ zkq1l`gHe!T=+ntAc{#@dVHTQDJ){e18h~z$Gyvs{Fdd)-3<1MrT=7=72X{L>K`4=b5*eO?dSayUaxE^C?!)W{zp_7~W%=xU};V$-p)k}=zIZX+2g zOXUp0^n?W*3J?e^Wp}g|EJzoP8(Dejb?~z=Qc@nCP#VMnCI%cV@C+k4V~c~}isV)c zys%`obxE?j8(K*&onUZsj5-nZoG>Uq)KJy#U7MvM+rct?YV&U8%n(dk5=^1SOd&Fe ztZ}eNpqxhrYaKm-$tyym->=djSj^Ed89{j!9n?*YP6jSO4XFg!+(O_o+bF_eC3i1F zzz{v1SnwIV+JrQYf2B7R$X?VlHr7q$s@HR6LdExh%5iUSus~lfK-@LUUL;gvay6qX za3I2{B>4@7Y)$F{4ifQ(#!pn9`9ex@-;%IuBE*JbLKQPB!rnChW+FrqsICUcg`Dsq zv*r8Pvasg2BKjJ41DIYAS|?I1SSeSu{~BQo#yaw)TZJdD5r%2Q^}^hBkuTs>W^1%_ z75M~4os4=WRz2talbo9t^IqR)G}u+O+F;7;1*V{rK&iI~CvGUF?u5acV;g}TGi-Ku zaA@x^4jtOV!I_h|>E@fx`I#5}+;{%Y@4V!DFvkN9pL1mIpMC%LO+WH)erP`L{EHKS zcZBCQlD!21-|T>5=>$?$*SG;kc2$~iq=cb5lJe|7nN7x{TQcOT;X_l90wI=}X-u4( zP*GpLYtD$N2OEo98*X)jd0IxC+&^t!{M*mxAHD1k+FRfG?)dX}zY}*HKeq4Tw;$S_ zjz9C+&wA-MJmVW){-h^f`!^R{c=3tNG|ldggM%uOAZvwKzjU78CH`va`%q`sw+x@{JN`IFcD>C=Ai_y6EK z-t!mly6=f&$M2cuI}f<>{&?XFUl7lF*0=Qg-S-M?b|h>c)@?-w#PktJQj_iH*pM3xK{nRh~{LlO*(Bfb|z=>lgar)#5oL;jzsQLl?+E8sN+K!<(0KvYt&H`5T*#d%D=_s-{m1aP0qV6$A z;F2JpsSKqI3E`%Kp#9Y=XgcWrnWTm#HNU~Cv`_85CAb+0Xn0n1iq2FdQeL>buC0aSF!S4(+0QD#zmyOe}{UXgEA7}sjd zRrpfhR{)<^ZeX=r`U6b0@PSX+k}_2|JVh38TsTxlC5i55A>5064`5XQmgG+HG2qqZx%=*`_)923~9XXc>u|h+SjHNsN=?y>!1iy zIzcLn1~Se%0KQitluAk9B5~y`1BPlJI3no@WXai6z^U@~0TB^mv`p*6s^U8TW3?EI zFfqlKM(aBMS+`OB(<>sHq4=Z)tW8>HK$dy|9J>t1)W|flwPi7ksyhgQ+Em1Q+=oCK zY=FCFPSCDHD6ER$`6~4x31%S>u4M@KL2NZAu(YZU-HN4DtHB1Ks|}X<5R^1CMgfeV zdT6VMOx{K{dB>u=@kZyrWg?nu&Vb5pkER^@L9{4xul2$8=OdLPt*PPx*g-215-7rP`2NA?Io5sj~f?#Tp7lyIFP4m|puV1M$vWs%TCK5UEd|EKNhX=p zIn9l-K(8~a_8;FV`ISXw1?@?4h|pLL-xR@KKYT0{_}tS#eey`|L^a9 z+rhTq_Yn_yQ2X`Y_&>J~f7qh}8)vP6-fhlot+jx$oF-(IW3dDYn#C-!M5!ds{!#9h ztemVm&t;hp*bwW8g@$UD;o8I>3 z%^$z=PwPv2>+9oyME^wF<=>{q?#5s!M<&ENL?Z-32|_qp$l=U;dp%(V15 zjkk&r0F|+hB8`}SrnDdc36acJwF5M2I!9X?y2#B8IVDz(jykJYIZiRwtY=pQ=`NLz zi?q-hX7R+zkre@EDyrx}rTn?I;lMUU_ei^OU&L4#B=QR2m<*?9RZf=r28!U?L{b{G zxe8m;0dk;ulLMy^KK&;|2AXfU%F4;Dy)|*v(;ZWrNPxBpQzPNoWA-zr_s_fW#v3nt z(;MG*&p&#_%bxqu8$R&3+i$!5?#+ynbdwxFQ$xpJqbB^Z5yb?6X z3`It?Z1c?81I>YOXK)v3Q>Gyt*#>7;SshquIP?qs+KPM&TQPLCl&l^dD4#hbFByB2 zWL?65=xLt);2;fc%E{7Ty}`U2lL0?;!wvYsANWE4^LM>t-aT~q{_lqRz}mmk+3Q4OFW= z+Q4e5=V1%rv_x0bl7I-P2(e+6#|{y7ba_##_ymiw^#XA{xF6>74Fg*ZG^NYySfnNKqgR)%7!AEX=mPkOw*0zc;R=&Pe02L7qjWaR?{Iy&%WQUyK z8*3?ejHvS%kZ~;stFH4wncYC}PB}Z4`N0y|j1E|KbSn^)m?K7Ov_SBBvyFRCDG7RZ zm1|WD3{kHI z2UHu{>NXMM1@P=4?SqUee77hWWUPnHjs?As=yp=9hmlTEHasB7y)LD(E)@WuZHe~N z!ZX4?2%(CMTMn^v$_HeTMOwz8$U|~13Fwb&7nvw>VV&{;tNt~GvC0<6g7%JVVnO6j zMuNVy$mUEks-_wb_0e%ODG0?)LuGvxC?%|us>9?5=?sK|NKxdA>pQu*RFqcq_)rq+ zqtscDQ0g&)@wG3j*e2kp*2WDaSUnTwa)4>0%h|#C}MS^=5r-7bQpfM9`gsFHruq8pJAMbQfsf#2aBBvwq{ z=Z)`Gd=1`4j;PB4Vnxav^#W3kYY7?_6^G)X1+0bRTt#>)FCQkb-xlz$UqXpDjKEI? zW-$u6Rck*p8&PkLGdGnB+%*6U6&VMXYWr3o(iFL93ac#j1h};2m=^E_qt{h@&=4FiQ+q=v;3ST=pJCQ8TZ(K+z||AcVX&$0jq4uZ^H$Di zwKlXSOXyDU&0x3M^BJ0{C8dLa)kTOnL{v1{6WyPef`s?cO8TE%2SbqWK<1>H3R(kF z4_Fs_DTkgZ3@(C4_QI+k!(dV{QalnIF9(`$NSwJduc`qpSXz(oSD`}9BQqIRsVHVD zSjM%`lrk`s3r53VjIuW$If15n5U>~|N%JOEm5FF@uqk7*eI!V_d24mhO!Ia-@0@c8 zdwYj*cy||Wu+M+tOBX!vxzGLIuD|~JA3k*C(B?6Ze9Y!ofBk>-%kOi)!g5n?qkChK zjD)3^4&I>VZRmhab*$+j<+9M&W*P88E&Pc9i}KRILg-AAlJU7xKLKf>)mV0BIb0K& z8OUIzKKO(=!wu-(+B16;Y0rJcU_;?{n78+M?d-L{`t>+?o=QTb`R}+ z=Bg{NdDB-v;jw@6)N7yk*+)J4Q8(ZH(o62#?Cy>4ndcb?+m3mAK#~fHgZ(WFyIMEc zlxBfAm`TjIVTXO*EzMG8ORe{wX2wX5_G{TPp=u6cV%Yk**402RWdc*@l+Kt)R7GG5 zuCrCqt6gF&&g7_d z;b6TU$&y0>0{5vr8BIA?UPV~iv_Z_0ZC2{Va0lr0Q0l4(oq@%w5@>CML%SQKQk2@X zQE}L@xHj|t!I6)A>SGst_^&^3&0F8`&aeLC*Sz-8U%2&_E3$7doi>Nhxz9Z=#nJQ5 zjcc#{I)C=FzZqBF?@C;F@kKKLi|pyfWHJj0^gS$7$;Zvj``XAy4|p{yU9J9c%#OGs zYJ=4jhK>cKTjgKsj9g|pbpfltoE7~~z$4OnpSw;aW{kDg0pK9e-}e{q-FfjZ{vuxe z%2(!goT^pj6{@;82>O}WjOas2p6obCsRZS1sZbATS0`?g#>jOf>F zl#&P34ot$`QqY8<+VpWd1gx`oUj;~_ob_O|lS@SX?UPZxzN%_o{mu(aGum(beF~S9 zBOZV?6%U&Uk!VsG)pbdMS@FKCUx?@+C~C%NY>!y-f;;~tZd1X$A{7$Klds}q+$@x* z*YioyFsJreECu~ECPf04{Jw6mN3|tmdqpqc6dki9(Iz>6;SXZ^&J`L(-W3_Mkfcx{ z!2(%avb1Yys+wQjM?#Wx2(%91O5!B6UsDzEw|YKEnm`jf!{-ok%?Hfo)f62j3s#`x1!`lNuyy z2U;%m2~>!0bcGOLD;0|)v8|dC30N2S4(&15dNq+pBmbUfXc}AbW#) zuR@5f*3?MF?=8<&fN>NQjaRkIf`UydDzkoXH#ji;gl7 za20WBdeHJ}=m1Gf!F$)|$FZm?&t8#WMG-0jV#=YmDsbQe*#fcbQ*MlAXuv8=$Nuz` zo{XrNaZFc-4jN8K>|dAkSZ(G+Srmq^3TXPpS5bA!6fOdwWjsp z0{<0x9?^dR=2V5#QIv5-1Td0JV3z`TqoAKBK(#TQT}Vw)0I;58qG7@W=7(A!Rq(I! z!67*r0e@A_Ux8#J$-(^gYBxB+8l7p41iu3W$^^8vPdLuZ&00tTGqpRkT0aD{)ymJT z5fn)n zB2+}5WQYK{?ztRWLsObb*%-hk?y08#Rx3<%2ZGg8)um(g+Z2E-R zMWRZE%(iiW`9z?lJ<)uE8!P_0b?Gv8$O1JgHy2Sjteh1@`>}#J^HD~Joane^z3ha&g&og z&sP&8CP>2m-Cz_yrVpVU9bxL)p)j>+9%NEzlk~TZL!3H_ik>I={LR7jYS^G<& z!)1o$STvonsDN_P0gO;&8wrc0Gl60i3nw1l-M=jD%e^x|{-BV_+51*_}p7Q}^ z`H_Lv8goW|A?Ps6u9_xZTr{Vwmjhc>ahd!!8^Rpvn^ zHeDRLlXuNwU>D#XGvE_2#JBQT($h?ejI`C!Rhs~SAtQ72932xveVW!vT6rxsijl(? z(WMoX1A~#_h>WQt7prXfNISOP&q@uJ+GfllyQDO8&c|xGhYgI%y;LMkn5+Hgi zVS=D1f?iJ)hz`J;q0fx?=8REHjuA#aKTV(jWL8u&9hY?8UO7epAg#=>_Lf-LC}QWK+c;wh!>N@JqBz`(Ipy+%e8GXd`i z0Up~LYad9)&Sz6lu%h$&H}m@y#Z+nhF7P{A)D1ulsY}57N&|YJTNU&xB5)aB5|V`Y z2ui;r4L%1tCCxxq`$3&+d|W=4YCaTTtrQH}ass+~&QdHy08o*@ifS{(MpEt?>mbhQ zF~gD=Ct_GnE~70K3bgAv0?$-~aII5VlQJqI1yJ2?xkfm5IBQSwc>|@^DK!`IeJV0P zBR~>?ft!-(^IY~?bHZ(wm4;DgRVwW_RK!x~G09;v*^4S1*XMY)$Z^L^d{}h=(gqNw zgQDlnBC`pWx$hl@SsfZ^C9C_4=Sm#_kuH^drSq^{m(0?hn9fP2Z%0&mg7!%+g=}e8 z)SB38?a;>!aC}+xpM+3W@VX9U1%Oecp^p2dI5Dtv+TmKrIx^B>N=twTtZRPw2*RVG zBi;!5nq>COFV;fJYNu90gF10|^w7YLxQ(u}07AAmP@YHq4mJQa!G*xEyX4*`Xvqfw zT_u8PEUhZ!ML@w7V0C>3SKuK~i;58Ip3G2P2^b+fhKCw>nNAWmeV@N9YNk6plB=&j@5Hp<&R4}Awa{*`;3aG zOOatBF&xZy91dSaYivX~F+6UJ!fH8+m;srt{LP6H^yGaK>k(WPV0M@y?Hn6|XI4fe zaMpJ==I;Ye=^6@*mrTFv3owFEzbi6=?`>G*@q*nAwq`yZ@}CXh2c~`EUHwH$Ct_ z|NM)7>|>w2@yVB6cFB?FKj+!_=l|-5`lXj#N>?{vk-b}n^+=!EW~9)JV}obyh)^yo z8N~>c7c;b5tM}Ar5;%)oDB&6$=ox8d@U^S}80VM)pheZJAr^K919=bWv1%W&9a zTjav^bf8DicIL#%cZwvFrUV1H}TGsEd=Z09XHtC?GC z@(xrzIh;}I8VI+p)>arqa536MfI3^{prlTp6g;$I6JsImv(!6KngRxG4hJhaL+v-s zlF=Fg@j9w1FOgQFiumy!#0aQBVIn<7|S`#gCB~gJ>~21kcT~FzWl!T$&F7PWQ?ak?q^~XiEV4X z!>M2hAv&t{Y6q$Dzq&5(sdD0I*a*5Rnq9vzaq( zYzEZ~CbEitK9woi`HaAZ#7}k>lnVmg-V>gT@|QZG!(ppb7lK@j!hcoNaG;(JDHb%Z zrA|p(0*R>(5-62JwLfHlGEB^f#x`I}0Xl)ith53eZ2*SqIX{Q-o}qvzDjKY+FB&T# zS6~~8L@Te{v|d0=7j-t(d86Y$kWwG$vw38ypaT9qI9G+ki^yb0Bpp7eIa}PCT!XI+Gg5jIVTj2iR*_+6vYFu?o{9-opS*8B>s!hp%$xaa^0L@PNY^QBqipvH1nE!FjJS{mM35VXOai*%H`lmPZ!W@tSUMj z^i9e!gvKEmQBBPmdu3Bbt=K7;1wz7wEw@VUy;Q$XN%?DiF0COeXIh|6<6jB>Ej!RQ zoO3Vrh{j2&32ax#F=(jNjU3?HTFKb?U#t9Uv7^mgd8#D`U+#}!w++&0q&+yL*bNxc zUWdpGC#bLIWy%bOLIEfTo1bwJYCgFR0aGhEMdp-s?apT^DO0r+bhX{A4hpr7QZXc( zCNR~2`-TdaHayU!T0H?hBgZZqW$-4V!?>oZ^&rf~nlv{>?$*~-p+oRqy}Vj*Ou|(( z(%bTyQ3=2)qa!tWLx2RyAO+oltagSC)>N-U_s*gzg*B>pqgH^z>6~JXwL$B=W?kD_ z`-fnhYp*GC$oUoVW2LZZtOp|11NSo9AU2s*b|H{zBYHON+(#s;d&H=8E@K@K zQPBWFcjlmr5QXNWL1Fc&C_zoE^H6eZVAc&jA!!E_7R{%rJ31n{&JG_v>btv#Vs~cPyV$4W4^Mr>> zx0QyZ`L5Gw`A>pYrp^TEq8GAw^+o`r`D`L#WX9>@XxspQ zH$GX+J#+GnJ7Cc;HySZ9$(R8m(af#&ZTg85C*y-3dY`@Jt#6sGyY7|v#HT*Jowo

    FWPZL!TYh3grO!2b529Y1+u@BP>Rj-?x{5*u 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ాxF& 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%0A&0ZT2< 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 TwEHw5|1DWbC5c8cld%5*I#Nq% literal 0 HcmV?d00001 diff --git a/assets/icons/ic-report-profit-loss.png b/assets/icons/ic-report-profit-loss.png new file mode 100644 index 0000000000000000000000000000000000000000..a24d838371ec75cab9d59dd8435a758893631fc0 GIT binary patch literal 162004 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 bcXz;5MRrf_7yHq`{w-NaC5c)wVBr4%a!Zug literal 0 HcmV?d00001 diff --git a/assets/icons/ic-report-purchase.png b/assets/icons/ic-report-purchase.png new file mode 100644 index 0000000000000000000000000000000000000000..3d97aa57f845bcd21c13c929caf9ff12c03b9008 GIT binary patch literal 155511 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

    ajw?{*WT@ax`ifSH7aiOn9 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 BH&_4w literal 0 HcmV?d00001 diff --git a/assets/icons/ic-report-sales.png b/assets/icons/ic-report-sales.png new file mode 100644 index 0000000000000000000000000000000000000000..11daa81762cf7d0a621eb85300bfed5ae17e1899 GIT binary patch literal 155443 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 Xz|00ucL0hoj=aVOj-+Y-y6UpN*n z;{q$YyF6NgEIHc&CvK9Npsn%{hxy-E*n&f)W$O@stf-e+VL z+`{NQ$kXXFjAS#yFEtI>!HKFpxQ5rtmWSUB*h5}z=l6my5ltGF~C zqWN}%66Nfe?q&#CcIDPBIqg#^eH?^&RF{(43xry&3z>05nYkwZQijXv zoWq-Fgp{6A`(s5cB$Sl$xFw?cuxLr(QxlZP|L zWx7KnozA~w558aP-tvw;&C%i4jlAlozohIJj{k8DoOb}X0V&?1@xdKa&Gu74R@+Hs zXmF@<=+F_PqCv&SI?e(i@}i5@WT#F|W}}P8iU%IrnLqcrH(({vuA&MYyX@lxJ_?tmxTzTZ>$6`e=lJ`ML)JBf?9{aV8!sBdV} zN!Y*V4hL3a_URo!13JW({Mx5oV>tyz@C1-SOuH7-3zS~Oe|r~X=U<6G5)c=JTqZgK zDJtRIM{PuWP(n>Mnim#|zoak`B>o37nV6uIOL?Q~31JCB=Hih~$Y z#i16v$Pm@xcv!(x=!9Exs4Yc_TG0D+9<1!YBF4DjsF%op%SM1))2qs)he$>KN(q7S zlsGyFZoCbRrj}qS?SJU?cxH&+)_O=Klz}}<^ueLeJ{R&xWriIr&82@tj;1UNYrIFF z#;C_9>hp**KOwp-APt?DiR08~2+tI^P%9y}i7Ylnh7H8L$Dqs%Rk7)Hht)S{_?r35 z$us%!GiM5xx+rSvE~+dV87-!GIAQ60tOyQ1jE4Tngo0324wS=~{@=<_GPx5+yxos? zs0w@P!PFO^*04*5+7_~W-O%Zo&$Qn4r&BYv`oCYY_sGq>@QfH^FC5>v2FmLG#uNPa zQeq&{(6+2y{af9+X<7s(!Pg8E!-KsCx9{NnHPB=W^YEoN&EPpVToVB9ZZP`~9cIdy zFY~Bh$AJ+*hMTr*$&MaA%!;w&#qNVgSg8>3=22Yu<&iwR*Cm6)mFD`D*_q{wv+CN5 zv+gO{5T6|9Ob4sY&K1?UxxAR;<>h>rHB|V7xykjSG3G1N@c5(+IUV=p>mJ_B;Q)5{ z{5g)W;dF^Siq!x0D#{x{DQ4lGFdJ#ym+90$O+8egMQE+5A=61|E&{45G)od{DuEW7 zBPt1M>?Rp$Fi);5F_I7>=0~zL9&wH|L?lQMG=)K|j|?ND5R9z-$3r(ZDyQ;SL3|G9 zfEbE0r;s$IU!b-$FjGcI;}m%;kcA&84G%^7*Dz0dD4BBd^)<;&Vp{J)5`lt*-lu~M z?0IM>u&~&P6y?d5L-3AE1ks5mJPyZY#BGM?{4qCSiC-$-$%l5M{ENo}85w2zxQ^d+ zsYd)OqZXp=p1Dzq1!;|3VCYRsnsn_Qx?3Pte;z5zg)0IVitlwl>rhP~Eh(aX84{%k zMts{)oH;eglWs3RGdJBkb?iibVDEu^_nv*lo=5lQBdyuWY1R{W_)ObltR#&$@&H$2 zIWP6Qm0G)5skRtLZ?|f!r4O((H5^+k=o~WEKjNEyT2*(DXC?PW0?gfKsXIa+QmJ)# zz|4!cch)X$&AjU^UzvLE&0C|47W19&tozr$zi|Hg8lb73-vjfACO4jS@8;cBOJnHp zdAma#on|winwh~ueYB-r*_t^vZMxJ)W7Z7k7q9ow;S;HqI-g5l2h&`Smp;l^Br^#a zn{4L$_8lN4&8!Xh1{)e3wzzW9aAoh%^6t*@6cDLSRFO7*-*? z$~xojA0W)==p&ErnG-0m0 zNESqK4I9EKBAP%Rf0T$o@)5?AtS?()A^*t4V3LOFLOuGqMA;%_0lzp(1{O^2Wf-T0 zh#-|ItDjkciAU&1e#n*h%hnvqJ}aeHX`wUI#St_JuRNtjB41y4aF|gkhW>g4I9?LG zxj!dKNfuoFi9x1PE8d@tM>k0}gU=p)*S!oeYZED9*%E?BgcG%(pF}1d`bZ*2s(ywf zuzdudAV_8BIWpQeAWR#f5zXoN#DfJ+Hd{a)+Pgdd;NN{R`@+tH#RQHMOL|gZvc;Up zfW)*<6=|3%QA28%Umh2sa~M2TyKPaS)G~rF#K*NA0zznJbl5JP*sWCudZT&e=>x6# z?UV0#^F5RAd-vv?b;SLX*@feu)<6QEe>(n~65|$2PyN9kJXo)0lVB$A3h{WEKUg0a zEFRsl+dP~fK!Xx6d&ThZV76ppEMDM^j*e!xfB8OIsh(CmpYa@4z?i07*naRAL6O$TsgZzJNK{r=xE%VE|4*vA=i5(PI7c zDxfAsNK8ny=!LWf#WQ*25{ykB006xf;~in?z`Zogdw~(Vkrfu9%m#96SV$cdVKBsm zV+%vA2clppb-=I*ps@kc!h&g2u)0q z!%B=iEP|ZNL-5o36N;9BL15)uGLQ5=F<{F;%R>a0NeA%YR&)q@(>Qo*uyQB7v`EG) z@xoA$yrMvsz=Io9ObW~3FFbkOU~y81AcHudPyZv}+(Mnb?&r5a+D}>LmN+H%#B1p- zM~b#Qs@V+tJd>0}K$5~j(`5o>m%bE{iq^)|uY+dXp)xoE&t?NP&7IMXB}-VZpC`~S zJ-jO)YBwB2;q5szB6e^zxmT24t(zXHsXSjFa2o^XCFn;Qltot&ouip@kcNhZH6k64 zJj@WrXluCX^Y?7{8Zqal-yQ8m8Za72x!^OVcC zWoM?RVwTGG?K>I9<|PeJyM5n|_b$g?e^z$j*ks;3dc4wPK5vu9y8`~a z#B=g2zq|PXO407#DfA5s*G4#pQ%<8{KJJx`N>;23hq<{ zm(rA{#5YA68l=j}V-9pkK{}Nc3}hAmyeKo}G8iIAUni-YkfIK+~O6B7GWO^$^_n1FARZLGjv@P%Wl@Ewa}*xhgK&-V@G8> zz_>AF1h)}JPikv2Po=i&<$pXuMwQwjAQ+iN*T7Ce^}*3%xR(DwZR*&GGjIKqe`H~; zfeT~g{c8N$vyJ7vA0N2lifA7fuUP!q=JYgc#<2<;`ymdqnAPq*d!p6aBI0c|jYQ(> zZ@8w%*Oq*g!>0k$^Vu}(fE%92s(`*j$%^aQ$)`Ebr}TXKJH>Rn$um=YeFhaXP3Q+~ zDfI7^?B!c7E{2|QefFW}z98$~aW^k0c~{8{mtKqIXj!}p1dkV#bO27f!&6~5L;QH! z8*Meo!@cb+L`b+L$d!kHNKAA@QJOH`h_=c1(G8luzU5=QJdl$k#TdqIgaiTinhMwa z>eWJxy_E(V43cM*5(b&?oVbN28YsCCuz&?|{r|G}=FzrYb)D~Ad+*cVbIv`tN$$-} zAcO>vMx+xJMUY0M&@mLj($abk^#STDtD$&m>8qj;6|f4WQ3M4F9BQG|7&?3^4hyg; zr4<4aLP%~BlHA;TbNh2oyU#v*z0c=6*S?9?e=osdz;({vd#&00=5PMG`J3&UKo_cN zmYn*VHH*KNOT!Xx*W#_8dI-`I*Pf6SNHW6Bc`0*3#o^Lrg6vy!ZPy@23dj+vcfzB}PNHAxO<56*M7Gk87HTNG^if?s- z&6|WOYXV1KNT}2VPcz9PXX8Od@IL5U@$0CI2;=C(5#lon!|@PE*wlCy-Ctaoedgxf zx38an`&*w&>A3)WsaBJ)FW29RLHVN9|Gvb&Y-Ra9o^gzu>?^g#gPEyv?BwwbV`v$e zBBU9Ip$NpmgZrD=*#Yks+-_&tG4`p?d@izMx2^6+Da{=3!Cai@c-avzi(q`_1Ap;X zsZVvo5eTdg8|hfLyVN}W@`bYTq8GN;uN*4nrW+6x#KiL+hU`PY`_{W2VaT;S+A_G)dew9e>4bG=VX+}vL)k?hSla4Qo0?RxbUavF<6+UUK zQ!UHUaTO@wx;&jn6741q&^wB-61q|igWs184~ zY4`*v3aJ-?svuVa`4&(@YPLya(%9}^x-7QV;)d0UOr=v#V0IYmkB+nuJgb*f%^WY@g%$U4^#TV0vq<22p0;dF1 zOLTu#B@Av4Q!1#BK+NC}G)6k^vT#I!j}}{1kd8`Du))JgHq((8ULdZf0bO#DmM?XalEj-@h7Xl{7WBeKgfYuRip*A)hf z_m(xOnM&Wm0x??!)A*UtG${xsY=S!csAZ-0lXA^OgtjzS&EqX8YF6u;I$z4e)~K3* zBygERC$vv*o_r*&7j~>du5F_T37Q{>WyydLcz21vX&h_j3K-LL4aTMV8P-MThi7PZ zZx2nvOGIt$yNht7CfOh;7A!%k*Oao?3Pt zNO8rJpS-a+*FUk%_Fb3y!8q2U4BAgI0g2sFhCoO^p(6Cur#z`WbAFwz%QNNp$&(1n zPTjNu){}ny)1LA~-b%93ySTN{eC6XG84wDhgDeUQv)qbxuRj{~zix4+9Qyw6D!1eL zub*}7eTvZ*{AvclIr@-c6q=4*UMY(xYs{1~M^(Txs^Aa{7xzN`JJ&?fYD9`Oq0$&M z6iO~tAU8F0Zo3FjC2h53HAxgkfPSh@c2L5#n#gYwCa?KXBk#2?mL% z)ihimEa}W6inWF*XOfgCZj;=^DcHOuuCT&4o-aLi5&DI(pvf+CQB~pu<=j^g?(!v8 za2A~;LB-(ubScV201$|f^5MHnWgQGR24=EG10x4$=VJ{bJV)}t>LZ- zCxBydHKfF5sDvAPmV979Y&J%lrVJOH%}$o7d&JAb!#KpBCL7V@zpn-7UzrIw7xinN zRY;nJeg;R}bS8exSh3Sfg{mBs7Z`JL^K6Ok1hbOB(gz_lLoN)b^3n^slKA?btwVao z$ae=*EPj|Sd$xw}+4|KtzyF^mHmjb<{(q3m7ny#=;@-~==a!nyxs}oGU}n5$-%|7G zPu>875gc~qX~H#~+?2;Y>e{k6Gu0fw^K{w1xYeFHdjYmH`ze!SvPwC8_)z;aHoiRl z$xmsIFkupI8SBT)7AR2+M>wOxkWn@S}{J`#)^E0$H9V{m+`>Ma7D%zDEUh(zM8K$pib zMA#hls>U~IyAXc_mH+%?&`{Xbh5$l5$P+^p=SP6ap(~}6)j|AL+a!1zGrvs6Um&zgT(!II5 z0xE32;fCbzt{M!ud&6`e6PwD{hcqiSiwxoN8*%_WQqw(avw>gv>)9_rs-!nOd4x)7 z-cRt%LyZ-5cbVevT?9??{QX$L8kgS~Wu>KZlVB(co|8-_yd+6^Aht&G>rL8p(*z*q z(Uo4NN0b9rhG|t7Jg;mTs-q+HPIZ+%wK$d@4}snD6cC#X3J{-FWeOw_>IF#S zXQ!PYF$Uk`MQJTu6VAec;V?a3hG)hoGF-sXVi_=Fn4YK7Z?;IwCL?<4q}}cH*M|e% zJvUu8cL%*44l^C@Okw1knbFQO#`~7G*WdN)PoQ#Nw%5Hv{zWE%y6%fi502M9v9PkN z+)N>Y&GP)7_U!6v+2(zLC`U%yqUS`Y7d)$Z^jAD8gD|)c5q*`7CcR25G6~biSMOge|LXP0I zQ50U@Kr@e!Io<=h_FpmnA`Z3)=1!-_dI=F!4Uh>tMamD^s;i?;dx1*ziSpzZ;$Q!( z`l)UzsaO3D^gKJ#XuLVN)551xftUz#vcOLpu1UItLJH_|sNVj`wR2E7r3jx7g;jWFO2!)Q zw*&|xAxLtOLbO7*dh6rl;(k({N#LdE39Z1eyDD|4YHAcL;_ONT!B}=@oG)P(@(J7c zr1D+>=BM%3v&Lx-#x6>AzA<6sfJ*UstaJ{uvEQMA#i&CZcD3nVOK-k~WIWyG;Gdx8i6!{wUZ zY#!#^6MPK1a#znb&FQcH>T(P#JGHt-!!a7?C9+IrvQ@riL|j1=SL8}<0tUl`_BJ`n z&;X=}!4)lCC&Ah~jXj4+BXz?N3(aV4*CivBoJCoF5AuYYCV2Hm+q>2WIT1HoELjVah9RwMl0)$~< z{?+=_e1QVN#dwmXR+6R91W>n0@u88>q^r=y-{(sgPnK9~pLhXWN)T-P$_?=pX_+Rd z!8NIT)qLh@^4sN-yvEdiLq#nhLbAy-W(@{p)VZrJ(Pm5?RShH)`IAn;x5f!MAPCiz zMy?sYu7zd5Uc>6(hBh{=^b`ooX=)5q>$mf4X~+!CizL_TW*0q^ z{bUk1ln@-~x=KCEx1o@Rs%Y-5f_07MCQ{7t`u!G(>^n-)W8aDuwA`4$W}yCPq22!R zwYR?c10?>kyHv=3u9C9-#4?LvSqKpn&yTMp>S} ze37=xlr+{QamME%=tVeuoLm*2PZhXOs`({VU`pg_PbaxdX`6p9oJwEfZDss1GORMD zHtGqgh+7s(u($-e4&~nTMg;sbK@;FBKr6OF1YQ|{p@?804QsDmL6UL*qJIIb!- zquP#vOZyOV_@2zlFlHV}&;(X{gQP_KSXqJ@F4H&zhpxM}+(Dz!+gS6c3nYQz5v0?T zPB?B>k%=FnaB+uZV&_4vYLgnA^D^{?I^ZDXJxC-hQk&;mr`QG%s;Ug`xfFe}2%6^_ z*YSg5yX?dY(;rnJH)hhPb1CDw;mb5!g5b_z&6R=mv6=;-7?W>R%UINilqy-$O5)&F zG1b^t;OIE_m+yh)hk`HJC8SsfO^F*Q)jD=gzJ zO0IeDWo5d`cR{ISzC<=zy9Q3nK~Sn1yepP9U#Mb%F+Pb7_^ur8Q@cwgci{m>B#)JU zq@o=D^)@=Z4HA)>r(;s`5CTN6OO>#4xhlNwA@XAk2&Qu0B(4&DlEZQ)F`)E%*S3AybvrTCgsWG$ELeCbCsyc>yhnF?`^a6@U(Mtr`Nx-*xL$&$;pF zirKA;x2(VQt%p z%TD$7%+IwaPn~ngr+z1lQ8u)q(F1tHk;7PXH)$$|HoTe#rINmyD-Y#(Bn!URv2j?c zk&Dd5!t;PgO*5%|?ea>y&Sd7+)|xV8W{b5jgpK8d1Obczar%=erQRov3g`3Cl6WCz zSaS`!50_L_88aYWf&!R-f4l)Wg@|95jNjD2{)2(3fRTg>DuB(a{#9BeLx6>GwTuAu z7X0f4mDEgw#BqX`Wpwuf<;vFlia&8`8}St>vn8=kl8_Q^+p5FmQ!PD31(tM+7Iq~< zH4A|nmXzkpcC}_RM=C{>VWg2ZDKY^(CyChAf0HF)QfYNUgqqPLTp=atE4G1<+}uT6 zs^Jc8$S-k}IIc^y%cBxzpxOL2#oxg^;p9n*nm4Fbk?5LA1)-u<^8+XJ17LN1D`;@7 z=z)Z#Q3=?V;%ceVKM~dUjbMbaL7s%23?r68GOfN(<(@!8Lv5!#2B|pPBAH``p`zsS zBCS5O_2P>zDJ91`MyWhI*h!gq!z@1(Z%J885{<4X+XNL9cJl))q1UPlJ46dIQi7Po zC&G*bz*@DRj0|2@?MtnNY6=PnWlbBu0~>&!*JtxjQ})m9Zh!vtyWVvqRr(VD>Qvy1 zSIZmN23!8@{kJTyU1;0=`^IJMLb-D7?0DAImS$SfT5Sy?d#n~DhOkjr=_7&)*RpmM!>#EzzjxEYqJOdWbe zvrU3A=Uw}@D1=G_%8dDl`5Rq%0`M&C<^f$uW~IBvIG3w z6A{Um>LHv?mZKy*iK22T#9&MEfUsiJk_VeDfp90DDT)A6StBw^1^<$dA|_cTXap~F zbP0^NzJvrjVThUlOj5B=;u>H|LdCz9K0(R)7*@gE+r1AeR8jp6Xwm_rvzK`gceB@8 zaT8cjS=ina5@pY=$@t3^Y(tW&%)wDuhE+JE6n@PyLAr}qdQ6+tVNES9nQNKk6Zc3} zg(xPHKUXk;a*`0XT69pmFaJ90P1$COVAe!nMHepj^1zG~g``b@h+9|J&LoDKM0;XQ z1yXBj@e@XxrGu6HDK}Wv0ubu797wT+akAVfvxcB&Q==UvHSpztLzA_I`6TXd_2SW6x9XJ~wOW$o;jg%Q6b25{m5zg#wW;C+Am$>p;r_D%0y zc3anIc52Wb9B;ta^`V`-lppG##>M(pawKPpMwTlmf1-|p%_k+))INjkz1jvsDI$#~36qxm61;opinV^m z8e_>~s|~XZLTX0B)94x4<*&3+>1&eYBcoYNmU>;PUTq+FB%=Dt=HqEnKhWS$m(gEK zsbzVWTi_FH@_?>wFXX={;W6}Dv>tu^2V_!XY?sg2sk+k9G6;>a3lVO}a-h#qaZ+KR&zR!RDQKR{pF^82*Pfv~7jWb*2 zH=p{v9%`vYqggI^)Ts3MJXPH-nBP2>10_B7xY(@~A z%OH^)L~;}>?)Xy#ST>>%B07V?l*h`ub(kR(&OgCu?*aIAPSG%8v$*9UgYX?trx$12 z?b)fa?fhg{V|1`80@t5VYuiTt_r4P5G_(Gk%)h#;=+ z<&{A4AKLOm5uhjK7##y&drzs7o`b_<##3*lgbsuWJ1#gUlDCKwAcP>toz*l%vc!T{ zTSgL6cvT1{vCo&l8pC%d8Iv-)^fguTOO`G)bq5?H#Yo$|@N3bg_CJzmj!E>Xgh_ z!MOZs5&9)VU2CCKaD1$nXp2(vBeT# zP>AJxWTHqi%NSPz>j7y|p)0;J@?e!B;Iac$B!W5zuk>%ipCGBwGEGV-kN~U!SIz<^ zFe6Ju`X^(BEk~JAOIw>YFbzhVGhNDHVdwOTV?gFC=`YP|B2Euj?IyJ)VnrklJ(_0a?c$A*g5xZB1u;rBgVCOzZt3lm z-V8P4cu*4&MS4)h;PKMTc0gQ@U2ev67KZxG${WL`R9@P?Y2eTd(t~m)qM=>nJ<_NS z21IzA@R)aZ);eGo0Kk7EUhH_~O-n2Z;(Y$RVi@?8(dP?TV>WyE{!d9_RncEN@8hf% z@qHR026llyIccy8D!-NhUfP4Bs+B0dX@D1D$^dPYZkg}r^cAT1WO9>um0l|Ih{%ja zNCAhMjoHvO=J2$Z{Q z*MtF>sG6E+eNNI?m_o^Wo^5>0sc{r(Ke-}NxvTUR8!iZB5=Ar5+|}ZJN@#rVL^sWr zEj7iEN5XnJ%5IXpbOq&5zsL#g97lv+mF}R714KF~PXb~c?v$d$1fXUe*|v36w>89J zU8N*Q*5=(gOxtLYqb$HGH4;E##ExS*)H92*E+IkudFu#)l2f6pc4&Zu^Cx<@z{y%Egwt4IP9QuYrvSoc+g7&t`)vG7lHFV`7))Th$ zd5=0f?x)#u`7YSu`;x({XaM(^l zF4R0Cb&eM$_t{xF?$7$3!`}92)Qs_Dckui(V(s2dg@pzH%fjj?`*8?oHOw)9ijAU5 zdAW@Yilkx}(dG`UV!R0jScip}kW)-+PG!(11v26(Q98i+6>Nk%ftV$qla!2%*Z1^{ zP_SLzBf8u2;h=MR8tBlFL3=mXX#~h1K4?_jn&{dtrr(7?`0K2qO#3JK9AI?3iDM|F zT^9A)cV>yOh(HxSBTB7a8mDr}6Cn(y(i0ra%u+U=Syn~O&C=pekAYdH=4a#$fI@9)p_o-B zfo2>@c}ev`n6UN|o2i_9?y4T%8B{OsfG1J7Ov61S=q@OW&1Rmk9j&h?OdDC7gBZ<8 zLi5$!NIW?-zEz&?g&cf&Bpq~7%;KtAJkkN(s2)NUx#E_BpyUpWvm_f@8dSLnaPoGd zWYr*yiJ*#|NJzty5r$b}MZrQL6_oZ_9LR4;Dln1eap*&}nj|Fy8d?=w@Ccg{i}FU#4q1Vv@e~z2Yd)c(wzU`pZxaT zQ>PZTR*vk>ZnN-SIY9b$+Z`qd2fb_Wxw9Q_ZT2o;8J5{L0O?WkUKz5^nz!)ag2N+y zGjrjzxh@cMf(pYS!d+I#@=vEu;3!@(q7UB{aaoF-z;E4?YdQ*BGRT&VsNK?FE0kI0j>cz#jQ%4aK^+`BS3av#Vl88@t zqX2sa!JvgaN7YPVIwO%bKIWrXZT*uYc@@&y}Mucs_3$I>)Jt zGre7uohV>PIB@08VE_R@(v&4wwMpAa*NEXGRREHMai^uJJ;gyVRA?7Zlx~RnrfKG! zfn8PvVWUwMDC1UX&-}-SW=M$_y=Zj#!{p-OPc<`m=GH&$18<3s(bjN4P>gTGL^ge2 z_)V=rmIKD<{ZbgkX=7=-(_r+#d{ z?v;I4;2g|(C=&G{fbw{qZ`QT9Ih zF}nvI`ve;xfMU@UG0LWDV5@^kQB+nQW%gE@T6~oO9%_K3B&|q$o69Op?(-YlLyi<- zo6wZI-tjBV>c9He<(l{XNm+RIGdcQrn->p*H`TgybvOWS5-13%NoisV-#Rq>L2F`1 zBTY~+O9Kgl>5!2{whhh`HFJo12UZTkdSM}f0ZK7SceR)Z02yJrDF(h`~yA`QTv zN8VDQL0KA)f8@;D-ux^3U-Ez5aEW$b0yhu10l(w5uf1a7kAC+>Pdf6tk7rN=%6JVp2(rboskAk>@K3?4KX{^YkS zUX;1=ZHD@2(0!gJ_A0Tqo;nA2{@UBh)Q|jVc?fAQeDgP#nPVqQ|Ij`-&6tn}nZyzc z(kgX=B~TxD>`Ky>hj2zDr78y5WVSwwdS)LNgt^7#cfg%~4*eKdNN!InOl6T2ehoq` z^vRjL;MoUs!wwOEkW45jGZh3bYD2N=rXPz0fuV6yj>dkx#k- zI$A;ywp7Q>@5&5zhS-LS0Sy*#A{oM`1=987ywRntoj+%e?hwPgRgs1FAitFP2lSe| z{=**_z?k9mG>4mvdAU1-l8lb(RQ51{yLdtiYoqe86L*yxmsfBq7~u8~gSocOS>Z4_ zLjnEi+Ra6Pob0f_HN^FtvTqAZaKbU7Y-mRwZ~&3VNSDHiNWyp7EyoomOtZ=t<4^4N z-FK8jYZu$$!hXFcfc1Lp$t**6rs=`rnIg!FgzXM}@Ca?$8d8<2AbR0QP^X{?r9V&oolkNQIPDc`suRrnm>C|*r~^aF8X;hS2yoC-rC3esh!pIF!;NDoo(hdl z4D902c~R}7H#(x}~&BPC3$-cXOf7?hT=d2PbL; zZA1mmN_BP|_*j}*U(sug$RvK05TkPt%vTdHBT{E}My z0T#(6Yks_)RJB%^q7q{1!dE|kUd$IGqP z9VrjF?f7p0z#iUN107u$i-?jPz+hr+{{98f8eFLkPdF7qhKns;LYB!wH5py80Fg`? zFa$^as_PUrlCM@>x+{}CJ9>(aoN#tpw;l6eMFSGq;i+|?R1~xwP7e464yFC;%$hp1%Bce zKHJ>*9>ExG$QWes)*y9I~w&sAJtuz0a-e&pk9FDi2F@B_u*YJS_?EMaduH6)X(8BH=Ap6{dQhBnoAc5l65XMuH-k2>=&uT$G8# zrsArJft}2FU=;M1|K=wPuclyQ_@LR^^+*GAKobRk=k-n`Gr| zru7s+g!-p*9)>_KG@W6x;3;P0M)IW*vjtW|gej=kFzQXk#?8X?e7S10+uZt}e!98l zWj{2|K#+vAepX%FE#LoG9SNe;7-49QB&`oT@|zp)2m%)hHYN%B$kuLusyDp#wsQ6d zf3SVrV73`8E*0JuNmpQ{J+gMbIrjJ`^sl-7Cfp&gLH2|Bgv}NVz;Z4qwKjk!_SR19m!P`1*()R*Y~5J{*7}UQT0;nA}4eMl26pd&}Dk8|e!Z zHF#@sAECzR>wQggCipHBmrAODnB3I$1VB@^*4HB;idP7yG*e4stMK?-Z%NW!RyyLG zUo23)1kXQYx)hyzRD-+*23CG}isoeU#?F3QKK^@uP!?zVboZw*wB$&EAQW)u2i%3p}T-7-8;TRjw`7%j^k#+-F?6JxdVc5Z>8v#&C1T7#2q1}Lk%m{u>JDVo?I z3)%IyY1~s6q${Np!oSwt8&~vC3~qEjWni?aFkH2z0yC5yiRGOFKx2hc{Qq%Tr)RhU z6^8emZ14HYPc&nQ;rs#uRY^?=AlK1bq<9MPjo<=PAL~OxCSR4iR!LrYA*>khGCqHy zocOA*C|Agm~LJhxH~+L=r3jn?8091dg9_vIwH#=&2Sn41bM3f|O zjr5fo+}Ig|%G?p{PX&s9re<1{X#^56CLrckhf5|o2Cw`?p@pw6W(i46B(1e9p>2}I*ZvMod`BP7EVkzqu)OD_O~xmsR#WPJM=)*;@GQSebt_m_dI2^XCD)f zb5pp5z1|v=E*m>#w2t?-$%xAO7H5$_=&kYY;oI(LzxC9~aew`uW?gS~FlbMoKC}Dz zCp5AMRO z^#a6V9I1{=Jgbi{pJ*tlz%D-BNF$}|g#*s41+`?jgry+nW2qs*EE55LZ2;{UytfG= z7K&(;B?3}}hhA-w9SZpX%L$bQmc_4rI?aaLIhaz3E2cXZ`vJW%NJ(N==T^+^$3_hk zhGk*p5eh%gFy0x;yyaE@H|;x^r(u^p7!p2VQ^!6Y0)ZcmR7EI!(ymTn2G77 zZWFe3;zarE{=H@P;x=!tI%GpqhA9uGP*Ij_mf4y4GW}=2S5Ca{7wInvkWXi(yPt@Y z2pE-Lep0ka5k-4YZnLnVU6}1N4UE~vU4D9zFWM1q(IeAt4zVL###%c$MmVXwEeq}MP$@Ug!s z2cGw=vTF}9jqY45m5hx>`h_a>4P(CTDqaG;yoon)_5}7DErG-gE0wzhiNGll|lH`%rYEq~n zLAn|kCHf(~cYOWRIaRT=m(9$wQge&-?2uu1+xiA3Woi1nBt51bj8z0e0mO$tRfAu9 zGww{@rmY%QEz!GfSo7`BbTjYzXuWNnBreT=3;}m~+^m`>0)_z)n&Z_|4y`X)u@UGK z>A7esVnD%!h6E}&HVygZrLGc~07^GpAdnTGm?i1rh-D##!KD%^UW>`~uAs8XM|999(BDPk`g_QGu9QwOC^|Yf+Mgs6jB2~)^y|}2r7^?Jyk@DTC;Eo z+CW#hsxM_>iWiKpX(>vUNOHiqJwr4|Pd?zlIxAy!M2(_B18|_7PVkFT8X&>g z+G^xUB&te;3{zsMuS%*Q@AgM?Q#1Ro-r4+NlE2YB57z4eGvI?S9R03lVLn~KW@`hs zXmarT6a>3LFa@jFv(;siu(W#*^%g$)p|btePb#Cs``WU)+D>h6Hh=KPf7!h3B`+G! z&doLJt7|Rq=Ic!{q=FFpdM30J&eEzfpw21*IU^h8EPR&JI&h<*@yLV{#=5iRz3t8a z^V4Pf$G*QDXlC23*#*{pvksi}?krQfcn?SwCEUy^H-H8#tCn#LFdP^RUi?5(;48$Y zj=)ucM4CHstMZ2YL^cx($VfYR$uCl%hSltzI^oftBKbPjZMEmy03Gna$Pl zl@~7dzUSJ}7p>e~Y>dcZZB}GeJu$#6T2~;xv0? zm#8%tDRdgQ3jY_MKIW_C4W;a$vi7B2C4;)IponhetG=_|uVFo2-XgXtP4&_oY;pW! zQ_~w$Vhl^X179aeg-*?AowYLQ6_bX+b0YxD)JQW;)SWztG}JcORU&3cvbyan5jHPU z$wanyuItaJ{$)J-iVhqB)t!RPirME+OEGH(v3FE}crg`>iy0kUdK|0J?xM?g@{itE zj=b>OZP-n~s8CHO%Xm(GxXXPPMsSCaMDw5c%2zFk!zP1vm(4<-;EbR{yQAL1-YYYa zo|hJw8ktK5HuO*@l!$g|YHxdhM*H?}eO8%2cA`vOc906AQwSqTQZ#ugB2={oP&iaW z;_`u_kTN&~;nGY14;_~H9k)pg@?!1=vogE7{yL!ilL0^d%Ab7H;QxK!aXEJwQG9FWCv0+Vxm!*gBQ*845r6@7kDW0G^Q9|borym*E>`x5s4?Xd-6xy4akJ#E8-fHp&`EUCI6=P zD1h(Z!!XIk^|G*c4of37OpHJafoCn6QqK4XVWAstn>PS^w1`p&YXbFK7w z>(Tj_es|gPgeUdZ=+2KAk3F|~q3qstbK#XqWw^OkcD9CWP~2#SY_T4X7#?G_$g%Sy z<{o#@!k;gg(oT z$n)%woMx5M663&3s+Bc1Db2Cfl!m;Yw_;N{&BZi)AF?DunVQAywoLjh_omxrDAF5l zmZR?UX$LfF-~?keVHzpN?ltL4w8^x`Wftx*S>Ddf%ryJhz%!VeDtqSU+EXW1%fX9V z&8L6#hszZ&{5JeIdLz)9tQ}*dd-xSk!1{I1hI^ljoA4P*AjCMFZkuJ_!;J@5%F1xN zx48dGkg{EO-3`2@04E$}YiK3Wxaev%Q%i@-kqalv?bkh|Jo5A^!)5Gr)o6AYO$zOP z1)<`_&e>y85VfIpDw$_eKKs!`Wki$fWNfje^4x#KB zd$EQZ8rYk6yRl14>e>1b0c0Bs?kQe60cv5oH*@A!fB6UZzwAffUJH8ged|cw?`wS5 zssCe|7I&8o7y5Ua2IwQ<_<@2BUPEp}kUvOBGfWHL-*>qAio5S>U;ImNEPwivmo&88bhq%qbCNpD{588;g)J4AS573B*4 zTTFy(gJ1T$w(-Os_vpv8cZ1r7i_3N~3>XB)c^Q2bLu63AuseEmtbSpb7~Uha00xK^ z!Rny`!M`e^*-VlvVy2LrBLx#&WiLrOF;sA@JkZprE~_xSH@n|TSU{Q53pHj8zCO@M z{pP!x!;8!jY^>*9p4-^8;vy7<6cS`-5+y+wT_OmjA#i{xEea2spVX|l6MnpnpS*Da zuJxOJuX%&+c-iMj6gc6%TI>YFVADNgSsVxf*v=M7aeHvO`@^PLef{gpnOFYIc>lhA zy)r*n7WXb_BuwLcr1k-elnyzLI$erQ1VRcRCm0OWlW9%PIy<(0vK;!gca{Ego&i@u zW5>~LZB#Y5v7&faI`CGK>Jc;TZcea~3p>5lSG=-3?05fLSzNiCf*qyTBEe`HE_P)` zc3j3vR<|kfXr+szNw)X$(W|d22a(~+mku#mZvO}AWmrmiO!o|IEkFth!Uj(KSSBzY zEbs3fyl|>~@-a^-U-jARv8^(@793LADtQSY`72HYgNL1C$%IW*XoFtd5{S!%(qi2E zdf_00R}Q<`&PobIjH48oco4)Ho`MKvV+}*DOFGT#=Lf#tI)=pi*)} zG!P7hw>nLx6f70zOZ-6!Z<>UX94Y`l5N#~%oWOqJNZ%Y|WzE_6Wz8u87>X)SSw>~Y zQf?E$KKsS3^~g}sBgJ= zP~e~gA5tW}Da_|bQ465_dY6>L4v+X@Lup zmI4AAftK3OK<#Wjwc;YelO~K(hHwnWv>o$myR|DWD^t_f05usR=`)V{lVFD}`4j?u zXgaB{N|air7L1wDi=kLYYjcpyxx1SMJm1-7PutrZj&}wZ#oS(g(!{6qz!j}Wk5v|8 ztDOyaU?FjDW!U&LR;B*(v(aVIwV8*0%2E73(LzUwcLMCh5%wKk>>^Zhtj{oL+ znrr^^Pr^s4T^r-z02rAdp<~BHP~5l#2db6jovQ%(`{i%H?pxZ+j~{O?-+KktR4b&o zS+h_J0P2b6R_PHVY$-ZM(U_kxr!`HFrxp(M=5PK~Ir`EcD_6h$jSh236$v9sX)Myr ziimI|fhZvdj36lH5mGCuy=Bzhen}Q=I?m;bh0S0dCxKa0OH~k<5L~je<`+H!)M`{x2VB4{QwEfBCj|_HOv(XUeCa z^X&eqCw@)2>fsMBYwVc3^@f|;58dwOVDl zultFdD8TymI|wv!$gSfi#vyh}9)bJ|!hhgk9r)#=_-F}I&)fh2KmbWZK~xN?5Ox9P zPy~}8Vw^MtC%eC1BGbY}RY_UQH$d#grl08>D$zq98^#%sPp>BfO)1;Pv`rl(5a;}&$0 zfl#STr~|=NPMHge(rwJ^>2{f0xbUHm;Rk~{YZPff>2YH`G0d7CCLZJRIYF5vXuDH6 zISiYMmkxBiPrL6rR%>i(nQ8X+=7g^Ih3JSz41m1}hBslNG(>ADk2LTDWHCBUa`WQU zsYCnI7LQ!4&VqDBPU9^#IX(gIQKl8O2)N2El>tXs+jEQV023NxP}mVUC>P%Gj%N4& z`HAt2DC)y1J7!8oZBgu@P!htg;=;YSgReG`RX#^w^Iyx_hu+s*y=R4>Dn=3#h(QK8 zYK>H+9^7Rz5L~%W>rC~Bm{~ya_JXN$`#av$ZhrswHFMwal!lQ&{Uzu?a>Yj!V%D)< zR8lelKP9--ihi?ZjX%ZBCLrsHG;hvZ1s@j>fJEpbd9~Y-A_nEi6SzQ_SWN3`$*Q0- z1!U?U_)!DskLUs0AjQyFNJ^wYf;m5wAR`O|J0zS8l}*wBVN`@nuUMK$I6Q|X;6mY; z15)XP2~I35(M|@*>DS;*u-axgwXyNv2!1G^2i+AG-yf`xm$GkaYjpty!m-6tu=yd9 zD6#2iK{bpjrW>vC@Ku;irt05XU|20o$fCrd!;Nuk8i0QyH`Afmbc-~i`0`>4Nspjqs4)!Xw z=sopoMG3j@R3K=QMSRs*;(}+ssG*gNxvZGlf?(BJw$C#RhSy9wTJ%J^_8fYsfYdA2 z1^vaK;yq=2KuM4aWYUaziXwh^Z`hYZg!A0P0K1G&BLm_z5M-c%B8%z_2-?X6iG;Z6wc9lzqm!4U#5|b8pv>Yyw=h-@MERU*4>6Q7K6Xnf zt7jQ*p`6G!)zkDripiC1lZWnC`i))tipAaj+w04@pZxdbIyMT87uYt0B1jsSxfNfss?6M*PB}3*ZYz!1&QzpGhgGkL(PVoBsSZt3|8~=Ex`iqCE$-SxLZvK|0`t z75Gwq{3(7v{Mxs)-}1{p$0?^6L5z@1raJ#1Fo|{Eufo zt2|-*B9oXiWePj!38|bySmsfFmK&D&wRL(X6;U`o};tLcH@4uW~{oxj~2_W8hm zi!E459bb$VYrRzm@zrG#nt=IX4L!Clo6I$V@Bq-5zMSbyJn~Jq=>jWJO0)cmmyv>k zah*|%OI7I_GjZXPg?@XPnlqyG%a}xDF&x8Mn2*mNEu$G*542@gY=|a@hQ%Qqj0C=q zjRyh&KCS`HPCjJBdi9v=*u8L(T<~IZy*F6OJ8EmaC_Oh5B(w{*A{J2TYfBdU9we7m z`aLE=cUbAs>^}&3hnZPk2IkB*Sr2^g73^Pli=o zlAKH)+y)U6C_||jeM4YDE1O}E#L!bH4y>{RepCI~X1+Pt?p;6A9J}&hVTBTo481LE z)DY4z>tm-zJ6%ggQ9ck;XNK6m)Hs@|lpz)Ty&fCpu#r`WMIu0Kq#1L4VZvxFghg zLR9b|r3`@S&{uL)Mu3JoVO;?QXn-SmV$MuDh_O7GDC$8HvXg7L-S(E|+PMq&{3*Gv z)|j0=robpfES{sc1M2d;*V zI*cfC*5AXeW@@(AE+br*@7>ovbb7ft(%Z{{O$)3nm@9{|T(hi#?$iC(pxyMA*E4vH zqqVRHX2CE=(-5q%PrfOI`1u=~TjlUKeq&jf8MLcAYjB^gJ?Rtz(LrxqBSA*Coj90o z_soBG0(h@LAx?^hGD8-wsuj6aVXV87;SZOwAOn!(>HP1HIr+)T`qFXkbI-7*c7fy7f)f=sC zl+kok=JxIbhP1G7zv{m@c#+pHd$08p@d@%yMDWn(jYiv^Z37SFY|bOkA_wiI`9+p& zdbvD9Xx*eBihVL3x~D%B;_c2^^Asl;k|WPj&GfK4AIPKuHcbc$5v+=qs-@xOfO(T? z+%O6gCp^`~1PqMSC7se5v;a#w1Q-%HB1K&xJz%XGRNj{WB!~f8P6i1Gjsj%(u^-(Xz_!ZvdYK?>n~ViJdGjm zmko^B$-n*tUN?g=!qeHe1&;tJycCK@zIARDsQvQHSH8Nr8wqH3Hyk)2v1t`!Z5|`t zj)6N7pG9isHp-3`?Zl2J>|-ozIo$G}0!U!Vkt*$bE;S($#3*RdB!hemSVgH`HEGS5 zQG)=7SdKvr?>^r4zHm?5yZlNEgw8fRCWD5-pN(cgI66oux)!0GU_v2e(Qb-z4$lQU zOhD6PO>uAEHB3-B{y-!Ld8s)dsJnZg%b<$2ph>Bw)XVWOqd8lHA(Y)Ijy%P_MccB^ zr!y0RRk^5A+#*Z@>I7M6;N^wIp_9ady=7EWMp0^Eim=4kH_+3T)X-YGNw~xD0)~Uv z&aVuvzJ{%2q@!n;BRaUZ>WW!xj;u#;)ovLSvH@6QP8eeh!H-1^OnA*LjQgMeTi!v! z26T(28kXoCmtmoyLJ_0FH|eU9DXd62_8(uDh5Df_7E83$JK0Ts)F2h+ zgxzU62Cm*qLE1DRo2%Edph!w8w+M_H%e}oN$mF2{#@Ub%C+Q+9q_U-e_JkYnXh!v> zNkf^b38}?B4L8V88j>mPsxbQt73;hQS;UtQCwhZEbzf}MKSIV!o8i%8AS_1!1)jto1rq}#@cr#O%QKUbH6@|Tx;$a8W?Q@}bWVQCdAcfnzM zsF)&5R3}` zNN@vMBBjXl;MVo^pZZT6vV`NhXNj|iwor*EWD;oalw`2fGa(;zr)$ovB{|(iXG0qG zBbB%i9CY}>pg34D_=cwokpKYr{%5mt0qxS2dn!aJ+5@ZRomXh!*ZAT^>D^~7HN2;6 z2|lzQ5!qVIvQm)9&VIn6RS^A{fu z#+AQTjY~x38!@R7(}O%RJl89yp8suS@s^v*(h|ca89E{n__<-HQwGxNZ6edu!F;yN zX}^%e7)xX%U4`(O6y%SuWPwm*054mN@fEX+&FP={@v{Eu&pB@+HGr*(kEtoyQM29|1 ziJ6Adl9pTNPN5Y+@DE^m*Itl<9FPD!Y`TOjik2lJ)mC$Q8wrK4+?z*s6AfN`YnTv5 z8)KURTNdKYKnkX+iRUPf{_gO5E%L#1byWKQk1_{oOnLk(Lc&?_p;gSa(p62Uyh8@% zAz|u*^n++Hz;+SwBOLa`h#^sog2bY0KViU_y_3D>@bs)(1yDxv!UMUZC1IGg{mT!& zkNMM4JGC&!$N(F0U>eC3k0=vibd`GTnY)iO<~Jx$`_X@0j@lgHy=!EUQn5i6kX273 z^bG|H2THWdY6ulb!P#blE-V+mxG5W?%#+Bb>8P}%cqNs1?nq`rGQUcO>PVv%Q@_;<0glR@IdJq?nhRBmosIRp1iaV7D{XzpeE%p{<47E%_ z%RlLL?IS&E02JJx;0@8PU`gqgW>PX@Fo>f5;DOMAo6UG+KxU8FCES}|EF2V3Hs1YP znuFLzi4**)g-n)&gg#9<{~NzoHvaSv+hq=;+QGrV+argr2$j)=rVNu}S8|SvLnOh| z1W*gwP%%QNi>V~1i$4@{z93fB24;9!&yOEIx3^q{<-X->9$!YQTQ*c#K5ACMXsZ-C zv53Hmy%Em(Gt_8u#n|S@639V*b%jKh$&YFr#W9>#MjWEQk{;YB!zzg{Z$Mn=iN{c9w!wFsl`eU9cS316n*2M#fOm z5{*mISYz!d$kf+|Yc6^hgbYfDXZG)mrVbg9AiB+2mg_m?>BCVc;VZnu@UT2N2eaEDdbg zIXK{DtV$QTmI4RC2NkCvy2tF@gTbmY zyw_C%T#w~+L-Hy!KI;E?qdX|QD!FAVR#rEb&IGzVJ_M(UV0T_NSt5fG7Rxecqz&-6 zsN^5N_q}D{I~p%P%xo)5AO#2QNJ*KIaaVExhB6|PagbaRf}sK*@F!S8@}uy}4i{F; zG`pwIq+hV|?5CqN=nnL^8bHd&Z2ZHVie;WmAc-maQZjIo7~8kr5?{MVk14IKEiPSn z2iL+((#Q)wP#XaOK<kf7}2;M6_$naH6BD)~P#GjEL`7rf0EM=0R<`EC; zWb-4_8(!Ua{0F`R8D#)&mYhJ+E`ehl8HTb_KJ^4%qz!L60;vE2)G9LZ z_Qfc`pd3)`aL}AP+8s|o6$cdD^33i|HDrq21<7wwRwo7)HY3RWq|7 zlow}?8N_njX)s#*k3xB{T*}-1x>)Sbfq!sC`Ll)QzkcME6qN@G`h>#p7MX~cdV?yP zRYT{%Un~l;tEj1v8Y0g6Km|(km>H(V0mxfs;DwvTnzDCxkDP5k{Ijp8Bt?V&uHy)3 zT@8osM1WNhbLI3Mcd|)krg{7ef2g68S&anP;26O^a&u@AX3t$K!i{xsLTA9r0Zv6! zV5Bk@nskYY;a71XjZu{lHOv&&3_3zGXn}a0`?*); z;HvR7uLYxbU><^1Ym^9*2bTRv5QC_K`?HQRU9|4#(rN8lst< zr8LY)(u0L~h3$D-ZUe2Izhihwfa+NUu zVWf_wb>ItgA%Yf>syTYfEQ1w*37w_ExrD3(dP29~guh|yWKHs~49huB@8eq{m2&g* zzqQQsJiWZ14k-0<*oZ7yREyDYaZ1KXsIACaX|$mtE)1S6LDLfxBf%w)sJd!b^QfT; zq1^_>#WW44;*^7nth)K^=bB^h`i-1`!){oI_>^iYZnIT-2bP!EA0;Vj353a>5M@T2 zsDyS%DQ6H`f=Ff$QaQZOLQ7aPFDD<&MJftngl(pnWRw92d@IuL~^)R^OV{s<<4 zlw$9MtSQer>zY$rRGbIlP?oDu^Td+WG&3Iwg`cm_UecyIXiUu6ujEpv+t2obPU zDLpvgI%$NkGZaqS&NwzJ0?N0&`witBWt?*>HB?}=wFozjZzWgD;J5fk;1oqxR;;t4 zMK1<-Hot4;K}*y1?QRzw|5IAC@>F3tS^^ zfn2?%MbKo8f#>Py+X;=2Jmk_c@}Q~0($a2VG)O>R*aE&ZX_O2zT+O2w-=ATbD&yf( zOggfJ0+yTH8dx^m9_TSJbn>=$l<{AEupH!loNOn>Mx^A7-ncwIEWupSP*}l;PEes* z{?^GL*(iRZiUg|(xCr{;lg1E-TNi_f&=zYu?I8$=}rkplING&uo;ZJnJy)L z%&{hu#zg6tl+s5$xzbVs2PB}ajlbn_V=ROLFh%vDHw_*9F-HDdJW2Ra0+$q*rqqbL zz((9vV*aZ@*?5qEOyFPSBt=kgJS9?FBZPKm*cc` zpYe5{XKCB!?COqdpp;e^_#_fU3q+;Q=2**<;`7JRN9VfZ}s&|QY~ z5D%x1i<-Ys&qwQdRZv5vRPyMzk_=Gcst-IvG=z&_WlH%X zA}0Bs|NJuz?@MWiR~*5(;AN{%95w1-4+{VZaxn*m>9%E5M!n}5dZl#Y=vt#5sJzB4om}6v#Q&}SD-sjdEFJe_-49b|nY|r7aJ(>RG z-@2ENV9rO0y)c%fLz-;he5zHq0z3kCrW|D+|zj3=?=MeAbe@7%Bu6d`K%F6j$z; zRi$KjL_$u-v?vZ)W3B}(9E-+kfDM3Y96iKwbi-%L?LYj3Wrc~cW`Se15Jp~<0Q-<@ z)03R7PSy-rvLXsaXhD%08iW_%woYJ{Q4r9glR$FH&&oWC)2o;LA%ehkNr9Vp7olhU zg}r6r{IEH8-L)*Hq4$6&C}TF~2x{~2%l9{redxo=$&;s>g&EdD?^)!X&+Lw6HPPUT zea+n#2wJg<)E!KbAI@sw#n9P38-DUS@_ox}RXyA**FCf;kGQf|9&=q&9(ollpssrU zW<(yuQ~!>O8B`Djr!dWcwBR^VBMvo2K5R%wEIg2|byh#@s08rbOb^Rr*{Wm==Ypu< z5GL{jb9o3HY1-KzyMdvx5qJy(hzr5k8DNWOAB$buGwbWm6Uhg|6>8oeM4K1Cc(SZMsM;7Ho6PEPvmRN)5#53nw6^j!{6HMJCB_lD9!GTS zjF;Iu{4h4t!)B7G4CrWohI33x`Q#h$!dY=*R}y7a!R%mFgDWHiL(VEuYi#cLCJs7c zCuwu;;+b}b;q!|WzKvS5u>|JQ0D&R`?@%(rhXaPp2*wvATQ4C2OLfDht84~|FagSu zgdlmotq33Frj9s}sEZ*`Efg~WnVjJbJfjP5dqbJmdnD4sU?YtaQAFvr(-F?D&{~8D zhBi`soE2T<*ICz|sWc+(q%SFZ(_jC!+FG-a+Ki&%dWedkK)j=f^r=NL^@9*5H42t# z)7qU=_n4WAsAp!;5#qU84ewR2AS2IycDspk^5zMfG>8IzRMr(w)gV$jVM<#-(csbSr$8Og z5Xy=H(Q)QQl5c{u9SqasuOM4=^4TrAbK+$4iN`;#90Fc5&8i^`mhOv>J8}zP>3~8Y zDVbt?*?={*2*S{g>S2REi+K#=E~(9tIQ(Xl27iI*SUZ9#);5p4$O`%Iw^K9AW#{Da za^mM-MV)CvZ0w`;jOVZHD?j*sFGRhj%CWoe=J=bz__9NXI6sJ{eT^e1SlJ?$`q4;G zUZ1B9QJvCUez4c)e4=vIkup4ex>@_+Uvt#J@3g01|E_ZGw|<|~EYCH)uY2ma-M@%k zr043;Qq)Gqa4$$#uDU}N>k%R@G5LMuil({d%F?^$%60(ka%e9jt1zEspdLi0u=xg5 zh+>;oX@mU5vMayVQG6o;N-r#mm}pom7&eF1a1N#r!k5ZRHw%b({xr5*-(|W7!==M? zzpr+FT1RoYhf%PFhD7=;2o#1q;^FP19)3-8`_Ws+4`15b?3kYJv4hL>-_!|g1%8<|Lc{D|D;rkB z0q&eKMOBm%Y8<#Yj;W;GXvIa5QbhQ~S>{0>lYasgB>v4$RSe|9SE3Q>U)X5oFRZmo zhYs`dS%g;|tymy#tir?F(o#uUf2kwJ+M`BzLRmZ*5{kJ|0vz<^EC{MXOK@#=Hr#>P zl&c?dg=$bm+Xa;BtcYk)Dngb@>4b$O)?fZnG<)?SjxH*ZRA=>K$df9`t%RaK3|+ac zpJHi9fbT}k3QRR;hUEe1D*T8F6xJn3`2 z8ED+jhW6MINnKIA{i)y3uE6d7+zLHFc7Wp1u};nRi;@nQHgAS3fM&kqm4L&`kh;t(T4n%?DJ|bV+)6YzvP7>z+X3jBWEaELJb=-`QwafBI)j z?-j4W+nEc!0EQRcl$GVh{&SxD4dr*<`JVA^f2O_e>aQ*Rxux=vJMW^!!DC@CoZX8I z{kW=(rf-__dN1RQnbp0aY&Bl-I-qfMXO8+Y# z*YqFqP+H85@$SvHp%)x4+{d}{kTakF5dn`Jz%qM|3Y4O*ps4Y3hYQtJkV3vFgOU{? zfp!c@L2=k%+t=p}=TA1vgW-BW4EXNeSn=Jv|LbZ=qkdK9(_tH>O8v4k|9x^Qm1b#Akn zUz}~%PoF7s{RIsYIe-Pb#YIzrR*ko}cglIT%74#W-d%p?xnJKqvw5K$LUB3en%?#{ zRvr(PBQuc$dep8H;6k3M8GKh|98ZlwiuphaL|NJ4&#U|O!O99iTs=QXPeHM}&&30k zHozvP86W?Nf7dP%*zQ?m?f0hkk`)5bjgtLirxWEOT<>PsNUxX9-lAtg#A^ zJq57ksoh*#YkJEoZGRRm7InWxz)eivgyzyJc_u%Mbl5~t5S6tw>t%A=h4IC6HkzbW zLnO6jGb{o?{Z(x`+-8iyT8g89C{yZ)8+ZVRv2S3r+|!j7hC+A7)yRM`jmnx9PQ+NL zuS65eo#HI&)SmRL0PRiD1zC9ZGs+3#_pdR`H|xL=c@zeausnE&{S*l+V+%->C@IH= zYfMdL9^QgvAs24=d^7hoPoh3B)iv+zgTMWy|E_G^aZ9tpYXx`c{%ri`HAE0FWf@)eBq#7PhWipmMbg$vmgFM-pM-J9=7|TK*I}|8J1(6*AzpK(9Yuu zMjP$XKl+pA;D`UFT=`#qs!ToQaizWW3r%x@oegwFbo83bR(6{M2m0ms@pknW-_e}; ztBC7q7jxx9>&IFEd~NBnZ#M`>l5t_W84AdrA>fWF6%~UXTvj zF0iE5ioC2+G89Oi7k~0BxwYG_oPPlLXTWWF8};SZON*94xw~x!my1ccUEc%g^~KD5#u*%kl0-0pUP297DT!{9L>8 zw5N=(IdWAwy1v19F~=OyoyA})*`R?j%=ih|W8#!M1&b?MDB%#Gl%N^FsH$8RXDN{# zQ(JdaX&>@y1utDfs3IpY#s+=!PuYCOJA3o>yKF>ygwT;KkYE6X1I-JPuqc1_|p=(+_#fB2-MC9E}_V1pwc z$j#7*@Os@0X9f=XV(u*)Dsg=6F}^Qg6D?VRH1v+^DQ$#JQAAuFN;{vn%EF z*>mL+Kk#qM#vgp3l*-~Z=jmAR|JoW;z- zWn^DzW~LU<#c}V|T1dN7re za5V(f27?^wpuI#*bm&7KS}52l&4fW5DOhkkbI;zr`>pdo_Dhp;|F4zh_eDk#2#vS) z8+#Fvl5SPeAuR)*_6Ze4rBbV+ijpI`7vBe^B%Z`5nrDnw-srLNhw`e$V10Fejzn=} z(R%La|LmhC|Ld1t| zv7Q`#ZwA}jB0y2r1Yoil2WZ5WTS}zUp4EaTNfcjEMDW*4a#3~b=m%LfKB0uDU*4-g z3KI>#qL;L_IbuEaU;lLu2pb(d!rO@0L2CKRA-~ju%$AJ9MFAG1f*A(l)f zwa)x`sW;$bOVF^QybQkOpAkiXjxK<;n#7vgK@l_6tQs;N_^R-E)Re*__*Plt#G~FN zO{aB}pBfWv3Ajpd2&n-K0#P*9^8;Pe;QWCUs>tXT(GJo(!vYfxCKVgqQNRFDA1esa zqJzEpL>pA9-cq`5Yz=S5)2xx+p6#)yhY4W4VydCc#M7fO&;aAQMdc-~=FjTUb}OMA zvBAWh6oAs6_ae44Or-h7hor~x=fq1+2^*S1LbIk}8rcGO0JBG=p}nNCtca3=HasBC zG-C`sn1HNCTE;>@$jSm7WjAMYi=dTLm1v)7W55*6+mG54FZ(gVB^k-Lx7yX!jb>wQv$wsu)h^D@G~fHrzrDQbmH&Qx#pAAHs+)~# z@|?78{2CnE*M9m_*E8QVX!kQjGzG2ke#@_y z)31JGTb}&*w)cpKj?0a=HFv)Hm)b9U;Qj3uZ*^YTv%f4auCy~aXL|gRAjaaS7WUBz zJ;XtB%VqV{ssE3<_l~>ls_ygmIk(@pztd+lGwKaVAYlZeMPOtQm||lIY>eX{*!kha z;21C@K(Gup1`|W5HpZ0jaZHgh1cSjyU=axfNT{Gu8%ao-(e(26a_hT55mGbLA7iE zNuz@Kg_6)D6cl}tCkUNT8uDS+_zU=T!oSe4AOFP|?ye4VtQl?hG=Z?~Koj_+T57FyMZU>48FIC3ixNwAi2R^730wdSdb|jH;q@(tx;%;r#InNL;8}D4syOGT_ zmVV#9y{W&jn2l~+$2q?!pd*q|7~T;1s&I4z%0N90$HDs_DAqmhvBQ_W=Wp^hd#+?H zs<7G#$aSY6bbv|36acvO9Z@pWC<@Vxh(7eU0tb*eN)))oed}$HHw=tV@YSzACq9uD z#;acZi_55#b{{5~9(n!iIX(>k4B)aaz|*|J2_aBkQZUE#cn2)zGkh|C1_9%G$2vFNGD>~zDq1OHTTUQvUvpQ@g`XDX_!SC5rM5Wvjey-1zxn2z;es> zJ7_7^MvHF>e%Q!EqI}?c5bF-$6t?pWfR6!o9SD+GKc_2u%qk>OJkEExugVR&d5cB3 zau+EmD2_o(eNIAR5m*|aCmtPVsLf5yt5fs<8N1j^+9REnVs>?*SRu@}%BEGsmFSn# zL#1MpZ3H9aVcGWhsK4``b!?a*D{HJNbfWlrGcdtJ1ZAnJ4EfNH{^`nt=sN6nqHN#P=YGqc712Omtw z=4SJYHf$(HcANy)@xW~(RtQ~;Z^)MMc|GQu#?`BeONlYpT!n)#JfU*C<71bKR_XCf zj;~_}(Q2{#`fumGhabpRul-Jb+Z(PbIx}CaQb$d*i zf`21p>+tp)#eFw?BcJ=g)kSvp8EpHGQX)pQ2Rc<_9zy4%5!N&!7cPWWKwz{pFf%fT ziO2x9Yb#is3Ip%RqSoy_lhh~t>n8%>+u!}}mHxWv<2{r$UuEka#1R6}OyG}$HL*8G z*r}GG0b8_ecAcIB4W-KwN}wW}2kcZqNQeMXUBLn1q?|NXZxmC;IVsF#;5|mDM{6T# zoYeP!_!I2YUZ*#&YAGHLOI7Xl3Eg;$?Cc7QM*aDPVu2;#XZ_}j(w1jDyI8DnTBe>m zqK+oUaxq;u4Z;HtELHXbt~LVb2z+R5Srk^~7j+iDwCg0WL@wos|unCTqFt-tytL#auHIIrR@Qi zqhRWS`al8`qsY0Ex1W4T;;?31Wn!$sPQ_+kY5}DR0g%xXo}`f`H!5wXiyY)@RsIo9 zVZc0_xa5hsI~_7kLZ(c!o}Nrkz3;wa)AL@Eh8xzW`O#K(aIlh&cW1NX%Lf^sTVU?E zGf^m;H(*yc4JqkyrawmS1fN$lVmRN#KeBfwVPyyouwyG zixd9!6B)#`mc5-@ugxCWcO`<%86l*9&fFg?7M9ZcSG(XCXc1-+F#*NQZ+rz=8G|lJ zTt^*2pipFr95Bmx2Gv%N68oZXVm5>02>6`J=;5I`wZG#mpLCPHD9*D6N|9XK}6tfd`k%dh`d<=E`s7Mtc~2!!bZs}g}6 zfgb&(Wg;~K1uBQPK!_89OGTAjl8PHT$e|?BQV?#D57tRO34iFCkl_PswX!)IW(<3! z?mc%8CPzjqy$zd&t)*o`kdQ(#R6_4l$0rmUjSai;#2n+K!5!;qNSG!~ez`C@&U3&P z;G$vWRAtrWGTX?`i)*6|$~7t9nNzn$AXoTi`xe)Hsw6+ahP)W(AqCehlpO3bSDe>L z!WsuC3|D&8#rC$yTNt^XESYOs0)>1s)E^$N9w7E+gG3#vARgN?BVh$PRBN+$2oLty zN}z)GtNg`NDy)qQZ`_r0QcM*i7sM0nRLUx#?i_ahk(QKzF%FGL$qt$DXhn&>=V)rQbd=p{-yne`7GVe=%;rzNz~q4ja$ zKxhu{kj&#U&MctVh5#>2{@R$~bi{PEoXyIYy9?RO-+d{Ydg5b|cBhiIZ9>S*1+FqR zi1F5pkm&HhQ3&W3+41AFYN#JBgM-30&Gu#0EGs{WWYD0J4z_X)`GvfI9g@P;xI`Bc zHPvh7r!sb$lE&d$%uORL2KnZP#H}?h3an&PWcT3F!})M^buh7IQ<{75VWiRaSuI-i zLUz~~Mx%2<%UkqUdc)4K@;5H8bgv;4_BlT|Bg!l5o?P8ZLY{S{&U}U zDCpt3K+6x2Ptii29Hty1WO9<(FTxsw-Z_oR$VC?v0`K^s=WI)JrHf+m5~sY##=&x4 z$k1}5Xut=$Z8bS7k}i%5Q|KUouxKg4?E$k%a2vP_>v@wk&Y*!^IG6Qo{R^%verfT_ zBHeIP_P?I;__VFZMi7lL0G!~T9=$A%DnPUb0N*WGJ(p*pMv_F1BmlLoxlVkR8t9C% zvi(5y@`laD#ScFWjUD3N%%0L_FcS6$ip?F-lgxAFOBjYvj5^v=JLU9K)2=&qQ{_f> z>b5P}p1lW#3$t@s|CH013&36}c<_eB3}5z^SBmD2ZCMKnn6JQ;cuqc|H=&uchf(wb zr7m8AC7i)uvWoOzQME8Zs)*NITV-rVc3F2`Zlgs2#fFQz(zK!P0s?P%05HO4PQ}wV z@kA09+KoN_yewVts60P>F!lEzN&UNbr`3n{GDVh!WTRuLe(JU~cJaj-JK<&NAkxR+ zgBY0_D8uhHCX=g( zJWNGh@g`KPou_stf9xF;kIeYFV4YM)6)JI7x-GForF_ zy#mO4vSl4zPjw&&@G;;CfDe|7ZYAIL_+o_8@$JMNn>60VYSQu2SRg85(7|^3AB?cW zk3ssgWI@EZE1{Z5yk5!j1BNUU=`ULaomWB7)*tUaxCtsX(n#JTet=Y;FlQYcAzjEY)A2z6z#QsD7H#X}!P+9T<# z$DE&zFDz$Y`oh=Ko|Cr@8WU4^*BP6}XT zlAt6He~3p2MZ};K^`{L{ezKNE$Hv*J;8!^j2!@~xunE!fBO+r#u?7RV(1?Ul22sHj z|3|>IoE?UCn;fHs5tRJhKYO2B<|k<$kEzUy7B?XP~dliN<%*N+Y0KU%ZFS!eyr>h<4w zey!JLeveZK|6wp$)DfLKdraS3>mQ7Wep#dx_&i^5<(?n>x@h>IXdf&DlXMvJbP z)la^#e*=fjHjDeRE(!2r@s=7agKq=iU;VQ`FMj*E&n{}5i8bhgBpQ-%UAj{my+DP| z(Y54_se45W%~FiQI)tNdL2Y!ogfhDC5sySm1B_HYH8@O4)!?_a)p?C~z{%BS+$t53 z1Yyn5ppiyiprHZ~6)t9eus54Q|9-&JeKemo32>%`3DcH?@D(7BIMoCYI2<^eL_gczVZ}|ncCx%$1=qfCRjsL-EM_~k1ehn& zAJL8wpv)12rN4Xu`NA0ajJMcZe2{Nwv;9HF;22Q~4ZN+3Mu*S0M zsj7W)fe#C_I@So$smE?-OfIQ$;l-IFUaWdbrVVX$*(`QgeVmBPDF<3qj>BK5Sr*1e+j zwnc+(=#QK{S9fAeS#)ASZ;(ckG;VXM+gzI-_Oyxxzzi}$Fp=&~49(?hkGV{!QWtuoSbCrR;=!{fLSF`1IxHoc-@- zumAS**R9asYI7Q&qEJ)lOCvD>$~Dl-sy%sr#gYdG3{mO!a`_sDTaA^HrW|)ff}z zq6))zrbc@e%*uA+ao@`Tris-f&l%iG0r!6ITc*!OH&3UThxX+z4=$}O1}`ycRf)_n z9k3G&)&mSz1C-Hn(Ek`&2d={^ITv070#9-=xF4|<5Le7Dx25}=GWqf$b> zPsC4K2uP%Kyb|)%ETKNT=d)i)hq$t{*6g#X4wKRa7ISiBh3So?geckzunJGTb_=Ul811CnM*~*4)`6IYq!_KC>qZAOzAM*;d37WCW0 zuo6_rw9EsqvQgI9qt6)*Zo38Lz_mh;xvjGSRWN~lai=-5IDyrMvzE->D)k6@CT z>kJy}s(TjjZ+SchYav~)o&VhDAGAQcV_KX8Tj5B=?p?cSqL@D1n4oB5<=8ac5<|GK z8{Nz~@VSk3p$iTix6w)t1Q(agO-mt_YKb_bARIIr0PPnF2+JB3JfUAdF#r#~zyJOF z?>hao*}(0aMuMus^?1 zdi!RYin@rRinUxPh(68fFIDC?8SX&JOfngyQP%&i^jC(<4?UPo?mQ(smOX;jii4P_ z-mKag6fjc_Z82ZQn<6la=mZ$_4mX>3RafPS7cfXF%!3b#(@NA{dV8S?B@mK8M3qom zBMRn+Z9-(ThVWKGgACKe2Fxlw_?3TjhJ%lUGa!w^wh3`82zPSBMhqoW`-bcyg-I|$ zYmH9H;)X^eMPf>ea;-yTMJw6j^!7WkyHlTV5vRCt+Rx%rPUgm#9A9u~fliNmz&jF)%ffEzB>oeK`&RbkH)%E#peTJ}wf4W`{t` z6yt-}C=sOx7bsE_oZ}>>iLIN{5+U8aEPq_bfWm-)Fikq30ej#vLbU3#70~P#EZD|N z9}tVDCNvjnW&>wTm_N)ckDb@wlx=wc>q3l9be3(g~rEK@Qf~rHikTH8qxW%O- z5tMTG^@dRZ06+jqL_t)?rj5@i8@ck&UI}$#uOCv9f(*(p3YC(y5x|^ArpheFF7rxK z+V+W$#>fQ$8QXk)AzcL2PO>Q_UZHQ&%F9SI=0#tn#wJ#W_8-WqEdp^k^8Ie#a5wHT z42~&|a7dY39sczW9?!=vI5&+lV`P;J~qE}(K z2!T=Uz*y}b@b`(Z0A@g$zaB|Y$l8bHMYeJQ)pw);=b16e8V6`Id+hk?0?chj??^L~ zx6wP%MC_CEyi+K9dJXJ-L>fAPg9<{UWmHTMX%l1>{ZHojBbJK-+s1V~QCpwtgne0y zpUmruDl>}xu`neacBvA zn1%QS-6|TIE=~j$<{v!ZiGz3SN@xroNx3o@UxDm^%K&>ylWPPI^i9H6sDXJ30#a%` z)=wyl1=ayin!KPGY|Zl?{RoVnIlydk1YfF**0ZsHMwo&HFLgdx4s9%znJSGIE6>?W zqus(YYmcyJSvzlxHHVFnCab4MvSy%^3BmOplJFF_<%!*N2-bt$Z`f zLAKDKZY7Ab1*vSwYQ-kX-Ng5GK7=67YOsAr ztEja&XOm^@&`{JZf2@%=8M6R@Qlm}R85*1P`Whqr@mU{f=k<{mGb`G7QbRoZDqAbm zSUW)H5U{})qcrRvS<;h%bGcy|{sihuX5@vfv|@nPImiettk!;#e3;Nz?JZ1R7 zF;)Z49ydA{iVDo|MeqsTQDId_?jaw_nBDVm#NlZvN#&}`Kngggf+a>$^2V;1$g^2N&=3BcIw8? zgQWQ6r@vHe-f`J%RdI^VWqXSOux0ORC< zS{iu(Ce_0*3ANrSh8h9BJt=UZ_EflU&|P{ehydHoD*_^T@lS9O_&NWs~L#( zKF)VShuu|efveo4)>5dQ`6>S~MjMf|#H8cqXnl~@vF|;zy4+HlZYA8)I3?8~53;o$ z_Q`E>0B=9ZoC!TA_Dd-IiM+C_uZF*@mi^c#{vqEu-5<^`5qiU?3K*tc1&nR)LX%4- zsbKV~f>UrGi-Gw+yf145Fu5SUl2nFbKzN0^@RUVY(l{9dmo*>5^i*NHt0~`xu72yY zpJKqTpPK8}58YXf%Chc8Op-QX5HYEF!$i~%*d zt_09v{4q^{S9m9UdJp5%kf|Nb4l;o?wnQw6qJ3h1G28hXo?JO{aL8y6=c=(UWtbUZ zM3-@6$ZA24dSWL9o@IFUm^c5trdWw6^Dgbyvji$Y!6=(uV`XZ68KXdt+;NgR(pZ5f z5wJ%ra!c>4JkSO@$(T!gQiC2Hb+nV-7MepDkV)3o%-ZT+P(zWn1XbyPOlE|mbs!Hq z9J8?TZ$r7Z*XqRuStHxWRLA#jJ~{Q7C zg4%0v1e3KcL5pCH-{byK0-@`J5JRjI6U-uGXP$^O_ExlkN62g2OMVxYkrBTYIVppO zWEXnP2QPF7f)JiW0-RCrY|q1cvp@bXZ_jSMWmmR!<0cC4vn@qPJo+>}r=?P+JVYvV zMd(R-v>bE7ryq9#bQi^v%Q)aXogbB+21~z=_rftA$4oRc8}Hm(75z#5L(7q!arkD*VJ>!;^PjP20>ci@n7#SVIW(j9|8( zXf#Uc=Ai~qN?cQEm89^Xz9ExRHIROIA6$diCBX`om0rvTbNTXCIy+ofH3N2;IyRg@ z`g7e*cKGJ+W#b#xV?y9C(~s1TKwwdiG5`hQs|-uAsG)&3=hWjBKo0kWVsWi7ZoyrH zY2c~Gu65)QeyyHyKn3r?#R#VHi~wsJFDO|V3pD`+s?5B*v9!cu8!8alRh%k_SBNpf z5xcSY+CX7H@4+c~;XWC_SMbFMg33&a5**3hIH_gX%V0nd$OK>o1xf<;*<-stWToJc z$X1a?n_4rgtb3dy*I@<^d3Sm&hI1be{y>lcd+TByGQf&N!y);8aiUt46TOX)F$l>t ztwTAZKG`@Gf@c0<4ZvU>20BLSwqU@n^~3KrK<3P8qqb2=R|e{(k=hlD95z5rm)J)G z?=~8OXf!lYjG9DVxA8L0$#geI9?8HNFN6^)Y?Q<%@?{!9ba^#rTeGxvYE#apRz-*Q zkS!Dn&gcnX)B`qt5TGgp%jQqLQ#gPOGJ!63kHI^p7)JQmIVbJp`p(|c@XKdD3Z!R9ySY1@+Tk@QnX@7?70iz5BlO z`7eBBc=lt?Dn=#qx_vRDL~f#LLe%5V!x=#PySVZ>iMr;$myLft#CdGY;)8K z0l+%t3V6eI-4cpMJ|xhY;ujh&s)u*9rgH)=)&oaLMiQPT3k|h2K9zf#j@%e(;0iG? zlR}ETNypeQ${p|jP-^Oub5gQk$8$W13{@l|>j*y3Umw&bi8a$Ws|sXf5}ttuMULvI zOExoR1K}ZYCT*D%#h^6`XCN#VOK{gqJ$`8lFM>?O8S_;kt;O2PJK!iwEUs}Q9ZDiT z3uaOt#hZIsB#%la8AT5Sp$p0(-ZzO>m}ktRKPNfeT~t(HiuH4dT$7WO2} zHnM1Bp5%v*9?0rUw-6QRbyy+)hmtyuz-xHjZ~Qic>m0H~cxjc!5@1%f&^0*VOJ@L` z;Vc~hka^ZL;|9dZR~T6~>uA3!Oc@jxWs_N4)4^9W6o?Eczw)z8 zh>?VCAts)qeEV;-+$ySL%)_nEel{%wL9|)UpW=>+t%F1x8EirC%p&BCr(hRdD&eVC zR420&`vsGK@~>0g`N4zD3(mQA=>7?61Dc?E!4rjQ&&i({kIW9i>gdrL`5#(~VQ-WN zqjvl>{6Gd}?^w^#%uPy}^a`SR3*lf%VUVg7S8*(GXF#j4dk6{L4oeH54*Mggc#29g zFsJ7tOPp^^pau_XWSnu!dg?|`12qLbm^qFa@<6yYe2CJN5(a{hG!8CCkEQ&CF%anJ zs!q!?v0$OsO2QAo(8r}K%!w= z`|e|28a$^XD4YFf5~ogfs4UGIz|IP87~%k?+o^TIIl~R~Oh}3R;goHU@P7UGhrMAVVONQB=*_B5{aM&^49Y0LTzmFg>A zQVbv7Bdnlk^Z{k1wGz1f1-S~ev}}0U6Wxt_4O!)?vvy*?0waDJBzAUeeNKmgFSd+y zL`|*LP~{yT_Q-h)9F&b-M~o^NZ04Wh0+8S@KSIhVy3Ys8(GSIsbUBPzZ!OCv^@HI( z@>e*tzI_M7io;k%_mO?s)TT|iH~RMW+DN2LlY{Ev0G7TcT4*UHSz4F((Pm`HW5}EP zgj3540ETLgcV?CnDkzuXLT^|LaLYh0~VnC2FN1pF?1VJ>r@JnhPA z0EPxENl%;p9XabT2`!XGYSz4v5Kk?NF22tEg|RSc+kEO9HuwyB8^gHd zXQfF2gI&bOIv~c-j4?SMpM2<@Lo@d^b@?O`!~+a;wqRZ20QTAF@vu~gls3gKbPpCq z{Y}3ne<>vaQlOELM9oj7PzwAJaVd?<6{g@bvnAjG1h6uY^AR|qi0~GxG;yJ;RMo{l zG>ARTew1ES%&wtJDtFFFC4oQaGDagWH5^~eOdy{vwQ2^89I$(a3rK$^L z;+BW?F=9ZkW5~WHfPRE*qS2Ec8ANUa_Akk@{jBC}F+J|or(I%J+=aUqE$N~>0@1v< z@qb_ZLe3!Y2=Qg zGy<_3<%CLoDkVe9ilw0DWi6$h3X_mfUsmJH(pC0*(V5u(s+Zbj$%;dVnFGq48%LC( zGq^=pXPH)HeN_^GqUF}UT86Zai<{B&NAy87yF_VlOx*uBt}pMtr9&61_cppx^SA4pPDvSqgfQ3(XqEzoe4x)#x8?@Oc( z*)|*0!5cg;y`|0jVY43Pgn`kHmz6X*_KW#gHB&MFHu@pxAlm>CW0bgBUK=tqf+fp% zbI>WiN`s)NH%*lREHi;Sl9jgq+;62J^w0UkJ1uF^@L#(dXt<>ln-cB8GH$uI^)ShZyoq78ia9Jqrv=El!a#{FhGI& z2g5W~sSlO5kEY+o9UZ!oRtGb&6U~DxsvOiZH#m9cj+9?~amwzvn+%l)wm{v&NfQW4 z_Upqy1QjM?j|3 z1^d)Q?3O=wgA0zrSMJ01Q1{Sr`L8OPnvdwGlZfsn>#*`{ocktMQu_# zt2Fm(?Ssapa*zq=T{cYoz@>3+Vi_9{mb0umJggsmI%JeSV%Zg%1V|vL5FeGB^o6VJ=b#t;oZQQ4oGI^y$f49a;iz zA`_^xqBcxHFHNxUT?(D>2`mDb83?Qa8qflia_)GA#D~xSW3UooWlv6AYu$I9kiMP)Dw;W$GUUhI( z1@&OqfaaAP_-;Ctp8F*&=D~;v_DI6uhQ5|vCfoDq+6+5-w#;UF%teo96>h&c(w!}i z_vVX3-I;73%Q+wJFAfj&7K+1z#Wc&n?M!!`Pri5Ov*kf|$PS{zmHEZgW2eL(1EX&D zi+<7O(kCwJG&GWfD;#`6UubSL0fB@5p`8b9jv7Uvklq%1{LjyMct^hD9dAteBafs3 zCvy?kk_XgN;PLb%c}_-x63>!dgkA-2tP9!kNB*@IJD;84uhK#KDH6Hv#g{+f*hfEk z+or{(N`I`4bHOlyx*q*{I7vG%n!!*c7oLOsb?gtVqUo2>NDAE}B`Ov$1;Og9>WhR` zbNhQ6nPYsY=z5Hw=*P&)Ag$*d@I6NlXRG`7XY00ZN&Ai+N8Ug?o|~(`NJV+%pp~G| zst!a#g1SQ)h!`ReEHsdUS%fM8lyVjM^IcTY98m`>!xxyR(?&kwJ(fu&72pH7!plT) zEFB1CzvEt3$9sA1`#zff?#kznehSZGbm_>6dQctcMAU&~%qpp54|bP}t(#A(od2rVlAQGP z(p+d|18?jES)pL88X}Z(&1+woF+mTasR=$b{0O0i{y>RT8mFOBQYPWS7r+uqqRR$5 zILZ=^GQybed?u&M0y7-b@aK^j=; zd>A_pK?j#;;A}^=IEa&FrA~NYMGbBYTp`7(-US9xPx;d~7qt(5G&_3hcZW+WbNO)4_mk^J$^zjUJF@LW7~aAwwum)>6LW1m;`wL!%U8V6A9TRFm0mm|iGoF@Y5|8Tmn) z_L;G!VYX>(I^Vr;DBbz-&tw<9;nnP)0%-XhDuH=B@TQJp;^N0D5^?(Ama zygA*dk3U4g_Qdo6B5mln^s4}BizW)D;7FJWY04_auc%tksD(g_bF~@C$AjH=#q+Xa z`)TREy$__bSPsLEh#n!Q!onzXUyIg(NzO!2)yO-Fl^$I|R8zkyC{)YI8*>cenAPAi zl$1`sn7yp24sm0=3(LSpfVUHYUvkOcgXybeN!t*t4=g2W@ zf(K6chdbfgbKUiaz!?%W9_m6F*g+!%eb5|~%Lth$J-`nIAh|jbH}B>QmU-F>;s%aL zDle_0eg2TYJzW|gE*nHwOXRx^1NlK4^Gx;I0v5=dR?V=El(7(9*^#wgnCen6@a=X9 zTrC*@-PWpX000lbq@H!U3u%HL$sg?A9dROXUMF8>;qlXRqGZUVlw$autKOE+6Wl&I zAF*OEkqBMK=*5ye|@IJDk7RD}l^*tC@!T6Uh!_}$-%8>%@KP!D)0awff! zjPG3GfB6b-`88Y{`;M5Fjc)iuiirJxeGuiLL^5HfQkTYkz+yS86DkO0h{#1nTtc$! zzhBw7HPtq+Pp5zKL+RA|7>zpKaNAH)Jc0|xR=_UoV<*q>ER6GYR?{kT;*k`_ z7|Xkd4-OZCfc*zIj8oxUz`0GA)&^2Ls0J>{2h9C++1PqQ!+} zwt89P-wFHiQwMNmpRWDVEAQBT`im=j4@{-jpjctEc;*k6N)3zTnqCOjt>EcMp&X2Q z$~~gmqIxJOH~=645Io?7H(1WxFT{XA94T+&^)ygKy10OaXXhdql*QR7-~HfUq>JA0 zhb-zDD^_Ng=yKyS>1Xx2Vgidj7(l|&9BGd-@;Mt_G?5!si3Y++qP^vg6AT5jP*2U< zW#CW{+KMJf3d*3(nQ0gw7@&7RMxjPrFGr-pM`F%0$$>T(NO0>v?Y=90Y|~V_lM~)g z28;R`i{DW-=3}C5u>~jm5E7*!O6QBlw+7r4slx&i(kco0)RQWx`jr|x^q`qrPB|GA z&GV6Fi@9|*=D{+9mjNXV+RB)*jU`yxOdT372U+Q@;|ZeGcDbpE+m;$iW-pdh-MBez zqofTyNrR!plpU33l_zx<(0qoh;km}c9}N!ps?_CP+{czU^Z+{G>NuiVw}Ere2<5Ef zfB`{UkRuBlh~PQ7(gqQ9F&EeyHfft5Qd2?jB-zi2WdVB9>7K8Cg&H9iHjQ_~LC{ZM zA1O+KNKG#4Aa#Ni-q~?OkU{FLyp_%Lm(nhtfBmg@W`i;IIl?2h(FgibOqvgP&33aC zik2>}q?qI79M~Q5o<<<{s5shp~G`Ty6Ul~9g@BSf4dj7q1 z6W^cx#&<9?hs{o*$!U&|Z}%{y7VNPuA;Ms*?XAoat;`xmLkloQzQyeFQnos%W~20? zvK99jL6&r^TraVC{YZLnqM1(GhZc-aP$yQmGGJS4){ENMSXON`hHMc~G8^Dan}f60LH zv6;*>J7Eh-ffAIOp-LjlaDC7wcw(fa)N07kaf419dqRjd4CkhEg@zOQrGETWU!3k7 zWi(%K`MFE&cDI;YaRDzKQWVOT6b8o*p6Hndtck*CWgTuvshwm2Z`BFY2o0f=dgLJq zKp&AXfdVhwy|2SlKyw(^2F=#d3_Q5+Q0go!rm+nhKt&WJoK73yFnr$hk#IGUpCS&^ z31?g%2e~phV_G-M@nwJ_NP$*toGX-u$;Y?y5$LrxqJa6hT>};{)f{WAl=tmzKEJG@t))>{(!zCyFVFoHKN@|&QV*n(05G8qsqJzuf zRfw3hm;k0*&))U7pTKolr3IyQfIvpqM@Lh0a=d5|)2vU9xye7v(d%h!aglDlK@L(nDYT8nn?!05Bdl(89B8!Jm;vg-;r5%3)7Es>U8A14cqt z=2LIxXj(pWFm(?cB>s6c9lZIr)ZcR;6^9R{!?%Awxi-4D>RG8$Wy3FkYT3=@&SMpJ+ z*k;DKjx{bzaKPpVCRrvhq@w#md?j_r4WMh}f>1r4;@EaqclMpfQ4$5!-OK4wq?)~ z{UHmK77vGjIHBiS{=)BlD{cJ$f4}&rkNq|HIGb&)jgeoemD(ef=W$*#0AHEhAl4>K z=D}17bjXK`q@}J9%%p$?R2^llg=8nUUB-XtK6-$NY^-2A}2+BU6V5f)dy*gA+ z0MHBMbPuykp8lej6c_yNE4YJN(rrg{bX0hNGI$P%Fe;U&`Md8e?)ulSX4~)vRB7I6 z49wFo5@RnQF1lg7O09|S=o`_D(s2zwSv_jeL?7`r(w&I)rGNh!dX-G8bS#5)Siw7J z)WJ0;lF3TBY#0oMAQROO3i+;rP(>ekVxN+ zNlG?h8FTh<`GbLwMUMtojPWRkdxK0`7xqRZR7Z0RK@Aoc5{z@wGdi{PfR^-te6((-M=gS`EbLazzbJ8y14)Fv9gIdhu1yzHejzANT2oWiZn61``>0K$^{NLVHx%hRjN{xxh zw7Se0g$x{qyJ)*1ii=AKoKK{!u5+1OT&jXlDMPiE5P_uhpM-j!0o5p-a?u;%Qv)@f zQykPx;7SWlw$I+tVLUPN(JGLUwL-EXvVX z$yfle3+RKg&{E(6`A2oIONw?ty)1+pG6IiBm`=yJTZVa@L{0!=kQSE@riZ@qrF8E% zf*R77n;=_^jTC1+7j%H#77$Gj{fmOx0ZEzw^|2 z2&M&P@{sF}^uZx`5mHmEy!3Xd06H;b>#GJEVrALkBlF5s?XdSD?+DS9FPq4XQx$A(0?^Zc6QDtSO}=wTXMmYJYs-XW}6c<@uPh23gNZmwnu|cqlF-;1*$`}DTU`CW|TqrgT2|xhRMt%qr%+p-ud=wn!{J`!XFqLs)c>J_| zl}%@!opv(!ym`_|_B2RMPBtdG^E{(-!#0nc^aBPDR>>5AW~$48$?Iq}q(BRh>{tvX z*h}Q}iSTIn9nII8PLPTPLI@p_sRIjzm_o&G8Wwu0;S}Ihj6LO-2$$fFEgq|+UAss_ z4~C`l`UL?eR44KXKG+*X1~4M3Evsm(2+bJQKTXRum)EY&~s zJ-~~&E{zB7i0YlHE^& znZ5ZkRO2zih1hyZbEAqyEFoW6?x#yw(aClyOiW=2566n)c*PtFiqT9VOnzWKJn`FTnsWl1Z5#wtq}alo+|j^&-Md4YbRK;2x&H?OeY;U4H8=F2W(A4WpQ0q*t6D7Hb!%F<>(-pb^N|ogn*)mL#r8AL&rZJlSw-)n zvx_EYZBA_8k+o0SM9VvlJ0APl*x*)&tGM~SE^BOn>aZPc!)BH`xTm}hhJ%nQrP@sS zVJXn5reTS^xL<=e&LrSABmO)?SW(aCu6v5%ox3u^KCmYS;H|KVubN;-nnmGtD+^{L1ri5r7ZXm;?eJd60`mmtdwYBT>CvE_1{3alN|im&`ZpT-`$B$U@ru zLxe+tUwa7pkF`8XAC>dquU4ob$Ld%H8 zMxErjo;>y*U!AKl$^2{JS>WfcH7`L_m}K?^N4PP-M_Uv7&`?1K5#Sv764*g*QE!Yz zc(j)MQ+lu(sR|{0HGX8jT2}c_a*&Uo>}VJi`MtbDKH8xyqHzgQO<97ZG(tZ`Pz9O+ zW;}{rQ6!jzo-t5oBAQE!B0>#_P&SE>qk6z9$2x{~et6o3sr(s_>}69hc5?(= zY4E@pTQuBfX_qlH67>6qtA`I~*M9h~v$NphB-`lLnaxmTW2T@5#rBX;B^}zvH#fM( zse~c`&#s)13JGw-MODQp&)-Q8^|8-;tt4B{77y*Zsd#wTO*tbF zKFP*gEE0o`TC*O1!~SrB;^@sbGA!FJ}13KK|9_A+pjA!=Qh#kYmB3i9`gIOd|T~5^3&ji3_#=2j8@~QJ*{@S7X z%4(I}dN~NH9?QJL`nYdj67v*Wbv)oYYzE*p21KGBqiIUY|4M?3C_QQONtS|FbR>mn zr&=-Rls&EU8d|pNUGGkp{mSzg%|i){n5yq&;1|SOs-p!+h(H$r8NFPApwj1*Ym%ZF z>PaZCfD#sjreQWH2DG8n8WAw9WeN+Dh>BPcnx!Udd3tY_8?SIY`Bu~zXW|hYL!FPD z0kdLiEd9n^_Z5GC%67I0z&~uZ374ulm-&oWtWvG zY1jgZpi|F>U}zazqSEM6t%1HY>Y+LB$AV!V)>-B(o2h}(bLXg2S7YB+UU^U# z@5UdA_!X6g+9(Y&^!sFha>G&NJDXC$V-^V^HFIRgN!VCP_jhKBb>OgcPewNsAgv*7jGiQGXx_JF6Jey3&aQ7NntdYYU=YKDlxnj^Rs5<37?HDZ zVnJ?P6}=|CQd)B{jGzYl_+7 zSLiV+p0j9y87=+F!b&GC-*+YUwhk|*zY|nwr)Rrxc!P>%eGzlg1o+MORBBk zP#rQ?oUz%WV6al!>>Y8Y9L&J?M{yb9ggH=EYtyxkU=J)u^YqrE=R?JzI%mA5-&wJX z?ld%LSEDt03D*yy(VC>;Tt=6>`<(oX2t&ji4o znUY;~)yxA|TygsH%{SlI+IOr97}EkHZFvZ4>zts2xDi~@>h0cWH7J)F$Q)rc+0jQg zh1NKHjAcA*#E*WBF)d||U+zbvEdASoa^8O9b?Gwt{NtN9rTIMv#X5bcur2i$)5O{V zBSeQvU`l06?%oahax6yRhWCU$UIM7On~9&;a;ZGnmi<+#qvB~8stTALPiT2+2luHS zEm+i>pa4d!J(X;r>&KI_p-ODAe)37#X;baAevZkpqZ8R`l^_c9j8Q-P{TS2 zNiq5~9L0d~rgX;`+I7x}6Z0(C^Aw$VAeqpJFJ@mx$di}8tRIj^?*7Lef&*NFHttgq z!KA4#YLx?&sh__{gPBPJt|~u`K5--3LgeA&P%FJQDIsCUcf+i>Nowx}gPd){9deT% z@Q)|uT~v@OmS!|o{s!mxG;e>SHr(U43S&Mn)qOP9+C?fwT%S_wS)X%tm}g93HXTdL zhqE&p&EmYhhci}`z&NxDUBm3zj(v{RvH;QXmok2vxAe4YcN`ozi!93={3Z~=Dw&21a z!>`yw4HqmLkTs22vm72qTNrZ*$ytNM$YooUDr(N5TdDJyb~P3YZQeN(Ph{d3J%n<_XJ0f z<*O`A5iyww$belr4rKE|o{C6=RM&Zmn($B40GI%1k1%7tc9or+b&Iqw=nW4Dpwc0t zG;>j40Y27>ri7&BReDQVpZJlsX%+x+#w0VsopOqsH0TD{91TI%T!ZJ-Laz~`!#X{C zDM}|bVv9Jn=n1tt$E-);J0s!*Pe1{_%UO&cDMvjV;$)R$F^1+j*mzHWc6fZenZ0m! zkz6Rl?Sq+Jfe)%g#ek5vxm#Uld4Kuhrw%)}?M{!Wa0(E7mr7>MyRQ?Di1Jl??b%Ro z{u6Lf6L3k$1BcUKdjpVk{zsJq=@NTv?4H&Go-NViYu^8Z;v{0% zTZneJLcv}RgV;7=)PoQcRjQ-k?1zPP=3WNd15ddGvz!e z=7@7_Tk0G*P#iz-d1ndb=|jGuyR@{9J2Y5@xp~tm!?CIH{0N)OkNxU%v-SV>rOZ%h z(m2X23xgFCoQSk>Jt3IIG(1XWCmHr8Z^0dlq2jQPz5=z4At!bu!)lOE$wv~v1WX4h zU^Fs}T43a?Uz%yZ^D0xF@UNc zqf~Wl158RvE^rA=if??iOuEfpghY!(eZgJRnXTG|Uu1sRI5g0)hp2pU4qanoQU=J% zQZb;wNlM|0F>yXLE9NhNIAo+H+a5SeK*xoz&W{IN`piaA;eoM{Hm(usOFbK6w1iJ?;gZoGsV=rnkl4;PtfYGYK!ESUdIngH_b4U zP|-3tu1yx{w%5L~*mKkM`9-PCB?4l4x#Y?CfQrHQs3;`|<^a*k!bTPWFot2it{6nY ziLtZYET_yr!r4aa&O1Lp?~{K^QkW)#Aea11shXB51u*lf0u`~v0i5NR zJv#hw=Lb?gFO?Swt0%=0Jq@Kz2|5C(STl{_R(a9u%Fo7(S&_^s?-mVYSTkg}_wKB} zcQC|V%2#jvX1e>2-ay}pGtNfPko7x;tqoJz2xoKVLv#)?Ie82Hqi)tzBKRWC^SRdT zpa9JY5n_g9MG_OmHT)5i;gm2dVmLm1El>Siynf~Yz7|gT>^;By%dao4x&9rs`QTwYzw`|Kikv@@St7)+0o)`z`0mERo% z@hLS*s=*(d6uElQm^Nl-=7h&-*eu@_ar1PsVL6aVFNkAYI0lW$&YHU1^aLJA(}j0s z1$aS|V%$c4;(-EkJk!{}bv42M>Ryg@Q-;8~G#sh5jmoTKe_jPF4IaQ~qc2tQc)Ouvre$(=AhmHf}f_GR`)h3o3|u7co7p0wzWe1^%j|q#a-P zE_nBI@%otqc)IE;H9E___{G1t`?AY6rR%=)>gwE5o=vok24jld00J2ux~f5-6Pl13 zsxzY1>lq4jEb`hP^Hi%HBeS>bk_Z#2IH$U|W#r(ege?6vcP$b!*ael-7bvp*g0XF%`v*MMYO18Qfq(*!AY9lYX{0HCA zYM=Ll=_rDVVgkGb3)NerB}?FtM3uaI;J5(mv|UPxAP?qbZJ`_g&rPebW)Q9{(40|U z>!;2#Ymya>i?i80yH20+FV|+(GtNv4U%oaivuj&&?}`17Wc~Z^%jX~XL6IFlhSlj2 zG15d_YL&IcPy(g&Qm7xzRldw-%MaKPQp0teVK&09SP|L*U-eYkF;wFR^qd5$@kgr# zb=XP7Bp@z==WrW#f~Q5TKdf~7%hs5k>)7y6*n~CA%!MVfpNgX5Tht7Y^Kb4$4 zc&%k|n1J{P22RC#^YiJ87hRZ6hAEpH6P!lpWLQ;H#jvAJwRQPCV<|LCpa4rqfs9C~ zobBl0Wzd?`S*vhh*W}DOmd`M#HeEtU53Am8E(I@n{RqGMrN$=nA=qMyYmD zB6mbQ#K`?1g{Ht%NQCR28ipjuj^og>bbPj0t=IG3S!WeTE;uu-yXT>F$?dnGT2xkG zCJ$BFfS$b=LQqPSj0is34aQpKy*3D$esVYTgnAGZh2`P%XFXa+T4)3!<@N%+XDv|x zKKg|9xKrz}Ta6r|Bo6gpgpyq;Ig*-fI2PN@H1#`|r?CsqNb`UG-?RB|eK$3~@{QDb z)-#wLF`j35IkJPTHDM4s6g;5H3Wf55kMII%P@!l*AR4l}MGYHWn*5_bdXTFAT)ckv z01lh3yY$jZy6(FEIoDkCn%jTrmxirtZg_2Vo(})ibc{@wJxD!FqPfUH(F?As6McT5 zn+_e_A1)vj2cYpL(Cje)yn<4=1^|^o$=I)<#+mgjI{Dt8T$Nt%t!p@K9b=zi884n*@Qibe+mEU6;@u>>BaA3-5B zbWtJgPm_iw7GLyNma`FJE0qf$%jWl-0{_w%W$R=qWns^yaytb9q+#pDJYx?FYhxWt zP?9JU@&pB(e#>`?17E!%oB5MJW}Z4l(Zz1x-~ozw2Ko~b7*{JiS6s+~9 zj7qgp>|Z&O-9vFN-E+hZ*TD5I6Er!%LK$1<2!JEWs6TxRB?gbtoi##Bn)%5!kew&w zG*Xkzw!P5-u?-Cu9PvOSo^?L#EYs_yh?TR>E@n`)9WVQX?5X$NTukE^_fpHVIips9 zA%F;g!w`0~#RD;VVqMT=atlCIgG#toS!tA;002M$NklRFRp9jP(6OfEd_q9@J6 z=#4-xQ>aWZBj_;l7NICBK}AW2%R`)fnY~t)dEmf&I{GIMq{-L4Dw}x4%Ts#7Olj?;jLCHj2-{{ynf~Y zE<1}$FC7Bl!L>(!^{aoh>$1xR>Dq6;zH#i>aFv6GePPhE-z39 zbHIcMun4?dX(KK@R(4&890(SKN{<0?-@oa)^nAKzQ|s2J*&{QY4@gUoB$Y3Z0o!3@ zcC{$X0zq-CxWn?aFd2*l;p^A{NIW95b%G-iOb4EP{>7-b|yZn@;M!?Vj! zwDa0eWgBa)g6X9+zB+8Nc@s5@=s4uU0KpARwygv5@s1hdTwKb!ckN0KKK&Ot50dtO;qDMi$~H)=boR=yW=*hqen>|C7OtBe3!npmXsa<0}RE0`0R(L z$I=dZW$SC>9@#>igZa#kq{2W1N_n9y2ucl6H;j6iyL|*_8N)b5%?K+E9&`H-W#8x0 zi+10W>g??2z$tzzo-UR0_&icemr_QW0y?tfDpik$!*3RYvPv-AaujZ`EY9b^OpDX@=~XN=C2>lN|6v_;^$p+ z&40=-ebRfEhrPVdbS8CPk2Q4CfC3gG)@o$@&{@PI)d@1{rI#g6;w&L7mqQbW6*5x+2R95SlN5|tyNK?)pB;w_t-3Z56;x?aFTP+R zwjLG$A=nTFp*5PDAj1tYKvh(WeHgV-JGDBhV~Ms!q{A+G3Jvy}s2kerENLzhQvlk$ z!OV^Dur1DVxW{u8?_HIW2gPB?08Zj3^ za)K2w5I&MpPBH@8>14-nJ6G%D%qni(3|GoLP?2W|>(ac(H+1F3ce z$=J05?RL93*g2HGNzuQ0^DV`?)6S3rWJk0BKDo-c#6&Ta65>sQ_-8{8vz0!a6&aP4 z*Yzt&${m|yuE#C3l9$Zlw(0OBTJYk`&1tMPQcS%61L^S}d0#rWvz%7fos{NGP3wSRBOAzq<38y4(o&I)Q*E4U3kEut!FTJ82ZJ&b_;NpYd;w?jQ+>V|452ab zRJ<6N*Sj_j-$Y&n;Mf-*DfkQ&GQ7dyq%(%ZTx+IGr~vLi3p?1GozWSzu77-v`Q!`% z|KTfBkND8y2R~%2Gi96UTXF=Sw3dcrw;^%}uAvx^N*1uot}FwXsn|62KCe&=X-@pt z2?5|g$|k}5Ggn+uIsIR+`Ge}^m%U%*>~>c;!wGLv?;2%5zm-Cm8y|SfbZya7gMH{M zF9+&1N2Ue>V|1UxVbPdWyD>J4Vy}wqrayl-BkzoupdBtm2oph~AvsV;DQm%i9V&(P z@}tX?D=sPE(xSL#o{*$ZNSS2jJ+JvNpuxj&A&fB)F2ILdB#3*MyPa%Ii?tJBr@C=L zHU(K(GwmKdVm*N?v|lp>H>hPvF8K<+Bt}OqnqFw!;gXyJJ@nSR)Z2LqyG-y2h~+{-ddPCY$|egtFni%_2OU5SPfYzScc8YS6p1dm$3|h)NNJSHA~?@pU$eg z=}3anw!pKr^3cOYHGaSo8UW@ck+dK@!dAnJ$I`CVx%7lLzcoGPrY}h+!z?s4#KMsV zX_XZ(c_q^+n+-jf`nH@t%lzc63%zvC$P_^;dwvu+z-=VC&G?tAGTTS*`t>isgC|vOj1dPrj~E)tEf|7{6cM;C^aE3x z8dtD4bP=L8EHdUMMy40(OA}SYu@l>a&?LK!KE1r}a5~~Oc030+TvS0mq?ZR_FXjYLsjSQKJ29U|<1*Q+EvFI|#)vDwx1+&sq<*L^b z7v{5F$?L5)T`7#&+1hw&j!5P#b$7OqoevIdf$cWdE0o*ISC=~J*b|=W>F(LF7F(ja zQ44TO2sIt=&183>AWyjEjp0-j3Lq9)<|`$7c7eBxSj1iAngcL}G;_E<`jgFee9d(4n7K{FIi3BnI zB>0a+@aQ?kjK~c#N2xYWk7Q4J=T-Uk*#&l;8ly*1Va5k@z&VJ9Mv~l-DRO6Z2D3e2 z6Pe;DQ*`;M>VZ8CC}esv5rrO~mS_Y@#TSF%xBxjOb+C+y=UX2WZ~o_g2a2%A}cUuosN z^;@#`e|%NyGF@^0BOg!2?Tn+GvG<)=5 z#J=e*rB-_i4?WNB?9ZhG^+xeD8t9P=&%+z;S!t?n{UxrfU@1|*%M=T!rq4~V_c@37 z?r5+x2yt}|DyH_jqVN!UXfBNF^=}&sbGHab#Hp?iAtt~*S z0xMyF2>=uxP}D%xkPnJMw=FydO$^v526zc9ogNgPxW}1%#f@+N&m0uMYCgKhf*;;@ z%!tre7xh!O;zO3sc>oaCEWj7-A;w4zq|HjoU;mK@7pcwvX79YiB)h5uf8VRr)wz3u zG&9mjnvq5sfe;478j+R^B8eOpgO+7M7_eb2_zVMH+ZbaECN0RYAd>}Nu&_ahAd!&} z$`TUFlT&w3cXfAFcU8Up{m$#z<>T}JjIiEJSG{`ghI7w7>7IM;z1#t$X%SQ5HdscW zq5mk5AY|AfMgVZ(%H}p?fp4vxBKQzl$}y`}9!CpMl|abWs^o8s>TQLis15#ClUgfn z6Zc_mm!b>7kA+-Ru+owI{a>v)wrCuf>DPxx+3pql4{L88U-z%tQ~jZnPcI(B;o9|y zQJX}W3_(O8#fx`~4kU zOO@udF=d@ux2g4Rkv*Q+6P9%PwcII$R8OW6trV zsF3W*q8zi2@EDsCVvt0je)|p^uviBPUU%Ki#h%N*lh$q7L=Xek0h1n(h%yL^MhO_S z0y9Cf3^AAS!It97{+B$osi_i5rC2jqrF<0`J^rk`0u*Hf5W4ox^ol1KoF-Tf`N$Pa zN89*m?flcC^=h}KB84JWMFqd|Cd!AWl)S*BnG3Y>lv@=MSdrhEbnIq08sJ*?siq`h zjvF-&X;-Szcnao^%494h1mM9!h$3<*W#cy=l+l@+$=%|ME-)usLn#oc6>MYq0W801 zr9N?lg8O?Z{H>e5u%TqdeZ}~mkiN+p#$YK}OHpfc=+;tz0E)tbhT#i`f&2BLY~lMq z>|Zg&$;@+mv$f;vm71xIJLlK)Q|T^*>v3D(lRxs7>mUrl<0ES3lOGBrO}^*}X5o-@ zh{-I?-+o7N`N&XFYB2mxx>=H zFMbls($ZG2>j&pKHPD_gFn|wNCbkf%khw^DoLi#OsR>PG#Xe7*oCG0ZjFO+_>TUnp<&!JkRTF;$rl8WbcHN}KX?F>QU-n9 zX1FeIhRB7Jtpk$dbx=1sp(X0~nZPJwm44yW3Hy_0ZnhH4ZrPL+jU)|8875E|(ob_n zwqjDxFNMSMd`sygT&N-KKW-^AIGU6yC%iE{LU_V{qD}#6EEuJRKv1C9CPx(4yd}HE zQGdwF;3n=BM-&rz5E?6$0uP{qZ)FNt^gX45j6EEsr3_*s5XA7FWbtVUu7mX%<H5c=lM}DfA8oE; zb?IVSz}<0sXF82;J~f@gv1%v3^Q|@kVS{Y8ytq`Q{!{6K0+)P4B={IA_kHRgi+?@w zgkl}O-3|4L)MH0LceIqw-1wNAlF&*MGO!{|iAd&O7@r_vqs6!+puWX!JN;zwK!5w{ zwdrO1Iap#GPq?w{v=Vt#5)pYpC`E(_vkvj5Edi$e!C!O$Q0SU3yP0wjYNWu;FL+QB zWl{u*aqF@|mES~bWV?Rw)3lX?Opf5Vvoi-)q23xOIfS#>D4S7*>RF5cl?Dd912Iz# zb&yDB3DQ{IfQk@o^l?AA)xsc(6rVSfkl5PjVJ9c`1}TWm3p`?sQHsQA$uO$5t_)=q z%yBQ#la{^;b;c*o8}T6&Vwe_E08vvBecp{$wci#z%^@xCkJ$i1i1pg{98q84vpks7lBh3cCMX()D3|(Y3{I zh8dpu#V_t0e9^NuW@{#{?=2myq(ycIWY)uugI1soZBQo22ploUO_Ii==cv;c^q3+{ zBGQb>(Wby;cikJfwXnzn+%5`YiwcF3hNOy7=t4Kq`rzxRG}9 zD3gbgrZze0!4zdbVFm&MjZ&`(G8NiGXci+Fb%p%mc`r=Yzv}#S8Xyl3OzNBE>_r-@ zbC#qwThAJVM47fW9AyxeDvX!Fsp)B)y@G9~OPC;gn{0ae^Yioe?JBCc>r@%2HOvIOM4@1RlFDc%nnFE@!~i3lU=o~c0v!jsOn{Wtt;N*6ZL~LJC0r&EVpvY= z0$T|TWdfGH8ahrMa8QC!wk@IM0^{WV+^7;sQ-Pz{YBfu;h;pd{Zr+BT$?KyV5K zbcP)+$jU|#;^3Mbk_lNItl(eUKgG%}CcK~jG$O1TS%24#wDjdmh%Fw<3ZCOu;)FPM zj;s&-_|UF{WDj_R>Hcu3pzn9rsUQ7li%`Rd9{a0%e%QP5x<@wV5mkdD^aV_0_m{*# zL=$#uUhNGqCv8wv9md9mz@73zy^lK`6W$5SUwr&i*)dOfVpeCLaE5J+iM6IEhMOO3^o#L znc*~U&y)`i_?G8dJGO+X0&ithb#MV?h455VL_>sHc2rzox{*uqhptm4cO-0aL(eCaWd%C7s_RmIuN39QYBn0IDt3X-vh zrK1ILLJ^@-RgJZ5#rs*FC2nw~05)9uZb2CvDxQZb3dDcb@Q4%8~tpMDF zNN*1U1VR-va}8-?qNx6-v$N%&U7ck&{)$O&7Ir=B395s9d3q}AAAiF6w(xN$W!G=5I2w@8X$aA zz(*Ko>LALI=&1s0rO(h3MZ|HN?r$Rh>t})EC`;F(W&6Q@3J*BR3_P-xg;}Xg$UQc4 zpnzGu)Y)+lt?&w)3d_tYNlAJ#;3gGBilUG}2Pw%f^TOO%XiXArJ-K4*gm(j_*Jo39DTu?(mDI~rGfD^se}0Tf`vZKJ3XQe_5M^v6mW zx~Z6V6n2G zbZsao$i@a!e&_=olF=?n4DzzLAWurM=92cHkdjYU2$C6C;e!PrCJqUtPh;dF*$|ef zLdsf3E0-FR{t-ofcPJeN%R4YZ0STq222*b=t1rLDI-AOpG~XEN`Jc2u;D~ z3neYoEEk2ek}0L!F!y*4XOM_8Ai|hZ=T-xOr8FV=8`WsVJS{0SFe$-vF+UE@EN-@nQ{S7(KEdW>AqI~e! zy11eSr4`@-U|2G6G(Z6=fWbz>he5~#hTu87hj3ma5j|`)q-cOi0TK(kyTmV#Hn1i_ z4BZx&gU1Q`BaI75Tszfe2m~$(A}Phg5JBPk{Y59AX}PtO?s&^PvmY^8HT}VNr_G#W zo*|G@W2k5?Os74|`?K!YME1gacV`d%hxengall}>v$PMrM+?M!G?ccr_f`{Fo|)E7gEC%1{PM1pG9J4;Mli2?rThRXA*lm9b~YI|m!t5DRji#YAOu zez`xy=xYdC@)TI6{1O2kL9z5B{~V4g7-_z~FR{kn!D<>D4{lL|3xYflCliv4ko*%E zqx%eQAzT-0LN8PJ)D_eY1eLo`NQH;tE#d)m7z#m^WPbeR5e@6O%*%bx7*_Hv8PMVt zy@FSb!sR)Nb_=eX^?Av(E>|(c5 zYc8;*Bvgqtj+kNnIx(ggOVC0ep{D&HjWX!u8zxEPFem~j`|+z^0fTk>^;KhGSyZvx zAu{*{N=6Dv^btJ~+4+bPpu(`2v@I#m1$_{zq^r~f3I%zTf(!r%gAPM2Xw{GdaIh}) zH3VZSEa45Lh8zOJ!U{?}u4QJ|<1N1^6RskTSwJ!WW8j-MvQ&XZRs)|BvPH9|4(*%XI3S7;ol+E3KuUpXKZJ_-& z4FpqaxvV~5i=={6`kKpjhdu-9P&lP-Ku)kSM&CLx6$?N4NxE)wv^em-cNe2`3u&Ux zjK%1hqPH-Y_Akw3_t4h*3tpNYw{u6zkLGA*AP3(xiq57xkSl^n`RX0+1WcbPwI#ZaO|epczIgLUBdtUGoRkJpD$$>s0q_767`<*G zxDUxL{_Se89)=36f~i2LDUWC~HEU)IG`10aE3HV!jtOyxl>}g!{_&?~4rkeXhvh~6N^Rq+JiqMwAD=pK0H4?W^Sa+^ zovGrOEF-{E=5zetzv)&AD!`Jv5jPz{CU;i97qJn4Y>{vY1{@wC?Fs&jieY< zD=ieN62Fx}Zc?`V2ou71q=&IIDoEw@kaE(}`E-z=MTCGwPDATtCkzl0cHK|dmd5uU z^0<@&8F3IBX|Xz)4Em9xkq9;RXG|?}W`nLnwZ+OwU}K%C?iL0FVN(Mem50DP#F0Rz zEVPYEk(Kd?v#&tq^QE14WvptvnH07Gh%H)I3N>Ba4_c*162`q5L zu7vco(piZ_T~sKd6~f3n>IS>i$wHxY!xNvLZn*qgX)Vav(wIcqRMQ+lI_Du(03ay0 zhv;L%Dwyd)TGDp47)lBhuoAYy?(!IU-GkX(2=YCk?5UspM0Ua}&sXM#p(qeI6O>Cl zpt+z%R{-UUpuo7QR9h81ltu>SkY61nm4&baBx~jg5771aeuV&c4ik%XAd@{>7i{~| z$=@|R*4u#9dUU0!0n6TwG(o`+F%fk~ORG$vL{|zDYhyf6nHdVZ6CqAVV^T8#%eqHb zK=$lQCW#rxNe48E*&|5=!$*tVjVjzjgkLref(7j~l_b&knn_g3hmIBUQ5I`&p>;6I zok8t#f<{n0Fu#fqxNWLs+3pa;6dCpxCOrsdn?sK=5-wDW$GEhmWR3`7w85e-1ojvc zo^lwR+yMo&rLuaYmv%D4zkeoGMp&9RH#f9&)m4{L$vOPp@2=2g_dBTn9f0X(`#(MI z=RbW|_JVUSSYRTuwm1icF~a6-8s@1SI!aE;5(zG%BV4-X0H4)*=?G}2*gsumxTWli zVSdR*A+{s~e4dzI&>d7kDOTw%oDw7l{giBmvs41rwlWnAstlBXWn1`(Ul5+u3SmVW zgs)~OlH7+D9qD8V=^Xy;wHexzjWRTyU@UWz&T1${HYFVcR@fWDrV70L)J+NO9%SX5 zaK9QE!isf+jI6J%tEfMfF26E<{q!=?vUFI~N=s35#gW3!@(#+s~+%H7|c zra#yx{@7zHkG%KZbm}j!F8V`5Knep>AA!L@D4=q`kWvv1x6KM6iq7x&+$HI!B2 z-OG9pgCI_B9>GcKoaDns(2k4%!_v&I>=07qga9JQc&N)KYt(Q{u*u=X+fNAp&iHk(Vkj(rEp>b& zxS0t^bRm^{8VEh0si>Ub7eX6oA4r0n)Zh;QVJNF{1cD{ zV%hHoo}^B;Rp3-*79W5D;<<~~JQmtqk|IG-fgFC2=V4vdz^QnU@p1_4-Y?Wq@ zm~L=j_%IPDO!5|-Et{I7{n0zNKXT6n7n~6&kJ`Mue_Z!_3;Yn8>0`*Xyw3j8mp=Tn z3oiKD%;&#)%hZ9rBjefd;%F@&Xu}tt<;SUmFs;cUTnJ6MNtfrN5dFQJO0rz3>pAAB zJfdKOCnZN@!y*fLxS$?M5z8FsfixBdr&1rAM9W5^D~T1hwIq%55Dp41d9|c$#k}l{ z(*OdMzx1xl>O3rsGZX0Q#7<>tIF&nrDCn|?ROzG_1|6b{GRcRj!BbU|b{Z*c1cn+U zof^k&)G`M&xVID&lvuJiH$VfddQ646kL{Zg`^LpXp1T!Nyh-2Z;fL|(Zv#znBt|q{kF8;=;?tGaJ`UP#Xfd^p}KYJ z^M_sf^)&F%hl(rq#YGTm@zWA;uQMrnjIThb{iEPUvg3Mc6<3~iR<`Tz+tSfISznoC zlMnK?J9G`T2A(Ms=>0HY4zRca%_wdvB9U%`<;4T(HpKE2Xxe!0v(vLabx~@tFNgi* zZd&?_=|Z%zB3i0&JO)gDP=1MATPmvQX&T^OAV@&^oiC6qWdvN{-=4M%WE}t_Go#H^ zKvLn0DIDnTqGL`-OLKGiDL8dhzzo`=GK!!um#o+-$cu()hme&doJ2*vipkh#h7w!M z3v7PFh3s+F$qwG|i!{l}P0P1kn_9EeSsTSP$lp9;*;ytx1}M+D5BJ^AYEWj44T`Yd z3G3Ag00%^S&~gw#+i7uNHT> ze1tD98TLyjslx`bgYcI+{iiXdRZm8auVRRekX}OkSDC#sWDwTB@3|*`urTvWoJ#|dIu8T` zLecyWS`F>sq?^#n3?U3lRih<{{~Q6(BFosOV{Cc&)zLLbr4_j%93}M1eI>P304zl+ zS!f?mP!sAq0f?6lNi?Ss=d6lFX~ZZ1c>!v|W<+d63z0-*HBYn_)`j!{Eo8C1z*bQC z0B(uqST;MgD;;c4aVk5mt>ceP|M@%L&1=VO3J95_5a~>4fi!@i389Y^Qy`0HJhfAV zmS}`~|L*pdge>A$A0D?istB~+L8X(XHEUYM2fmN0-j;PAuL&sP3Kj(PgE=ZEAasg z2vCuZOIPhe4MP@N!s*g*`*p1${n3(~focc(KDqK2cJfxahU zc^VB3qqdSJLKh+1kfyw+{FOctUG5DJsrJ{r;yd59|rri95|S(C=lqZ#(-$(9fWu^FBpb`_zfMq z+qvEuenVDJt+-LQID`OiaG}84PkdtS+voX$D&1`txM+~0o#=Cr@7xTyRGLGZ@ZLPz zPoPjz)v13;pdiD2L)~wUl zETEJRY|1>jA?l?n>XUD5G)%58QXAQ3%S1-X2XLY0H&?+zDuspd;Ks-x!ojIH!}SbC zC;{Y=OOauR@E@)N?V*_~7OqA6G`{Nb!_Ie?t^{Yko(%VR27!6He5jb6=RAOQ`9i{?El}XlUH1 zAYcM6)vQvIipw}ddq7bLl+nMSheuW_(yT{(Q!7x|O{}sNmn%&|^zs^q3=*FJDE20MU3C6mlK^)1&P0_{KdN%mI(nSW0aE zSJ>4L1f+RF!uBjrrC;~k*#V@)DKC3Xdhwop*<*fkdC^?IE<*M)Rt}acB`E@EWLqi( zaY`0SgXswgj{Q^??zlI7d1Ng8?A5PK90`_AZH}e!>PVI^(r*ex4q@nVTtc9W`T;A( z0k+?5Vyo;F&-5T8fa!E+=Rk26;TXrh?*rL+97Xq-uYEpMMu!n1`t~`=$WRRxvw~Rx zEv}d$jDE9QgFfu#5?tX8x=`czl;=)Fi%6QlE3nAqV0fT>OA%ty0u`_!@o586E*v7i zzT$_)*WUPF(-}|~(eYqauaW_$2wq?TG92E(NJl#g#IdG@AlmH$FAg!*gz%r{#&Wha zP|cUL@pW-gr9ICmPcn&A3QEthWP^St1vo^K@LM8avib;{ggxq^#rXHWlh#kSvf9O; zW^3SnzIfjqgf+IK&Md1~{_?Uti6m7lY)H77{HxskJyITkhAcksW0{>XDilss+8th-!CIk<7Q;l?E#; z=1)FwolD84At98xB1aHOOsP^Z2LSn!B1#Di(=HQEKp13NAWpf3uV4-WB!a-OVHe%O ze#BT)qXr9GKeGo1Sz!l(Aof7o?XNnDMJmqo>3@|$;*W|{FkBQ%?iD#hR_E5VR(uMm z-U6$fCXK@bq@Cf09XY8tlo`&HQg~o@@nSiv5K33&ShEUV`~iZAmm1`0?@jk~4iFVG zpE{G1+0%Y>ReI)9C);xI|0=SztD_3DgDhfr+0`A!RCMcGb&^ojsRp7SXmxk$K>C-p zN2ITva9q)7&88EX$XmmyIU-sm(nVn`I)}lypo1%lli*XE=T(@SQ)aSB*N9|GX!b4qTm5j zziu?bP7z5!O+x&zc+2=n2qD;vrXagDl~v-D77ADkoCA-E9>Hox7-2zU5o0!L&@RlR z&phGL*|B6Ik2yo zJ>yYn`rzJ_@7%_?rjj-4gN|=BoTO|4p$qX%vpJb@-H>0(TW?#s+k06Hmw69C|m zQqh&<8!ZUI3^f>`Wy)~a&@Ip{h(v24(8+3(iV87ljYhxUMA`4d`TD&U;Qt=tpZK}YeEaAZJm-ibkKgju0rvWV zl`G?%hQ~hRy;)d&q1|%BBF5T~B!n6qs4)WJ>oe@L!cTFm;i~=S-V73lY-fOhlVEZX zlF&>+bPim#U9oU2`OtHvx#b{%K^BdfYhoq1O(GL)R(Eaw_Px7 zFc>d+MB~7RN%*Ix0Soif2lfB!))029vN6CAg9%)+m9)U$BL3|;;J;;IU%GE@ChcK0 z%;uNBE*gRZxc^of4lKn(~088}KvLR?tSXMZ?#eXySAUz>?kp|s+to*cLyM(B5Lp8l%TxFU zWkSp5*6Sa&1r7sV$=#%0iq>d~ND}!fcMJ$oPAbTgex^OPnfKwXTwdhNY&Mg?4O2iH zHcq}|$W5>j>Bd&|H5ID={EbhzxF=gVSSIQ_Og|iC{D-@q@rh4pn4I^8bI(0{`rp3u z{ki4EI?Ec<7=x^R1`M-vnPyKHUX-73?uNz2u{IpwgA+qOfi|ELcAtm=D&&r31`Q$> zB|PX1uGF)ppz+Hml4h6)4EhZ^K~`H3jtjC#ZBnt47xCn;C@wZ$L-4p8EQBw+VaoKD zjJuFpO~rEstwgQNrg|!3OE{Pv34>3Xb&;`^Y%ws##sQ%uAYP+1;8FpG0UQ^jkKEgy zoRGg;e8b4vH3&~@utb`JSdQk)zYFa?vbfT57=QqFgI`?DrAxsD88m01x0vl)=rM`P z2zYoX{o&_7ouB-aXM+s@cC=#C)jX^mp+?(})`1C;MLdv0Sq4reP^1YKp5d??Ojk>-0?Rv$$(ZHqDNe7qb(+<+_ zR{V^N6;HV2i`k|pJxRMa)KN|UlVTA(DI;h*xKkt`n?)G7KxC`3sl}df1`(NP#I?^z zqUxsi={HJs+5_mzCV}6XuZGVQ$W&a?$v zRy#nb5W&(~$Zww*!YPDJkUH#INgw)*6gzs8uGg9MaK3Eff7t6q zU;p|~&UyP=M%F#ysqgAD;U$4~+=YI62Ex=DDutVL4m}`NI44|rgHXbPs*&?ZV}W|nZ9%4_75C@b=E!5Ay;0L9E zaN;%%k;)Wf`7(qGDvh)c8POE=Qx0TJX#(Trr z=M?Au^7{ObW)J44JmY!B+fg|7rbre?dI|(xqy-rA7D*T)yUmyTT3N^J9e1XGJ^4ZX zFCKGTQDxcmBl6*F%fL8G!y9RlWz%@3i4lYkZOSr2Xl(qcB3?^xVh+_`ix z?Zu^&Hf+qEckA`(m9q!3W1sY7swA5hsms~JeMV_c45-Q+ro;bzw29r~#^&P0Od+Y1 zicn6-6GR0$=s|l=qCuXS5ZW+rh$8UkTU{%N9nzHDp-aP()R_uhT4OCCY!^A3^B-UO z>f&fBYF0SNtt`P*k_$PFWhpm{baddsz{G-B2GkZyUU&i++6eR!&I;XxgmhP3Vv{eg zS?f9DCx!B0|@p&c1Hav&)gSSP{$DTWr>a@;WXA8}_yLgI()4YO#Bh^YE^zx&$hty}TI z9p0Bc`ycu`b?erp=YHoKTQ~j51xIzC{PgpSv9X!?)`FzS=pQ>SI81hmRlb;zkUZiG zf}!JKH7o@U28|k+C^#Al(tX0)6=IT*y!Z{tLU!ImbHOE2yIgM~s1jDj^d&-9fiJVf z5_ihSXUi|ISaJdt!-RmrC2>=(Mx3jbG1Qf%5w=a^YldaxluMjC5hcLWpNljv z&dgW-;Kx^FV-IZ|5{Z_iMKbL-iu-QG@EKdB( z_oipFN5<2(-`gKK=~UoCN@&E{^ENEt3Q^VPxKtt-7_`xPkM`mq-qKFy3j)!O3;dXx ze}N;aE+2-d;WgTWe|oL#Q#1<=RU|2Jz(YI}$I=xhGOz6)B^NFru#H$%DgD!_4@yLx zXRB%xsbTEA-E6fXzwE;v@RY+mut0o1{%M{{OXAn=#8{ws#UGN7@lFgBnUG{jOp(^C zkr0*be8nXsRN^KS#OYskbz0hSU+i6DOg1z~dGy~3#c8=XZnAjsPv$V~vFg*vpIyji zWw^I?-@_=4z)oB(u4r}BG0-AKp%8$+1Q;v{iTa>)jzn+?#Q|~vN7Yn7e#4kVCcPp9 zq7a3LglHGa3m+OZ)n}=FAKyAle+#2o+~y!w&(Y@$EBVjRk^U&g$6>a1mVNL09}f&1 z#vhW%0~Z(=uGRLu_FI>JdSdfYzgTX~!3&!>*v`J_4tziJcL9CFGGz-0xIptTL%3&5HyU4LxogqE>E%IfoNJ(nnDiUCC#TdCM1S^4LBncwtjz|>h!fsFw zk{bR%>Or0u6xO34mq}4BP@|rMC9EK#cf%s(M2sVP46YRu7=?$O+p;-ELtuM z(K^8(uYyRarJ=`F>33ikWHNOa{W611H{G3QpOUONk26gF;Gz$v!6C#W0)UA&BoS?F zfGO-O%_?hG9}0o3=QXS3m>?vCEzQlPgWvmM`r*9EF9C~I;^#A}s z07*naR8bvfHRJ$3Zfb^mOF)RgAWIzH%%aS8f1VA>4yK!n*>n}IlI^%bw!G^6bUxv3 zub5uQPrvXjsmUZ3D544OUrH(Vom$PYw=h{gAXZrP(H~^BA)8;b$3}7WOJ7yo@b14a zmXsQ2bIv>fiG0XQ$hbI<|LUbTaKe{mf#|YcEVawrFK117>CLvjc2| zAw}xQ%qbmAYj>D7W`FX=>n^|@$+CAQc!OFO+OD2VRkj7rz;PO6Y0$tx&qEqq09Qb$ zzsU-0fgC?XS+tl=qeWth|F($BR&a@7zQkiNfqlr@0X>uS6J`;=^B&_gcV1wwLfREq zV8xDSLk&W`2z@v7v3k`npFjJ?KYgUdAFkJbNFVsW*BOu5y4Ai+^;-P~LI$728QQuf z5i_zykUe$_(AH? z%7Rsb5RE#7k0d7kG;>4V@c_D{PDDHZAmK>iWU5gGD}q4aqt<{JF91xTjHLpMB7SvQ zag9{v4j!X=tW`k?D~DR;5BO9?BQe7VT*9r~K{$d8SIj9>9Q~4pu}4wNPwggN0k9dX zcNY6;ThZw+u;Kn|Z@P(-z}cC~-8gI$aA0XuMX4N06-Y(AbbyW@)7=xPJEa3Z{9*Qk zm%J=3Y$GC^2ZOZnc;XfsI(6(0;*|jcMx$Ty0X)2lP+Uw{RCB%gbT>|KTi!$nY<|%n zWoP}(J5pnEO}J8)RV4NT4OH{!t*+PUYpb@OLQ%uyt{idMHr2@HQqvSR19 zv}a~6AK?&z)3^Q!(BMiy1|amoUr>NLm_s)DM$k0 z=XFdb(EU~diO|4M4Sq;kT})BCX?XKS4PUo4M_HG&MHYvF8Pk9HHyPZSx6~xRTE%K`s(esXFM(m%KQ&{^oyXW1SiBF_0D0 zJJ3_WzgI`MU^4ME*vR_>j5CG?6#5K(=?es~8qLTPU?YQV2dF?VbVLV$JrXfHPty?g zaF5#2AwkR@U~L16!<%3c#vS$(JC<5@q|)gn74{hN46*U<%v^2$r$7HNU_DgW4#(>O z0lv~JP=j=)BrV+7Erwl&ia}iXJ)s6f9-~pMOvQ&JffS_kp?bPKBp{p;KY6D=PB)-q zVffLND;6%J!EOj1XT6n#CL}W=LlFnH0||njNCrt1=67&OHz8=GVT5@2+ zNH7WE7BT$S3W0PfnX;Hff=fAzC%D(}xf*%#k#kDA8VUHAc{L%-4Q!M|J^bV)@`m>6 zm{1^T^fNT1G%PAJuVbJ#pF18gUd$EWi+jX2jH1i5kPZXZe6( zjBHqz(kvCMX%1u?pZtRSls~_)IQl^+qL#!rZ6L40P`|WQ!`kKcDa;@`ZOr39Q24L0 zaJ^dFccpFkZSVfvMeG&ZFIMpkm7N{Q`@uz)bZ?(3iVfogRfM<*;Dk%OfK*xx6|u{X zLMf)u=s*+k5G@8ibyg@klyAz}&Yg4x+yJ{ncIH}X*YR7@_-8(yCSLxEKrz&- zHw9=YNZm{O8z-Nb=G=SNyc2A=wfVHH`jY3dc^rPjpZ+B4-+WUlrlzu-1ytPwE2=+l zaDq;=V4^we4-Qe5ZLuFI6U!fkEXvf0kZh=^(sZHzz&LLOLiuhNKoYi`J`gc97JdgJ zdxqX(lDo=Ih6TQO4x#S;^7=D(|LxzdJ@PGY*-H_J-SvO~|E(?=9~)Zah&;}D7+Pjh z14#|(G5l^|1wbJ5H6dAz2G%u}}BMni6JjzdK zP5l6c%gnF|Zx0z1&MJ`zgM;uuh)uFe^BCnAN(^_2F@{y^P#`A&V@@kED4yz}#V~mg zmk4{xWp8SH!uUliT+H7)k2!|*yJ z#eLtqIyMPwE*wk;cz^b5-kcg+w&33AvOPvU8V~=F3Ev|ygy9tJWG0pgCZa~tO>g*< z;^xo&?`#&!`Up}XD6^r;Xd1<;Uqk@0$2-2#oE-yQP0N~10OPPMHcn0HSW2uA|NY3< zyeXaf`d4PvRTD6#k;cFe$S6wp)KHcHu7IF*X)wlQcu0(&4(|XnVY;b090;)EQ~#K5 zc>ABGebcS9hH^&9Gg2K@BfEceF-+fY?;hyi{1<;-IrXBCAc(C9gz?QqXV?||aVDig z(@9v>Gq)OmV5#gbAXK#krZpecqbM8DOYf;IDYP+IQzlpb<&A%qwoo=+8?0~p!rgi) zjH0A63ZYf{<12*|;y09}%z2cRr`I46#x@Z$<&x(k#Dq3sE zVvi;94lowj>!!GKcWS=vEocYaSr8`uVj}iFZl(UMx8;lf>+@;xx*w$G4Zq5=*0lTL zbcYyt);N?oXM~lStcZm+D)d{#PU#&4W(;wAgT-BRdU+%e4U&8n>NX9eFq+1|=Qj@^ z3P&9{fjIwEbkPx&p)}lG=yyN)`D@9rL3A8$*8>9lw|az$5+t7P3&=byJ$u>_Tv)6u zK5N5%u$E?y-fDRXe+i~CRG@&O^Me=^cXAgLL;esN!D~_|k6;MB)(|;_2IGc>WQZ5W z00|6+k~0vt1whNY=XZwqh3(kRk}rXK@_glT5O@J?XywT>sj| zA|vQALs*M#+zQp+>J7)`$2{Q~#lxTa#A40aXJn)6)f#iCH?LCz(# z9W0SaO9!Wj0iV!@p_(vhs7mXDa*Xf9uvq|v9tTeJYD^?n2T+WthnSkNPslhrk(!Tq zL~1x1u2!#lSZm03=pXVFi#`bf6ZCG62Ti#WrNdKllT zL=Ab>$Oc)oUoHfcz!F>sF8nPG#PAfJP~$7;wVKR=_10ayXWRPww!U@!#;xz&NsA7v z>j44&Tit=|V)q*!Lea<{_F&}`hUy~O-QvoaV*X17AqC(QdOettZ1~lXcjSgS6wqP1 zDx-a%U?-om-3or42g*9x0y>ghq&GASfsE~}3!d(j`(ntX@f*&7`@A%YIg9{O z46aig_Ke7~TB3Q0XGeUnkrkDIqXSH0&Q=?GjU#DizX zXYHeS1M;;2kzFpy@9$tqJ$#f^2J86=XFa~y^wejjiN`-OH8vm99~$K_3cXmYPZYbb zn7$owV3uYdqW0T#nkVpKc52rdzNDksnN(BB@aji@p<{=f1SugLECw@Zs5tTC?a zI9fK=7z3w7>$Def4FMFR1hD0R#TMnuP(h_KlFznVy#v?XR9SV_Ls(dknxykVAVBcV ze=ZGdI!|14sR1ns0S z693`73wk}$m7a*_;JTVk(huN(t_zFSuF~>_fHCYPJ>a7%iP5qsiP0s9l(uTIu)-tm%r)ttoLshiy!$! z>b&`lS#{@J8mbSc{@T@?NG}Qhy@dRXNN;RoC_X5Peuo}7{tH?{ zV07IFnPo4S3d-Fe0m)E@AFLshN-|m$8sM@e)FXjFQ5sINts^@<9hME9QIts_8{|9G zM|OT1RwaAt`EDxxWj}wD8o{V6*TjJ^{qhZjM`Z}m(mk&+CBsn3Sm}_g_HYGMjEjw+ zwu(OJB5x?E5O%;x-BbeeAsextX(Vh8SkB7!yUW;0-K>t(HL`k%xaeV`ISwqg6)1=Z zPlRU56o70lh)8L=on7_5cRS3@7GR3?L>yQ68ym)NzG`jS{FvwF>z?!I{^|#xR>>zu z1D_l!;G7@A4w+*+EfHKGhFCVoSR(9bSd}B<3MU&)O?}H~8nlr!2N-=!Mbafb-BE#R z_BGnSE5GS~{6%r+7ycKGLW#~3L&3n&VMpjah8kNLg6K4#gD3O68T<9+3V=>4%fFkP`9roYG zOOh3xE?fV0vZ;wx>9}&=6Uwkk4GkaxJygy<>fL-{X|WioA#j%$iscPQDO!U*#Y|*S zjw6H3OMpLkhS+2@@KATY!Bwm5Ki>G`HxxrJeo?mYqVuzb?|(fFZzqms^@b4M_?@6w z^|;ueWE7B1;8vzAIh2Y8(fKGl0NyI;9IazV`LJJQM!w$e_OH3|ztW5c1UN`IEUzzr z`OB5(KmYmiLrC6WJ&3uq4(M24AkknG_zU8a{9z&(RKAhhpbE1~i}XE&;VWejx#Tox z67e8WLX29w8sN_I@FYwCIXldLNFTP7n4wjtEwNcBk;v3wd}s?+#)nLK(jBY@69}X1 zs7^sS;7E}LiO_QRkJpm@?wR20PR*v-*@G0&OT)v19P-FHfdd2ZEr2NKY=Hd4z<^Jp zYUCZ95qJ_pSZJ{ENFO{8iYhBpGlsxKh_F8kX8Zy};-Eqb-NhTWDx*P@)Pn2=YUU|UJUu<^`k$$QB~&2@DCsg30OJH*QG`OSkxmB&@kq_5 z$|(<4T#6ioY1oq{7h2m9-^%`AhXE#zB}%-5kUML338-DODh+<`pVQo>-%c~ndtMse zzm4OX*25jF3=3MJU$Ls-r`#QCgRtx#$3a%4o>S+7Z1kDRLcEa)_6Gl;vZ%9n%FN76 zbNhuCZaM0&|N3^b9WGa3>~I0*cL~QWx7-r_i510WY<46f1eXa;M+KpBg+5gr$pmcJ z6P{8YX+KB<5HmdO_^f;ai6Hmfrw1;OlAsl=8q9XevqT*(eo8737vppIMu!SkH#`SF zsv}@DxC#541qcXj(nHkPfzThEFZ0TBEZzuvTrLcHh3*tWB;cREO?TQW<`1UN9ep$# zNww09t_|R7V`{-ym1@o;QoYt6otVsrCsy^V&5_F3+BHm0aSr8JBO5sKh%|EK+J1B6 z(OGld+V0qKn`^b65$L*6meWXmh(!|9sl#bGjZ;prwJ=&N8ig@wC)Ts=13JJBZ?R1P zSK)ijnfC`CRFLgsrY_epfLKUXLgKg&sTyYGQn#%t6F~NCQol^2J+k z>fikFf6DLt!o}&HgHxPbk4~X9wrMIR5QW3_rmiIuW7QIVNdGDJln&9)ny2;_2Txg4L@qXh&tBR2c5DPBP&#!~uJ%)2JpATgWNqTL zV=cOqy890h8^{ihafoy{-J*?9CADZ!1WM%qt|IMu_q!5DNB1jDHg=xt7mZW4pz6Rs z2oY?Oh%6tOm4<2zi6mMbMBuKBkCJADMl81t14<1=n2O;>uORvYaA9n>7PC8GbeNay;4Jz%AwBo%tmb6ENzbhWUvzLR#Bz2I5JD|hd+F@PkLNFe`2ob6HPqc8PM*e&24 zhgfu;-NS220<&Pt0>HH*D;3{+&-tZ)`9F0bfM5rMnJ!T^Rgfl6u#KX}eYw_t|o z8c8;20sw)d6oXV11VTCF3<(K%Qfutv&dWx9D5Ng<7W0AXQtm?pS_34{8k};^D2Kro zg_C*pgs8I1ESTo1sK`ZHXj3?BFRlo@;=Jo#{vCc{B4KTtq5qK6q%A4iOdz9cHkdm}u`3FhxkI#sa=7|=(+8pMA+g8N8BVTMYk_GuG$)PL> z5y>rY!IUg1W=l?F7Ks=pqCzNr5SGNZN;S%<>KCS?2%WlZ7&Y ztK@~)M}>PXsJFpBc5;JaZj`))Nya`Ff^GFw06fSAD7elFp4iq1SB~UvqzkQA0DJ0p zcLE1ArRE&>hDDmCo3H+1_Uv8zQhvl*PALdZkQ?<%h!@)%?RVl#;ce^}mZCb-^11Za z$HiOBE5_#@QoDo$c;UW#(~fUnk>B=>e@(ML`!OpmJ&HIYSd3PoM2`6)|E5XLBHegiIPqfE|Q(Ko*hLNdc9OEdHkXyQbNTonR5`Z5aAYe-L zWVFAyVbA`wyz@X&U$-h>=Fk9$gv5bugO?aR80G*ilvcE~r3-+II*@CmVZ28-qqdBQ zY2rr~zu)}$htdfqV@_FHoz%2|s#j3uZ|)gjSr`kFc!${lq*UN5gp)!vvaZl-%;4ED zO-+DMn6d+3{~)>Yabs^RggPW_CA3epk0omH1NNWc5_f070n#8yWpFihG+MrGN$6CY$9KnI2;g0ki)gOBh_tHgs;q81_Ik9&Vg zSmw3fg6#m72OHV=H?K~u$DNfXW@fTtbeP_gV`Q6Hv0SQ4>>tUPzM?}ZhN>Mti#2uw z;)ABilY|SgV1lK+oU^oh_nPe&ZpDqV^{{cHJRraik;=+5@U#e72k4d(zHkb!vO>}Qz6r%eBvq>O zhFu}q^f+pv%Yq;0+|AQo{;KT3FMVNu_)(9b3WYL)n9&3*!I%_=nK_u2r>4{3(Hrqs z;-KK{!o`C-)8ei@2?omIe^#$>YfgE>O9dS*!(TJLT*Lr2|JCnT_t* zlZuH+CRs3jXou%+@nt`&CN!>akAR7INVV!BeVE`#qINq^;++7#&7Sdy%Fb+-Zu!;u zRP`2`D~x5Ut^9X%Js`k;3-QS2L77~_hc?`@fm_%eH%FbNn8wR4A{bye3@VtzE8@$v z?<98$bjnb+g_9gxD%Msg8%mWmLI~&^W@9v`+Z?l2(p8`QSi14O@6Gn?-dD^mEoMWc z-Ni0V+BOWO^AiC@#=~~SO-}Y;Ruu>2U&?MPmkNPiGWDHg78D8O3SOie?-2v!hnXQm z`H|vfXn$FT%%BU2cQ9cveY6Ia4DsL_?iJp$EAo%mHHO8LFi@A!gsU(5X!_wrA9G0F zUyYd5>!Y}d$OT3v4GQI88#XMc61Ryjno1!??m4ay2skDnjqoRd8tL6&yI56*4oRFo z2s_6!>@iIcvJ=akb1IyILyodVHf9MEjTTUj3X%)4En?^`#VV*P@f5A%C!uk)m^xxy zq>UXUCs)Xx~%7%|B^8x7Gg9*B-2EqRrBhFO)ws!He=Sm2q<*HJrAu0Tawm1Jr@ z@Gads(<}Z#4=E3oz>o5hT%ZG8)oxH$W0G|4o*n&Nk9kfdyZ0InlqN!k3BevKNpPHEYLgzLpy1dH!vSn3p;HFep?>Rv%mRc zovJ&eccKpROH*5yU2ZCu}ptg7IC_eG(|K7dx z_IvsxvkU16j`15t!ktxb=6_ggW)H14vBes!=*Ghh7b;l!3R;t?wLbY4aM?#jgq4I* zLo);s5ZelcldLD}mqds~69P?60$Sfdxjc#oGODy%GOgZMn{N9#G8a}ikvWiuSU5Om ziizrQw!Sf*ZDxyCf&!H|sgBSdVvmAV@Z4H_LnBzs>lwUTiu-vVL%xkzt0z}R`zO_g zd&gErvLotaX#(4@#_2k`qlghH=9nay>#|i9@!}m0YoN1A-lb)V4i$llN*J|pRZKS1 z;CJV%crX5ynOnE(bKX!K$Powp1UsOR(s++M!P3_vL1@I~A``kfBsUE7b#tj+(N4WOdCcV~qfe#88@op5{oJ^q7@LJt!#%P<0m`oEQO$ zx7v}Drs2*)s2s{BAI$|Tw14)RYxC*LE-(7?q}G%$#MKMvgfNgUQpwicc5k|2-EnE^ z_)Yovz1OC-mBD^(^hjF)A2A-lx9qkAl_u6WaFkRO4W@2dV#DX=IYhdehQ^Lf>(^{a z>!7agmEY)JziDGy{`Jj<=0x>@0`6kKLHz>Xe8tNIC-oO}JO=s{&N1jU8U^K`=7N}6 zwEz*@^C7&0b$|#BE;PYYreQeEK1r#!ZQI&keEj3u7>C7W?>}(;1_l^$ci2-N(t^N| zJzBZ2ttL2+hz-F6Y%g|#(&%2yCb}M?lq{v-lI2nBN(M`jZyA;$;w1=(L{n7NFB>yq zMK+x*d#<@5TL*`pFf^V|)<+0+Yotkz1e3B_i2Fr`0@x7Hs&+_7aG=(1D-}#|*$SLC zhZ=<*&@7_lhq5NwSz#x%NF-87-~Obf{(=vHF#x45d6_>4-qtQtNY|F3s*v%5`KUYm zw8-&gCY0Kp1-5$ar#0;AHeMSnM)GEVsM4qm5OO$DZREqaKG+hY7-t{$!TK=R8$e*z zD$6~hNLVN1evmU*SZ(^kAV>!KjChUyQlJ^B5j7i2Ac}-8AeHZJihSrTpJBi98!O*5 zF(VBR8|fH0;Ev)HbAe6nC_h@J^rmDf0PRE~@xa;=T`oKm3nED0Gm-UaZ8n^rTpP%a zqQ5%(X41tkdvW%@6Hh6&Uv@dCj$tWQm>@R*2QVlQQ6rSVNCi%yW~^?kV{tEXvd}j6 z24O2OYOAP%h!PG`_6nURXaX2yMN^I!=VjruAo4x1FTnL%V0YSsSZBuuNY#e zHcLfM^QfFjj!>T<7(*ZBLLY@HpeP5l(hHjpF|)F?&=}jkeT!8c4j29P!1bFLVCgJD zREPtF6P>Af2P*`hXpTUz{eG*p$P1}Pv0?Ws?jk)L0!kqlh|?l;OGs2monSxcCuUDf z=8A8YA?q6^?P4o&G7O9V7Fn;*M!0l2pkThV@H{gRLZcKw)qZBc9CS;W@QW<#Fq#i8 zv`m=}2(&?UH~?k93!s)%UINBbe3_&-E5E!`NMi6RG;FSN3nah=fM8wzD_MaG9bgEL z-XwX?KV1tX2R-D2QE?MxoI{y;^j8Pr-eHcx1vkrjU|5{Nh=$*|ohVfi8<1cyhJY;F z!X}WyDCmqK_||1$%^?8edFacPG!!EIh&eGtI!Y6If7mKTo27{|ey^x0--;=%TD|~; zMp2tRCRDafMP@jOlB>j*3ME_=%m&~Bp;K2QhL7S5&GkjSf9svM_WzQ@40;~^t5bj> zJ;f?yt%Cx=rchA|j%>w6y7jAH7gl`h?70J_38i6tr2;Y!vkw80aH)LC-qI*Qx!Fq5 zsJ`Vw$y+FwT_g@v2@q{`c2`4`N6O6V=HpABOSoU6ATpAWf1YSm|Iv@a4YFq6&g=&d zI)RyMSHMz3Acs-}!>TwF^R#QO&epN&M%CMis1+#M(w!ov&JMep3=HBVgIWVHbq{65 z1*gGZdHed?m~VleDnwy%x_pu2>d`wa!*!fUMo_@4qj?Ch&VL8{lOcXB&A3rl+1hrQ{2E><8R@Ho6ik64}*`g zXAc8Fe%BxbRRaXX!Fg(QVA+qQr2`EG!7J%7Yg-HRc)f#kOa~6JD4-z?Ij#@_2p{BL z(7wdTrV0=P)FW3>IuxXA9n zltL_i@;2lqMUYRu04K}TWQcoTE3l(jin0}mB;Zo$%F3pQS}DMPmH{eA##7pZUq}#2 z6qSswQZOIs%xP*wiKZQl=;dI9dQl{{-9Ro2v^JZy& zsjo|z0qpm+ z9z?iIo)JtBcT2&3;T`OU=7!CPTvKrgMA zPD)tSkwFDGL4%CcDow&p2iWHV`vZPZ`e;Wp1=O#hE1*$bG?)xQgaHE_Dj9n(CCahn zGO%t1MuoL}!iDr_f*sQh7$^b#0no6iZ;=@`oxHq&+7;_8#pk6hVMQkIP#4UDSzp0o z@6vRNrxc=yRSAd%&{8sBD5KblmEQ_kix)1F3xklXEPVk*ybuQ9;!TJlg{rA|7$wVx zVS~q8-wAtwB%EQ(0}%}c-8Mxr0-j?IE8f#-fg%N-0+E(Sezs@gK2Q-rX;cD^d7|VJ zht{UCxq?si-NXfriP zDtrs6J+}J73(_7kcUyY{_-Lr(8Ng$A-XcvBAwn+z9$*JCYXZ@7G68%0if;k{B~5SV z(E54Ya`S0sdPmxh@SnK&16hxGp|WNnpi;X7w_B7j-_07fpYu-{Uswr&WF?`XYQdx2?q+|PR4>H^uz`` zX*KgkHv<&C_N)g7_3vP+yWLyJ=K7tyAB2O7j|VCW!6!g#`10S?U_{)|~OJrR%$Z;5M173n6>((rUA^)X5)?A!Az$ z;PXf~@@17e=krpKFqH_Dl|h%0mq3f!3Y;Na6mm{A(rl27vIA}o$3b;CDnU$AMg#B~ z3~vRS!@Afxge`!HYyc0O2TJ0&MHgX(mj$ zG9eymwL%KH4ax{3WO8lC^ggF|5j!Lg@-PmZGWf5!gw_B?tT@V2xCWKQQ`3ZcfcpFn zj9DE-C)tq}Yl7ep3Z~f{+C%^%jv8Rh>+8nBIXQ$bJ`j2cH_JC#BzM0XQuiA5Vl7kZ zd$(_6PxSq|c1YkSU|9(rMA0ZJg!l_zpZ3I<3JL>knol|>zY(V!j*42yp)!q9h`Z)a zqU)sE(jtnbUhDxsySuHl-@Q{<-?imkTeDRUe|%9{*~yYxZ989JiL6XhrK#^;kq%NK zyE!^Zi;fTjvcHZOempL8x0TS;tI#7)U3-Jn`K>9~SmOrzOr)zh+qjzrI zdRX|uWyc3DFmT>^=gECc=;XBy(I2dUWK#;H9{ldgVq_fgZ45hM;)NEzH)yt2Z^Dx+ z^zLvJN+{(kT`nzCBHvI4FDP5v8#>})RE3QMBegr6-qh$1PEO|g5ysy^d2C>5NgF{k z;K?9lbE$XPQCg5NJRBvN!y{Pf@zYY{BJ>;rbW)AkcWP3G$bd#-TRr!J$-9!3N*-5K zD}Xqz%@J>utrZ-;QCh5h8W)S0${SkXdIz~Z7#z74S1>zwq=zX24UyOUp(KO~7~>sv znGX=sdZFTiM;ToI zzxojCWxdvY2zHW05lR{J`p$S6%5WZz^1_m*eN0_M*~|8i$pky#BOhGPIX8T_JH5&; zzkhjp__@#Igy8{3_#go3X{@*knZ;wN%^XN|)o8{^&}kp-9izoAiKkTU@F?0o*EFUJ z=)<4^`;B^S6^pV^V09E=q~?i@rU*faR)qFPdI1@bL(zolwV3kB*?xc-l>X@EO_YmK z;jCtviBHR>FWB1lAVf4o^w4~_&3^4e>6qSPy5{7Q(nH-N+@5349Tj^JkeCIs$xps7 z-TnCw7pq#cS$||r>b4JtfCaQ-;EXL00>!IkR!~QrIlYO5=ai%)uf8U&nP(3j7Pxg= z%m<n8qFb*Q0?GzzWHz9*`QEI*K?_x_}=P;auK^%wj3x+L6o3M`>6|hwr zDCi(qy2Xhv%?I4){rY0B%1)$&wH8GO|4AMB-aW7{4X;}#x%|#A>Gy#P47}@I?~*7S z<#9+h6rmb6B$fvX3@j)9v|c%|mu*HRIxT03MmrE$gP_I@Aj8PYric0w`v^dKT_SY^ z4NLiy#ew2I&+AoI>UOi{s#WP*^D`)iR<=C9Sk$2@;#r|OwlJbRNG;aHGsF!W$!Q); zioAoMXNN$b*13U7AV!PR(?bgDbBtZ{$Pvb004L8#s+xD~RRYf$TnAxOp1cDOA{HcI z97F8EvKS4ul~^Yx3Db{I6KblZWp;~;Y)IQM`D~RJaDqa%i^BT0Y`hAhg@<5ByeXQ& z8=FlT6I@D4bf$hL-;)>2<^6f~j5Z@}@eoi8kln?qhhEeOyVG5X#>Hm<(Da!DUZAyq z@;)mgoi{{gDd+42-q5h%R^i}|6UtT2-1#!x0?ti1RMCB<(hgNZemB~MB%1S{bLes*514`U9 zOuv>vk0G|9JS}%G+Q?@akrYaYclxkhOslnALMJRf*PdiZg%oBOVYsWt1W7Cgic#3b zCSu@)faf4eEmcuxJw%@Xjr;%rEw(5?+9$TNOiO$Zp?>de&7|(s-qe^_9hNRyR`9q& zXL5#iy}!J1Q@-QAyV3?_B=s)QC$V(_ks|g-;MzuWfsE1#X-d$Nt(vsAQqDf*_7)eA z&?ajUb>Z|DGd%DMB~zpP`CnYgfzCl2^ed<}fqfs|P5_~+0tBlb1NEHNaDZtrnZalcEw-&#I&xuaYSCGVgLMK;{Ps~|Z({mlzaAPjmIzc@%| z%W0NEGuz%=HQX&$!;PvE?FMVIEdKoFXBbv1^d1j*ZZfYBQ+&s76MMsVlvCaw%2Ga; z<|)gvO)3f7I9goh@%ajS9I7M;-^5v(G*khOzKxe+fxIT0W?lj+7rHq9DTzmipsACA@bo&Fu1*m7TUmT^;|S|J{9X zs-50EolSVEb00Q4`jifYsoU(>0xOl9EG@;9H7_PpV{upjBTGXwqenf96Aa)2 zdLOtkh8Bc%Prsyr6=Um0;c^mR z#dG4A_8G;JAtsD~4t%+eftywuJ^rAJ^4m)Y0^0^|hzfJKgFn2f$3J**g2i}5`3b-9 zeC7o~9vIN>bvr~L){D1uPH|%viqV~^Ll_cQ$iRvSU&AP>su#~=)Wd?-Pj zkkP)8n2a;zLqcfU5PBVR#BvL}$TAkoC3EtxmaQ2DlUEkJX$e23B|1%a8^tL&g7`(r zJX~#IxkDzrIy7aCJaJ-&8<8t|CU7OPR@LNb5}uNgT5XMy5Aw*7!ZqDWNmij))RsrU zN+@hYp@!who>U`r{0tj%G8cmwv%a}f&FnqeZ18dtwq2O$(^R;jOT7dv?;&vuM90^e9p-Cipmx2syasam{JeHiyh~_kdP7ny;79x-WwZoR z#6X|<7PhdrJXUQ7p{;P;nGfC(p|MelXaAsXL2*o- z<$WX2V|y2F6!X@g?ak`U2Y;(N@Qq*RbRN@#-kFKbAS`5jP2Su>b!v5)b>y(Zol!%e zeJ{9Lu1w$;lA$8hh6*Y%K;NpC$qR9~r+?Y@Bc}s`T{7{azt&wSu4p8e3`z&m1_+HGsWh}lRxCFWw zLIRnw0WQRCQy6jv0>D9{Q|@kQIp9eN(bLTvvpLtOEmIZ{AT#T=verUt14@|W)u=!u z`~qx;C%2KxvJAlmD1ii1;GmFoN{BCDh60+J>!G+a8?O>~-~$11bta8`#Gm*{6-3bmDgNp>N)Q@tc@4hPPmnSx80;d9?f`q9JcX#I_NTS;)3Kxeph}iLPz@ysd zXF9a>oX7$yp(2|o|7Q| z=mRi!z{i>xB^7~)-J$Ii4yGu+D9OeipO>=+y>2mfP=NCrzf8YygW!%TUW2cdsfHxXFD2!Hm# z*tA-pLPGp*wf*~_sy?}}P_=ltr`u*v7wT6#-dl;bG%O0IK3YmkW5t!GpbD&)Cgmh; zR(2W|^%z(NTAU@T^&6Ts6D2+&=_p}Xli>FVP({K6XrWGsE9%1c?L;A4^+JrAjc zEI}MULoOB~5?wR<0vXW8-;|MG>5_o%#9AdmT>CI*nP4$>1%XKoj@m4C(oWYH54-e} z)o1Cqc%hp{Bci0E6u?R0EgA6U=8J9@i>v}s8rFNQu*~gaO3F9HA#bzE*nqt|jDKlT z)*=aoLN(fj1Ck&}Q&A{VPzae*&?2tBAhg(>RYe+^JlSx{DL~ocHmnKI(VTo4odcu= zZg*F!Yt`!NR`uw6f1~->dw(O75KmFrA!@kv@C&QG{nW}+0p7}`JT?f2?rBmz@T+gH zF8hJMR`*`^GVT%aUT~IX>dal`$__rLyIhs4B<0Xu2B@vV>U^RN#s7|(LVhF-A< zS%YowaX<7O-&@W6`8QOHulCU(`mZhxh@5;L}n;R?D(x*RDt$xp2tK|ni z&dWOLdb+h>qY}kL!g!gzH8-ifkA)<}F~1KrO)p{th7Qj%GV; zwt6rO;~4?hGu!UM3APQoa9}IoozbP2fMfD#nBYXrrx=kApo{szCkA3R?1kXQ9|`^9 zCBl60lMsuzjdN-0;?CCQArzgP^@0uFz#FWme%&J02(Y=d%Xq}ag{~-uU&`x-Fb2d> zDNG@)77PHnjyE>TUe_E!Hon0^VTuF4jBemh4iMQZ*m`8v8B_`Qz>p-9DTNhYj8a@g z6_5!$L==YUz@l0-o((6^4@@CfDAmA3`@I)x!|7xYUrw}NJ zq6xT&DwLa|wizGdo0rwLiG*Y5Ei0~N4@uL>Q55~yubGt}RPRl0O36%l(?TZVVTKgY z!8+_MX=N=u95GXMAr z2MDl1@8UBcgSMA?_q&obD zH&*+9`1_grZ&vH)&oz2`4^_jZlWL#N0Ty`HeaJHeOxqPC6+Z)-_!as)^&j3*9pL|& zSc^Nm^0dLsT-66Wdz)(xT691*jM*E+BRw{8ZUb!1#OYIX=|gWzUZ z2Ca-`jr}j`B*us?dHE9^BCX>T60O#zqe6H$Ca&4TC##Q!D=P=7`YGkPSjPmw$C|&e zj1Y9<)x|#K0owRfS7v*6SQCI}0(C|l%V(E$4osV27*Q7Z7zk|9=p^xMK-`NokxHM7 zvj_-W)}sJAK+E|%r$6upB1K%(xEN5xxwz^KC*a702Y!bk5>@84Cj^Q*vi?a01gfJQ zvNoNrhedCCNt+^MDivqu6S`hAc5-UpNdu~3$PoB4<{^zd0+&WF_*j+M$2v-nrWFT` zL{c$?C3JR8$}A`F8awcWvYRQy)j^XMQ(XAN>@_zI44d0{``EJ?C_>~Evs6h zJ^*saVkT#PDSJV~AURUS1SKH9!c+8L^HL6U$Ae_pi5jL1Tf;?+)!j&rPTndq;U#a-pJZ(1AwL7>&reElcM+U}|LG3=FzkN2c}RR=vB*Hk};Kq0`Zg_BQ5xpvpEf_ZME)Qklf`&!30Cyc$ z;PCL4Dy;^ed-(Mf{zOPzqz~O}a-ad15f(+zHWTYaKgi&%`v=| zQ>X!sI1IVQ|1?g3-2logPJ=o-0tM&XJxX{1_f#vMX1+yK(^^FzG8>?gm}y)kx%F3x!Hl7}Q#f`))@Ld`fO#YU+4#KWB`Or@M|4(l&cCRlcrQQ$SQ02v zjC^7zVkIAJ@>*l_+XR3mQy~D6@EDy@qX8D#0_~8EAPI$|T!Bv)w*81k+I-(=(qRHqN&OWZD4%LUtvMly@H9-|F3o2j1sDsm{1 zBE`(eueR&`a~NHUQ!*1=q-z)Hn$5w#B8&R4nboA9nu#)Q!!gquJjrWXfLK*?j+R0T zvC_8Q?od9vS=)&J#f0~iHy+EK8DZtXM$ zIa=NMdSPmzTAVsq?du+7o8cq%-p*m_+QZAFe4mglf#G-;04g>a^4WI&1Xyz&3 ztF$YzuMOD7S`90SQuz%k?=H;G)yGesGO*E9KpTM|Sz_Bn0KpyZ^Wd_8>4h-PQLwJ< zK~YgmJJn#U#82o4g)qHv11a~wir-^d`V*lgIbqd*PDpSrM8zJtV8>yPP@F=mG{bnV zg4zh3U|Raxq2*!Mdqd9aT1c8H1braKsmZWOUO|skD=vsBLlGXjITzAM3wlOeYLsIO zDXXgCsYnS^j|=k{5*vN7haO(wqme=6I#2*26U^xve9$i0P`33uITx zRsb>ICmA(a1zsCSC5`?^J;)F$Q&0%PWtf7BL?z=iJOypOh(Oz=Bd|GWX0wnk5h0v! z`!fLpiV01zaD9{f~4 z9CBqU3A7ch80;G69j4A16PdH26{+YaV=roRWMEPAYw2(jjk_%_x06+{Mww0onWzCB zSODO6>d)IO=|&V9)zgjfhCLdCvC_bmJrIrwu%$wq(Ib(N&%;<(wO+5W-2C{P=cSEtNKL?(EXl6?dl z(Ad_w$xS?l`{7$mg=qT>nYl;H3Q$avZ5LL2F*b=l&?Za1V^ra35L%JiSUE&9H-^(r z^k3Y=Hklk>paGt%VJQXwz%m_%CU$-zc;QTJXS&_!Z)~!)1zU%=xLtHQGA9}ww$|<&o!Fa--uc^nE;x1&;6vImv=VDes zmW4yX5Kk_!T`C-VAQLuL5;!2sAFgJ|3?BlIH$fo`Pjpvg$z3+P4y*IJ*x~H5 zXXt}JU`92^U-czrmKC!2%YFj6@OM~nP{N7w8fikGGmFS0KfPQOg0M_66;|Nf(zYHM zwFiD1naZz}kew{4%?uY50mfRK`njf{_G7%MieIHk{X}bmx9#A(8#UQB7#`D#oU(&Djln7;KyjFx zf=%YL?c_p`Nyl_0P!fAB?oDo{FeuBfG7+Tw{6uo^d(gGS6*Ll8uzCSINt{B|Wtdw2dK%%9@?dMGt@@eI)z} z|KKUi=mM|grn5b@OWl~^!&=2(?4Ta-^w~^rX0*h^0;_B5ylE-$CE)6_02nQ+2N>Gf z?s=UW4X=ZG5V--rq4kl2)Jg+He!*{>@`tW^zA7}>0Wgww2R5UD0?z3l(112PWG;8eO+X*7aiT_3QNu+m_GJEsL)#o$M7?2< z05$b0zcv6hArBsGPn1RFHfg!79XjAG6f3%_9NuTb31zqFz zvj8=k6P^{&k&FC9VX2uPfNPpfo5w~hO>|;ewdsRTa6&3}<`j&Zm^%@CUOw!6iw_f+%tqSN|~COUgF|KJ>+h3e1Qgdp#!%s zNua&#udzSuqcr1yy)5SDXEA`?(fj}N2N?n5v<5bsuvUi=IbBWxZPr-;jgh97h(=_? zYpPl3rkfX!H`Jvx(42)-1tqXQ`}f3)kO3e7F&#_0a@Iq7n6O|6eQ8OA;VKE`!BBY; z$r5c^ik}!_LNTh;?9CD|3UDDn$(Gw+u3z@IP$IS(Z+j>#?xByzL9Li<0H)I)FyW7Y zwYm9eMaKHzBG<@azbH+yOPZ8XS7MJm$#Y4?xyYwtq7;gl-I0vQXkNMDL=LEuBMOHN zoDikxibc6}$(- zuwh+BE(Du}QGu|n7VPlkSM5`iMI0g9p0#VD(N zI^Uv=8R(H+1fw#h4e1g@hIk<+YjNOO6T^HQvjvZwmE(#LRE!F$ntP5Q8)w``rxqU- z(pvEvZPgzIth8?{u;N6z^aLbOiFvVd_zmDWFo(MNa0M&j#B-n=arn)D%HS1VhJu%i zJ?U@=sShCn3~^CsC*6!0#|C1|rjWQfm#7$Kbw+5V9q@lrD1xL8iRCC&Ly{!<3txN) zgt8Dht(t#oNl}fNWYQ%zsb85En;>n3u$)^U3xO6(yLHTh#ZZZ@2?49+ zKgy$d&_WXUY5nOzf+wWfeS4YO6$??Q(-v{d+tKDK+wgQc^^wKJif1BWgGI;Ghi=9S zCnrRxi~gnjQyV1t3DuC29CSU;is;mFp6<;^oQRaC(;*nf?UAKf4sA+}$*pzgHyVMK zkVe*Vk4JW(KM}j_Tyy}LF?Z_D2b1imZC4-Wm!FtO4AX~}^_0XG$I{i^ckBafnunP zTA8m@4CJe-iVWTdphN?;Agb0p@0QR5ZhtHB0ULZlyNaMUR z{6e*;R87kcHxul7C|t4{zQMOnEw47QlLUgg3iT?t^3aRU9|^-A`Ba8Hn9QLxeiaRH z!MZgCPT1d1)vE|ED3tsIEGb1vZ|<>(!!1)AgRMS@+p1o8)1R(=YLUf?5|S1EN;R~u zCBi#gaVDZE6KNPb8Q(5Piwj}3GX5uep-L@UKs#1?}FUrCfnTeJe zjrg!nq%NY{P%IPlwj^pqL=40`uQoVIa>S>)En__>#d)!{Qm;4abrpjEUr`bfp}|9L z!=;`6=mcwNc#hPVp2P0kzzVlwLkXjDOo6JlN9>B;+U<0%on{77#;LRzGufG2J(Lemje^K4`uJ`zIfy9p6zO8U}?5{+$Lw5S0`F&)p%on@xmHiI+?RHdU0i)Nk5@Jx_Pg(Kc%T9Hi{~P3?1;b>~ zMzj@~luH%cfhi`fP8$@UC&@If3uT_6N&0$p7M=K8JVnxUj@}OBg&{luGpb#?ZIK%|biO&L&e54Aq=^n<&V?alv_sd{X69uolnU$nn_*kw>`@#)-TiQ4chqbK@*NB{Na z=GN%oq5ajL`^Imm{_0=*Th%}N>0hj-*-U58{QPKox;vVp1Mm$rMoLn*kFkz zg6ZHz>mBxTw-cG-e8@f?{Xu{Dl5cojwb+^E4Kzz$6O)ko^K-(g$bT8(`G`;iQC`lx zRcBkEEXg8Jw1?(w9beGg8l8dXCpkOI7{l$JN+;kA3R_u;0(e-XT6MtW^pdpvm#$L{ z(rCsDHjC-@r<_NrX11lM6TY3a$W2bJZLkR35#o@y`+VrneowvhJ0Gv=M~>IiJf_c^ zoY+zsI(B%JKP+*iQhw@!4{C*m|D0TklreqS0m*4D8K>^zB|c}tWe^;jQDOYIjPs(b z|HG@R>dCFG>M`1*T}|-{Y3ibuOtlcMdrQ=*8}+FkumyH_przUQaC&jiQ&+v^EzWdZ z)Z?NrgSn{Ek1N0Jw%gjBPG|qZ%*^En4<35!-0XC9^4y9~Vr#*E(5yiaOJG)`#v1!Z zOixdb-tfk6uHW{PKV9APd!MM@_78q|bm=8WcvBC?s|7k%*0Qu3ZLu6$yUyj2Pd!7x zDcJ(m0E7)hH(P*(eR$!%c?&!l#psHr}u;;U1b-dL(_JoIk{itHnv`KT8yzOMeN$j*5P?!HdAx9)rkFm zc@YZionv|98E);;$#K7)PKtj>fx$7lAWan#viZ=G0}9%k4|a-U>|D=Zb6;Y z>bF0BZ}sBqUO-UA-pG22KIrl?+7Q?hhA^z{YKAvuZ{vL*zvolcsnaJ%S6zN(b>yYYI9LZ-v5&3T|qLq(jJQ1|6Xw6h@(+k&6hPD377N(X_5dcDEo0 zW}wFO1d+XUJFI7$TY^lH1BZ%#8?WH}?4HO&==|5MNOCR%FNnjFcbnm=oaI$mB9C@! z$fTHL^&Xzq>j7{D`Mh@r0nHt*ovT$Fs)X{mm4P%c2cM&=&zjmGpyO<@Mm$DuO>U(b z7PT3PI3>V<1%fh0d_)ICQAj!2Kvi5_!oANpa0|$E2xKtN!>OSQx=h* z;fgarA_2P|Di6bSrbnEbN{mYe4u|A0DP0{JbviwU{6_t-FF3XqWoDLXC2R2KW}T&Ew6D(sz`&76Rl+lX1mKiZ(*`NbDh{ zGv^Qg2lo z+kLI6X5Kp+;va^WPIGFvH{`{tbeYh$L~aG8>i9!FV(VOcBCf!=6=4fewm(q@?q)$U z(V4Nf2%F)Ra84y{v6H!yGDwCe^VrcTg`n-tUVBJhJpr%0Uljp)BPXvpWK_jngv)Qe z_3PG;9QnxCeDC*SNEh$;vWvjqciU|Xt%Zdn++et2cF*2#YB!rl>#6qhW_rDu?sTWu znxe@yCP2u!-2VCo!&_dq;Yx_iDc3vu5AJKOuPk|!k7hJ0y?hK?Gu2ozC)~SMLvh_exWZKu8Tep`1}C%m%4f4A*Zz_XFc(1F zh=y!v&@M-wV1h~l-wesA$pzsqjswzSwQ|)r^O@TOqe;x z4c5%?inu-Vdq(FDEmV7MxUpV&@59x8+DS-tnu$mlSu$e|b?3sv4?OTsil~#^f^X>4 z0;c2~PPG?G@BxRUtBPui+IiTAdGqaR8a?ue&5*smX<2FWBTZ=$s8LLN3<2n=GN0>2 zzc!>w(VF>f%|f+#?O4dnA0`9^>cZYbh0VWF@ zFpC#L3|%OP8l?oz;*_l z2_BUaeR1c>!6dcTBi4pDww1}Q^x(neOW*XSQ*+l{cTvGx&Y$xDZe+cuF@0=i-~4yZ zFD|}mW_I>yr`wz1ZR6Mv%c1c={eIBj9IbEknZjJnn9t_cX|*E_OAp`L>9-CYJWyYL z>?rT;^QFMFrPcunEzfg%cp9CVQGfU2}A zP@|}Z=~{C0di#;O$m}gS>c^LJkKK;LkT+eFg^;Uc2)z~r+^#lL#(cQbtel_l+-3X;fILLkaRn%;pE9+GsOy*^gdWCi*s z?9&uz%TrvjII@j}cH_92gQo9b0fA3nm-4E@rD&*_r#=)FWvXnQmpn|y3k~3GFh~$k zcjmirN6&{v$xK!l;IeIK>j>?riDs5T1Z)0ZBACfoub7ah4!1_zwe*&qq;>rr%D z54D3udEqoIYYAD4RahNT*>j0`LJvb4T3wdp zlSB&k5i)nvbyP=h86(A$(MKJBGc zwvn|MTqq2+>|n2F=oNj83Cm@#boHO{MV!C}V9Q>~;NEBfL-46q{ve+Y3EP2LKAraA z#{KXdq_6#!*SAN{yX+r*`dz<%SO0^pw#j=lRY-TU=> z5AOet`MrBz+iiCj>?K_dvBi)b`{zCbF@;WMP{4uSv+T$qh_({0d|xoF=M5@bel*(L z+G<{P)s^+9e*cq=*MG~KN3VL#E4e8-O_Z!fBtFBabnmh0+0e{Q6nGbwNw6vp{J6v< z+MBTzmJ;yxk>of(*QG^X$_OC*>E8SnWgta0u5h6`e$rilcf?*9-kFBS1HS=K2xxQ+ z_b_H%j07Wo_O>OV)Pl_69d@b9I{79W2f}lSg76``@-858v$c(HqcbYQN14=s3+X#g zV^KFH0*e$pJWCjAI)n8B&}5)0uev@^IQAtpNg;KL>kL`dA>@&pcin@I>=d8`fQ+z{ zaknT05gpZ<`J>G)G?qfe+7h*s z!++MA!xrIsS}>{RP_KYxT>#Ya!DyHLQyQ$5VI9nfn|o!i%wVLw7kX8{wtx|!T|R`N zL%qT*Dlcu|1Pk<&phqBRtjdmE)$z-X$+Q^)1K!3>t#_Sr|>Z?3S+p&)0n+oYuQg-OD7v2mW<3@jF>BPqIaUI ze84o?ntK=oS6DMfraR{l(b#3SN`w>3=V6+xz>ku_fqHqs0jtjn z5@7%aiSAZ&RbnVq7GGXs)!T&j@8JKs0N#XFMbPtg|ZYmr;Qq7wQ-l57MO3UDwrgkoUMNL@JMDy)aUXov)P1-^`cok(R474MT+l)^=2 zLpL&p{%Kabp3v7Xv5cZy`6e$*`?Lig45f=yCN-r?dk);?Iy|69JGiuqq{nhv4TR_$ zX?Myb7O+o&C37(n#Oh*hGR8k8^Amd^tZa9AD0`p$;{PhxvR9%g~DSiUcxA+vW4ex^f0fJyYa97&E4yM>1T$66Q}C_$rH_) ztDZM#@ZM9EIAnFoU}@#_)~OSZY#o2{Kdhf#dDox#p6`4p^*uu$MVM!Z_|rl5&O7fs z%>E-kdi2<(-?X^6c!kT+);3s%wbOUL3K#>Y;|_Sf_{?YsL}e0?rq)?SFtX|2Nuf1u zCJtKM7#%dwnbZUh>N^szU<%~#|JYAfKlM{TQ@#1ke{r<7vB8ZmqXn+xn3BRl5_i$^ zI&l0*LRgI{9Mpzk2%TJ(o#@(BxbiY|G@RmwCQuM8E6$;f11MZ14Y@$|khW_ovlwI^ zI}^Eb4&@j!d_WvVb%rES6=I5cI;sK)w&Icaq*dz|>Ohr+!Ke$dGD%Dl7b0pb9}0%5 zM)-o&*r^0Pdmo`dFR(eFU}2(H6hH;xL1iGQ^W}hr8jD8dJN5e$`cU_2{-jAMHJL}f zSr7DGS{cAeLCH+jFl0&V*F%?^nHdRy>nv#hi zloYZRn&zRI$VP1nNZF{G0xkz92ejmZ3*_S8_=ILbz=Q>~1}*MrkidfS@L|^TvvZ@v zi;JV(-~C*D*$3WHA7#jQzC8oY;fP(Z>n6_~SX+s@i?F4g>_T!oQ5n^TT_ri`#5FE? zfeJBhbR|yO={vOoNBNXrt{N2OW-<{u`;7B)1IinjtKGD9G%tN=6+59$Gh}Cp=!;)= z9@5r5(U^`1-C}^nKP=Bm9Ox^bZPVt{G`P}g`Q$(UNXQjh4Kgtx)2-8bv<~k6SSA5U z$~yMogpQ_B^`YPAZuZ8QZsE*kvK`aC(2~3LMq^NS*mRH^&Fm{Ps@}pfP<9Eg&OY?O zusOxrV4I!~7sE8!E1V7Ps`hld+3t3S!@>68sn31(lj~>CzH{}&iFe%a-QRsmD|kAO z(&A4i#ixBRKHRKea01fVQGAzaY~31-8$L16QlMy* z)VP$5Jw~(f46eg_1H)1<#t?VbNC42C#@;=Py#KFLU4G>&s(pv{k6!btuc=p7SBK@D zj`R)K90o#_S<7ITprzREd}=~EEoQ~}xZ{9wF=%teWMjT5fQgmxO@WXM0=f;R1Y2=I zC8E66qErwU;Gl^PinDty9zq#$U2evQJiv)wO?ikiw&X_(xMJ!No0fXOR-WN9E&^vH zGxZarFFCjhA670YuF7fQh@a+%j9T@&$`NV#^S{!g6`VqJRS9SW9~J+hXs%>W+)b@| zuu(0HN1~81o4=45HkFF1r0<_KkO%-KdU7B}Z8l7}G81)C8Ck=*0H9Vd6HWnIb4WR? z8y0x?dMu8bffki0W`Mnv|2QIBa*d~#EL6#+7GoV z+*l@4psq4#uyL|Y01I3zEm^=jCFCE@89k|RBvE2ACm;c)0=&GcnC^sk{X$pvEpPNL zMW`qVIgPQ)jYqCP!(2kF92x1Or_u`Kg?kchQ!Z1n&!uAJboEKYL1aIkfIpB5U(Q~a z>d?Gy#(>JgL|icJQy9Sch@16JoMe+QqwYTcxu+1*aGef>9O)t?p$ZHF`C6*jmrZxI|7{Q3_ZI&$=Ie{EyrG)87f>Hg?J z^(KAAB@gpBwd48mHkJV#p@yHNP{H+(6PLOVJC$*?}e1+?1EJ@+l!-a-(h$ zlP}6AA(tgDz0c=UpLn1Zk& zaVlIlQd&v$tJVvfGUocAz%i}Fb!A6k5X+Rlzn~8RY)XkBW}38AmH=n#M#TYIZm5B}%KMxY#U+fs!kDO>*R3@I>H;`gK+jQiH4T+w`AN`A*z*g;VbBO(G*6v& z0A*^L#>3!T#VuEMrV?{8rcS5dp-*|_M0Q3E_X;nPgx5GCF@Dh5<$rdtu)fRFppEs! z)ftC)KSb1~lj1%YqXI~45w^Iz0n$tmfxf?4Z&o*a{p+hYzVBVt+VaNk?)eqohnl-H zaL6GaT69_bBOqBfrenmyx-0Hsw`Y4iyEiphdh+BGOP{^(yZ_@S?z!8dx88cI%zx2G zF~~2v_%m1V-cNq|KVNeBmIn>N=MChSz@WaL?jm zy~CSAe2jgYIk94cF(k@q^A3fbFVIiq({NE>Naa=%BoI}YK!?rPn^`$Xl@GoGHIVi3 zZJ$&uE-ms>37wH9V()J$$ewhWmGx=Y zz%f8OK&|95XUoM-Ey!<4P-|?( z{vD0;b{$>{#tI&czuIAl-a2})y5zS$TFrmtj?sP`;~cu0ipdmF3hYS`0}(oNrY2oz zT437G3)3Ceq6ET!N~A^XmZX%Mf#g5|oXZkokxzwrSjwoJ$I>|i(8plz3mgD+GR=^# zy}B$^paaulK`Pv;jIax>(rPg5g;Ez+?U>7TR6`UZjH_AORTp4|i3*n6cv2dM>voYu z;^W(0jAXE{)!blURuI3-&1IUc4@c26Erc3Fmj`#*E~Bc??rieJYE^yxH-BgKjsMTv zt5u$;-8je7^WYHmzy?}^1~*PQ=TA}?p$`wGjS-nv^I>Yj3K{2(Me{vh8#;RIo_qez z%U}1ppQFT=bX?Hgmqg_0F3h}l>v>mP`Ps!Imt3;4a(-&CxjCGgno><@%~(dycI}8$ zq^|x%#TnzI}VDxw$zoj5}ahqkhV#_^o9*_SaB}zC~n*W+fARLcJJ1 z21yJ1ur|Y0F4MAQJ(H#mHBDKpQ~)o-}pROo5Vbw|6M%ti7NG3-GCH;vxWr&)4a~ASk3UU85m>lcIpBQ4^(rtdm<> z{3WF@D4#hXq7+<=BCIWWRb1*OfJ}qQArw(3HCdb@=5>r3Xq0)%zzYgQ@}gW)(SbGa zsrq3`p(z_DrD=k90*Xzx;}!{V8);0ZD4#%lq0T2io8 zXeteT8zUwH1#H2GB&gU9g#S7gWejUr`Uo3a)a7)Fykj^#z3RGHDXW{7_Esf%**C8*c3`&%n2I;yLxqHrN4OjWzGJ%vyXo6t`FVtr{4VLvtj9r z{3s)yFS776RqU?2?&9@E^}n89*!v@k^9%KP+PdH07UPGyy3ss#cxlJJea=&AUOv=vD> zreAVAX@0Y7Vw4sFF-CqG6UkSkw-BTY>SJ*P6U0%tn|wi=1ZcCo9=MS|=(_&JQ^=wR zE|SlB%ApMlX4F@7YfkExlrEdRP)Pl92`K>??=*Ztt#V<}f~bM<@eq|}$|Egd83Gj5 zkz~wYIrFBVeNy-dA^DdlYvCp;{1src4ieCxC8I#IQIg+WGo2rXUGgrcNsjXa4Qjv~ zaD!=)i3Go+xuSJ&!)O%cTbS#N4_Qa)FQAmd$c#`3fQdWIXB(AfhglfH7RqF!dIUQ6 z;3M^ehYmN7Tyfdx@_X;$eUo)P;~Q=elI4f4#8BLb+|ly!0b8TMt5%We;7nVnCv|Vt zREy$-v!qf+0l9|Anxel^CDgH4(l8e4vW1l#P$PxbtJgX4Z9pty;bp|Ce^6c)4BX9O zU|mvXpx05kw8J!7>%gL~UXxSZkrB3xHu~BC9IA2t)1f#<1C;T5JArdd$Dt?dwnqMt zmO9X^oQ`AQ>*#X7$Cp>;<*jgEEE@Fn8 zZDJbas^+3$7-yja&eQc2K+yqd(YjV)%BA zS}I3OEZ|K7jpl3fv==Vj5+EHldfl1&LS<#YUrtKAn#fie3o}Sn?T*mfQb4ECwGDWM(yD?51pmzGh;l7iC%wVAXl8!Xr$jyw#D&>Lttb zAp&bs{2ccjc1--1m$U@D(QRhRH0$k2w~wsd@Qm{y7wT$tn)ROj``9adiq$rbz^1AW zGzlC=8_bJO&CHLU|2yv+J^ASU(BlCUDnG#LZC2Ow(Dwiq2@uld+P+wU1|sUfJvy^T zlwA@v8f1{=(v+krxmKY_TvKjUGyW=i^0~y)0?DKPv><9zPi7Z&i%l__2t6ZZRiToc z%Al30h;O=}7VA5_37nSKnQ3+XrL>|5h@zdOkc3NVM$_cdOK2ciViGzQjAUu=?AnN) zA(SWFuq$*xSE+d@RL%M_WNvXEh|Y%n9Up?_m%QYqqwl=y!}KuiYU%VzTa;}v2p++0 zON~1eP6%IE$zp?R889^rR-EB$zrDm%&qfPY0r9qG!~N zL88~#5#MB_XT}i)5^Y(7V2S_>11-c3I#B{P3|+H@79d0GL59M-e3os16SU6H%~ZS_ zlUJ%a^G6+&0d@pl%~ik9zDP*P)X%iK>6lnz*zxEJ7LdV3$Z!E2BZpWZHbwm$d1fF18hWPY4x)rhv8`&#_6A=o&P&c=(EFXg>KN+Yps;4OB zWl!zfvB)T`nCp5R%60LP@80DotA(I6!dOt)!E1QM7f6Ys2KIj3Dnaon$@b2E=>5W5~AlixhMf=S_M(J6^F2h z5JrJE8eu zz}DvI4R8C2`qh8u2dXVP$<4=}ss>#~(L4paqv3^HO4AI5Y5a*PP<_lnJ?+PEil5Aj z$uYvy>M1nEK-N8%n3ZkUOQ%krzxRV5_}V}7ecyL48NZ}MKAscDU3c7d<&i6o{;LD~ z4t#a1+nixj?9mn*XZM-LusIyU6@wH51Dt>!&(hPoay6)jkAP#kN7_>t!T)I%tRlTM z+6X!nlMs)Ii@;o)2(p5RAI5UDl;MGP?R5y))%sFvs;5q7V6e`{aBYJfCuwhik)f1# z(={GVQ4k$wp%=(aeo?b0KgT9}t{;<|ns0;RoB}sW#jSpGp6tUWwz0^NbF-p* zNK&2xv?1FJnYrkf1}dOTY0<%!hqijL0Ub8u?RK<+D}SWtlN73=Jrb-zT!z(@PyB@I z1aWfVW@6wDQywH`O)E@@Kd(w+ZRISOtM7!)~v!uy=v`HH~V8Ra3wBi|?pD`fq-zy6ZEa99b!ac{B|-*NfeAP{#=lIT@y&n$xiv|z z^A-4x2FJ2VPj<`LMmqkp@h;?btKjrd=-p^pItp(|h;T9;J~C&P((rYm9`xWF46R+e zDD-W5B%w~!Wy5h@zFotPEmj>oeaO&nZLm>2h!Zqon4qd6R4A&a+K!PJ}5+Qh=;PF)s)6prqBE?B?J15{{C#N=H5#YFy>TSR7cVhZ)h7P1iuAw5L} zKh*)7;*=O=h@IZWO1;Q6GLu;JBztNFl_s{g)d;`Bk;dx;F-d-g2O&9nQ2+}%U^hs& z4N*6nU)dd{|4??DPi`ajdFDMbDyd2{FlF6ed3+}uKLuelev*6mtFW}>rJ+h1-KgR;fzrSE}?ZX z93dafsV&5EjkZt)d#3T<>WSI42qmX>&g7juG(z%}T-GIUB0K-3V-D@w+DtKDp{K)H zk9C;Gyrl+P$frH+qCLFgT0L9F?wuQ>sar}k16MUNX?U2L`uXCCSf)3(N2i#N_bm)= zd4Y)(g_!a>b zFQ-fv|}^Ugk;1@oXH`g78O;a<`THqtc&g7^n$cAWSXpm zoz%k`Ox0|0YGNXq-K$a|)eFhWZ>+=AkYoTI)0Qv7MrfBdh@PNgx-nAMAEZA0Z3LgdNLM8m1hu;MXbv5%?lmn?^b4SOqy`lz(f4 zw(jPe7-dPPvk-X+q^+zjD zoZyxag?Z%1Z8sEyUzi$@0eR{sGGy2xhcSJGBvF5H7R5ct>16@zUOheAYfQ1#2dn3J z=;z71Pe1XeQaucZ;?FkUDY=tvYD&=NSM4z691g0V4V#g;Hgd|t4@rDI!u*^p#Q zesYm1mM5eM!hC6qA?=))s~$@t^qr2hzL*@wfgcknLO*0>D~Ktk?TS{U$K$OGvRRScMmfED#y zIPyzB9huj;K<%VM9bWC7bz2h-7lub8F;e)^AtfL+y1PcFFr~X=G$23r^IC`Wsg2d|wdCya9?W>xfXJ0t}O{uuf?J=A9`g&xvEGl z-7;t`Y@5S|d}{2j`>RC<&dOip;5v z!@0f&_ZD@jcYzRF+VmeiDqE&jCR1NE-D?3he?b_lN6^%S$y+Mnw%t8dnZnhH$9H;I zCu&ik@vEqtP`k^0%g5dWxLn}y>DP-rI$m|*(w!kI_Q#F_pS3877arj?2OZ*i5SYKj z4HE^?0*PElPHmMmYvWrwyj6n$?2kw-RadSuJ2)WE8JgckJ zh5HBpD)j7`tJ2;m$O7pD^)6LxtxK0%efC6jmTl_u>1F-q%cQhk@#tSSJvXl|k==*XR8$@wx&fAQVsbZK zKReci`CpUT}+8w4g=Gpq^lVD<|&0C zGZT?q(~xZAL>!IPg_34pDE_}AZ#X>Z4A*o; zkmd0ksLYzZlDKh|&t24PM;v4A$phl=;qXb|uhRieSraC?usYdkliRRO>S4Wxk59f0 z80c^7F(U-qNQSD|rP6I!NAU3adBhrLgD2YcNo zLsg@;$NrLeU1RPS_j68pWbuUU6~RYbWlajHFq=*S7CX#`A+Rwi18d$wKbAp*QTCc{ z_0*fV+VF~8tyN%~7@icEQzzfz-T9GJW>#VF-_@T@B#++RXoa;fGx{_8nkN$S-G8Bo zqei*==f1v8VkbXAPsbtGyj^Y{{_hx-P!9tPNs)eEc%N*WDEv9Ld;ii|RVRR)g!lTK z9?0)VGr}bTGsr01ixkpa%A;qD`z)o2s{2O##NHT;<0L~3Ctti%A}%FhQ?ID8uDML=F}s;^ol2^2V;);sKy*P^%`DEfM&K>MGfcBrB zN4kg|?FwaxM{*PpzDubv?^C?QU=pgh-?^?P$!cmR*z|bxGSu;$D(NrGUWx|1h`$AUn{iR z#wkCn_A@&o)Mvluw2-gAjVg6)&-a=Z1)*jSCMa|pMprcbTwHxeJ|_aL?C70EXs$BVPB5MMetD0CQ{ zhDiTO+Jp4rZ&^0pb8FA14A6Ml+d}q@y1=GIkH2oYZ5$$3*)+8pN@Zjs<3C_p3?;^= zoogOY_%Rt-=R7O#qxH|v+YYv^ORkj9fO za*tnDoAcmg{N&G*Vg5KpDx*xWmxsp_7|4LUSyM(Y`Af}D2OtMc6D3sMBIjYNRYCC3 z%>I3j6Jp?hNP*X-e`<2}vy0=?oVvijcZEz}=di6hv0=O3v2sy>fccbMFG~s|Od{wI ztcGpDF^^U5gs{7JrIH_i<-GZig`Hx4D)-}edDHN8v57qFo_sb3+Booc8N-e-&Jk4> z-z}o^leiiea>~u)h(~|g;cWE=YxC!llE$j}TS4qNc+~9 zdBoF-DC}dCI5rMLs={)Nt-`A3b6AR)d9)GC3r-FPS106N|AmL+kS2F!X2I-O(*vtH z^my%wuoAXLhCn)%CJW`R<6$vvMl^Nh|N59$YZjU>)=JB`%U0cNTJ&HPl4*;A+s*C z_$;7nXQRSanT88ZzLX&Ht$DR+ikwBQHVz>x(>^Yd4G@+9^dMPe8Zj)!R zW*?*On0YDVyLcZVQ?@=)82lu%l;l!4U2Nt?VBXhClOj6JZ|Zu##4GrT1)X>%*{*76 z_FHYdm@K`^R*Bfm)Dtm#tepxAmZln1BFbhOO_~dmnfY;!oIA(?1=RDtTI;!A7=u49 zh$mS?<};;JR*YD!eo};&C$?(TmbfG_OIbem102k$6P_x~AB4 zLB8o)WNXi7>i{Ll1*@3c;jakU6R1eEcvv)VT8~6e)~b6tV2@aJTl^L{$U|(C zu??O#=f+3`;;t+HNKw0HE3W&2r)6DJE9Rd~{*$I1i$%<*fNE=_;-!V@@Bmq^_pzwG zlP#roD6DCepxOrp3#IKWJUAubU*{q=B3YWMb*rnblSNue{!M)F1-s$FuXE}jz@E}+ zq6R~bvk@OSho7==0}ZOY`-#OSCR_G^I@8*{!NCr95Ey*kaxpJQ7C~zt5oBGpCDk3J zQwKuSyq1}C2mXd${(ZnrjPVx8*A&OW{$^!K| zVmyx48{>!uwD68a4N=ZubGHiq-cIj{rL(^FHK6+}+BY$=4pAmcMoP}-h!{sfnCI$i zgr?}CXR-XK4Xh>}3Ft|!YF0j#b{PJki3CrtM;3XTl~<@%C$}8h3E*I;f7JB9jSJ^{ z_0%rY+ofRFvh6U&CjS-wNnayP*E01`(d^ARp>;tc(K1=I2s7-0%OP#9mNe0jn`)y)P6#sbh?`y!45PGv~aVsT|*= zF(#d~YgLZ0DY9U18iPqWfWW+w5qX}Bn*AAv3x~A`Tz)K(C)a!=RYk~CL};(h5aFna{;q;#$z^m&CvGAq3NWyM}Jn?ZYW z^-*+Om-Hy~z5CVbc}EiyL@s3aSACKA*=)hz)VlT1!^x>_=|hs}LVC*@+-!)aH`C>7 z&#JJ7wwW+8#G~JQ_Y_#FV4dY!d0%Mz$U1yS12|zYP8}og+HL8k?Ow zwH87vP~I!K7W8(wDJjzFo>6y@=`5)@E)b6!EwmjVj{iW;k{o3=X(T6#)t<5zCH0?M zq|(e3k56ca-6o zLWx039lwH{a;e>yX5*1U)FD48+u(qh{C3`Yq8*p{8S+|$4Ikb|xie67%E1!9?fWLE zX9SxjL+8h3o?WAMtvE9sY$P)BsN9yHOnXX2=dhgEZp468F+_zSjc~ivf!t@)k1Hf4 z2jL|iB}TJ{W%XsHX>c*~etw*rW z%XHdSZ0_vi+|6m&F1qm2S}&01Fr)6o50PR)y~hOnOma;c!rfhsm+(VJ6WOM3Exx+8 z4--G(jA78zFS1h><=x^%qG#KIvBF-~B3jieJ)NM%kU^u0he!|419`ZJUju0IfRqN> zt}<5{w5;aHGKaBr#cQF+!AfD}RC@>4Bdh5b5OmgB3w#Dn4nV2)h-CFLWInibc|6G1 zta+v4HIbz$5&ywQA4XS8uuE2Qv?X(vrG @Zp#h1_03ix!KDm}d#1{hyO;M*C#g$Zej47DdT zfFA_V)lSEDGu*=A0{dh`IBD|f-kj|D2K5s2! z{i${OUSyYCJd@3Qgg{Cf|F+#jIuNV)_2cgrh)kh_t0VETA7o|^E-?2lru5!N9QCb@<0&%ooUosl=Bg%ximv7{8HyqPjI%sPj07DOV#b!rVZ)&&G zzATnMW$cMYy&(&(Eh0GLxl|I2?;@R$VBbiTW(Dl?CSygQ5+uP3qc~#_`3811fvf=o z#eJ;{v59nsyGogC&0gk5K!IvrUpf=t@JDNPZXVNH!ZMeHN8WmaScSSMVRa>9Xtv7~ z7lq)lzR({%XRi~j*k_nVnm7#`YO@`txGP^l3hajD+;nIK9vk+nm0$Q?%yN_2=4B$- z@?I`YX{4M2MZggW`ak+l(1wp{9127uN;(%<8|nT+1b5fr{%98146Ac_E1|-p06|z| zcG2p3jeZ)Y7grxu)5VL@M2^J&UUF1al9dW<HlMzcgEZ@sOxTmLlfA0uGfE%nByQvO@gT2=V;5sk2XJS50m4112@O6FYki~G+ZtvY z_sRI5%7;uw#l(3e*sARKy6nh2LKVrGB9Ni6ai#mHUa$-2`Ex=tTe0F zRisIT*MwgwapV`-mp^}Cci@iJAR|}CPcsasbYzHR4wGbz$C;(DFd)un=S%XiBc{b2 zgaVk8o5_^XS!#PF9m+y8Sp*U+1ukEQvBh!E|5(3M3fS$-p9EC2yVZ}Vz?GSdUt-8z z-oC5}suTq>-g7dVWaH!LAiePsb(U#Rvpu!|N=2nF0gXQ}J4#%#u$CIW^yC+-%L9Kp zzz5%wSExBTl!nv|%0~4=`4%cf=eoSKx_Ng{bwCBINH00z5{zrCqN7kWQR>Cjju(sg z&$*MxCM>PFEeVMzuCBZLHPagMP49bK*Te0!$w|Yd z-knzy`IS?0_kw-82mEK+V(Ll-57D^9<;QNaM)q|SllWALD*Uu$y^HFlE}{v+VlWbkBf zmE-^Zp$OkV0Ca#pSFjFOwuJ=u@{p|A;m;+2XmY(dijCs$Ytfac>UIt&zGiUUBP7y< zOo&8GiWDye5L2w;h0HIHa5VuMGUKi(SdjsXmH*=*+4iP${g{v;J&=tG>2n*8@RhYq z$5|3WvA&oawe#Xb6GZBr4Zsud$r(#n8!~e{ZnaD`f;Jbl5asKApC`PR<_AS1C4~oN zF2)-F=*n9BU>mp7qe$o&{VeR`%>pl59%W+<-}jca&iiK@7|@4)4;3WJx~1=_94eu? z^F4{sE<_jSd`u(UFbn(6uy}qPM%$s*Smkh|)G~P-6bF@pW38(V=AN5`1V?dhwg#Bd zjeJ^}ti8I*_ z7ynC1_A^_B#LAWs*PW67Zk=iFx234jbnRS4bZ5vnq%q*=dW%s7cLV2TVw1~)Y|v&^ zM*?|7A4sUfHwL>CLqaP~hztdr5EPz8PPcX8j7E|Geb>BK-T+sD93SlbI>(J%C1BK4 z)zaaauvi-JbTgn0lU^TPIT#qlKBFbpW*!cd`6uuk#dVcc9l>qTvvDEF=b-fO|D**{ z5EJ*XTHiL#giEa(mW7Jr)Z>Yz1mfA9)J_!s46_~9GOQZmf7=>mQip0{(ryAd<;H4h{~`Ft`WpkG3C5k{KsRq`B>{o-piKh(B$O1ppMpo2C;@ zyj$(jD>oUuD{@`Oa6I8YO$I6QboY}y@s#MtXM@u8B;mTR)6IMSz*^^!UMpg((T{zM zAGVB-pvxQGlNMN+5E>USylDMZ;1PLRXoe;LEblsWgPcep#|pN7K|zo^I<3KrZmI6? z^O0M&d3es!1?D+6Emw0VFY7FOT16%OP>4OwmpVnVYvNug#3?M#_7<60c qWK|lGfXhLf{r`o7HZa8%)r%oRXl?q9T2>G6Z!}bNl( () => firebaseDi.firebaseApp, @@ -140,15 +140,15 @@ extension GetItInjectableX on _i174.GetIt { () => sharedPreferencesDi.prefs, preResolve: true, ); + gh.lazySingleton<_i361.Dio>(() => dioDi.dio); gh.lazySingleton<_i258.AppRouter>(() => autoRouteDi.appRouter); gh.lazySingleton<_i895.Connectivity>(() => connectivityDi.connectivity); - gh.lazySingleton<_i361.Dio>(() => dioDi.dio); await gh.lazySingletonAsync<_i655.PackageInfo>( () => packageInfoDi.packageInfo, preResolve: true, ); - gh.lazySingleton<_i179.FcmService>(() => _i179.FcmService()); gh.lazySingleton<_i902.DeviceInfoService>(() => _i902.DeviceInfoService()); + gh.lazySingleton<_i179.FcmService>(() => _i179.FcmService()); gh.lazySingleton<_i543.NetworkClient>( () => _i543.NetworkClient(gh<_i895.Connectivity>()), ); @@ -163,29 +163,29 @@ extension GetItInjectableX on _i174.GetIt { () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); - gh.factory<_i866.AnalyticRemoteDataProvider>( - () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), - ); - gh.factory<_i17.AuthRemoteDataProvider>( - () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i130.OrderRemoteDataProvider>( + () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i333.CategoryRemoteDataProvider>( () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i1006.CustomerRemoteDataProvider>( - () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i17.AuthRemoteDataProvider>( + () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i130.OrderRemoteDataProvider>( - () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), - ); - gh.factory<_i27.OutletRemoteDataProvider>( - () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i785.UserRemoteDataProvider>( + () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i823.ProductRemoteDataProvider>( () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i785.UserRemoteDataProvider>( - () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i27.OutletRemoteDataProvider>( + () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), + ); + gh.factory<_i866.AnalyticRemoteDataProvider>( + () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), + ); + gh.factory<_i1006.CustomerRemoteDataProvider>( + () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), @@ -232,20 +232,17 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); - gh.factory<_i889.SalesLoaderBloc>( - () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); gh.factory<_i473.HomeBloc>( () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i889.SalesLoaderBloc>( + () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i337.CurrentOutletLoaderBloc>( () => _i337.CurrentOutletLoaderBloc(gh<_i197.IOutletRepository>()), ); - gh.factory<_i1038.CategoryAnalyticLoaderBloc>( - () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); - gh.factory<_i516.DashboardAnalyticLoaderBloc>( - () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i221.ProductAnalyticLoaderBloc>( + () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i785.InventoryAnalyticLoaderBloc>( () => _i785.InventoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), @@ -255,12 +252,15 @@ extension GetItInjectableX on _i174.GetIt { gh<_i477.IAnalyticRepository>(), ), ); - gh.factory<_i221.ProductAnalyticLoaderBloc>( - () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i1038.CategoryAnalyticLoaderBloc>( + () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i11.ProfitLossLoaderBloc>( () => _i11.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i516.DashboardAnalyticLoaderBloc>( + () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i945.AuthBloc>( () => _i945.AuthBloc(gh<_i49.IAuthRepository>()), ); @@ -270,12 +270,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1058.OrderLoaderBloc>( () => _i1058.OrderLoaderBloc(gh<_i219.IOrderRepository>()), ); - gh.factory<_i1030.ChangePasswordFormBloc>( - () => _i1030.ChangePasswordFormBloc(gh<_i635.IUserRepository>()), - ); gh.factory<_i147.UserEditFormBloc>( () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), ); + gh.factory<_i1030.ChangePasswordFormBloc>( + () => _i1030.ChangePasswordFormBloc(gh<_i635.IUserRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc( gh<_i49.IAuthRepository>(), @@ -283,14 +283,14 @@ extension GetItInjectableX on _i174.GetIt { gh<_i179.FcmService>(), ), ); - gh.factory<_i346.InventoryReportBloc>( - () => _i346.InventoryReportBloc( + gh.factory<_i605.TransactionReportBloc>( + () => _i605.TransactionReportBloc( gh<_i477.IAnalyticRepository>(), gh<_i197.IOutletRepository>(), ), ); - gh.factory<_i605.TransactionReportBloc>( - () => _i605.TransactionReportBloc( + gh.factory<_i346.InventoryReportBloc>( + () => _i346.InventoryReportBloc( gh<_i477.IAnalyticRepository>(), gh<_i197.IOutletRepository>(), ), @@ -303,10 +303,10 @@ class _$FirebaseDi extends _i73.FirebaseDi {} class _$SharedPreferencesDi extends _i402.SharedPreferencesDi {} +class _$DioDi extends _i103.DioDi {} + class _$AutoRouteDi extends _i311.AutoRouteDi {} class _$ConnectivityDi extends _i586.ConnectivityDi {} -class _$DioDi extends _i103.DioDi {} - class _$PackageInfoDi extends _i227.PackageInfoDi {} diff --git a/lib/presentation/components/assets/assets.gen.dart b/lib/presentation/components/assets/assets.gen.dart index d2a149c..84d22e0 100644 --- a/lib/presentation/components/assets/assets.gen.dart +++ b/lib/presentation/components/assets/assets.gen.dart @@ -11,6 +11,34 @@ import 'package:flutter/widgets.dart'; +class $AssetsIconsGen { + const $AssetsIconsGen(); + + /// File path: assets/icons/ic-report-product.png + AssetGenImage get icReportProduct => + const AssetGenImage('assets/icons/ic-report-product.png'); + + /// File path: assets/icons/ic-report-profit-loss.png + AssetGenImage get icReportProfitLoss => + const AssetGenImage('assets/icons/ic-report-profit-loss.png'); + + /// File path: assets/icons/ic-report-purchase.png + AssetGenImage get icReportPurchase => + const AssetGenImage('assets/icons/ic-report-purchase.png'); + + /// File path: assets/icons/ic-report-sales.png + AssetGenImage get icReportSales => + const AssetGenImage('assets/icons/ic-report-sales.png'); + + /// List of all assets + List get values => [ + icReportProduct, + icReportProfitLoss, + icReportPurchase, + icReportSales, + ]; +} + class $AssetsImagesGen { const $AssetsImagesGen(); @@ -28,6 +56,7 @@ class $AssetsImagesGen { class Assets { const Assets._(); + static const $AssetsIconsGen icons = $AssetsIconsGen(); static const $AssetsImagesGen images = $AssetsImagesGen(); } diff --git a/lib/presentation/components/widgets/particle_card.dart b/lib/presentation/components/widgets/particle_card.dart new file mode 100644 index 0000000..fd810f5 --- /dev/null +++ b/lib/presentation/components/widgets/particle_card.dart @@ -0,0 +1,166 @@ +import 'package:flutter/material.dart'; + +import '../../../common/painter/wave_painter.dart'; +import '../../../common/theme/theme.dart'; + +class ParticleCard extends StatelessWidget { + /// Content yang ditampilkan di atas particle background + final Widget child; + + /// Gradient background card. Default pakai primaryGradient + final List? gradientColors; + + /// Arah gradient. Default topLeft โ†’ bottomRight + final AlignmentGeometry gradientBegin; + final AlignmentGeometry gradientEnd; + + /// Border radius card. Default 16 + final double borderRadius; + + /// Padding konten. Default 16 semua sisi + final EdgeInsetsGeometry? padding; + + /// Height card. Null = wrap content + final double? height; + + /// Opacity particle & wave. Default 1.0 + final double decorationOpacity; + + const ParticleCard({ + super.key, + required this.child, + this.gradientColors, + this.gradientBegin = Alignment.topLeft, + this.gradientEnd = Alignment.bottomRight, + this.borderRadius = 16, + this.padding, + this.height, + this.decorationOpacity = 1.0, + }); + + @override + Widget build(BuildContext context) { + final colors = gradientColors ?? AppColor.primaryGradient; + + return ClipRRect( + borderRadius: BorderRadius.circular(borderRadius), + child: Container( + height: height, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(borderRadius), + gradient: LinearGradient( + colors: colors, + begin: gradientBegin, + end: gradientEnd, + ), + boxShadow: [ + BoxShadow( + color: colors.first.withOpacity(0.35), + blurRadius: 16, + offset: const Offset(0, 6), + ), + ], + ), + child: Stack( + children: [ + // --- Decorative background --- + Opacity( + opacity: decorationOpacity, + child: Stack( + children: [ + // Circles kanan atas + Positioned( + top: -24, + right: -24, + child: _circle(120, AppColor.white, 0.10), + ), + Positioned( + top: 28, + right: 16, + child: _circle(60, AppColor.white, 0.06), + ), + Positioned( + top: 70, + right: -10, + child: _circle(36, AppColor.white, 0.08), + ), + + // Circles kiri bawah + Positioned( + bottom: -20, + left: -20, + child: _circle(90, AppColor.white, 0.06), + ), + Positioned( + bottom: 20, + left: 40, + child: _circle(40, AppColor.white, 0.04), + ), + + // Sparkle icons + ..._sparkles(context), + + // Wave pattern + Positioned.fill( + child: CustomPaint( + painter: WavePainter( + animation: 0.0, + color: AppColor.white.withOpacity(0.08), + ), + ), + ), + + // Radial gradient overlay + Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: const Alignment(0.7, -0.5), + radius: 1.4, + colors: [ + Colors.white.withOpacity(0.06), + Colors.transparent, + ], + ), + ), + ), + ], + ), + ), + + // --- Content --- + Padding( + padding: padding ?? const EdgeInsets.all(16), + child: child, + ), + ], + ), + ), + ); + } + + Widget _circle(double size, Color color, double opacity) { + return Container( + width: size, + height: size, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: color.withOpacity(opacity), + ), + ); + } + + List _sparkles(BuildContext context) { + final width = MediaQuery.of(context).size.width; + return List.generate(5, (i) { + return Positioned( + left: (i * 70.0) % (width - 20), + top: 10 + (i * 18.0), + child: Icon( + Icons.auto_awesome, + size: 8 + (i % 3) * 3.0, + color: AppColor.white.withOpacity(0.18), + ), + ); + }); + } +} diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 62625bc..ea60d5c 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -11,6 +11,7 @@ import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; import 'widgets/feature.dart'; import 'widgets/header.dart'; +import 'widgets/promo_banner.dart'; import 'widgets/stats.dart'; import 'widgets/top_product.dart'; @@ -170,6 +171,7 @@ class _HomePageState extends State with TickerProviderStateMixin { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + const HomePromoBanner(), HomeFeature(), HomeStats(overview: state.dashboard.overview), HomeTopProduct( diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 36b2fe6..693cef5 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -4,6 +4,7 @@ import 'package:line_icons/line_icons.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; +import '../../../components/assets/assets.gen.dart'; import '../../../router/app_router.gr.dart'; import 'feature_tile.dart'; @@ -38,26 +39,22 @@ class HomeFeature extends StatelessWidget { children: [ HomeFeatureTile( title: context.lang.sales, - color: const Color(0xFF4CAF50), - icon: LineIcons.receipt, + iconPath: Assets.icons.icReportSales.path, onTap: () => context.router.push(SalesRoute()), ), HomeFeatureTile( title: context.lang.purchase, - color: const Color(0xFF2196F3), - icon: LineIcons.shoppingCart, + iconPath: Assets.icons.icReportPurchase.path, onTap: () => context.router.push(PurchaseRoute()), ), HomeFeatureTile( title: context.lang.profit_loss, - color: const Color(0xFF8BC34A), - icon: LineIcons.moneyCheck, + iconPath: Assets.icons.icReportProfitLoss.path, onTap: () => context.router.push(FinanceRoute()), ), HomeFeatureTile( title: context.lang.product, - color: const Color(0xFFFF9800), - icon: LineIcons.box, + iconPath: Assets.icons.icReportProduct.path, onTap: () => context.router.push(ProductAnalyticRoute()), ), ], diff --git a/lib/presentation/pages/home/widgets/feature_tile.dart b/lib/presentation/pages/home/widgets/feature_tile.dart index ba6e95a..da66151 100644 --- a/lib/presentation/pages/home/widgets/feature_tile.dart +++ b/lib/presentation/pages/home/widgets/feature_tile.dart @@ -5,14 +5,12 @@ import '../../../components/spacer/spacer.dart'; class HomeFeatureTile extends StatelessWidget { final String title; - final IconData icon; - final Color color; + final String iconPath; final Function() onTap; const HomeFeatureTile({ super.key, required this.title, - required this.icon, - required this.color, + required this.iconPath, required this.onTap, }); @@ -32,14 +30,13 @@ class HomeFeatureTile extends StatelessWidget { height: 56, decoration: BoxDecoration( gradient: LinearGradient( - colors: [color.withOpacity(0.1), color.withOpacity(0.05)], + colors: [AppColor.primary.withOpacity(0.1), AppColor.primary.withOpacity(0.05)], begin: Alignment.topLeft, end: Alignment.bottomRight, ), borderRadius: BorderRadius.circular(16), - border: Border.all(color: color.withOpacity(0.2), width: 1), ), - child: Icon(icon, color: color, size: 28), + child: Image.asset(iconPath), ), const SpaceHeight(12), Text( diff --git a/lib/presentation/pages/home/widgets/omset_balance.dart b/lib/presentation/pages/home/widgets/omset_balance.dart index 425f91b..915a15b 100644 --- a/lib/presentation/pages/home/widgets/omset_balance.dart +++ b/lib/presentation/pages/home/widgets/omset_balance.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:line_icons/line_icon.dart'; import 'package:line_icons/line_icons.dart'; @@ -7,11 +9,35 @@ import '../../../../common/extension/extension.dart'; import '../../../../domain/user/user.dart'; import '../../../components/spacer/spacer.dart'; -class HomeOmsetBalance extends StatelessWidget { +class HomeOmsetBalance extends StatefulWidget { final int totalOmset; final User user; const HomeOmsetBalance({super.key, required this.totalOmset, required this.user}); + @override + State createState() => _HomeOmsetBalanceState(); +} + +class _HomeOmsetBalanceState extends State { + late DateTime _now; + late Timer _timer; + bool _isBalanceVisible = true; + + @override + void initState() { + super.initState(); + _now = DateTime.now(); + _timer = Timer.periodic(const Duration(seconds: 1), (_) { + setState(() => _now = DateTime.now()); + }); + } + + @override + void dispose() { + _timer.cancel(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Container( @@ -36,34 +62,41 @@ class HomeOmsetBalance extends StatelessWidget { Widget _bottom(BuildContext context) { return GestureDetector( behavior: HitTestBehavior.opaque, - onTap: () { - // context.router.push(BillingHistoryRoute()); - }, + onTap: () {}, child: Container( width: double.infinity, padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.vertical( + color: AppColor.white, + border: Border(top: BorderSide(color: AppColor.border)), + borderRadius: const BorderRadius.vertical( bottom: Radius.circular(16), ), ), child: Row( children: [ - LineIcon(LineIcons.calendar, color: AppColor.white, size: 14), + LineIcon(LineIcons.calendar, color: AppColor.black, size: 14), SpaceWidth(6), Expanded( - child: IgnorePointer( - child: Text( - DateTime.now().toDate, - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w600, - letterSpacing: 0.3, - ), + child: Text( + _now.toDate, + style: AppStyle.md.copyWith( + color: AppColor.black, + fontWeight: FontWeight.w600, + letterSpacing: 0.3, ), ), ), + LineIcon(LineIcons.clock, color: AppColor.textSecondary, size: 14), + SpaceWidth(4), + Text( + _now.toHourMinuteSecond, + style: AppStyle.md.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + fontFeatures: [const FontFeature.tabularFigures()], + ), + ), ], ), ), @@ -73,7 +106,7 @@ class HomeOmsetBalance extends StatelessWidget { Container _middle(BuildContext context) { return Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), - decoration: BoxDecoration(color: AppColor.white.withOpacity(0.3)), + decoration: BoxDecoration(color: AppColor.white), child: Row( children: [ Expanded( @@ -85,25 +118,65 @@ class HomeOmsetBalance extends StatelessWidget { Text( context.lang.sales_today, style: AppStyle.sm.copyWith( - color: AppColor.white, + color: AppColor.black, fontWeight: FontWeight.w400, letterSpacing: 0.3, ), ), SpaceHeight(2), - Text( - totalOmset.currencyFormatRp, - style: AppStyle.xl.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w900, - letterSpacing: 0.3, - ), + AnimatedSwitcher( + duration: const Duration(milliseconds: 400), + transitionBuilder: (child, animation) { + return FadeTransition( + opacity: animation, + child: SlideTransition( + position: Tween( + begin: const Offset(0, 0.3), + end: Offset.zero, + ).animate(CurvedAnimation( + parent: animation, + curve: Curves.easeOutCubic, + )), + child: child, + ), + ); + }, + child: _isBalanceVisible + ? Text( + widget.totalOmset.currencyFormatRp, + key: const ValueKey('visible'), + style: AppStyle.xl.copyWith( + color: AppColor.black, + fontWeight: FontWeight.w900, + letterSpacing: 0.3, + ), + ) + : Text( + 'Rp โ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ข', + key: const ValueKey('hidden'), + style: AppStyle.xl.copyWith( + color: AppColor.black, + fontWeight: FontWeight.w900, + letterSpacing: 2, + ), + ), ), ], ), ), ), - LineIcon(LineIcons.eye, color: AppColor.white, size: 16), + GestureDetector( + onTap: () => setState(() => _isBalanceVisible = !_isBalanceVisible), + child: AnimatedSwitcher( + duration: const Duration(milliseconds: 200), + child: LineIcon( + _isBalanceVisible ? LineIcons.eye : LineIcons.eyeSlash, + key: ValueKey(_isBalanceVisible), + color: AppColor.primary, + size: 16, + ), + ), + ), ], ), ); @@ -115,8 +188,8 @@ class HomeOmsetBalance extends StatelessWidget { child: Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.vertical( + gradient: LinearGradient(colors: AppColor.primaryGradient), + borderRadius: const BorderRadius.vertical( top: Radius.circular(16), ), ), @@ -128,24 +201,13 @@ class HomeOmsetBalance extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Enaklo Bakso Bakmi 343', + 'Semua Outlet', style: AppStyle.sm.copyWith( color: AppColor.white, fontWeight: FontWeight.w600, letterSpacing: 0.3, ), ), - SpaceHeight(2), - Text( - 'Jl. Tawes No.53, Rawamangun, Kec. Pulo Gadung', - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w600, - letterSpacing: 0.3, - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), ], ), ), diff --git a/lib/presentation/pages/home/widgets/promo_banner.dart b/lib/presentation/pages/home/widgets/promo_banner.dart new file mode 100644 index 0000000..a2b77f8 --- /dev/null +++ b/lib/presentation/pages/home/widgets/promo_banner.dart @@ -0,0 +1,79 @@ +import 'package:flutter/material.dart'; + +import '../../../../common/theme/theme.dart'; +import '../../../components/spacer/spacer.dart'; +import '../../../components/widgets/particle_card.dart'; + +class HomePromoBanner extends StatelessWidget { + const HomePromoBanner({super.key}); + + static const _outlets = [ + 'ENAKLO RAWAMANGUNG', + 'ENAKLO WOKU PEDAS\nKELAPA GADING', + ]; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.fromLTRB( + AppValue.padding, + 24, + AppValue.padding, + 0, + ), + child: Row( + children: [ + for (int i = 0; i < _outlets.length; i++) ...[ + Expanded( + child: ParticleCard( + height: 100, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 12, + ), + decorationOpacity: 0.8, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 7, + vertical: 2, + ), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + 'OUTLET', + style: AppStyle.xs.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w700, + letterSpacing: 1.0, + fontSize: 10, + ), + ), + ), + const SpaceHeight(6), + Text( + _outlets[i], + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w800, + height: 1.25, + ), + maxLines: 3, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + ), + if (i < _outlets.length - 1) const SpaceWidth(12), + ], + ], + ), + ); + } +} diff --git a/lib/presentation/pages/main/widgets/bottom_navbar.dart b/lib/presentation/pages/main/widgets/bottom_navbar.dart index 3876d5c..58e6761 100644 --- a/lib/presentation/pages/main/widgets/bottom_navbar.dart +++ b/lib/presentation/pages/main/widgets/bottom_navbar.dart @@ -1,5 +1,6 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:hugeicons/hugeicons.dart'; import 'package:line_icons/line_icon.dart'; import 'package:line_icons/line_icons.dart'; @@ -27,22 +28,22 @@ class _MainBottomNavbarState extends State { type: BottomNavigationBarType.fixed, items: [ BottomNavigationBarItem( - icon: LineIcon(LineIcons.home), + icon: HugeIcon(icon: HugeIcons.strokeRoundedHome01), label: context.lang.home, tooltip: context.lang.home, ), BottomNavigationBarItem( - icon: LineIcon(LineIcons.moneyBill), + icon: HugeIcon(icon: HugeIcons.strokeRoundedBorderFull), label: context.lang.order, tooltip: context.lang.order, ), BottomNavigationBarItem( - icon: LineIcon(LineIcons.barChart), + icon: HugeIcon(icon: HugeIcons.strokeRoundedChart03), label: context.lang.report, tooltip: context.lang.report, ), BottomNavigationBarItem( - icon: LineIcon(LineIcons.user), + icon: HugeIcon(icon: HugeIcons.strokeRoundedUser), label: context.lang.profile, tooltip: context.lang.profile, ), diff --git a/pubspec.lock b/pubspec.lock index d84b1fb..b34f9c9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -717,6 +717,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + hugeicons: + dependency: "direct main" + description: + name: hugeicons + sha256: "03845d6fc8fed4a9df27d3710c94499f6f624e2cd343e858be2578a4ec69ad0a" + url: "https://pub.dev" + source: hosted + version: "1.1.6" image: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a114888..064d1cc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -51,6 +51,7 @@ dependencies: firebase_core: ^3.13.1 firebase_messaging: ^15.2.5 flutter_local_notifications: ^18.0.1 + hugeicons: ^1.1.6 dev_dependencies: flutter_test: @@ -70,7 +71,7 @@ flutter: uses-material-design: true assets: - assets/images/ - # - assets/icons/ + - assets/icons/ # - assets/json/ fonts: From 6e4b09f15e6e2525c3ce4b6e7050c16be24185f4 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 May 2026 15:50:02 +0700 Subject: [PATCH 100/108] update home ui --- lib/presentation/pages/home/home_page.dart | 4 ---- lib/presentation/pages/main/widgets/bottom_navbar.dart | 2 -- 2 files changed, 6 deletions(-) diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index ea60d5c..6bd05f5 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -13,7 +13,6 @@ import 'widgets/feature.dart'; import 'widgets/header.dart'; import 'widgets/promo_banner.dart'; import 'widgets/stats.dart'; -import 'widgets/top_product.dart'; @RoutePage() class HomePage extends StatefulWidget implements AutoRouteWrapper { @@ -174,9 +173,6 @@ class _HomePageState extends State with TickerProviderStateMixin { const HomePromoBanner(), HomeFeature(), HomeStats(overview: state.dashboard.overview), - HomeTopProduct( - products: state.dashboard.topProducts, - ), const SpaceHeight(40), ], ), diff --git a/lib/presentation/pages/main/widgets/bottom_navbar.dart b/lib/presentation/pages/main/widgets/bottom_navbar.dart index 58e6761..c9d19bb 100644 --- a/lib/presentation/pages/main/widgets/bottom_navbar.dart +++ b/lib/presentation/pages/main/widgets/bottom_navbar.dart @@ -1,8 +1,6 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:hugeicons/hugeicons.dart'; -import 'package:line_icons/line_icon.dart'; -import 'package:line_icons/line_icons.dart'; import '../../../../common/extension/extension.dart'; From c2727a0995e0c4056e089218fe088a0676d88bf2 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 May 2026 16:31:00 +0700 Subject: [PATCH 101/108] update outlet card --- .../pages/home/widgets/feature.dart | 1 - .../pages/home/widgets/omset_balance.dart | 2 +- .../pages/home/widgets/promo_banner.dart | 70 +++++++++++++------ 3 files changed, 49 insertions(+), 24 deletions(-) diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 693cef5..796db91 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -1,6 +1,5 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; -import 'package:line_icons/line_icons.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; diff --git a/lib/presentation/pages/home/widgets/omset_balance.dart b/lib/presentation/pages/home/widgets/omset_balance.dart index 915a15b..3240267 100644 --- a/lib/presentation/pages/home/widgets/omset_balance.dart +++ b/lib/presentation/pages/home/widgets/omset_balance.dart @@ -145,7 +145,7 @@ class _HomeOmsetBalanceState extends State { ? Text( widget.totalOmset.currencyFormatRp, key: const ValueKey('visible'), - style: AppStyle.xl.copyWith( + style: AppStyle.xxl.copyWith( color: AppColor.black, fontWeight: FontWeight.w900, letterSpacing: 0.3, diff --git a/lib/presentation/pages/home/widgets/promo_banner.dart b/lib/presentation/pages/home/widgets/promo_banner.dart index a2b77f8..f00fdbf 100644 --- a/lib/presentation/pages/home/widgets/promo_banner.dart +++ b/lib/presentation/pages/home/widgets/promo_banner.dart @@ -8,8 +8,8 @@ class HomePromoBanner extends StatelessWidget { const HomePromoBanner({super.key}); static const _outlets = [ - 'ENAKLO RAWAMANGUNG', - 'ENAKLO WOKU PEDAS\nKELAPA GADING', + {'name': 'ENAKLO RAWAMANGUNG', 'isHealthy': true}, + {'name': 'ENAKLO WOKU PEDAS\nKELAPA GADING', 'isHealthy': true}, ]; @override @@ -26,7 +26,7 @@ class HomePromoBanner extends StatelessWidget { for (int i = 0; i < _outlets.length; i++) ...[ Expanded( child: ParticleCard( - height: 100, + height: 110, padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 12, @@ -36,28 +36,15 @@ class HomePromoBanner extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Container( - padding: const EdgeInsets.symmetric( - horizontal: 7, - vertical: 2, - ), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.2), - borderRadius: BorderRadius.circular(20), - ), - child: Text( - 'OUTLET', - style: AppStyle.xs.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w700, - letterSpacing: 1.0, - fontSize: 10, - ), - ), + Row( + children: [ + Spacer(), + _buildHealthIndicator(_outlets[i]['isHealthy'] as bool), + ], ), const SpaceHeight(6), Text( - _outlets[i], + _outlets[i]['name'] as String, style: AppStyle.sm.copyWith( color: AppColor.white, fontWeight: FontWeight.w800, @@ -76,4 +63,43 @@ class HomePromoBanner extends StatelessWidget { ), ); } + + Widget _buildHealthIndicator(bool isHealthy) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), + decoration: BoxDecoration( + color: isHealthy + ? AppColor.success.withOpacity(0.9) + : AppColor.error.withOpacity(0.9), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: (isHealthy ? AppColor.success : AppColor.error) + .withOpacity(0.3), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + isHealthy ? Icons.check_circle : Icons.warning_rounded, + color: AppColor.white, + size: 12, + ), + const SpaceWidth(4), + Text( + isHealthy ? 'Sehat' : 'Tidak Sehat', + style: AppStyle.xs.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w700, + fontSize: 9, + ), + ), + ], + ), + ); + } } From 3541fc725c29cc3f706f9569d0f22c63ce40f126 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 May 2026 16:47:36 +0700 Subject: [PATCH 102/108] outlet list --- .../outlet_list_loader_bloc.dart | 92 ++ .../outlet_list_loader_bloc.freezed.dart | 828 ++++++++++++++++++ .../outlet_list_loader_event.dart | 12 + .../outlet_list_loader_state.dart | 17 + .../repositories/i_outlet_repository.dart | 7 + .../datasource/remote_data_provider.dart | 35 + .../repositories/outlet_repository.dart | 28 + lib/injection.config.dart | 5 + lib/presentation/pages/home/home_page.dart | 14 +- .../pages/home/widgets/promo_banner.dart | 195 +++-- 10 files changed, 1159 insertions(+), 74 deletions(-) create mode 100644 lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart create mode 100644 lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.freezed.dart create mode 100644 lib/application/outlet/outlet_list_loader/outlet_list_loader_event.dart create mode 100644 lib/application/outlet/outlet_list_loader/outlet_list_loader_state.dart diff --git a/lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart b/lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart new file mode 100644 index 0000000..4b8ea49 --- /dev/null +++ b/lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart @@ -0,0 +1,92 @@ +import 'package:dartz/dartz.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/outlet/outlet.dart'; + +part 'outlet_list_loader_event.dart'; +part 'outlet_list_loader_state.dart'; +part 'outlet_list_loader_bloc.freezed.dart'; + +@injectable +class OutletListLoaderBloc + extends Bloc { + final IOutletRepository _outletRepository; + + OutletListLoaderBloc(this._outletRepository) + : super(OutletListLoaderState.initial()) { + on(_onOutletListLoaderEvent); + } + + Future _onOutletListLoaderEvent( + OutletListLoaderEvent event, + Emitter emit, + ) { + return event.map( + searchChanged: (e) async { + emit(state.copyWith(search: e.search)); + }, + isActiveChanged: (e) async { + emit(state.copyWith(isActive: e.isActive)); + }, + fetched: (e) async { + var newState = state; + + if (e.isRefresh) { + newState = state.copyWith(isFetching: true); + emit(newState); + } + + newState = await _mapFetchedToState(state, isRefresh: e.isRefresh); + + emit(newState); + }, + ); + } + + Future _mapFetchedToState( + OutletListLoaderState state, { + bool isRefresh = false, + }) async { + state = state.copyWith(isFetching: false); + + if (state.hasReachedMax && state.outlets.isNotEmpty && !isRefresh) { + return state; + } + + if (isRefresh) { + state = state.copyWith( + page: 1, + failureOptionOutlet: none(), + hasReachedMax: false, + outlets: [], + ); + } + + final failureOrOutlets = await _outletRepository.getList( + page: state.page, + search: state.search, + isActive: state.isActive, + ); + + state = failureOrOutlets.fold( + (f) { + if (state.outlets.isNotEmpty) { + return state.copyWith(hasReachedMax: true); + } + return state.copyWith(failureOptionOutlet: optionOf(f)); + }, + (outlets) { + return state.copyWith( + outlets: List.from(state.outlets)..addAll(outlets), + failureOptionOutlet: none(), + page: state.page + 1, + hasReachedMax: outlets.length < 10, + ); + }, + ); + + return state; + } +} diff --git a/lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.freezed.dart b/lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.freezed.dart new file mode 100644 index 0000000..65436de --- /dev/null +++ b/lib/application/outlet/outlet_list_loader/outlet_list_loader_bloc.freezed.dart @@ -0,0 +1,828 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'outlet_list_loader_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$OutletListLoaderEvent { + @optionalTypeArgs + TResult when({ + required TResult Function(String search) searchChanged, + required TResult Function(bool? isActive) isActiveChanged, + required TResult Function(bool isRefresh) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String search)? searchChanged, + TResult? Function(bool? isActive)? isActiveChanged, + TResult? Function(bool isRefresh)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String search)? searchChanged, + TResult Function(bool? isActive)? isActiveChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_IsActiveChanged value) isActiveChanged, + required TResult Function(_Fetched value) fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_IsActiveChanged value)? isActiveChanged, + TResult? Function(_Fetched value)? fetched, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_IsActiveChanged value)? isActiveChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OutletListLoaderEventCopyWith<$Res> { + factory $OutletListLoaderEventCopyWith( + OutletListLoaderEvent value, + $Res Function(OutletListLoaderEvent) then, + ) = _$OutletListLoaderEventCopyWithImpl<$Res, OutletListLoaderEvent>; +} + +/// @nodoc +class _$OutletListLoaderEventCopyWithImpl< + $Res, + $Val extends OutletListLoaderEvent +> + implements $OutletListLoaderEventCopyWith<$Res> { + _$OutletListLoaderEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$SearchChangedImplCopyWith<$Res> { + factory _$$SearchChangedImplCopyWith( + _$SearchChangedImpl value, + $Res Function(_$SearchChangedImpl) then, + ) = __$$SearchChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String search}); +} + +/// @nodoc +class __$$SearchChangedImplCopyWithImpl<$Res> + extends _$OutletListLoaderEventCopyWithImpl<$Res, _$SearchChangedImpl> + implements _$$SearchChangedImplCopyWith<$Res> { + __$$SearchChangedImplCopyWithImpl( + _$SearchChangedImpl _value, + $Res Function(_$SearchChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? search = null}) { + return _then( + _$SearchChangedImpl( + null == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$SearchChangedImpl implements _SearchChanged { + const _$SearchChangedImpl(this.search); + + @override + final String search; + + @override + String toString() { + return 'OutletListLoaderEvent.searchChanged(search: $search)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SearchChangedImpl && + (identical(other.search, search) || other.search == search)); + } + + @override + int get hashCode => Object.hash(runtimeType, search); + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + __$$SearchChangedImplCopyWithImpl<_$SearchChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String search) searchChanged, + required TResult Function(bool? isActive) isActiveChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return searchChanged(search); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String search)? searchChanged, + TResult? Function(bool? isActive)? isActiveChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return searchChanged?.call(search); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String search)? searchChanged, + TResult Function(bool? isActive)? isActiveChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(search); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_IsActiveChanged value) isActiveChanged, + required TResult Function(_Fetched value) fetched, + }) { + return searchChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_IsActiveChanged value)? isActiveChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return searchChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_IsActiveChanged value)? isActiveChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (searchChanged != null) { + return searchChanged(this); + } + return orElse(); + } +} + +abstract class _SearchChanged implements OutletListLoaderEvent { + const factory _SearchChanged(final String search) = _$SearchChangedImpl; + + String get search; + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SearchChangedImplCopyWith<_$SearchChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$IsActiveChangedImplCopyWith<$Res> { + factory _$$IsActiveChangedImplCopyWith( + _$IsActiveChangedImpl value, + $Res Function(_$IsActiveChangedImpl) then, + ) = __$$IsActiveChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({bool? isActive}); +} + +/// @nodoc +class __$$IsActiveChangedImplCopyWithImpl<$Res> + extends _$OutletListLoaderEventCopyWithImpl<$Res, _$IsActiveChangedImpl> + implements _$$IsActiveChangedImplCopyWith<$Res> { + __$$IsActiveChangedImplCopyWithImpl( + _$IsActiveChangedImpl _value, + $Res Function(_$IsActiveChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? isActive = freezed}) { + return _then( + _$IsActiveChangedImpl( + freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + ), + ); + } +} + +/// @nodoc + +class _$IsActiveChangedImpl implements _IsActiveChanged { + const _$IsActiveChangedImpl(this.isActive); + + @override + final bool? isActive; + + @override + String toString() { + return 'OutletListLoaderEvent.isActiveChanged(isActive: $isActive)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$IsActiveChangedImpl && + (identical(other.isActive, isActive) || + other.isActive == isActive)); + } + + @override + int get hashCode => Object.hash(runtimeType, isActive); + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$IsActiveChangedImplCopyWith<_$IsActiveChangedImpl> get copyWith => + __$$IsActiveChangedImplCopyWithImpl<_$IsActiveChangedImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String search) searchChanged, + required TResult Function(bool? isActive) isActiveChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return isActiveChanged(isActive); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String search)? searchChanged, + TResult? Function(bool? isActive)? isActiveChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return isActiveChanged?.call(isActive); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String search)? searchChanged, + TResult Function(bool? isActive)? isActiveChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (isActiveChanged != null) { + return isActiveChanged(isActive); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_IsActiveChanged value) isActiveChanged, + required TResult Function(_Fetched value) fetched, + }) { + return isActiveChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_IsActiveChanged value)? isActiveChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return isActiveChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_IsActiveChanged value)? isActiveChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (isActiveChanged != null) { + return isActiveChanged(this); + } + return orElse(); + } +} + +abstract class _IsActiveChanged implements OutletListLoaderEvent { + const factory _IsActiveChanged(final bool? isActive) = _$IsActiveChangedImpl; + + bool? get isActive; + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$IsActiveChangedImplCopyWith<_$IsActiveChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$FetchedImplCopyWith<$Res> { + factory _$$FetchedImplCopyWith( + _$FetchedImpl value, + $Res Function(_$FetchedImpl) then, + ) = __$$FetchedImplCopyWithImpl<$Res>; + @useResult + $Res call({bool isRefresh}); +} + +/// @nodoc +class __$$FetchedImplCopyWithImpl<$Res> + extends _$OutletListLoaderEventCopyWithImpl<$Res, _$FetchedImpl> + implements _$$FetchedImplCopyWith<$Res> { + __$$FetchedImplCopyWithImpl( + _$FetchedImpl _value, + $Res Function(_$FetchedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? isRefresh = null}) { + return _then( + _$FetchedImpl( + isRefresh: null == isRefresh + ? _value.isRefresh + : isRefresh // ignore: cast_nullable_to_non_nullable + as bool, + ), + ); + } +} + +/// @nodoc + +class _$FetchedImpl implements _Fetched { + const _$FetchedImpl({this.isRefresh = false}); + + @override + @JsonKey() + final bool isRefresh; + + @override + String toString() { + return 'OutletListLoaderEvent.fetched(isRefresh: $isRefresh)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$FetchedImpl && + (identical(other.isRefresh, isRefresh) || + other.isRefresh == isRefresh)); + } + + @override + int get hashCode => Object.hash(runtimeType, isRefresh); + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + __$$FetchedImplCopyWithImpl<_$FetchedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String search) searchChanged, + required TResult Function(bool? isActive) isActiveChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return fetched(isRefresh); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String search)? searchChanged, + TResult? Function(bool? isActive)? isActiveChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return fetched?.call(isRefresh); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String search)? searchChanged, + TResult Function(bool? isActive)? isActiveChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(isRefresh); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_IsActiveChanged value) isActiveChanged, + required TResult Function(_Fetched value) fetched, + }) { + return fetched(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_IsActiveChanged value)? isActiveChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return fetched?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_IsActiveChanged value)? isActiveChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (fetched != null) { + return fetched(this); + } + return orElse(); + } +} + +abstract class _Fetched implements OutletListLoaderEvent { + const factory _Fetched({final bool isRefresh}) = _$FetchedImpl; + + bool get isRefresh; + + /// Create a copy of OutletListLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$FetchedImplCopyWith<_$FetchedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +mixin _$OutletListLoaderState { + List get outlets => throw _privateConstructorUsedError; + Option get failureOptionOutlet => + throw _privateConstructorUsedError; + String? get search => throw _privateConstructorUsedError; + bool? get isActive => throw _privateConstructorUsedError; + bool get isFetching => throw _privateConstructorUsedError; + bool get hasReachedMax => throw _privateConstructorUsedError; + int get page => throw _privateConstructorUsedError; + + /// Create a copy of OutletListLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $OutletListLoaderStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $OutletListLoaderStateCopyWith<$Res> { + factory $OutletListLoaderStateCopyWith( + OutletListLoaderState value, + $Res Function(OutletListLoaderState) then, + ) = _$OutletListLoaderStateCopyWithImpl<$Res, OutletListLoaderState>; + @useResult + $Res call({ + List outlets, + Option failureOptionOutlet, + String? search, + bool? isActive, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class _$OutletListLoaderStateCopyWithImpl< + $Res, + $Val extends OutletListLoaderState +> + implements $OutletListLoaderStateCopyWith<$Res> { + _$OutletListLoaderStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of OutletListLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? outlets = null, + Object? failureOptionOutlet = null, + Object? search = freezed, + Object? isActive = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _value.copyWith( + outlets: null == outlets + ? _value.outlets + : outlets // ignore: cast_nullable_to_non_nullable + as List, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$OutletListLoaderStateImplCopyWith<$Res> + implements $OutletListLoaderStateCopyWith<$Res> { + factory _$$OutletListLoaderStateImplCopyWith( + _$OutletListLoaderStateImpl value, + $Res Function(_$OutletListLoaderStateImpl) then, + ) = __$$OutletListLoaderStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + List outlets, + Option failureOptionOutlet, + String? search, + bool? isActive, + bool isFetching, + bool hasReachedMax, + int page, + }); +} + +/// @nodoc +class __$$OutletListLoaderStateImplCopyWithImpl<$Res> + extends + _$OutletListLoaderStateCopyWithImpl<$Res, _$OutletListLoaderStateImpl> + implements _$$OutletListLoaderStateImplCopyWith<$Res> { + __$$OutletListLoaderStateImplCopyWithImpl( + _$OutletListLoaderStateImpl _value, + $Res Function(_$OutletListLoaderStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OutletListLoaderState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? outlets = null, + Object? failureOptionOutlet = null, + Object? search = freezed, + Object? isActive = freezed, + Object? isFetching = null, + Object? hasReachedMax = null, + Object? page = null, + }) { + return _then( + _$OutletListLoaderStateImpl( + outlets: null == outlets + ? _value._outlets + : outlets // ignore: cast_nullable_to_non_nullable + as List, + failureOptionOutlet: null == failureOptionOutlet + ? _value.failureOptionOutlet + : failureOptionOutlet // ignore: cast_nullable_to_non_nullable + as Option, + search: freezed == search + ? _value.search + : search // ignore: cast_nullable_to_non_nullable + as String?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, + isFetching: null == isFetching + ? _value.isFetching + : isFetching // ignore: cast_nullable_to_non_nullable + as bool, + hasReachedMax: null == hasReachedMax + ? _value.hasReachedMax + : hasReachedMax // ignore: cast_nullable_to_non_nullable + as bool, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as int, + ), + ); + } +} + +/// @nodoc + +class _$OutletListLoaderStateImpl implements _OutletListLoaderState { + const _$OutletListLoaderStateImpl({ + required final List outlets, + required this.failureOptionOutlet, + this.search, + this.isActive, + this.isFetching = false, + this.hasReachedMax = false, + this.page = 1, + }) : _outlets = outlets; + + final List _outlets; + @override + List get outlets { + if (_outlets is EqualUnmodifiableListView) return _outlets; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_outlets); + } + + @override + final Option failureOptionOutlet; + @override + final String? search; + @override + final bool? isActive; + @override + @JsonKey() + final bool isFetching; + @override + @JsonKey() + final bool hasReachedMax; + @override + @JsonKey() + final int page; + + @override + String toString() { + return 'OutletListLoaderState(outlets: $outlets, failureOptionOutlet: $failureOptionOutlet, search: $search, isActive: $isActive, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OutletListLoaderStateImpl && + const DeepCollectionEquality().equals(other._outlets, _outlets) && + (identical(other.failureOptionOutlet, failureOptionOutlet) || + other.failureOptionOutlet == failureOptionOutlet) && + (identical(other.search, search) || other.search == search) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && + (identical(other.isFetching, isFetching) || + other.isFetching == isFetching) && + (identical(other.hasReachedMax, hasReachedMax) || + other.hasReachedMax == hasReachedMax) && + (identical(other.page, page) || other.page == page)); + } + + @override + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(_outlets), + failureOptionOutlet, + search, + isActive, + isFetching, + hasReachedMax, + page, + ); + + /// Create a copy of OutletListLoaderState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OutletListLoaderStateImplCopyWith<_$OutletListLoaderStateImpl> + get copyWith => + __$$OutletListLoaderStateImplCopyWithImpl<_$OutletListLoaderStateImpl>( + this, + _$identity, + ); +} + +abstract class _OutletListLoaderState implements OutletListLoaderState { + const factory _OutletListLoaderState({ + required final List outlets, + required final Option failureOptionOutlet, + final String? search, + final bool? isActive, + final bool isFetching, + final bool hasReachedMax, + final int page, + }) = _$OutletListLoaderStateImpl; + + @override + List get outlets; + @override + Option get failureOptionOutlet; + @override + String? get search; + @override + bool? get isActive; + @override + bool get isFetching; + @override + bool get hasReachedMax; + @override + int get page; + + /// Create a copy of OutletListLoaderState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OutletListLoaderStateImplCopyWith<_$OutletListLoaderStateImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/application/outlet/outlet_list_loader/outlet_list_loader_event.dart b/lib/application/outlet/outlet_list_loader/outlet_list_loader_event.dart new file mode 100644 index 0000000..4576c20 --- /dev/null +++ b/lib/application/outlet/outlet_list_loader/outlet_list_loader_event.dart @@ -0,0 +1,12 @@ +part of 'outlet_list_loader_bloc.dart'; + +@freezed +class OutletListLoaderEvent with _$OutletListLoaderEvent { + const factory OutletListLoaderEvent.searchChanged(String search) = + _SearchChanged; + const factory OutletListLoaderEvent.isActiveChanged(bool? isActive) = + _IsActiveChanged; + const factory OutletListLoaderEvent.fetched({ + @Default(false) bool isRefresh, + }) = _Fetched; +} diff --git a/lib/application/outlet/outlet_list_loader/outlet_list_loader_state.dart b/lib/application/outlet/outlet_list_loader/outlet_list_loader_state.dart new file mode 100644 index 0000000..9a699e1 --- /dev/null +++ b/lib/application/outlet/outlet_list_loader/outlet_list_loader_state.dart @@ -0,0 +1,17 @@ +part of 'outlet_list_loader_bloc.dart'; + +@freezed +class OutletListLoaderState with _$OutletListLoaderState { + const factory OutletListLoaderState({ + required List outlets, + required Option failureOptionOutlet, + String? search, + bool? isActive, + @Default(false) bool isFetching, + @Default(false) bool hasReachedMax, + @Default(1) int page, + }) = _OutletListLoaderState; + + factory OutletListLoaderState.initial() => + OutletListLoaderState(outlets: [], failureOptionOutlet: none()); +} diff --git a/lib/domain/outlet/repositories/i_outlet_repository.dart b/lib/domain/outlet/repositories/i_outlet_repository.dart index 9514707..4f12e5c 100644 --- a/lib/domain/outlet/repositories/i_outlet_repository.dart +++ b/lib/domain/outlet/repositories/i_outlet_repository.dart @@ -2,4 +2,11 @@ part of '../outlet.dart'; abstract class IOutletRepository { Future> currentOutlet(); + + Future>> getList({ + int page = 1, + int limit = 10, + String? search, + bool? isActive, + }); } diff --git a/lib/infrastructure/outlet/datasource/remote_data_provider.dart b/lib/infrastructure/outlet/datasource/remote_data_provider.dart index 622c548..b7d406a 100644 --- a/lib/infrastructure/outlet/datasource/remote_data_provider.dart +++ b/lib/infrastructure/outlet/datasource/remote_data_provider.dart @@ -36,4 +36,39 @@ class OutletRemoteDataProvider { return DC.error(OutletFailure.serverError(e)); } } + + Future>> fetchList({ + int page = 1, + int limit = 10, + String? search, + bool? isActive, + }) async { + try { + final Map params = { + 'page': page, + 'limit': limit, + 'search': search ?? 'null', + 'is_active': isActive != null ? isActive.toString() : 'null', + }; + + final response = await _apiClient.get( + '${ApiPath.outlet}/list', + params: params, + headers: getAuthorizationHeader(), + ); + + if (response.data['data'] == null) { + return DC.error(OutletFailure.empty()); + } + + final dto = (response.data['data']['outlets'] as List) + .map((item) => OutletDto.fromJson(item)) + .toList(); + + return DC.data(dto); + } on ApiFailure catch (e, s) { + log('fetchOutletListError', name: _logName, error: e, stackTrace: s); + return DC.error(OutletFailure.serverError(e)); + } + } } diff --git a/lib/infrastructure/outlet/repositories/outlet_repository.dart b/lib/infrastructure/outlet/repositories/outlet_repository.dart index a3cc1a1..857ef71 100644 --- a/lib/infrastructure/outlet/repositories/outlet_repository.dart +++ b/lib/infrastructure/outlet/repositories/outlet_repository.dart @@ -33,4 +33,32 @@ class OutletRepository implements IOutletRepository { return left(const OutletFailure.unexpectedError()); } } + + @override + Future>> getList({ + int page = 1, + int limit = 10, + String? search, + bool? isActive, + }) async { + try { + final result = await _dataProvider.fetchList( + page: page, + limit: limit, + search: search, + isActive: isActive, + ); + + if (result.hasError) { + return left(result.error!); + } + + final outlets = result.data!.map((e) => e.toDomain()).toList(); + + return right(outlets); + } catch (e, s) { + log('getOutletListError', name: _logName, error: e, stackTrace: s); + return left(const OutletFailure.unexpectedError()); + } + } } diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 642318a..6f2079d 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -39,6 +39,8 @@ import 'package:apskel_owner_flutter/application/order/order_loader/order_loader as _i1058; import 'package:apskel_owner_flutter/application/outlet/current_outlet_loader/current_outlet_loader_bloc.dart' as _i337; +import 'package:apskel_owner_flutter/application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart' + as _i877; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; import 'package:apskel_owner_flutter/application/report/inventory_report/inventory_report_bloc.dart' @@ -238,6 +240,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i889.SalesLoaderBloc>( () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i877.OutletListLoaderBloc>( + () => _i877.OutletListLoaderBloc(gh<_i197.IOutletRepository>()), + ); gh.factory<_i337.CurrentOutletLoaderBloc>( () => _i337.CurrentOutletLoaderBloc(gh<_i197.IOutletRepository>()), ); diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 6bd05f5..721e904 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import '../../../application/home/home_bloc.dart'; +import '../../../application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart'; import '../../../common/constant/app_constant.dart'; import '../../../common/theme/theme.dart'; import '../../../injection.dart'; @@ -22,8 +23,17 @@ class HomePage extends StatefulWidget implements AutoRouteWrapper { State createState() => _HomePageState(); @override - Widget wrappedRoute(BuildContext context) => BlocProvider( - create: (context) => getIt()..add(HomeEvent.fetchedDashboard()), + Widget wrappedRoute(BuildContext context) => MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => + getIt()..add(HomeEvent.fetchedDashboard()), + ), + BlocProvider( + create: (context) => getIt() + ..add(const OutletListLoaderEvent.fetched()), + ), + ], child: this, ); } diff --git a/lib/presentation/pages/home/widgets/promo_banner.dart b/lib/presentation/pages/home/widgets/promo_banner.dart index f00fdbf..a3a370a 100644 --- a/lib/presentation/pages/home/widgets/promo_banner.dart +++ b/lib/presentation/pages/home/widgets/promo_banner.dart @@ -1,16 +1,129 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../../application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart'; import '../../../../common/theme/theme.dart'; +import '../../../../domain/outlet/outlet.dart'; import '../../../components/spacer/spacer.dart'; import '../../../components/widgets/particle_card.dart'; class HomePromoBanner extends StatelessWidget { const HomePromoBanner({super.key}); - static const _outlets = [ - {'name': 'ENAKLO RAWAMANGUNG', 'isHealthy': true}, - {'name': 'ENAKLO WOKU PEDAS\nKELAPA GADING', 'isHealthy': true}, - ]; + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + if (state.isFetching && state.outlets.isEmpty) { + return const _PromoBannerSkeleton(); + } + + if (state.outlets.isEmpty) { + return const SizedBox.shrink(); + } + + return Padding( + padding: const EdgeInsets.fromLTRB( + AppValue.padding, + 24, + AppValue.padding, + 0, + ), + child: Row( + children: [ + for (int i = 0; i < state.outlets.length; i++) ...[ + Expanded( + child: _OutletCard(outlet: state.outlets[i]), + ), + if (i < state.outlets.length - 1) const SpaceWidth(12), + ], + ], + ), + ); + }, + ); + } +} + +class _OutletCard extends StatelessWidget { + final Outlet outlet; + + const _OutletCard({required this.outlet}); + + @override + Widget build(BuildContext context) { + return ParticleCard( + height: 110, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12), + decorationOpacity: 0.8, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + const Spacer(), + _buildHealthIndicator(outlet.isActive), + ], + ), + const SpaceHeight(6), + Text( + outlet.name, + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w800, + height: 1.25, + ), + maxLines: 3, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ); + } + + Widget _buildHealthIndicator(bool isActive) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), + decoration: BoxDecoration( + color: isActive + ? AppColor.success.withOpacity(0.9) + : AppColor.error.withOpacity(0.9), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: (isActive ? AppColor.success : AppColor.error) + .withOpacity(0.3), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + isActive ? Icons.check_circle : Icons.warning_rounded, + color: AppColor.white, + size: 12, + ), + const SpaceWidth(4), + Text( + isActive ? 'Sehat' : 'Tidak Sehat', + style: AppStyle.xs.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w700, + fontSize: 9, + ), + ), + ], + ), + ); + } +} + +class _PromoBannerSkeleton extends StatelessWidget { + const _PromoBannerSkeleton(); @override Widget build(BuildContext context) { @@ -23,82 +136,20 @@ class HomePromoBanner extends StatelessWidget { ), child: Row( children: [ - for (int i = 0; i < _outlets.length; i++) ...[ - Expanded( - child: ParticleCard( - height: 110, - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 12, - ), - decorationOpacity: 0.8, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Spacer(), - _buildHealthIndicator(_outlets[i]['isHealthy'] as bool), - ], - ), - const SpaceHeight(6), - Text( - _outlets[i]['name'] as String, - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w800, - height: 1.25, - ), - maxLines: 3, - overflow: TextOverflow.ellipsis, - ), - ], - ), - ), - ), - if (i < _outlets.length - 1) const SpaceWidth(12), - ], + Expanded(child: _skeletonCard()), + const SpaceWidth(12), + Expanded(child: _skeletonCard()), ], ), ); } - Widget _buildHealthIndicator(bool isHealthy) { + Widget _skeletonCard() { return Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), + height: 110, decoration: BoxDecoration( - color: isHealthy - ? AppColor.success.withOpacity(0.9) - : AppColor.error.withOpacity(0.9), + color: AppColor.border, borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: (isHealthy ? AppColor.success : AppColor.error) - .withOpacity(0.3), - blurRadius: 4, - offset: const Offset(0, 2), - ), - ], - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - isHealthy ? Icons.check_circle : Icons.warning_rounded, - color: AppColor.white, - size: 12, - ), - const SpaceWidth(4), - Text( - isHealthy ? 'Sehat' : 'Tidak Sehat', - style: AppStyle.xs.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w700, - fontSize: 9, - ), - ), - ], ), ); } From ba2f0cd265b1d5cfef90e61dfbba553fbffcad8f Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 May 2026 17:09:50 +0700 Subject: [PATCH 103/108] selected outlet --- .../selected_outlet/selected_outlet_bloc.dart | 46 ++ .../selected_outlet_bloc.freezed.dart | 649 ++++++++++++++++++ .../selected_outlet_event.dart | 13 + .../selected_outlet_state.dart | 18 + lib/common/constant/local_storage_key.dart | 1 + .../repositories/i_analytic_repository.dart | 7 + .../repositories/i_order_repository.dart | 1 + .../datasource/remote_data_provider.dart | 75 +- .../repositories/analytic_repository.dart | 104 ++- .../datasource/remote_data_provider.dart | 5 + .../order/repositories/order_repository.dart | 13 +- .../datasource/local_data_provider.dart | 26 + lib/injection.config.dart | 32 +- lib/presentation/pages/home/home_page.dart | 5 + .../pages/home/widgets/omset_balance.dart | 70 +- .../pages/home/widgets/promo_banner.dart | 144 ++-- .../pages/purchase/purchase_page.dart | 36 +- 17 files changed, 1034 insertions(+), 211 deletions(-) create mode 100644 lib/application/outlet/selected_outlet/selected_outlet_bloc.dart create mode 100644 lib/application/outlet/selected_outlet/selected_outlet_bloc.freezed.dart create mode 100644 lib/application/outlet/selected_outlet/selected_outlet_event.dart create mode 100644 lib/application/outlet/selected_outlet/selected_outlet_state.dart create mode 100644 lib/infrastructure/outlet/datasource/local_data_provider.dart diff --git a/lib/application/outlet/selected_outlet/selected_outlet_bloc.dart b/lib/application/outlet/selected_outlet/selected_outlet_bloc.dart new file mode 100644 index 0000000..77682f3 --- /dev/null +++ b/lib/application/outlet/selected_outlet/selected_outlet_bloc.dart @@ -0,0 +1,46 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:injectable/injectable.dart'; + +import '../../../domain/outlet/outlet.dart'; +import '../../../infrastructure/outlet/datasource/local_data_provider.dart'; + +part 'selected_outlet_event.dart'; +part 'selected_outlet_state.dart'; +part 'selected_outlet_bloc.freezed.dart'; + +@injectable +class SelectedOutletBloc + extends Bloc { + final OutletLocalDataProvider _localDataProvider; + + SelectedOutletBloc(this._localDataProvider) + : super(SelectedOutletState.initial()) { + on(_onSelectedOutletEvent); + } + + Future _onSelectedOutletEvent( + SelectedOutletEvent event, + Emitter emit, + ) { + return event.map( + loaded: (e) async { + final savedId = _localDataProvider.getSelectedOutletId(); + emit(state.copyWith(selectedOutletId: savedId)); + }, + selected: (e) async { + await _localDataProvider.saveSelectedOutletId(e.outlet.id); + emit( + state.copyWith( + selectedOutlet: e.outlet, + selectedOutletId: e.outlet.id, + ), + ); + }, + cleared: (e) async { + await _localDataProvider.deleteSelectedOutletId(); + emit(SelectedOutletState.initial()); + }, + ); + } +} diff --git a/lib/application/outlet/selected_outlet/selected_outlet_bloc.freezed.dart b/lib/application/outlet/selected_outlet/selected_outlet_bloc.freezed.dart new file mode 100644 index 0000000..634f59d --- /dev/null +++ b/lib/application/outlet/selected_outlet/selected_outlet_bloc.freezed.dart @@ -0,0 +1,649 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'selected_outlet_bloc.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$SelectedOutletEvent { + @optionalTypeArgs + TResult when({ + required TResult Function() loaded, + required TResult Function(Outlet outlet) selected, + required TResult Function() cleared, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? loaded, + TResult? Function(Outlet outlet)? selected, + TResult? Function()? cleared, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? loaded, + TResult Function(Outlet outlet)? selected, + TResult Function()? cleared, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(_Loaded value) loaded, + required TResult Function(_Selected value) selected, + required TResult Function(_Cleared value) cleared, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Loaded value)? loaded, + TResult? Function(_Selected value)? selected, + TResult? Function(_Cleared value)? cleared, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Loaded value)? loaded, + TResult Function(_Selected value)? selected, + TResult Function(_Cleared value)? cleared, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SelectedOutletEventCopyWith<$Res> { + factory $SelectedOutletEventCopyWith( + SelectedOutletEvent value, + $Res Function(SelectedOutletEvent) then, + ) = _$SelectedOutletEventCopyWithImpl<$Res, SelectedOutletEvent>; +} + +/// @nodoc +class _$SelectedOutletEventCopyWithImpl<$Res, $Val extends SelectedOutletEvent> + implements $SelectedOutletEventCopyWith<$Res> { + _$SelectedOutletEventCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SelectedOutletEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$LoadedImplCopyWith<$Res> { + factory _$$LoadedImplCopyWith( + _$LoadedImpl value, + $Res Function(_$LoadedImpl) then, + ) = __$$LoadedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$LoadedImplCopyWithImpl<$Res> + extends _$SelectedOutletEventCopyWithImpl<$Res, _$LoadedImpl> + implements _$$LoadedImplCopyWith<$Res> { + __$$LoadedImplCopyWithImpl( + _$LoadedImpl _value, + $Res Function(_$LoadedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SelectedOutletEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$LoadedImpl implements _Loaded { + const _$LoadedImpl(); + + @override + String toString() { + return 'SelectedOutletEvent.loaded()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$LoadedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() loaded, + required TResult Function(Outlet outlet) selected, + required TResult Function() cleared, + }) { + return loaded(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? loaded, + TResult? Function(Outlet outlet)? selected, + TResult? Function()? cleared, + }) { + return loaded?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? loaded, + TResult Function(Outlet outlet)? selected, + TResult Function()? cleared, + required TResult orElse(), + }) { + if (loaded != null) { + return loaded(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Loaded value) loaded, + required TResult Function(_Selected value) selected, + required TResult Function(_Cleared value) cleared, + }) { + return loaded(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Loaded value)? loaded, + TResult? Function(_Selected value)? selected, + TResult? Function(_Cleared value)? cleared, + }) { + return loaded?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Loaded value)? loaded, + TResult Function(_Selected value)? selected, + TResult Function(_Cleared value)? cleared, + required TResult orElse(), + }) { + if (loaded != null) { + return loaded(this); + } + return orElse(); + } +} + +abstract class _Loaded implements SelectedOutletEvent { + const factory _Loaded() = _$LoadedImpl; +} + +/// @nodoc +abstract class _$$SelectedImplCopyWith<$Res> { + factory _$$SelectedImplCopyWith( + _$SelectedImpl value, + $Res Function(_$SelectedImpl) then, + ) = __$$SelectedImplCopyWithImpl<$Res>; + @useResult + $Res call({Outlet outlet}); + + $OutletCopyWith<$Res> get outlet; +} + +/// @nodoc +class __$$SelectedImplCopyWithImpl<$Res> + extends _$SelectedOutletEventCopyWithImpl<$Res, _$SelectedImpl> + implements _$$SelectedImplCopyWith<$Res> { + __$$SelectedImplCopyWithImpl( + _$SelectedImpl _value, + $Res Function(_$SelectedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SelectedOutletEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? outlet = null}) { + return _then( + _$SelectedImpl( + null == outlet + ? _value.outlet + : outlet // ignore: cast_nullable_to_non_nullable + as Outlet, + ), + ); + } + + /// Create a copy of SelectedOutletEvent + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $OutletCopyWith<$Res> get outlet { + return $OutletCopyWith<$Res>(_value.outlet, (value) { + return _then(_value.copyWith(outlet: value)); + }); + } +} + +/// @nodoc + +class _$SelectedImpl implements _Selected { + const _$SelectedImpl(this.outlet); + + @override + final Outlet outlet; + + @override + String toString() { + return 'SelectedOutletEvent.selected(outlet: $outlet)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SelectedImpl && + (identical(other.outlet, outlet) || other.outlet == outlet)); + } + + @override + int get hashCode => Object.hash(runtimeType, outlet); + + /// Create a copy of SelectedOutletEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SelectedImplCopyWith<_$SelectedImpl> get copyWith => + __$$SelectedImplCopyWithImpl<_$SelectedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() loaded, + required TResult Function(Outlet outlet) selected, + required TResult Function() cleared, + }) { + return selected(outlet); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? loaded, + TResult? Function(Outlet outlet)? selected, + TResult? Function()? cleared, + }) { + return selected?.call(outlet); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? loaded, + TResult Function(Outlet outlet)? selected, + TResult Function()? cleared, + required TResult orElse(), + }) { + if (selected != null) { + return selected(outlet); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Loaded value) loaded, + required TResult Function(_Selected value) selected, + required TResult Function(_Cleared value) cleared, + }) { + return selected(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Loaded value)? loaded, + TResult? Function(_Selected value)? selected, + TResult? Function(_Cleared value)? cleared, + }) { + return selected?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Loaded value)? loaded, + TResult Function(_Selected value)? selected, + TResult Function(_Cleared value)? cleared, + required TResult orElse(), + }) { + if (selected != null) { + return selected(this); + } + return orElse(); + } +} + +abstract class _Selected implements SelectedOutletEvent { + const factory _Selected(final Outlet outlet) = _$SelectedImpl; + + Outlet get outlet; + + /// Create a copy of SelectedOutletEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SelectedImplCopyWith<_$SelectedImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$ClearedImplCopyWith<$Res> { + factory _$$ClearedImplCopyWith( + _$ClearedImpl value, + $Res Function(_$ClearedImpl) then, + ) = __$$ClearedImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$ClearedImplCopyWithImpl<$Res> + extends _$SelectedOutletEventCopyWithImpl<$Res, _$ClearedImpl> + implements _$$ClearedImplCopyWith<$Res> { + __$$ClearedImplCopyWithImpl( + _$ClearedImpl _value, + $Res Function(_$ClearedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SelectedOutletEvent + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$ClearedImpl implements _Cleared { + const _$ClearedImpl(); + + @override + String toString() { + return 'SelectedOutletEvent.cleared()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$ClearedImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function() loaded, + required TResult Function(Outlet outlet) selected, + required TResult Function() cleared, + }) { + return cleared(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function()? loaded, + TResult? Function(Outlet outlet)? selected, + TResult? Function()? cleared, + }) { + return cleared?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function()? loaded, + TResult Function(Outlet outlet)? selected, + TResult Function()? cleared, + required TResult orElse(), + }) { + if (cleared != null) { + return cleared(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_Loaded value) loaded, + required TResult Function(_Selected value) selected, + required TResult Function(_Cleared value) cleared, + }) { + return cleared(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_Loaded value)? loaded, + TResult? Function(_Selected value)? selected, + TResult? Function(_Cleared value)? cleared, + }) { + return cleared?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_Loaded value)? loaded, + TResult Function(_Selected value)? selected, + TResult Function(_Cleared value)? cleared, + required TResult orElse(), + }) { + if (cleared != null) { + return cleared(this); + } + return orElse(); + } +} + +abstract class _Cleared implements SelectedOutletEvent { + const factory _Cleared() = _$ClearedImpl; +} + +/// @nodoc +mixin _$SelectedOutletState { + /// null berarti "Semua Outlet" + Outlet? get selectedOutlet => throw _privateConstructorUsedError; + String? get selectedOutletId => throw _privateConstructorUsedError; + + /// Create a copy of SelectedOutletState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SelectedOutletStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SelectedOutletStateCopyWith<$Res> { + factory $SelectedOutletStateCopyWith( + SelectedOutletState value, + $Res Function(SelectedOutletState) then, + ) = _$SelectedOutletStateCopyWithImpl<$Res, SelectedOutletState>; + @useResult + $Res call({Outlet? selectedOutlet, String? selectedOutletId}); + + $OutletCopyWith<$Res>? get selectedOutlet; +} + +/// @nodoc +class _$SelectedOutletStateCopyWithImpl<$Res, $Val extends SelectedOutletState> + implements $SelectedOutletStateCopyWith<$Res> { + _$SelectedOutletStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of SelectedOutletState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? selectedOutlet = freezed, + Object? selectedOutletId = freezed, + }) { + return _then( + _value.copyWith( + selectedOutlet: freezed == selectedOutlet + ? _value.selectedOutlet + : selectedOutlet // ignore: cast_nullable_to_non_nullable + as Outlet?, + selectedOutletId: freezed == selectedOutletId + ? _value.selectedOutletId + : selectedOutletId // ignore: cast_nullable_to_non_nullable + as String?, + ) + as $Val, + ); + } + + /// Create a copy of SelectedOutletState + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $OutletCopyWith<$Res>? get selectedOutlet { + if (_value.selectedOutlet == null) { + return null; + } + + return $OutletCopyWith<$Res>(_value.selectedOutlet!, (value) { + return _then(_value.copyWith(selectedOutlet: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$SelectedOutletStateImplCopyWith<$Res> + implements $SelectedOutletStateCopyWith<$Res> { + factory _$$SelectedOutletStateImplCopyWith( + _$SelectedOutletStateImpl value, + $Res Function(_$SelectedOutletStateImpl) then, + ) = __$$SelectedOutletStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({Outlet? selectedOutlet, String? selectedOutletId}); + + @override + $OutletCopyWith<$Res>? get selectedOutlet; +} + +/// @nodoc +class __$$SelectedOutletStateImplCopyWithImpl<$Res> + extends _$SelectedOutletStateCopyWithImpl<$Res, _$SelectedOutletStateImpl> + implements _$$SelectedOutletStateImplCopyWith<$Res> { + __$$SelectedOutletStateImplCopyWithImpl( + _$SelectedOutletStateImpl _value, + $Res Function(_$SelectedOutletStateImpl) _then, + ) : super(_value, _then); + + /// Create a copy of SelectedOutletState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? selectedOutlet = freezed, + Object? selectedOutletId = freezed, + }) { + return _then( + _$SelectedOutletStateImpl( + selectedOutlet: freezed == selectedOutlet + ? _value.selectedOutlet + : selectedOutlet // ignore: cast_nullable_to_non_nullable + as Outlet?, + selectedOutletId: freezed == selectedOutletId + ? _value.selectedOutletId + : selectedOutletId // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc + +class _$SelectedOutletStateImpl implements _SelectedOutletState { + const _$SelectedOutletStateImpl({this.selectedOutlet, this.selectedOutletId}); + + /// null berarti "Semua Outlet" + @override + final Outlet? selectedOutlet; + @override + final String? selectedOutletId; + + @override + String toString() { + return 'SelectedOutletState(selectedOutlet: $selectedOutlet, selectedOutletId: $selectedOutletId)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SelectedOutletStateImpl && + (identical(other.selectedOutlet, selectedOutlet) || + other.selectedOutlet == selectedOutlet) && + (identical(other.selectedOutletId, selectedOutletId) || + other.selectedOutletId == selectedOutletId)); + } + + @override + int get hashCode => + Object.hash(runtimeType, selectedOutlet, selectedOutletId); + + /// Create a copy of SelectedOutletState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SelectedOutletStateImplCopyWith<_$SelectedOutletStateImpl> get copyWith => + __$$SelectedOutletStateImplCopyWithImpl<_$SelectedOutletStateImpl>( + this, + _$identity, + ); +} + +abstract class _SelectedOutletState implements SelectedOutletState { + const factory _SelectedOutletState({ + final Outlet? selectedOutlet, + final String? selectedOutletId, + }) = _$SelectedOutletStateImpl; + + /// null berarti "Semua Outlet" + @override + Outlet? get selectedOutlet; + @override + String? get selectedOutletId; + + /// Create a copy of SelectedOutletState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SelectedOutletStateImplCopyWith<_$SelectedOutletStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/application/outlet/selected_outlet/selected_outlet_event.dart b/lib/application/outlet/selected_outlet/selected_outlet_event.dart new file mode 100644 index 0000000..ddfd6b8 --- /dev/null +++ b/lib/application/outlet/selected_outlet/selected_outlet_event.dart @@ -0,0 +1,13 @@ +part of 'selected_outlet_bloc.dart'; + +@freezed +class SelectedOutletEvent with _$SelectedOutletEvent { + /// Load selected outlet id dari shared preferences + const factory SelectedOutletEvent.loaded() = _Loaded; + + /// User memilih outlet tertentu + const factory SelectedOutletEvent.selected(Outlet outlet) = _Selected; + + /// Reset ke "Semua Outlet" + const factory SelectedOutletEvent.cleared() = _Cleared; +} diff --git a/lib/application/outlet/selected_outlet/selected_outlet_state.dart b/lib/application/outlet/selected_outlet/selected_outlet_state.dart new file mode 100644 index 0000000..3cbf827 --- /dev/null +++ b/lib/application/outlet/selected_outlet/selected_outlet_state.dart @@ -0,0 +1,18 @@ +part of 'selected_outlet_bloc.dart'; + +@freezed +class SelectedOutletState with _$SelectedOutletState { + const factory SelectedOutletState({ + /// null berarti "Semua Outlet" + Outlet? selectedOutlet, + String? selectedOutletId, + }) = _SelectedOutletState; + + factory SelectedOutletState.initial() => const SelectedOutletState(); +} + +extension SelectedOutletStateX on SelectedOutletState { + bool get isAllOutlets => selectedOutletId == null; + + String get displayName => selectedOutlet?.name ?? 'Semua Outlet'; +} diff --git a/lib/common/constant/local_storage_key.dart b/lib/common/constant/local_storage_key.dart index e8a67f6..06f4f98 100644 --- a/lib/common/constant/local_storage_key.dart +++ b/lib/common/constant/local_storage_key.dart @@ -2,4 +2,5 @@ class LocalStorageKey { static const String lang = 'lang'; static const String token = 'token'; static const String user = 'user'; + static const String selectedOutletId = 'selected_outlet_id'; } diff --git a/lib/domain/analytic/repositories/i_analytic_repository.dart b/lib/domain/analytic/repositories/i_analytic_repository.dart index 60fb168..dbaf131 100644 --- a/lib/domain/analytic/repositories/i_analytic_repository.dart +++ b/lib/domain/analytic/repositories/i_analytic_repository.dart @@ -6,35 +6,42 @@ abstract class IAnalyticRepository { Future> getSales({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }); Future> getProfitLoss({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }); Future> getCategory({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }); Future> getInventory({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }); Future> getDashboard({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }); Future> getProduct({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }); Future> getPaymentMethod({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }); } diff --git a/lib/domain/order/repositories/i_order_repository.dart b/lib/domain/order/repositories/i_order_repository.dart index 8e3d008..7f13301 100644 --- a/lib/domain/order/repositories/i_order_repository.dart +++ b/lib/domain/order/repositories/i_order_repository.dart @@ -6,6 +6,7 @@ abstract class IOrderRepository { int limit = 10, String? status, String? search, + String? outletId, required DateTime dateFrom, required DateTime dateTo, }); diff --git a/lib/infrastructure/analytic/datasource/remote_data_provider.dart b/lib/infrastructure/analytic/datasource/remote_data_provider.dart index ff52f3d..29cf105 100644 --- a/lib/infrastructure/analytic/datasource/remote_data_provider.dart +++ b/lib/infrastructure/analytic/datasource/remote_data_provider.dart @@ -21,14 +21,18 @@ class AnalyticRemoteDataProvider { Future> fetchSales({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { + final Map params = { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }; + if (outletId != null) params['outlet_id'] = outletId; + final response = await _apiClient.get( ApiPath.salesAnalytic, - params: { - 'date_from': dateFrom.toServerDate, - 'date_to': dateTo.toServerDate, - }, + params: params, headers: getAuthorizationHeader(), ); @@ -48,14 +52,18 @@ class AnalyticRemoteDataProvider { Future> fetchProfitLoss({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { + final Map params = { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }; + if (outletId != null) params['outlet_id'] = outletId; + final response = await _apiClient.get( ApiPath.profitLossAnalytic, - params: { - 'date_from': dateFrom.toServerDate, - 'date_to': dateTo.toServerDate, - }, + params: params, headers: getAuthorizationHeader(), ); @@ -75,14 +83,18 @@ class AnalyticRemoteDataProvider { Future> fetchCategory({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { + final Map params = { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }; + if (outletId != null) params['outlet_id'] = outletId; + final response = await _apiClient.get( ApiPath.categoryAnalytic, - params: { - 'date_from': dateFrom.toServerDate, - 'date_to': dateTo.toServerDate, - }, + params: params, headers: getAuthorizationHeader(), ); @@ -128,17 +140,20 @@ class AnalyticRemoteDataProvider { } Future> fetchDashboard({ - required String outletId, required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { + final Map params = { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }; + if (outletId != null) params['outlet_id'] = outletId; + final response = await _apiClient.get( ApiPath.dashboardAnalytic, - params: { - 'date_from': dateFrom.toServerDate, - 'date_to': dateTo.toServerDate, - }, + params: params, headers: getAuthorizationHeader(), ); @@ -156,17 +171,20 @@ class AnalyticRemoteDataProvider { } Future> fetchProduct({ - required String outletId, required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { + final Map params = { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }; + if (outletId != null) params['outlet_id'] = outletId; + final response = await _apiClient.get( ApiPath.productAnalytic, - params: { - 'date_from': dateFrom.toServerDate, - 'date_to': dateTo.toServerDate, - }, + params: params, headers: getAuthorizationHeader(), ); @@ -184,17 +202,20 @@ class AnalyticRemoteDataProvider { } Future> fetchPaymentMethod({ - required String outletId, required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { + final Map params = { + 'date_from': dateFrom.toServerDate, + 'date_to': dateTo.toServerDate, + }; + if (outletId != null) params['outlet_id'] = outletId; + final response = await _apiClient.get( ApiPath.paymentMethodAnalytic, - params: { - 'date_from': dateFrom.toServerDate, - 'date_to': dateTo.toServerDate, - }, + params: params, headers: getAuthorizationHeader(), ); diff --git a/lib/infrastructure/analytic/repositories/analytic_repository.dart b/lib/infrastructure/analytic/repositories/analytic_repository.dart index 66c4dda..c32832e 100644 --- a/lib/infrastructure/analytic/repositories/analytic_repository.dart +++ b/lib/infrastructure/analytic/repositories/analytic_repository.dart @@ -5,36 +5,43 @@ import 'package:injectable/injectable.dart'; import '../../../domain/analytic/analytic.dart'; import '../../../domain/analytic/repositories/i_analytic_repository.dart'; -import '../../../domain/user/user.dart'; import '../../auth/datasources/local_data_provider.dart'; +import '../../outlet/datasource/local_data_provider.dart'; import '../datasource/remote_data_provider.dart'; @Injectable(as: IAnalyticRepository) class AnalyticRepository implements IAnalyticRepository { final AnalyticRemoteDataProvider _dataProvider; final AuthLocalDataProvider _authLocalDataProvider; + final OutletLocalDataProvider _outletLocalDataProvider; final String _logName = 'AnalyticRepository'; - AnalyticRepository(this._dataProvider, this._authLocalDataProvider); + AnalyticRepository( + this._dataProvider, + this._authLocalDataProvider, + this._outletLocalDataProvider, + ); + + /// Resolves outlet_id: pakai param jika ada, fallback ke shared pref + String? _resolveOutletId(String? outletId) { + return outletId ?? _outletLocalDataProvider.getSelectedOutletId(); + } @override Future> getSales({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { final result = await _dataProvider.fetchSales( dateFrom: dateFrom, dateTo: dateTo, + outletId: _resolveOutletId(outletId), ); - if (result.hasError) { - return left(result.error!); - } - - final auth = result.data!.toDomain(); - - return right(auth); + if (result.hasError) return left(result.error!); + return right(result.data!.toDomain()); } catch (e, s) { log('getSalesError', name: _logName, error: e, stackTrace: s); return left(const AnalyticFailure.unexpectedError()); @@ -45,20 +52,17 @@ class AnalyticRepository implements IAnalyticRepository { Future> getProfitLoss({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { final result = await _dataProvider.fetchProfitLoss( dateFrom: dateFrom, dateTo: dateTo, + outletId: _resolveOutletId(outletId), ); - if (result.hasError) { - return left(result.error!); - } - - final auth = result.data!.toDomain(); - - return right(auth); + if (result.hasError) return left(result.error!); + return right(result.data!.toDomain()); } catch (e, s) { log('getProfitLossError', name: _logName, error: e, stackTrace: s); return left(const AnalyticFailure.unexpectedError()); @@ -69,20 +73,17 @@ class AnalyticRepository implements IAnalyticRepository { Future> getCategory({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { final result = await _dataProvider.fetchCategory( dateFrom: dateFrom, dateTo: dateTo, + outletId: _resolveOutletId(outletId), ); - if (result.hasError) { - return left(result.error!); - } - - final auth = result.data!.toDomain(); - - return right(auth); + if (result.hasError) return left(result.error!); + return right(result.data!.toDomain()); } catch (e, s) { log('getCategoryError', name: _logName, error: e, stackTrace: s); return left(const AnalyticFailure.unexpectedError()); @@ -93,23 +94,20 @@ class AnalyticRepository implements IAnalyticRepository { Future> getInventory({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { - User currentUser = await _authLocalDataProvider.currentUser(); + final currentUser = await _authLocalDataProvider.currentUser(); + final resolvedId = _resolveOutletId(outletId) ?? currentUser.outletId; final result = await _dataProvider.fetchInventory( - outletId: currentUser.outletId, + outletId: resolvedId, dateFrom: dateFrom, dateTo: dateTo, ); - if (result.hasError) { - return left(result.error!); - } - - final auth = result.data!.toDomain(); - - return right(auth); + if (result.hasError) return left(result.error!); + return right(result.data!.toDomain()); } catch (e, s) { log('getInventoryError', name: _logName, error: e, stackTrace: s); return left(const AnalyticFailure.unexpectedError()); @@ -120,23 +118,17 @@ class AnalyticRepository implements IAnalyticRepository { Future> getDashboard({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { - User currentUser = await _authLocalDataProvider.currentUser(); - final result = await _dataProvider.fetchDashboard( - outletId: currentUser.outletId, dateFrom: dateFrom, dateTo: dateTo, + outletId: _resolveOutletId(outletId), ); - if (result.hasError) { - return left(result.error!); - } - - final auth = result.data!.toDomain(); - - return right(auth); + if (result.hasError) return left(result.error!); + return right(result.data!.toDomain()); } catch (e, s) { log('getDashboardError', name: _logName, error: e, stackTrace: s); return left(const AnalyticFailure.unexpectedError()); @@ -147,23 +139,17 @@ class AnalyticRepository implements IAnalyticRepository { Future> getProduct({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { - User currentUser = await _authLocalDataProvider.currentUser(); - final result = await _dataProvider.fetchProduct( - outletId: currentUser.outletId, dateFrom: dateFrom, dateTo: dateTo, + outletId: _resolveOutletId(outletId), ); - if (result.hasError) { - return left(result.error!); - } - - final auth = result.data!.toDomain(); - - return right(auth); + if (result.hasError) return left(result.error!); + return right(result.data!.toDomain()); } catch (e, s) { log('getProductError', name: _logName, error: e, stackTrace: s); return left(const AnalyticFailure.unexpectedError()); @@ -174,23 +160,17 @@ class AnalyticRepository implements IAnalyticRepository { Future> getPaymentMethod({ required DateTime dateFrom, required DateTime dateTo, + String? outletId, }) async { try { - User currentUser = await _authLocalDataProvider.currentUser(); - final result = await _dataProvider.fetchPaymentMethod( - outletId: currentUser.outletId, dateFrom: dateFrom, dateTo: dateTo, + outletId: _resolveOutletId(outletId), ); - if (result.hasError) { - return left(result.error!); - } - - final auth = result.data!.toDomain(); - - return right(auth); + if (result.hasError) return left(result.error!); + return right(result.data!.toDomain()); } catch (e, s) { log('getPaymentMethodError', name: _logName, error: e, stackTrace: s); return left(const AnalyticFailure.unexpectedError()); diff --git a/lib/infrastructure/order/datasource/remote_data_provider.dart b/lib/infrastructure/order/datasource/remote_data_provider.dart index 834ac05..ecc4fda 100644 --- a/lib/infrastructure/order/datasource/remote_data_provider.dart +++ b/lib/infrastructure/order/datasource/remote_data_provider.dart @@ -23,6 +23,7 @@ class OrderRemoteDataProvider { int limit = 10, String? status, String? search, + String? outletId, required DateTime dateFrom, required DateTime dateTo, }) async { @@ -42,6 +43,10 @@ class OrderRemoteDataProvider { params['search'] = search; } + // if (outletId != null) { + // params['outlet_id'] = outletId; + // } + final response = await _apiClient.get( ApiPath.order, params: params, diff --git a/lib/infrastructure/order/repositories/order_repository.dart b/lib/infrastructure/order/repositories/order_repository.dart index bac3e8c..6317fe8 100644 --- a/lib/infrastructure/order/repositories/order_repository.dart +++ b/lib/infrastructure/order/repositories/order_repository.dart @@ -4,14 +4,16 @@ import 'package:dartz/dartz.dart' hide Order; import 'package:injectable/injectable.dart' hide Order; import '../../../domain/order/order.dart'; +import '../../outlet/datasource/local_data_provider.dart'; import '../datasource/remote_data_provider.dart'; @Injectable(as: IOrderRepository) class OrderRepository implements IOrderRepository { final OrderRemoteDataProvider _dataProvider; + final OutletLocalDataProvider _outletLocalDataProvider; final String _logName = 'OrderRepository'; - OrderRepository(this._dataProvider); + OrderRepository(this._dataProvider, this._outletLocalDataProvider); @override Future>> get({ @@ -19,15 +21,20 @@ class OrderRepository implements IOrderRepository { int limit = 20, String? status, String? search, + String? outletId, required DateTime dateFrom, required DateTime dateTo, }) async { try { + final resolvedOutletId = + outletId ?? _outletLocalDataProvider.getSelectedOutletId(); + final result = await _dataProvider.fetch( page: page, limit: limit, status: status, search: search, + outletId: resolvedOutletId, dateFrom: dateFrom, dateTo: dateTo, ); @@ -36,9 +43,9 @@ class OrderRepository implements IOrderRepository { return left(result.error!); } - final auth = result.data!.map((e) => e.toDomain()).toList(); + final orders = result.data!.map((e) => e.toDomain()).toList(); - return right(auth); + return right(orders); } catch (e, s) { log('getOrderError', name: _logName, error: e, stackTrace: s); return left(const OrderFailure.unexpectedError()); diff --git a/lib/infrastructure/outlet/datasource/local_data_provider.dart b/lib/infrastructure/outlet/datasource/local_data_provider.dart new file mode 100644 index 0000000..8fe1b93 --- /dev/null +++ b/lib/infrastructure/outlet/datasource/local_data_provider.dart @@ -0,0 +1,26 @@ +import 'package:injectable/injectable.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../../../common/constant/local_storage_key.dart'; + +@injectable +class OutletLocalDataProvider { + final SharedPreferences _sharedPreferences; + + OutletLocalDataProvider(this._sharedPreferences); + + Future saveSelectedOutletId(String outletId) async { + await _sharedPreferences.setString( + LocalStorageKey.selectedOutletId, + outletId, + ); + } + + String? getSelectedOutletId() { + return _sharedPreferences.getString(LocalStorageKey.selectedOutletId); + } + + Future deleteSelectedOutletId() async { + await _sharedPreferences.remove(LocalStorageKey.selectedOutletId); + } +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 6f2079d..2ca1bda 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -41,6 +41,8 @@ import 'package:apskel_owner_flutter/application/outlet/current_outlet_loader/cu as _i337; import 'package:apskel_owner_flutter/application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart' as _i877; +import 'package:apskel_owner_flutter/application/outlet/selected_outlet/selected_outlet_bloc.dart' + as _i678; import 'package:apskel_owner_flutter/application/product/product_loader/product_loader_bloc.dart' as _i458; import 'package:apskel_owner_flutter/application/report/inventory_report/inventory_report_bloc.dart' @@ -96,6 +98,8 @@ import 'package:apskel_owner_flutter/infrastructure/order/datasource/remote_data as _i130; import 'package:apskel_owner_flutter/infrastructure/order/repositories/order_repository.dart' as _i641; +import 'package:apskel_owner_flutter/infrastructure/outlet/datasource/local_data_provider.dart' + as _i850; import 'package:apskel_owner_flutter/infrastructure/outlet/datasource/remote_data_provider.dart' as _i27; import 'package:apskel_owner_flutter/infrastructure/outlet/repositories/outlet_repository.dart' @@ -161,6 +165,9 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i991.AuthLocalDataProvider>( () => _i991.AuthLocalDataProvider(gh<_i460.SharedPreferences>()), ); + gh.factory<_i850.OutletLocalDataProvider>( + () => _i850.OutletLocalDataProvider(gh<_i460.SharedPreferences>()), + ); gh.lazySingleton<_i115.ApiClient>( () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); @@ -192,15 +199,15 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), ); - gh.factory<_i219.IOrderRepository>( - () => _i641.OrderRepository(gh<_i130.OrderRemoteDataProvider>()), - ); gh.factory<_i49.IAuthRepository>( () => _i1035.AuthRepository( gh<_i991.AuthLocalDataProvider>(), gh<_i17.AuthRemoteDataProvider>(), ), ); + gh.factory<_i678.SelectedOutletBloc>( + () => _i678.SelectedOutletBloc(gh<_i850.OutletLocalDataProvider>()), + ); gh.factory<_i635.IUserRepository>( () => _i754.UserRepository( gh<_i785.UserRemoteDataProvider>(), @@ -210,15 +217,15 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i419.IProductRepository>( () => _i121.ProductRepository(gh<_i823.ProductRemoteDataProvider>()), ); + gh.factory<_i219.IOrderRepository>( + () => _i641.OrderRepository( + gh<_i130.OrderRemoteDataProvider>(), + gh<_i850.OutletLocalDataProvider>(), + ), + ); gh.factory<_i972.CustomerLoaderBloc>( () => _i972.CustomerLoaderBloc(gh<_i48.ICustomerRepository>()), ); - gh.factory<_i477.IAnalyticRepository>( - () => _i393.AnalyticRepository( - gh<_i866.AnalyticRemoteDataProvider>(), - gh<_i991.AuthLocalDataProvider>(), - ), - ); gh.factory<_i1020.ICategoryRepository>( () => _i869.CategoryRepository(gh<_i333.CategoryRemoteDataProvider>()), ); @@ -234,6 +241,13 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); + gh.factory<_i477.IAnalyticRepository>( + () => _i393.AnalyticRepository( + gh<_i866.AnalyticRemoteDataProvider>(), + gh<_i991.AuthLocalDataProvider>(), + gh<_i850.OutletLocalDataProvider>(), + ), + ); gh.factory<_i473.HomeBloc>( () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), ); diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 721e904..d19d6eb 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -5,6 +5,7 @@ import 'package:line_icons/line_icons.dart'; import '../../../application/home/home_bloc.dart'; import '../../../application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart'; +import '../../../application/outlet/selected_outlet/selected_outlet_bloc.dart'; import '../../../common/constant/app_constant.dart'; import '../../../common/theme/theme.dart'; import '../../../injection.dart'; @@ -33,6 +34,10 @@ class HomePage extends StatefulWidget implements AutoRouteWrapper { create: (context) => getIt() ..add(const OutletListLoaderEvent.fetched()), ), + BlocProvider( + create: (context) => getIt() + ..add(const SelectedOutletEvent.loaded()), + ), ], child: this, ); diff --git a/lib/presentation/pages/home/widgets/omset_balance.dart b/lib/presentation/pages/home/widgets/omset_balance.dart index 3240267..c760e81 100644 --- a/lib/presentation/pages/home/widgets/omset_balance.dart +++ b/lib/presentation/pages/home/widgets/omset_balance.dart @@ -1,10 +1,12 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icon.dart'; import 'package:line_icons/line_icons.dart'; import '../../../../../../common/theme/theme.dart'; +import '../../../../application/outlet/selected_outlet/selected_outlet_bloc.dart'; import '../../../../common/extension/extension.dart'; import '../../../../domain/user/user.dart'; import '../../../components/spacer/spacer.dart'; @@ -185,40 +187,46 @@ class _HomeOmsetBalanceState extends State { GestureDetector _top(BuildContext context) { return GestureDetector( onTap: () {}, - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), - decoration: BoxDecoration( - gradient: LinearGradient(colors: AppColor.primaryGradient), - borderRadius: const BorderRadius.vertical( - top: Radius.circular(16), - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Semua Outlet', - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w600, - letterSpacing: 0.3, - ), - ), - ], + child: BlocBuilder( + builder: (context, state) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + gradient: LinearGradient(colors: AppColor.primaryGradient), + borderRadius: const BorderRadius.vertical( + top: Radius.circular(16), ), ), - SpaceWidth(6), - LineIcon( - LineIcons.alternateExchange, - color: AppColor.white, - size: 14, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + state.displayName, + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + letterSpacing: 0.3, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + SpaceWidth(6), + LineIcon( + LineIcons.alternateExchange, + color: AppColor.white, + size: 14, + ), + ], ), - ], - ), + ); + }, ), ); } diff --git a/lib/presentation/pages/home/widgets/promo_banner.dart b/lib/presentation/pages/home/widgets/promo_banner.dart index a3a370a..c2ad529 100644 --- a/lib/presentation/pages/home/widgets/promo_banner.dart +++ b/lib/presentation/pages/home/widgets/promo_banner.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart'; +import '../../../../application/outlet/selected_outlet/selected_outlet_bloc.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/outlet/outlet.dart'; import '../../../components/spacer/spacer.dart'; @@ -13,32 +14,54 @@ class HomePromoBanner extends StatelessWidget { @override Widget build(BuildContext context) { return BlocBuilder( - builder: (context, state) { - if (state.isFetching && state.outlets.isEmpty) { + builder: (context, outletListState) { + if (outletListState.isFetching && outletListState.outlets.isEmpty) { return const _PromoBannerSkeleton(); } - if (state.outlets.isEmpty) { + if (outletListState.outlets.isEmpty) { return const SizedBox.shrink(); } - return Padding( - padding: const EdgeInsets.fromLTRB( - AppValue.padding, - 24, - AppValue.padding, - 0, - ), - child: Row( - children: [ - for (int i = 0; i < state.outlets.length; i++) ...[ - Expanded( - child: _OutletCard(outlet: state.outlets[i]), - ), - if (i < state.outlets.length - 1) const SpaceWidth(12), - ], - ], - ), + return BlocBuilder( + builder: (context, selectedState) { + return Padding( + padding: const EdgeInsets.fromLTRB( + AppValue.padding, + 24, + AppValue.padding, + 0, + ), + child: Row( + children: [ + for (int i = 0; i < outletListState.outlets.length; i++) ...[ + Expanded( + child: _OutletCard( + outlet: outletListState.outlets[i], + isSelected: selectedState.selectedOutletId == + outletListState.outlets[i].id, + onTap: () { + final tapped = outletListState.outlets[i]; + if (selectedState.selectedOutletId == tapped.id) { + // Tap outlet yang sama โ†’ deselect (Semua Outlet) + context + .read() + .add(const SelectedOutletEvent.cleared()); + } else { + context + .read() + .add(SelectedOutletEvent.selected(tapped)); + } + }, + ), + ), + if (i < outletListState.outlets.length - 1) + const SpaceWidth(12), + ], + ], + ), + ); + }, ); }, ); @@ -47,42 +70,73 @@ class HomePromoBanner extends StatelessWidget { class _OutletCard extends StatelessWidget { final Outlet outlet; + final bool isSelected; + final VoidCallback onTap; - const _OutletCard({required this.outlet}); + const _OutletCard({ + required this.outlet, + required this.isSelected, + required this.onTap, + }); @override Widget build(BuildContext context) { - return ParticleCard( - height: 110, - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12), - decorationOpacity: 0.8, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - const Spacer(), - _buildHealthIndicator(outlet.isActive), - ], + return GestureDetector( + onTap: onTap, + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: isSelected ? AppColor.white : Colors.transparent, + width: 2, ), - const SpaceHeight(6), - Text( - outlet.name, - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w800, - height: 1.25, + boxShadow: isSelected + ? [ + BoxShadow( + color: AppColor.white.withOpacity(0.3), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ] + : [], + ), + child: Opacity( + opacity: isSelected ? 1.0 : 0.55, + child: ParticleCard( + height: 110, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12), + decorationOpacity: 0.8, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + const Spacer(), + _buildStatusBadge(outlet.isActive), + ], + ), + const SpaceHeight(6), + Text( + outlet.name, + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w800, + height: 1.25, + ), + maxLines: 3, + overflow: TextOverflow.ellipsis, + ), + ], ), - maxLines: 3, - overflow: TextOverflow.ellipsis, ), - ], + ), ), ); } - Widget _buildHealthIndicator(bool isActive) { + Widget _buildStatusBadge(bool isActive) { return Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), decoration: BoxDecoration( diff --git a/lib/presentation/pages/purchase/purchase_page.dart b/lib/presentation/pages/purchase/purchase_page.dart index fa7558c..770a38c 100644 --- a/lib/presentation/pages/purchase/purchase_page.dart +++ b/lib/presentation/pages/purchase/purchase_page.dart @@ -29,38 +29,6 @@ class _PurchasePageState extends State ]; final List> purchaseData = [ - { - 'id': 'PO-001', - 'supplier': 'PT. Sumber Rezeki', - 'date': '15 Aug 2025', - 'total': 2500000, - 'status': 'Completed', - 'items': 15, - }, - { - 'id': 'PO-002', - 'supplier': 'CV. Maju Jaya', - 'date': '14 Aug 2025', - 'total': 1750000, - 'status': 'Pending', - 'items': 8, - }, - { - 'id': 'PO-003', - 'supplier': 'PT. Global Supply', - 'date': '13 Aug 2025', - 'total': 3200000, - 'status': 'Completed', - 'items': 22, - }, - { - 'id': 'PO-004', - 'supplier': 'UD. Berkah Mandiri', - 'date': '12 Aug 2025', - 'total': 890000, - 'status': 'Cancelled', - 'items': 5, - }, ]; @override @@ -107,7 +75,7 @@ class _PurchasePageState extends State Expanded( child: PurchaseStatCard( title: context.lang.total_purchase, - value: 'Rp 8.340.000', + value: 'Rp 0', icon: LineIcons.shoppingCart, iconColor: AppColor.success, cardAnimation: cardAnimation, @@ -117,7 +85,7 @@ class _PurchasePageState extends State Expanded( child: PurchaseStatCard( title: context.lang.pending_order, - value: '3 ${context.lang.orders}', + value: '0 ${context.lang.orders}', icon: LineIcons.clock, iconColor: AppColor.warning, cardAnimation: cardAnimation, From d7cd84e1301331645ccbec6957df57c1892095d8 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 May 2026 13:22:06 +0700 Subject: [PATCH 104/108] fix ios --- ios/Podfile | 2 +- ios/Podfile.lock | 181 ++++++++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 135 +++++++++++++ .../contents.xcworkspacedata | 3 + pubspec.lock | 32 ++-- pubspec.yaml | 4 +- 6 files changed, 338 insertions(+), 19 deletions(-) create mode 100644 ios/Podfile.lock diff --git a/ios/Podfile b/ios/Podfile index e549ee2..c2c1dc5 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +platform :ios, '14.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..04667cf --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,181 @@ +PODS: + - connectivity_plus (0.0.1): + - Flutter + - device_info_plus (0.0.1): + - Flutter + - Firebase/CoreOnly (10.25.0): + - FirebaseCore (= 10.25.0) + - Firebase/Messaging (10.25.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 10.25.0) + - firebase_core (2.32.0): + - Firebase/CoreOnly (= 10.25.0) + - Flutter + - firebase_messaging (14.7.10): + - Firebase/Messaging (= 10.25.0) + - firebase_core + - Flutter + - FirebaseCore (10.25.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.12) + - GoogleUtilities/Logger (~> 7.12) + - FirebaseCoreInternal (10.29.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseInstallations (10.29.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - PromisesObjC (~> 2.1) + - FirebaseMessaging (10.25.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.3) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Reachability (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - nanopb (< 2.30911.0, >= 2.30908.0) + - Flutter (1.0.0) + - flutter_local_notifications (0.0.1): + - Flutter + - GoogleDataTransport (9.4.1): + - GoogleUtilities/Environment (~> 7.7) + - nanopb (< 2.30911.0, >= 2.30908.0) + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/AppDelegateSwizzler (7.13.3): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Privacy + - GoogleUtilities/Environment (7.13.3): + - GoogleUtilities/Privacy + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/Logger (7.13.3): + - GoogleUtilities/Environment + - GoogleUtilities/Privacy + - GoogleUtilities/Network (7.13.3): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (7.13.3)": + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (7.13.3) + - GoogleUtilities/Reachability (7.13.3): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/UserDefaults (7.13.3): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - image_picker_ios (0.0.1): + - Flutter + - nanopb (2.30910.0): + - nanopb/decode (= 2.30910.0) + - nanopb/encode (= 2.30910.0) + - nanopb/decode (2.30910.0) + - nanopb/encode (2.30910.0) + - open_file_ios (0.0.1): + - Flutter + - package_info_plus (0.4.5): + - Flutter + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - permission_handler_apple (9.3.0): + - Flutter + - PromisesObjC (2.4.0) + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + - sqflite_darwin (0.0.4): + - Flutter + - FlutterMacOS + - url_launcher_ios (0.0.1): + - Flutter + +DEPENDENCIES: + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) + - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) + - Flutter (from `Flutter`) + - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) + - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) + - open_file_ios (from `.symlinks/plugins/open_file_ios/ios`) + - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + +SPEC REPOS: + trunk: + - Firebase + - FirebaseCore + - FirebaseCoreInternal + - FirebaseInstallations + - FirebaseMessaging + - GoogleDataTransport + - GoogleUtilities + - nanopb + - PromisesObjC + +EXTERNAL SOURCES: + connectivity_plus: + :path: ".symlinks/plugins/connectivity_plus/ios" + device_info_plus: + :path: ".symlinks/plugins/device_info_plus/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + firebase_messaging: + :path: ".symlinks/plugins/firebase_messaging/ios" + Flutter: + :path: Flutter + flutter_local_notifications: + :path: ".symlinks/plugins/flutter_local_notifications/ios" + image_picker_ios: + :path: ".symlinks/plugins/image_picker_ios/ios" + open_file_ios: + :path: ".symlinks/plugins/open_file_ios/ios" + package_info_plus: + :path: ".symlinks/plugins/package_info_plus/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + sqflite_darwin: + :path: ".symlinks/plugins/sqflite_darwin/darwin" + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + +SPEC CHECKSUMS: + connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d + device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 + Firebase: 0312a2352584f782ea56f66d91606891d4607f06 + firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197 + firebase_messaging: 1541105e2a2a6ef8bd869bcc44157d31e82f3a50 + FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483 + FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 + FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd + FirebaseMessaging: 88950ba9485052891ebe26f6c43a52bb62248952 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9 + GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a + GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 + image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 + nanopb: 438bc412db1928dac798aa6fd75726007be04262 + open_file_ios: 461db5853723763573e140de3193656f91990d9e + package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe + +PODFILE CHECKSUM: e30f02f9d1c72c47bb6344a0a748c9d268180865 + +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 91ef9ed..a4d20be 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -15,6 +15,8 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + 989F8AA016A730C566E93749 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A6F295F1D6E4BB0819A8681 /* Pods_RunnerTests.framework */; }; + F18848A41F5DE1108211F920 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B7ABC3D9AD3883EDD2E44FB /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -41,15 +43,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0B9C91DAD8EC48930CF79A70 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 159A415F4811E2794AA4092B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 1CE6759F37E82B0362B2E241 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 227E95442FB25185003AAE6C /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A6F295F1D6E4BB0819A8681 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3B7ABC3D9AD3883EDD2E44FB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3C70A9D33D5F6D7EAE05A508 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7F8F2B65C01EDDD64346C756 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -57,13 +66,23 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E6E423C7625C032FDEFB6799 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 6BBDF52C0DFCF2DFA69EB9C3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 989F8AA016A730C566E93749 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F18848A41F5DE1108211F920 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -78,6 +97,15 @@ path = RunnerTests; sourceTree = ""; }; + 4DBA9259FD070A034AF146BB /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B7ABC3D9AD3883EDD2E44FB /* Pods_Runner.framework */, + 3A6F295F1D6E4BB0819A8681 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -96,6 +124,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, + F771B77E516695BE7A4B0AEA /* Pods */, + 4DBA9259FD070A034AF146BB /* Frameworks */, ); sourceTree = ""; }; @@ -124,6 +154,19 @@ path = Runner; sourceTree = ""; }; + F771B77E516695BE7A4B0AEA /* Pods */ = { + isa = PBXGroup; + children = ( + 3C70A9D33D5F6D7EAE05A508 /* Pods-Runner.debug.xcconfig */, + 1CE6759F37E82B0362B2E241 /* Pods-Runner.release.xcconfig */, + 159A415F4811E2794AA4092B /* Pods-Runner.profile.xcconfig */, + E6E423C7625C032FDEFB6799 /* Pods-RunnerTests.debug.xcconfig */, + 7F8F2B65C01EDDD64346C756 /* Pods-RunnerTests.release.xcconfig */, + 0B9C91DAD8EC48930CF79A70 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -131,8 +174,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( + 81D20024DBE321C19417AE73 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, + 6BBDF52C0DFCF2DFA69EB9C3 /* Frameworks */, ); buildRules = ( ); @@ -148,12 +193,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + ACC8E6F2D63F11FFC05DF00A /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 77740562F72074B1BD58B4C5 /* [CP] Embed Pods Frameworks */, + E2768009FD8B9B6235B4E16A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -242,6 +290,45 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 77740562F72074B1BD58B4C5 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 81D20024DBE321C19417AE73 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -257,6 +344,45 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + ACC8E6F2D63F11FFC05DF00A /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + E2768009FD8B9B6235B4E16A /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -366,8 +492,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 5TRC3M8UZG; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -382,6 +510,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = E6E423C7625C032FDEFB6799 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -399,6 +528,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7F8F2B65C01EDDD64346C756 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -414,6 +544,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 0B9C91DAD8EC48930CF79A70 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -545,8 +676,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 5TRC3M8UZG; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -567,8 +700,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 5TRC3M8UZG; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a1..21a3cc1 100644 --- a/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/pubspec.lock b/pubspec.lock index b34f9c9..242445d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 + sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" url: "https://pub.dev" source: hosted - version: "1.3.59" + version: "1.3.35" analyzer: dependency: transitive description: @@ -461,50 +461,50 @@ packages: dependency: "direct main" description: name: firebase_core - sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" url: "https://pub.dev" source: hosted - version: "3.15.2" + version: "2.32.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "0ecda14c1bfc9ed8cac303dd0f8d04a320811b479362a9a4efb14fd331a473ce" + sha256: "8bcfad6d7033f5ea951d15b867622a824b13812178bfec0c779b9d81de011bbb" url: "https://pub.dev" source: hosted - version: "6.0.3" + version: "5.4.2" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" + sha256: eb3afccfc452b2b2075acbe0c4b27de62dd596802b4e5e19869c1e926cbb20b3 url: "https://pub.dev" source: hosted - version: "2.24.1" + version: "2.24.0" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" + sha256: "980259425fa5e2afc03e533f33723335731d21a56fd255611083bceebf4373a8" url: "https://pub.dev" source: hosted - version: "15.2.10" + version: "14.7.10" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" + sha256: "87c4a922cb6f811cfb7a889bdbb3622702443c52a0271636cbc90d813ceac147" url: "https://pub.dev" source: hosted - version: "4.6.10" + version: "4.5.37" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" + sha256: "90dc7ed885e90a24bb0e56d661d4d2b5f84429697fd2cbb9e5890a0ca370e6f4" url: "https://pub.dev" source: hosted - version: "3.10.10" + version: "3.5.18" fixnum: dependency: transitive description: @@ -841,10 +841,10 @@ packages: dependency: transitive description: name: js - sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.6.7" json_annotation: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 064d1cc..e6e3bb2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -48,8 +48,8 @@ dependencies: pdf: ^3.11.3 open_file: ^3.5.10 permission_handler: ^12.0.1 - firebase_core: ^3.13.1 - firebase_messaging: ^15.2.5 + firebase_core: 2.32.0 + firebase_messaging: 14.7.10 flutter_local_notifications: ^18.0.1 hugeicons: ^1.1.6 From 6fda0f563675cc9eec9dd3ddcdd79585c17e79c4 Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 13 May 2026 15:31:14 +0700 Subject: [PATCH 105/108] fix home --- lib/presentation/pages/home/home_page.dart | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index d19d6eb..12f5a94 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -78,13 +78,21 @@ class _HomePageState extends State with TickerProviderStateMixin { super.dispose(); } + void _refetchDashboard(BuildContext context) { + context.read().add(HomeEvent.fetchedDashboard()); + } + @override Widget build(BuildContext context) { - return Scaffold( + return BlocListener( + listenWhen: (previous, current) => + previous.selectedOutletId != current.selectedOutletId, + listener: (context, state) => _refetchDashboard(context), + child: Scaffold( backgroundColor: AppColor.background, body: RefreshIndicator( onRefresh: () { - context.read().add(HomeEvent.fetchedDashboard()); + _refetchDashboard(context); return Future.value(); }, child: BlocBuilder( @@ -201,6 +209,7 @@ class _HomePageState extends State with TickerProviderStateMixin { }, ), ), - ); + ), // Scaffold + ); // BlocListener } } From 9f2097a26850b18abe753138c370e1fc034d4ad8 Mon Sep 17 00:00:00 2001 From: Efril Date: Thu, 14 May 2026 14:11:42 +0700 Subject: [PATCH 106/108] add all outlet --- android/app/build.gradle.kts | 2 +- lib/main.dart | 1 - .../pages/home/widgets/promo_banner.dart | 144 ++++++++++++++++-- pubspec.lock | 38 ++--- 4 files changed, 149 insertions(+), 36 deletions(-) diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 4928c43..5a7213f 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -26,7 +26,7 @@ android { applicationId = "com.apskel.enaklo_owner" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/lib/main.dart b/lib/main.dart index c9b2e97..25f0646 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -28,7 +28,6 @@ void main() async { // Initialize FCM after dependencies are ready await getIt().initialize( onMessageTap: (message) { - // TODO: handle navigation when notification is tapped debugPrint('[FCM] Navigate based on: ${message.data}'); }, ); diff --git a/lib/presentation/pages/home/widgets/promo_banner.dart b/lib/presentation/pages/home/widgets/promo_banner.dart index c2ad529..c302732 100644 --- a/lib/presentation/pages/home/widgets/promo_banner.dart +++ b/lib/presentation/pages/home/widgets/promo_banner.dart @@ -32,11 +32,24 @@ class HomePromoBanner extends StatelessWidget { AppValue.padding, 0, ), - child: Row( - children: [ - for (int i = 0; i < outletListState.outlets.length; i++) ...[ - Expanded( - child: _OutletCard( + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + // Card "Semua Outlet" di posisi pertama + _AllOutletCard( + isSelected: selectedState.isAllOutlets, + onTap: () { + if (!selectedState.isAllOutlets) { + context + .read() + .add(const SelectedOutletEvent.cleared()); + } + }, + ), + const SpaceWidth(12), + for (int i = 0; i < outletListState.outlets.length; i++) ...[ + _OutletCard( outlet: outletListState.outlets[i], isSelected: selectedState.selectedOutletId == outletListState.outlets[i].id, @@ -54,11 +67,11 @@ class HomePromoBanner extends StatelessWidget { } }, ), - ), - if (i < outletListState.outlets.length - 1) - const SpaceWidth(12), + if (i < outletListState.outlets.length - 1) + const SpaceWidth(12), + ], ], - ], + ), ), ); }, @@ -68,6 +81,100 @@ class HomePromoBanner extends StatelessWidget { } } +class _AllOutletCard extends StatelessWidget { + final bool isSelected; + final VoidCallback onTap; + + const _AllOutletCard({ + required this.isSelected, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + width: 130, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: isSelected ? AppColor.white : Colors.transparent, + width: 2, + ), + boxShadow: isSelected + ? [ + BoxShadow( + color: AppColor.white.withOpacity(0.3), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ] + : [], + ), + child: Opacity( + opacity: isSelected ? 1.0 : 0.55, + child: ParticleCard( + height: 110, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12), + decorationOpacity: 0.8, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + const Spacer(), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, vertical: 3), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.25), + borderRadius: BorderRadius.circular(12), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.store_rounded, + color: AppColor.white, + size: 12, + ), + const SpaceWidth(4), + Text( + 'Semua', + style: AppStyle.xs.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w700, + fontSize: 9, + ), + ), + ], + ), + ), + ], + ), + const SpaceHeight(6), + Text( + 'Semua Outlet', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w800, + height: 1.25, + ), + maxLines: 3, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + ), + ), + ); + } +} + class _OutletCard extends StatelessWidget { final Outlet outlet; final bool isSelected; @@ -85,6 +192,7 @@ class _OutletCard extends StatelessWidget { onTap: onTap, child: AnimatedContainer( duration: const Duration(milliseconds: 200), + width: 130, decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), border: Border.all( @@ -188,18 +296,24 @@ class _PromoBannerSkeleton extends StatelessWidget { AppValue.padding, 0, ), - child: Row( - children: [ - Expanded(child: _skeletonCard()), - const SpaceWidth(12), - Expanded(child: _skeletonCard()), - ], + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + _skeletonCard(), + const SpaceWidth(12), + _skeletonCard(), + const SpaceWidth(12), + _skeletonCard(), + ], + ), ), ); } Widget _skeletonCard() { return Container( + width: 130, height: 110, decoration: BoxDecoration( color: AppColor.border, diff --git a/pubspec.lock b/pubspec.lock index 242445d..39c7a96 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -213,10 +213,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" checked_yaml: dependency: transitive description: @@ -865,26 +865,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" line_icons: dependency: "direct main" description: @@ -921,26 +921,26 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mime: dependency: transitive description: @@ -1510,10 +1510,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.10" time: dependency: transitive description: @@ -1646,10 +1646,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: @@ -1731,5 +1731,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.8.1 <4.0.0" + dart: ">=3.9.0-0 <4.0.0" flutter: ">=3.29.0" From c4618bbc1b0c26e83d3f7d372f35294118202b91 Mon Sep 17 00:00:00 2001 From: Efril Date: Thu, 14 May 2026 14:55:49 +0700 Subject: [PATCH 107/108] update pesanan --- .../order/order_loader/order_loader_bloc.dart | 4 + .../order_loader_bloc.freezed.dart | 216 ++++++++++- .../order_loader/order_loader_event.dart | 2 + .../order_loader/order_loader_state.dart | 1 + lib/injection.config.dart | 68 ++-- .../pages/order/order_list/order_page.dart | 296 ++++++++------- .../widgets/filter_header_delegate.dart | 339 +++++++++++++++--- 7 files changed, 719 insertions(+), 207 deletions(-) diff --git a/lib/application/order/order_loader/order_loader_bloc.dart b/lib/application/order/order_loader/order_loader_bloc.dart index 5c2777b..6f39707 100644 --- a/lib/application/order/order_loader/order_loader_bloc.dart +++ b/lib/application/order/order_loader/order_loader_bloc.dart @@ -30,6 +30,9 @@ class OrderLoaderBloc extends Bloc { searchChanged: (e) async { emit(state.copyWith(search: e.search)); }, + outletChanged: (e) async { + emit(state.copyWith(outletId: e.outletId)); + }, fetched: (e) async { var newState = state; @@ -69,6 +72,7 @@ class OrderLoaderBloc extends Bloc { status: state.status == 'all' ? null : state.status, page: state.page, search: state.search, + outletId: state.outletId, dateFrom: state.dateFrom, dateTo: state.dateTo, ); diff --git a/lib/application/order/order_loader/order_loader_bloc.freezed.dart b/lib/application/order/order_loader/order_loader_bloc.freezed.dart index 185cea5..5ac54a8 100644 --- a/lib/application/order/order_loader/order_loader_bloc.freezed.dart +++ b/lib/application/order/order_loader/order_loader_bloc.freezed.dart @@ -23,6 +23,7 @@ mixin _$OrderLoaderEvent { rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, + required TResult Function(String? outletId) outletChanged, required TResult Function(bool isRefresh) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -30,6 +31,7 @@ mixin _$OrderLoaderEvent { TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, + TResult? Function(String? outletId)? outletChanged, TResult? Function(bool isRefresh)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -37,6 +39,7 @@ mixin _$OrderLoaderEvent { TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, + TResult Function(String? outletId)? outletChanged, TResult Function(bool isRefresh)? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -45,6 +48,7 @@ mixin _$OrderLoaderEvent { required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_OutletChanged value) outletChanged, required TResult Function(_Fetched value) fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -52,6 +56,7 @@ mixin _$OrderLoaderEvent { TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_OutletChanged value)? outletChanged, TResult? Function(_Fetched value)? fetched, }) => throw _privateConstructorUsedError; @optionalTypeArgs @@ -59,6 +64,7 @@ mixin _$OrderLoaderEvent { TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_OutletChanged value)? outletChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) => throw _privateConstructorUsedError; @@ -171,6 +177,7 @@ class _$RangeDateChangedImpl implements _RangeDateChanged { rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, + required TResult Function(String? outletId) outletChanged, required TResult Function(bool isRefresh) fetched, }) { return rangeDateChanged(dateFrom, dateTo); @@ -182,6 +189,7 @@ class _$RangeDateChangedImpl implements _RangeDateChanged { TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, + TResult? Function(String? outletId)? outletChanged, TResult? Function(bool isRefresh)? fetched, }) { return rangeDateChanged?.call(dateFrom, dateTo); @@ -193,6 +201,7 @@ class _$RangeDateChangedImpl implements _RangeDateChanged { TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, + TResult Function(String? outletId)? outletChanged, TResult Function(bool isRefresh)? fetched, required TResult orElse(), }) { @@ -208,6 +217,7 @@ class _$RangeDateChangedImpl implements _RangeDateChanged { required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_OutletChanged value) outletChanged, required TResult Function(_Fetched value) fetched, }) { return rangeDateChanged(this); @@ -219,6 +229,7 @@ class _$RangeDateChangedImpl implements _RangeDateChanged { TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_OutletChanged value)? outletChanged, TResult? Function(_Fetched value)? fetched, }) { return rangeDateChanged?.call(this); @@ -230,6 +241,7 @@ class _$RangeDateChangedImpl implements _RangeDateChanged { TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_OutletChanged value)? outletChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -330,6 +342,7 @@ class _$StatusChangedImpl implements _StatusChanged { rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, + required TResult Function(String? outletId) outletChanged, required TResult Function(bool isRefresh) fetched, }) { return statusChanged(status); @@ -341,6 +354,7 @@ class _$StatusChangedImpl implements _StatusChanged { TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, + TResult? Function(String? outletId)? outletChanged, TResult? Function(bool isRefresh)? fetched, }) { return statusChanged?.call(status); @@ -352,6 +366,7 @@ class _$StatusChangedImpl implements _StatusChanged { TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, + TResult Function(String? outletId)? outletChanged, TResult Function(bool isRefresh)? fetched, required TResult orElse(), }) { @@ -367,6 +382,7 @@ class _$StatusChangedImpl implements _StatusChanged { required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_OutletChanged value) outletChanged, required TResult Function(_Fetched value) fetched, }) { return statusChanged(this); @@ -378,6 +394,7 @@ class _$StatusChangedImpl implements _StatusChanged { TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_OutletChanged value)? outletChanged, TResult? Function(_Fetched value)? fetched, }) { return statusChanged?.call(this); @@ -389,6 +406,7 @@ class _$StatusChangedImpl implements _StatusChanged { TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_OutletChanged value)? outletChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -485,6 +503,7 @@ class _$SearchChangedImpl implements _SearchChanged { rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, + required TResult Function(String? outletId) outletChanged, required TResult Function(bool isRefresh) fetched, }) { return searchChanged(search); @@ -496,6 +515,7 @@ class _$SearchChangedImpl implements _SearchChanged { TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, + TResult? Function(String? outletId)? outletChanged, TResult? Function(bool isRefresh)? fetched, }) { return searchChanged?.call(search); @@ -507,6 +527,7 @@ class _$SearchChangedImpl implements _SearchChanged { TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, + TResult Function(String? outletId)? outletChanged, TResult Function(bool isRefresh)? fetched, required TResult orElse(), }) { @@ -522,6 +543,7 @@ class _$SearchChangedImpl implements _SearchChanged { required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_OutletChanged value) outletChanged, required TResult Function(_Fetched value) fetched, }) { return searchChanged(this); @@ -533,6 +555,7 @@ class _$SearchChangedImpl implements _SearchChanged { TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_OutletChanged value)? outletChanged, TResult? Function(_Fetched value)? fetched, }) { return searchChanged?.call(this); @@ -544,6 +567,7 @@ class _$SearchChangedImpl implements _SearchChanged { TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_OutletChanged value)? outletChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -566,6 +590,168 @@ abstract class _SearchChanged implements OrderLoaderEvent { throw _privateConstructorUsedError; } +/// @nodoc +abstract class _$$OutletChangedImplCopyWith<$Res> { + factory _$$OutletChangedImplCopyWith( + _$OutletChangedImpl value, + $Res Function(_$OutletChangedImpl) then, + ) = __$$OutletChangedImplCopyWithImpl<$Res>; + @useResult + $Res call({String? outletId}); +} + +/// @nodoc +class __$$OutletChangedImplCopyWithImpl<$Res> + extends _$OrderLoaderEventCopyWithImpl<$Res, _$OutletChangedImpl> + implements _$$OutletChangedImplCopyWith<$Res> { + __$$OutletChangedImplCopyWithImpl( + _$OutletChangedImpl _value, + $Res Function(_$OutletChangedImpl) _then, + ) : super(_value, _then); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? outletId = freezed}) { + return _then( + _$OutletChangedImpl( + freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, + ), + ); + } +} + +/// @nodoc + +class _$OutletChangedImpl implements _OutletChanged { + const _$OutletChangedImpl(this.outletId); + + @override + final String? outletId; + + @override + String toString() { + return 'OrderLoaderEvent.outletChanged(outletId: $outletId)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$OutletChangedImpl && + (identical(other.outletId, outletId) || + other.outletId == outletId)); + } + + @override + int get hashCode => Object.hash(runtimeType, outletId); + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$OutletChangedImplCopyWith<_$OutletChangedImpl> get copyWith => + __$$OutletChangedImplCopyWithImpl<_$OutletChangedImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(DateTime dateFrom, DateTime dateTo) + rangeDateChanged, + required TResult Function(String status) statusChanged, + required TResult Function(String search) searchChanged, + required TResult Function(String? outletId) outletChanged, + required TResult Function(bool isRefresh) fetched, + }) { + return outletChanged(outletId); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult? Function(String status)? statusChanged, + TResult? Function(String search)? searchChanged, + TResult? Function(String? outletId)? outletChanged, + TResult? Function(bool isRefresh)? fetched, + }) { + return outletChanged?.call(outletId); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, + TResult Function(String status)? statusChanged, + TResult Function(String search)? searchChanged, + TResult Function(String? outletId)? outletChanged, + TResult Function(bool isRefresh)? fetched, + required TResult orElse(), + }) { + if (outletChanged != null) { + return outletChanged(outletId); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(_RangeDateChanged value) rangeDateChanged, + required TResult Function(_StatusChanged value) statusChanged, + required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_OutletChanged value) outletChanged, + required TResult Function(_Fetched value) fetched, + }) { + return outletChanged(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(_RangeDateChanged value)? rangeDateChanged, + TResult? Function(_StatusChanged value)? statusChanged, + TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_OutletChanged value)? outletChanged, + TResult? Function(_Fetched value)? fetched, + }) { + return outletChanged?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(_RangeDateChanged value)? rangeDateChanged, + TResult Function(_StatusChanged value)? statusChanged, + TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_OutletChanged value)? outletChanged, + TResult Function(_Fetched value)? fetched, + required TResult orElse(), + }) { + if (outletChanged != null) { + return outletChanged(this); + } + return orElse(); + } +} + +abstract class _OutletChanged implements OrderLoaderEvent { + const factory _OutletChanged(final String? outletId) = _$OutletChangedImpl; + + String? get outletId; + + /// Create a copy of OrderLoaderEvent + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$OutletChangedImplCopyWith<_$OutletChangedImpl> get copyWith => + throw _privateConstructorUsedError; +} + /// @nodoc abstract class _$$FetchedImplCopyWith<$Res> { factory _$$FetchedImplCopyWith( @@ -642,6 +828,7 @@ class _$FetchedImpl implements _Fetched { rangeDateChanged, required TResult Function(String status) statusChanged, required TResult Function(String search) searchChanged, + required TResult Function(String? outletId) outletChanged, required TResult Function(bool isRefresh) fetched, }) { return fetched(isRefresh); @@ -653,6 +840,7 @@ class _$FetchedImpl implements _Fetched { TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult? Function(String status)? statusChanged, TResult? Function(String search)? searchChanged, + TResult? Function(String? outletId)? outletChanged, TResult? Function(bool isRefresh)? fetched, }) { return fetched?.call(isRefresh); @@ -664,6 +852,7 @@ class _$FetchedImpl implements _Fetched { TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged, TResult Function(String status)? statusChanged, TResult Function(String search)? searchChanged, + TResult Function(String? outletId)? outletChanged, TResult Function(bool isRefresh)? fetched, required TResult orElse(), }) { @@ -679,6 +868,7 @@ class _$FetchedImpl implements _Fetched { required TResult Function(_RangeDateChanged value) rangeDateChanged, required TResult Function(_StatusChanged value) statusChanged, required TResult Function(_SearchChanged value) searchChanged, + required TResult Function(_OutletChanged value) outletChanged, required TResult Function(_Fetched value) fetched, }) { return fetched(this); @@ -690,6 +880,7 @@ class _$FetchedImpl implements _Fetched { TResult? Function(_RangeDateChanged value)? rangeDateChanged, TResult? Function(_StatusChanged value)? statusChanged, TResult? Function(_SearchChanged value)? searchChanged, + TResult? Function(_OutletChanged value)? outletChanged, TResult? Function(_Fetched value)? fetched, }) { return fetched?.call(this); @@ -701,6 +892,7 @@ class _$FetchedImpl implements _Fetched { TResult Function(_RangeDateChanged value)? rangeDateChanged, TResult Function(_StatusChanged value)? statusChanged, TResult Function(_SearchChanged value)? searchChanged, + TResult Function(_OutletChanged value)? outletChanged, TResult Function(_Fetched value)? fetched, required TResult orElse(), }) { @@ -730,6 +922,7 @@ mixin _$OrderLoaderState { throw _privateConstructorUsedError; String get status => throw _privateConstructorUsedError; String? get search => throw _privateConstructorUsedError; + String? get outletId => throw _privateConstructorUsedError; bool get isFetching => throw _privateConstructorUsedError; bool get hasReachedMax => throw _privateConstructorUsedError; int get page => throw _privateConstructorUsedError; @@ -755,6 +948,7 @@ abstract class $OrderLoaderStateCopyWith<$Res> { Option failureOptionOrder, String status, String? search, + String? outletId, bool isFetching, bool hasReachedMax, int page, @@ -782,6 +976,7 @@ class _$OrderLoaderStateCopyWithImpl<$Res, $Val extends OrderLoaderState> Object? failureOptionOrder = null, Object? status = null, Object? search = freezed, + Object? outletId = freezed, Object? isFetching = null, Object? hasReachedMax = null, Object? page = null, @@ -806,6 +1001,10 @@ class _$OrderLoaderStateCopyWithImpl<$Res, $Val extends OrderLoaderState> ? _value.search : search // ignore: cast_nullable_to_non_nullable as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, isFetching: null == isFetching ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable @@ -846,6 +1045,7 @@ abstract class _$$OrderLoaderStateImplCopyWith<$Res> Option failureOptionOrder, String status, String? search, + String? outletId, bool isFetching, bool hasReachedMax, int page, @@ -872,6 +1072,7 @@ class __$$OrderLoaderStateImplCopyWithImpl<$Res> Object? failureOptionOrder = null, Object? status = null, Object? search = freezed, + Object? outletId = freezed, Object? isFetching = null, Object? hasReachedMax = null, Object? page = null, @@ -896,6 +1097,10 @@ class __$$OrderLoaderStateImplCopyWithImpl<$Res> ? _value.search : search // ignore: cast_nullable_to_non_nullable as String?, + outletId: freezed == outletId + ? _value.outletId + : outletId // ignore: cast_nullable_to_non_nullable + as String?, isFetching: null == isFetching ? _value.isFetching : isFetching // ignore: cast_nullable_to_non_nullable @@ -929,6 +1134,7 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { required this.failureOptionOrder, required this.status, this.search, + this.outletId, this.isFetching = false, this.hasReachedMax = false, this.page = 1, @@ -951,6 +1157,8 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { @override final String? search; @override + final String? outletId; + @override @JsonKey() final bool isFetching; @override @@ -966,7 +1174,7 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { @override String toString() { - return 'OrderLoaderState(orders: $orders, failureOptionOrder: $failureOptionOrder, status: $status, search: $search, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page, dateFrom: $dateFrom, dateTo: $dateTo)'; + return 'OrderLoaderState(orders: $orders, failureOptionOrder: $failureOptionOrder, status: $status, search: $search, outletId: $outletId, isFetching: $isFetching, hasReachedMax: $hasReachedMax, page: $page, dateFrom: $dateFrom, dateTo: $dateTo)'; } @override @@ -979,6 +1187,8 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { other.failureOptionOrder == failureOptionOrder) && (identical(other.status, status) || other.status == status) && (identical(other.search, search) || other.search == search) && + (identical(other.outletId, outletId) || + other.outletId == outletId) && (identical(other.isFetching, isFetching) || other.isFetching == isFetching) && (identical(other.hasReachedMax, hasReachedMax) || @@ -996,6 +1206,7 @@ class _$OrderLoaderStateImpl implements _OrderLoaderState { failureOptionOrder, status, search, + outletId, isFetching, hasReachedMax, page, @@ -1021,6 +1232,7 @@ abstract class _OrderLoaderState implements OrderLoaderState { required final Option failureOptionOrder, required final String status, final String? search, + final String? outletId, final bool isFetching, final bool hasReachedMax, final int page, @@ -1037,6 +1249,8 @@ abstract class _OrderLoaderState implements OrderLoaderState { @override String? get search; @override + String? get outletId; + @override bool get isFetching; @override bool get hasReachedMax; diff --git a/lib/application/order/order_loader/order_loader_event.dart b/lib/application/order/order_loader/order_loader_event.dart index 307589b..615c66f 100644 --- a/lib/application/order/order_loader/order_loader_event.dart +++ b/lib/application/order/order_loader/order_loader_event.dart @@ -8,6 +8,8 @@ class OrderLoaderEvent with _$OrderLoaderEvent { ) = _RangeDateChanged; const factory OrderLoaderEvent.statusChanged(String status) = _StatusChanged; const factory OrderLoaderEvent.searchChanged(String search) = _SearchChanged; + const factory OrderLoaderEvent.outletChanged(String? outletId) = + _OutletChanged; const factory OrderLoaderEvent.fetched({@Default(false) bool isRefresh}) = _Fetched; } diff --git a/lib/application/order/order_loader/order_loader_state.dart b/lib/application/order/order_loader/order_loader_state.dart index cd0802a..2fdbc49 100644 --- a/lib/application/order/order_loader/order_loader_state.dart +++ b/lib/application/order/order_loader/order_loader_state.dart @@ -7,6 +7,7 @@ class OrderLoaderState with _$OrderLoaderState { required Option failureOptionOrder, required String status, String? search, + String? outletId, @Default(false) bool isFetching, @Default(false) bool hasReachedMax, @Default(1) int page, diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 2ca1bda..e48e26d 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -134,9 +134,9 @@ extension GetItInjectableX on _i174.GetIt { final gh = _i526.GetItHelper(this, environment, environmentFilter); final firebaseDi = _$FirebaseDi(); final sharedPreferencesDi = _$SharedPreferencesDi(); - final dioDi = _$DioDi(); final autoRouteDi = _$AutoRouteDi(); final connectivityDi = _$ConnectivityDi(); + final dioDi = _$DioDi(); final packageInfoDi = _$PackageInfoDi(); await gh.factoryAsync<_i982.FirebaseApp>( () => firebaseDi.firebaseApp, @@ -146,9 +146,9 @@ extension GetItInjectableX on _i174.GetIt { () => sharedPreferencesDi.prefs, preResolve: true, ); - gh.lazySingleton<_i361.Dio>(() => dioDi.dio); gh.lazySingleton<_i258.AppRouter>(() => autoRouteDi.appRouter); gh.lazySingleton<_i895.Connectivity>(() => connectivityDi.connectivity); + gh.lazySingleton<_i361.Dio>(() => dioDi.dio); await gh.lazySingletonAsync<_i655.PackageInfo>( () => packageInfoDi.packageInfo, preResolve: true, @@ -172,29 +172,29 @@ extension GetItInjectableX on _i174.GetIt { () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); - gh.factory<_i130.OrderRemoteDataProvider>( - () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), - ); - gh.factory<_i333.CategoryRemoteDataProvider>( - () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i866.AnalyticRemoteDataProvider>( + () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i17.AuthRemoteDataProvider>( () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i785.UserRemoteDataProvider>( - () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i333.CategoryRemoteDataProvider>( + () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i823.ProductRemoteDataProvider>( - () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i1006.CustomerRemoteDataProvider>( + () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), + ); + gh.factory<_i130.OrderRemoteDataProvider>( + () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i27.OutletRemoteDataProvider>( () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i866.AnalyticRemoteDataProvider>( - () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i823.ProductRemoteDataProvider>( + () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i1006.CustomerRemoteDataProvider>( - () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i785.UserRemoteDataProvider>( + () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), @@ -248,20 +248,23 @@ extension GetItInjectableX on _i174.GetIt { gh<_i850.OutletLocalDataProvider>(), ), ); - gh.factory<_i473.HomeBloc>( - () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), - ); gh.factory<_i889.SalesLoaderBloc>( () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i473.HomeBloc>( + () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i877.OutletListLoaderBloc>( () => _i877.OutletListLoaderBloc(gh<_i197.IOutletRepository>()), ); gh.factory<_i337.CurrentOutletLoaderBloc>( () => _i337.CurrentOutletLoaderBloc(gh<_i197.IOutletRepository>()), ); - gh.factory<_i221.ProductAnalyticLoaderBloc>( - () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i1038.CategoryAnalyticLoaderBloc>( + () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); + gh.factory<_i516.DashboardAnalyticLoaderBloc>( + () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i785.InventoryAnalyticLoaderBloc>( () => _i785.InventoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), @@ -271,15 +274,12 @@ extension GetItInjectableX on _i174.GetIt { gh<_i477.IAnalyticRepository>(), ), ); - gh.factory<_i1038.CategoryAnalyticLoaderBloc>( - () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i221.ProductAnalyticLoaderBloc>( + () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i11.ProfitLossLoaderBloc>( () => _i11.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), ); - gh.factory<_i516.DashboardAnalyticLoaderBloc>( - () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), - ); gh.factory<_i945.AuthBloc>( () => _i945.AuthBloc(gh<_i49.IAuthRepository>()), ); @@ -289,12 +289,12 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i1058.OrderLoaderBloc>( () => _i1058.OrderLoaderBloc(gh<_i219.IOrderRepository>()), ); - gh.factory<_i147.UserEditFormBloc>( - () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), - ); gh.factory<_i1030.ChangePasswordFormBloc>( () => _i1030.ChangePasswordFormBloc(gh<_i635.IUserRepository>()), ); + gh.factory<_i147.UserEditFormBloc>( + () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), + ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc( gh<_i49.IAuthRepository>(), @@ -302,14 +302,14 @@ extension GetItInjectableX on _i174.GetIt { gh<_i179.FcmService>(), ), ); - gh.factory<_i605.TransactionReportBloc>( - () => _i605.TransactionReportBloc( + gh.factory<_i346.InventoryReportBloc>( + () => _i346.InventoryReportBloc( gh<_i477.IAnalyticRepository>(), gh<_i197.IOutletRepository>(), ), ); - gh.factory<_i346.InventoryReportBloc>( - () => _i346.InventoryReportBloc( + gh.factory<_i605.TransactionReportBloc>( + () => _i605.TransactionReportBloc( gh<_i477.IAnalyticRepository>(), gh<_i197.IOutletRepository>(), ), @@ -322,10 +322,10 @@ class _$FirebaseDi extends _i73.FirebaseDi {} class _$SharedPreferencesDi extends _i402.SharedPreferencesDi {} -class _$DioDi extends _i103.DioDi {} - class _$AutoRouteDi extends _i311.AutoRouteDi {} class _$ConnectivityDi extends _i586.ConnectivityDi {} +class _$DioDi extends _i103.DioDi {} + class _$PackageInfoDi extends _i227.PackageInfoDi {} diff --git a/lib/presentation/pages/order/order_list/order_page.dart b/lib/presentation/pages/order/order_list/order_page.dart index 6ae011b..66bce4e 100644 --- a/lib/presentation/pages/order/order_list/order_page.dart +++ b/lib/presentation/pages/order/order_list/order_page.dart @@ -6,6 +6,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:shimmer/shimmer.dart'; import '../../../../application/order/order_loader/order_loader_bloc.dart'; +import '../../../../application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart'; import '../../../../common/extension/extension.dart'; import '../../../../common/theme/theme.dart'; import '../../../../injection.dart'; @@ -23,10 +24,19 @@ class OrderPage extends StatefulWidget implements AutoRouteWrapper { State createState() => _OrderPageState(); @override - Widget wrappedRoute(BuildContext context) => BlocProvider( - create: (_) => - getIt() - ..add(OrderLoaderEvent.fetched(isRefresh: true)), + Widget wrappedRoute(BuildContext context) => MultiBlocProvider( + providers: [ + BlocProvider( + create: (_) => + getIt() + ..add(OrderLoaderEvent.fetched(isRefresh: true)), + ), + BlocProvider( + create: (_) => + getIt() + ..add(const OutletListLoaderEvent.fetched()), + ), + ], child: this, ); } @@ -179,6 +189,14 @@ class _OrderPageState extends State with TickerProviderStateMixin { backgroundColor: AppColor.background, body: MultiBlocListener( listeners: [ + BlocListener( + listenWhen: (p, c) => p.outletId != c.outletId, + listener: (context, state) { + context.read().add( + OrderLoaderEvent.fetched(isRefresh: true), + ); + }, + ), BlocListener( listenWhen: (p, c) => p.status != c.status, listener: (context, state) { @@ -198,137 +216,151 @@ class _OrderPageState extends State with TickerProviderStateMixin { }, ), ], - child: BlocBuilder( - builder: (context, state) { - return NotificationListener( - onNotification: (notification) { - if (notification is ScrollEndNotification && - _scrollController.position.extentAfter == 0) { - context.read().add( - OrderLoaderEvent.fetched(), - ); - return true; - } + child: BlocBuilder( + builder: (context, outletListState) { + return BlocBuilder( + builder: (context, state) { + return NotificationListener( + onNotification: (notification) { + if (notification is ScrollEndNotification && + _scrollController.position.extentAfter == 0) { + context.read().add( + OrderLoaderEvent.fetched(), + ); + return true; + } - return true; - }, - child: CustomScrollView( - controller: _scrollController, - slivers: [ - // Custom App Bar with Hero Effect - SliverAppBar( - expandedHeight: 120, - floating: true, - pinned: true, - backgroundColor: AppColor.primary, - centerTitle: false, - flexibleSpace: CustomAppBar( - title: context.lang.orders, - isBack: false, - ), - ), - - // Pinned Filter Section - SliverPersistentHeader( - pinned: true, - delegate: FilterHeaderDelegate( - backgroundColor: AppColor.background, - padding: EdgeInsets.fromLTRB( - AppValue.padding, - 10, - AppValue.padding, - 10, - ), - startDate: state.dateFrom, - endDate: state.dateTo, - filterOptions: filterOptions, - selectedFilter: state.status, - onDateChanged: (startDate, endDate) { - if (startDate != null && endDate != null) { - log('Date changed'); - context.read().add( - OrderLoaderEvent.rangeDateChanged( - startDate, - endDate, - ), - ); - } - }, - onFilterChanged: (filter) { - final status = filter.toLowerCase(); - - context.read().add( - OrderLoaderEvent.statusChanged(status), - ); - }, - ), - ), - - // Content - SliverPadding( - padding: EdgeInsets.all(AppValue.padding), - sliver: SliverList( - delegate: SliverChildListDelegate([ - FadeTransition( - opacity: _fadeAnimation, - child: SlideTransition( - position: _slideAnimation, - child: Column( - children: [ - // Show filtered transaction count - if (state.status != 'all' && !state.isFetching) - Padding( - padding: const EdgeInsets.only(bottom: 16), - child: Row( - children: [ - Text( - '${state.orders.length} ${state.status.toLowerCase()} ${context.lang.orders}', - style: TextStyle( - color: AppColor.textSecondary, - fontSize: 14, - ), - ), - ], - ), - ), - - // Order List with Shimmer Loading - if (state.isFetching) - _buildShimmerList() - else if (state.orders.isEmpty) - EmptyWidget( - title: context.lang.order, - message: context.lang.no_order_with_status( - state.status.toLowerCase(), - ), - ) - else - ListView.builder( - itemCount: state.orders.length, - shrinkWrap: true, - physics: - const NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - itemBuilder: (context, index) { - return OrderTile( - onTap: () => context.router.push( - OrderDetailRoute( - order: state.orders[index], - ), - ), - order: state.orders[index], - ); - }, - ), - ], - ), - ), + return true; + }, + child: CustomScrollView( + controller: _scrollController, + slivers: [ + // Custom App Bar with Hero Effect + SliverAppBar( + expandedHeight: 120, + floating: true, + pinned: true, + backgroundColor: AppColor.primary, + centerTitle: false, + flexibleSpace: CustomAppBar( + title: context.lang.orders, + isBack: false, ), - ]), - ), + ), + + // Pinned Filter Section + SliverPersistentHeader( + pinned: true, + delegate: FilterHeaderDelegate( + backgroundColor: AppColor.background, + padding: EdgeInsets.fromLTRB( + AppValue.padding, + 10, + AppValue.padding, + 10, + ), + startDate: state.dateFrom, + endDate: state.dateTo, + filterOptions: filterOptions, + selectedFilter: state.status, + selectedOutletId: state.outletId, + outletListState: outletListState, + onDateChanged: (startDate, endDate) { + if (startDate != null && endDate != null) { + log('Date changed'); + context.read().add( + OrderLoaderEvent.rangeDateChanged( + startDate, + endDate, + ), + ); + } + }, + onFilterChanged: (filter) { + final status = filter.toLowerCase(); + context.read().add( + OrderLoaderEvent.statusChanged(status), + ); + }, + onOutletChanged: (outletId) { + context.read().add( + OrderLoaderEvent.outletChanged(outletId), + ); + }, + ), + ), + + // Content + SliverPadding( + padding: EdgeInsets.all(AppValue.padding), + sliver: SliverList( + delegate: SliverChildListDelegate([ + FadeTransition( + opacity: _fadeAnimation, + child: SlideTransition( + position: _slideAnimation, + child: Column( + children: [ + // Show filtered transaction count + if (state.status != 'all' && + !state.isFetching) + Padding( + padding: const EdgeInsets.only( + bottom: 16, + ), + child: Row( + children: [ + Text( + '${state.orders.length} ${state.status.toLowerCase()} ${context.lang.orders}', + style: TextStyle( + color: AppColor.textSecondary, + fontSize: 14, + ), + ), + ], + ), + ), + + // Order List with Shimmer Loading + if (state.isFetching) + _buildShimmerList() + else if (state.orders.isEmpty) + EmptyWidget( + title: context.lang.order, + message: + context.lang.no_order_with_status( + state.status.toLowerCase(), + ), + ) + else + ListView.builder( + itemCount: state.orders.length, + shrinkWrap: true, + physics: + const NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + itemBuilder: (context, index) { + return OrderTile( + onTap: () => context.router.push( + OrderDetailRoute( + order: state.orders[index], + ), + ), + order: state.orders[index], + ); + }, + ), + ], + ), + ), + ), + ]), + ), + ), + ], ), - ], - ), + ); + }, ); }, ), diff --git a/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart b/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart index 71aefc9..0afb502 100644 --- a/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart +++ b/lib/presentation/pages/order/order_list/widgets/filter_header_delegate.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; +import '../../../../../application/outlet/outlet_list_loader/outlet_list_loader_bloc.dart'; import '../../../../../common/extension/extension.dart'; +import '../../../../../common/theme/theme.dart'; +import '../../../../../domain/outlet/outlet.dart'; import '../../../../components/field/date_range_picker_field.dart'; import 'status_tile.dart'; @@ -11,8 +14,11 @@ class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { final DateTime? endDate; final List filterOptions; final String selectedFilter; + final String? selectedOutletId; + final OutletListLoaderState outletListState; final Function(DateTime?, DateTime?) onDateChanged; final Function(String) onFilterChanged; + final Function(String?) onOutletChanged; FilterHeaderDelegate({ required this.backgroundColor, @@ -21,15 +27,18 @@ class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { required this.endDate, required this.filterOptions, required this.selectedFilter, + required this.selectedOutletId, + required this.outletListState, required this.onDateChanged, required this.onFilterChanged, + required this.onOutletChanged, }); @override - double get minExtent => 130; + double get minExtent => 190; @override - double get maxExtent => 130; + double get maxExtent => 190; @override Widget build( @@ -37,51 +46,55 @@ class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { double shrinkOffset, bool overlapsContent, ) { + final selectedOutlet = outletListState.outlets + .where((o) => o.id == selectedOutletId) + .firstOrNull; + return Container( color: backgroundColor, padding: padding, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: const EdgeInsets.only(bottom: 8.0), - child: DateRangePickerField( - maxDate: DateTime.now(), - startDate: startDate, - endDate: endDate, - onChanged: (start, end) { - onDateChanged(start, end); - }, - ), + // Date range picker + DateRangePickerField( + maxDate: DateTime.now(), + startDate: startDate, + endDate: endDate, + onChanged: (start, end) => onDateChanged(start, end), ), - Expanded( - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: filterOptions.asMap().entries.map((entry) { - final index = entry.key; - final option = entry.value; - - return Padding( - padding: EdgeInsets.only( - right: index < filterOptions.length - 1 ? 8 : 0, - ), - child: OrderStatusTile( - label: option == "All" - ? context.lang.all - : option == "Completed" - ? context.lang.completed - : context.lang.pending, - isSelected: option == selectedFilter, - onSelected: (isSelected) { - if (isSelected) { - onFilterChanged(option); - } - }, - ), - ); - }).toList(), - ), + const SizedBox(height: 8), + // Outlet selector + status chips + _OutletSelectorField( + selectedOutlet: selectedOutlet, + isLoading: outletListState.isFetching, + onTap: () => _showOutletSheet(context), + ), + const SizedBox(height: 8), + // Status chips + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: filterOptions.asMap().entries.map((entry) { + final index = entry.key; + final option = entry.value; + return Padding( + padding: EdgeInsets.only( + right: index < filterOptions.length - 1 ? 8 : 0, + ), + child: OrderStatusTile( + label: option == 'All' + ? context.lang.all + : option == 'Completed' + ? context.lang.completed + : context.lang.pending, + isSelected: option.toLowerCase() == selectedFilter, + onSelected: (isSelected) { + if (isSelected) onFilterChanged(option); + }, + ), + ); + }).toList(), ), ), ], @@ -89,12 +102,258 @@ class FilterHeaderDelegate extends SliverPersistentHeaderDelegate { ); } + void _showOutletSheet(BuildContext context) { + showModalBottomSheet( + context: context, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + ), + builder: (_) => _OutletBottomSheet( + outlets: outletListState.outlets, + selectedOutletId: selectedOutletId, + onSelected: (outletId) { + Navigator.pop(context); + onOutletChanged(outletId); + }, + ), + ); + } + @override bool shouldRebuild(covariant FilterHeaderDelegate oldDelegate) { return oldDelegate.startDate != startDate || oldDelegate.endDate != endDate || oldDelegate.selectedFilter != selectedFilter || + oldDelegate.selectedOutletId != selectedOutletId || + oldDelegate.outletListState.outlets.length != + outletListState.outlets.length || + oldDelegate.outletListState.isFetching != outletListState.isFetching || oldDelegate.filterOptions.length != filterOptions.length || oldDelegate.backgroundColor != backgroundColor; } } + +// Field outlet โ€” ikut style DateRangePickerField +class _OutletSelectorField extends StatefulWidget { + final Outlet? selectedOutlet; + final bool isLoading; + final VoidCallback onTap; + + const _OutletSelectorField({ + required this.selectedOutlet, + required this.isLoading, + required this.onTap, + }); + + @override + State<_OutletSelectorField> createState() => _OutletSelectorFieldState(); +} + +class _OutletSelectorFieldState extends State<_OutletSelectorField> { + bool _isPressed = false; + + @override + Widget build(BuildContext context) { + final hasValue = widget.selectedOutlet != null; + final label = widget.selectedOutlet?.name ?? 'Semua Outlet'; + + return GestureDetector( + onTap: widget.isLoading ? null : widget.onTap, + onTapDown: (_) => setState(() => _isPressed = true), + onTapUp: (_) => setState(() => _isPressed = false), + onTapCancel: () => setState(() => _isPressed = false), + child: AnimatedContainer( + duration: const Duration(milliseconds: 150), + height: 52, + padding: const EdgeInsets.symmetric(horizontal: 16), + decoration: BoxDecoration( + color: _isPressed ? AppColor.backgroundLight : AppColor.white, + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: _isPressed ? AppColor.primary : AppColor.border, + width: _isPressed ? 2 : 1, + ), + boxShadow: _isPressed + ? [ + BoxShadow( + color: AppColor.primary.withOpacity(0.1), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ] + : null, + ), + child: Row( + children: [ + Expanded( + child: Text( + label, + style: TextStyle( + fontSize: 15, + fontWeight: hasValue ? FontWeight.w500 : FontWeight.w400, + color: hasValue + ? AppColor.textPrimary + : AppColor.textSecondary, + ), + overflow: TextOverflow.ellipsis, + ), + ), + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: AppColor.primary.withOpacity(0.1), + borderRadius: BorderRadius.circular(8), + ), + child: widget.isLoading + ? const SizedBox( + width: 20, + height: 20, + child: CircularProgressIndicator( + strokeWidth: 2, + color: AppColor.primary, + ), + ) + : const Icon( + Icons.store_rounded, + size: 20, + color: AppColor.primary, + ), + ), + ], + ), + ), + ); + } +} + +// Bottom sheet pilih outlet +class _OutletBottomSheet extends StatelessWidget { + final List outlets; + final String? selectedOutletId; + final Function(String?) onSelected; + + const _OutletBottomSheet({ + required this.outlets, + required this.selectedOutletId, + required this.onSelected, + }); + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Padding( + padding: const EdgeInsets.fromLTRB(20, 16, 20, 20), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: Colors.grey.shade300, + borderRadius: BorderRadius.circular(2), + ), + ), + ), + const SizedBox(height: 16), + Text( + 'Pilih Outlet', + style: AppStyle.lg.copyWith(fontWeight: FontWeight.w700), + ), + const SizedBox(height: 12), + _OutletItem( + label: 'Semua Outlet', + icon: Icons.store_rounded, + isSelected: selectedOutletId == null, + onTap: () => onSelected(null), + ), + const Divider(height: 1), + ...outlets.map( + (outlet) => Column( + children: [ + _OutletItem( + label: outlet.name, + icon: Icons.storefront_rounded, + isSelected: selectedOutletId == outlet.id, + isActive: outlet.isActive, + onTap: () => onSelected(outlet.id), + ), + if (outlet != outlets.last) const Divider(height: 1), + ], + ), + ), + ], + ), + ), + ); + } +} + +class _OutletItem extends StatelessWidget { + final String label; + final IconData icon; + final bool isSelected; + final bool? isActive; + final VoidCallback onTap; + + const _OutletItem({ + required this.label, + required this.icon, + required this.isSelected, + required this.onTap, + this.isActive, + }); + + @override + Widget build(BuildContext context) { + return ListTile( + onTap: onTap, + contentPadding: const EdgeInsets.symmetric(horizontal: 4, vertical: 2), + leading: Container( + width: 36, + height: 36, + decoration: BoxDecoration( + color: isSelected + ? AppColor.primary.withOpacity(0.1) + : AppColor.background, + borderRadius: BorderRadius.circular(10), + ), + child: Icon( + icon, + size: 18, + color: isSelected ? AppColor.primary : AppColor.textSecondary, + ), + ), + title: Text( + label, + style: AppStyle.md.copyWith( + fontWeight: isSelected ? FontWeight.w700 : FontWeight.w500, + color: isSelected ? AppColor.primary : AppColor.textPrimary, + ), + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (isActive != null) + Container( + width: 8, + height: 8, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: isActive! ? AppColor.success : AppColor.error, + ), + ), + if (isActive != null) const SizedBox(width: 8), + if (isSelected) + const Icon( + Icons.check_rounded, + color: AppColor.primary, + size: 20, + ), + ], + ), + ); + } +} From 96526c1972e2cd45f7e5bf82befcfd30dfd806a9 Mon Sep 17 00:00:00 2001 From: Efril Date: Thu, 14 May 2026 15:05:04 +0700 Subject: [PATCH 108/108] update --- .../dashboard_analytic_loader_state.dart | 2 +- .../order/order_loader/order_loader_state.dart | 2 +- lib/presentation/pages/home/home_page.dart | 2 ++ lib/presentation/pages/report/report_page.dart | 16 +++++++++++++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart index b0a3917..6507cf8 100644 --- a/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart +++ b/lib/application/analytic/dashboard_analytic_loader/dashboard_analytic_loader_state.dart @@ -14,7 +14,7 @@ class DashboardAnalyticLoaderState with _$DashboardAnalyticLoaderState { DashboardAnalyticLoaderState( dashboardAnalytic: DashboardAnalytic.empty(), failureOptionDashboardAnalytic: none(), - dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateFrom: DateTime.now(), dateTo: DateTime.now(), ); } diff --git a/lib/application/order/order_loader/order_loader_state.dart b/lib/application/order/order_loader/order_loader_state.dart index 2fdbc49..fdce154 100644 --- a/lib/application/order/order_loader/order_loader_state.dart +++ b/lib/application/order/order_loader/order_loader_state.dart @@ -18,7 +18,7 @@ class OrderLoaderState with _$OrderLoaderState { factory OrderLoaderState.initial() => OrderLoaderState( orders: [], failureOptionOrder: none(), - dateFrom: DateTime.now().subtract(const Duration(days: 30)), + dateFrom: DateTime.now(), dateTo: DateTime.now(), status: 'all', ); diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 12f5a94..a811baf 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -91,6 +91,8 @@ class _HomePageState extends State with TickerProviderStateMixin { child: Scaffold( backgroundColor: AppColor.background, body: RefreshIndicator( + backgroundColor: AppColor.white, + color: AppColor.primary, onRefresh: () { _refetchDashboard(context); return Future.value(); diff --git a/lib/presentation/pages/report/report_page.dart b/lib/presentation/pages/report/report_page.dart index d790f86..1234863 100644 --- a/lib/presentation/pages/report/report_page.dart +++ b/lib/presentation/pages/report/report_page.dart @@ -107,7 +107,20 @@ class _ReportPageState extends State with TickerProviderStateMixin { DashboardAnalyticLoaderState >( builder: (context, state) { - return CustomScrollView( + return RefreshIndicator( + color: AppColor.primary, + onRefresh: () async { + context.read().add( + DashboardAnalyticLoaderEvent.fetched(), + ); + // tunggu sampai fetching selesai + await context + .read() + .stream + .firstWhere((s) => !s.isFetching); + }, + child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverAppBar( expandedHeight: 120, @@ -197,6 +210,7 @@ class _ReportPageState extends State with TickerProviderStateMixin { ), ), ], + ), ); }, ),

    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 A!~g&Q literal 0 HcmV?d00001 diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 6266644..a725045 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,5 +1,6 @@ import Flutter import UIKit +import UserNotifications @main @objc class AppDelegate: FlutterAppDelegate { @@ -7,7 +8,28 @@ import UIKit _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { + // Set notification delegate so notifications show in foreground & background + UNUserNotificationCenter.current().delegate = self + GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } + + // Called when a notification is delivered while app is in foreground + override func userNotificationCenter( + _ center: UNUserNotificationCenter, + willPresent notification: UNNotification, + withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void + ) { + completionHandler([.banner, .badge, .sound]) + } + + // Called when user taps a notification (foreground or background) + override func userNotificationCenter( + _ center: UNUserNotificationCenter, + didReceive response: UNNotificationResponse, + withCompletionHandler completionHandler: @escaping () -> Void + ) { + completionHandler() + } } diff --git a/lib/common/constant/app_constant.dart b/lib/common/constant/app_constant.dart index e421be3..26db70f 100644 --- a/lib/common/constant/app_constant.dart +++ b/lib/common/constant/app_constant.dart @@ -1,3 +1,3 @@ class AppConstant { - static const String appName = "Apskel Owner"; + static const String appName = "Enaklo Owner"; } diff --git a/lib/common/theme/app_color.dart b/lib/common/theme/app_color.dart index ab8f9b2..5485daa 100644 --- a/lib/common/theme/app_color.dart +++ b/lib/common/theme/app_color.dart @@ -2,9 +2,9 @@ part of 'theme.dart'; class AppColor { // Primary Colors - static const Color primary = Color(0xFF36175e); - static const Color primaryLight = Color(0xFF5a2d85); - static const Color primaryDark = Color(0xFF1e0d35); + static const Color primary = Color.fromARGB(255, 196, 2, 2); // #d90000 + static const Color primaryLight = Color(0xFFFF4D4D); // merah terang + static const Color primaryDark = Color(0xFF990000); // merah gelap // Secondary Colors static const Color secondary = Color(0xFF4CAF50); @@ -41,10 +41,9 @@ class AppColor { // Gradient Colors static const List primaryGradient = [ - Color(0xFF36175e), - Color(0xFF5a2d85), + Color(0xFFD90000), // primary + Color(0xFF990000), // dark red ]; - static const List successGradient = [ Color(0xFF4CAF50), Color(0xFF81C784), diff --git a/lib/common/utils/fcm_service.dart b/lib/common/utils/fcm_service.dart index 2a1a17e..de2dff5 100644 --- a/lib/common/utils/fcm_service.dart +++ b/lib/common/utils/fcm_service.dart @@ -1,15 +1,54 @@ import 'dart:convert'; import 'dart:io'; +import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:injectable/injectable.dart'; /// Background message handler โ€” must be a top-level function. +/// Firebase must be initialized here for background isolate. @pragma('vm:entry-point') Future firebaseMessagingBackgroundHandler(RemoteMessage message) async { + await Firebase.initializeApp(); debugPrint('[FCM] Background message: ${message.messageId}'); + // Show local notification for data-only messages in background + await _showBackgroundNotification(message); +} + +/// Standalone local notifications plugin for background isolate use. +final _backgroundLocalNotifications = FlutterLocalNotificationsPlugin(); + +Future _showBackgroundNotification(RemoteMessage message) async { + const androidInit = AndroidInitializationSettings('@drawable/ic_notification'); + await _backgroundLocalNotifications.initialize( + const InitializationSettings(android: androidInit), + ); + + final notification = message.notification; + // Only show manually for data-only messages (FCM auto-shows notification messages) + if (notification != null) return; + + final title = message.data['title'] as String?; + final body = message.data['body'] as String?; + if (title == null && body == null) return; + + await _backgroundLocalNotifications.show( + message.hashCode, + title, + body, + const NotificationDetails( + android: AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.high, + priority: Priority.high, + icon: '@drawable/ic_notification', + ), + ), + payload: jsonEncode(message.data), + ); } @lazySingleton @@ -23,7 +62,10 @@ class FcmService { 'high_importance_channel', 'High Importance Notifications', description: 'This channel is used for important notifications.', - importance: Importance.high, + importance: Importance.max, // max agar banner (heads-up) muncul + playSound: true, + enableVibration: true, + enableLights: true, ); /// Call this once during app startup (after Firebase.initializeApp). @@ -124,11 +166,19 @@ class FcmService { _androidChannel.id, _androidChannel.name, channelDescription: _androidChannel.description, - icon: '@mipmap/launcher_icon', - importance: Importance.high, + icon: '@drawable/ic_notification', + importance: Importance.max, priority: Priority.high, + playSound: true, + enableVibration: true, + // Heads-up notification (banner) + fullScreenIntent: false, + ), + iOS: const DarwinNotificationDetails( + presentAlert: true, + presentBadge: true, + presentSound: true, ), - iOS: const DarwinNotificationDetails(), ), payload: jsonEncode(message.data), ); diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 8295f6b..2a05816 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -62,36 +62,36 @@ class HomeFeature extends StatelessWidget { ), ], ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - HomeFeatureTile( - title: context.lang.form, - color: const Color(0xFFE91E63), - icon: LineIcons.fileAlt, - onTap: () => context.router.push(DailyTasksFormRoute()), - ), - HomeFeatureTile( - title: context.lang.schedule, - color: const Color(0xFF9C27B0), - icon: LineIcons.calendar, - onTap: () => context.router.push(ScheduleRoute()), - ), - HomeFeatureTile( - title: context.lang.inventory, - color: const Color(0xFF00BCD4), - icon: LineIcons.archive, - onTap: () => context.router.push(InventoryRoute()), - ), - HomeFeatureTile( - title: context.lang.customer, - color: const Color(0xFFFF5722), - icon: LineIcons.userPlus, - onTap: () => context.router.push(CustomerRoute()), - ), - ], - ), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceAround, + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // HomeFeatureTile( + // title: context.lang.form, + // color: const Color(0xFFE91E63), + // icon: LineIcons.fileAlt, + // onTap: () => context.router.push(DailyTasksFormRoute()), + // ), + // HomeFeatureTile( + // title: context.lang.schedule, + // color: const Color(0xFF9C27B0), + // icon: LineIcons.calendar, + // onTap: () => context.router.push(ScheduleRoute()), + // ), + // HomeFeatureTile( + // title: context.lang.inventory, + // color: const Color(0xFF00BCD4), + // icon: LineIcons.archive, + // onTap: () => context.router.push(InventoryRoute()), + // ), + // HomeFeatureTile( + // title: context.lang.customer, + // color: const Color(0xFFFF5722), + // icon: LineIcons.userPlus, + // onTap: () => context.router.push(CustomerRoute()), + // ), + // ], + // ), ], ), ); diff --git a/lib/presentation/pages/profile/profile_page.dart b/lib/presentation/pages/profile/profile_page.dart index 48cbc92..1607221 100644 --- a/lib/presentation/pages/profile/profile_page.dart +++ b/lib/presentation/pages/profile/profile_page.dart @@ -1,5 +1,7 @@ import 'package:auto_route/auto_route.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:line_icons/line_icons.dart'; import 'package:loader_overlay/loader_overlay.dart'; @@ -8,6 +10,7 @@ import '../../../application/auth/auth_bloc.dart'; import '../../../application/auth/logout_form/logout_form_bloc.dart'; import '../../../common/extension/extension.dart'; import '../../../common/theme/theme.dart'; +import '../../../common/utils/fcm_service.dart'; import '../../../injection.dart'; import '../../components/button/button.dart'; import '../../components/spacer/spacer.dart'; @@ -61,7 +64,7 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { backgroundColor: AppColor.primary, elevation: 0, pinned: true, - expandedHeight: 264.0, + expandedHeight: 270.0, flexibleSpace: LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { @@ -70,7 +73,7 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { final double collapsedHeight = MediaQuery.of(context).padding.top + kToolbarHeight; - final double expandedHeight = 264.0; + final double expandedHeight = 270.0; final double shrinkRatio = ((expandedHeight - top) / (expandedHeight - collapsedHeight)) @@ -125,6 +128,9 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { const SpaceHeight(12), ProfileDangerZone(), const SpaceHeight(30), + // Debug only: FCM Token + if (kDebugMode) const _FcmTokenDebugWidget(), + const SpaceHeight(30), ], ), ), @@ -140,3 +146,84 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper { Widget wrappedRoute(BuildContext context) => BlocProvider(create: (_) => getIt(), child: this); } + +class _FcmTokenDebugWidget extends StatefulWidget { + const _FcmTokenDebugWidget(); + + @override + State<_FcmTokenDebugWidget> createState() => _FcmTokenDebugWidgetState(); +} + +class _FcmTokenDebugWidgetState extends State<_FcmTokenDebugWidget> { + String? _token; + + @override + void initState() { + super.initState(); + _loadToken(); + } + + Future _loadToken() async { + final token = await getIt().getToken(); + if (mounted) setState(() => _token = token); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Container( + width: double.infinity, + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: AppColor.black.withOpacity(0.05), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: AppColor.black.withOpacity(0.1)), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(Icons.bug_report, size: 14), + const SizedBox(width: 4), + Text( + 'FCM Token (debug only)', + style: AppStyle.sm.copyWith(fontWeight: FontWeight.w700), + ), + const Spacer(), + GestureDetector( + onTap: () async { + if (_token == null) return; + await Clipboard.setData(ClipboardData(text: _token!)); + debugPrint('[FCM] Token copied: $_token'); + if (context.mounted) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('FCM token copied!'), + duration: Duration(seconds: 2), + ), + ); + } + }, + child: Text( + 'Copy', + style: AppStyle.sm.copyWith( + color: AppColor.primary, + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + const SizedBox(height: 6), + Text( + _token ?? 'Loading...', + style: AppStyle.xs.copyWith(color: AppColor.black.withOpacity(0.6)), + ), + ], + ), + ), + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index ad8712e..a114888 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -70,8 +70,8 @@ flutter: uses-material-design: true assets: - assets/images/ - - assets/icons/ - - assets/json/ + # - assets/icons/ + # - assets/json/ fonts: - family: Quicksand From a4a12c67630ac0a96c0fbba0e621ab5a7cfce8e6 Mon Sep 17 00:00:00 2001 From: Efril Date: Tue, 12 May 2026 02:00:38 +0700 Subject: [PATCH 096/108] add device info at login --- .../auth/login_form/login_form_bloc.dart | 24 +++++- lib/common/utils/device_info_service.dart | 82 +++++++++++++++++++ .../auth/repositories/i_auth_repository.dart | 7 ++ .../datasources/remote_data_provider.dart | 19 ++++- .../auth/repositories/auth_repository.dart | 14 ++++ lib/injection.config.dart | 13 ++- .../components/assets/assets.gen.dart | 6 +- 7 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 lib/common/utils/device_info_service.dart diff --git a/lib/application/auth/login_form/login_form_bloc.dart b/lib/application/auth/login_form/login_form_bloc.dart index abded69..e7e0b25 100644 --- a/lib/application/auth/login_form/login_form_bloc.dart +++ b/lib/application/auth/login_form/login_form_bloc.dart @@ -4,6 +4,8 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:injectable/injectable.dart'; +import '../../../common/utils/device_info_service.dart'; +import '../../../common/utils/fcm_service.dart'; import '../../../domain/auth/auth.dart'; part 'login_form_event.dart'; @@ -13,7 +15,11 @@ part 'login_form_bloc.freezed.dart'; @injectable class LoginFormBloc extends Bloc { final IAuthRepository _repository; - LoginFormBloc(this._repository) : super(LoginFormState.initial()) { + final DeviceInfoService _deviceInfoService; + final FcmService _fcmService; + + LoginFormBloc(this._repository, this._deviceInfoService, this._fcmService) + : super(LoginFormState.initial()) { on(_onLoginFormEvent); } @@ -36,9 +42,25 @@ class LoginFormBloc extends Bloc { final passwordValid = state.password.isNotEmpty; if (emailValid && passwordValid) { + // Ambil device info dan FCM token secara paralel + final results = await Future.wait([ + _deviceInfoService.getDeviceInfo(), + _fcmService.getToken(), + ]); + + final deviceInfo = results[0] as DeviceInfo; + final fcmToken = results[1] as String?; + failureOrAuth = await _repository.login( email: state.email, password: state.password, + deviceId: deviceInfo.deviceId, + deviceName: deviceInfo.deviceName, + deviceType: deviceInfo.deviceType, + platform: deviceInfo.platform, + osVersion: deviceInfo.osVersion, + appVersion: deviceInfo.appVersion, + fcmToken: fcmToken, ); emit( state.copyWith( diff --git a/lib/common/utils/device_info_service.dart b/lib/common/utils/device_info_service.dart new file mode 100644 index 0000000..0791a03 --- /dev/null +++ b/lib/common/utils/device_info_service.dart @@ -0,0 +1,82 @@ +import 'dart:io'; + +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:injectable/injectable.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +class DeviceInfo { + final String deviceId; + final String deviceName; + final String deviceType; + final String platform; + final String osVersion; + final String appVersion; + + const DeviceInfo({ + required this.deviceId, + required this.deviceName, + required this.deviceType, + required this.platform, + required this.osVersion, + required this.appVersion, + }); + + Map toJson() => { + 'device_id': deviceId, + 'device_name': deviceName, + 'device_type': deviceType, + 'platform': platform, + 'os_version': osVersion, + 'app_version': appVersion, + }; +} + +@lazySingleton +class DeviceInfoService { + final DeviceInfoPlugin _deviceInfo = DeviceInfoPlugin(); + + Future getDeviceInfo() async { + final packageInfo = await PackageInfo.fromPlatform(); + final appVersion = packageInfo.version; + + if (Platform.isAndroid) { + final info = await _deviceInfo.androidInfo; + return DeviceInfo( + deviceId: info.id, + deviceName: '${info.manufacturer} ${info.model}', + deviceType: _resolveDeviceType(info.model), + platform: 'android', + osVersion: 'Android ${info.version.release}', + appVersion: appVersion, + ); + } else if (Platform.isIOS) { + final info = await _deviceInfo.iosInfo; + return DeviceInfo( + deviceId: info.identifierForVendor ?? '', + deviceName: info.name, + deviceType: _resolveDeviceType(info.model), + platform: 'ios', + osVersion: '${info.systemName} ${info.systemVersion}', + appVersion: appVersion, + ); + } + + // Fallback (web/desktop โ€” tidak dipakai tapi aman) + return DeviceInfo( + deviceId: 'unknown', + deviceName: 'unknown', + deviceType: 'desktop', + platform: 'web', + osVersion: 'unknown', + appVersion: appVersion, + ); + } + + /// Tentukan device_type berdasarkan model name. + /// Nilai valid: 'mobile' | 'tablet' | 'desktop' + String _resolveDeviceType(String model) { + final lower = model.toLowerCase(); + if (lower.contains('ipad') || lower.contains('tablet')) return 'tablet'; + return 'mobile'; + } +} diff --git a/lib/domain/auth/repositories/i_auth_repository.dart b/lib/domain/auth/repositories/i_auth_repository.dart index 4bb8594..5cfce76 100644 --- a/lib/domain/auth/repositories/i_auth_repository.dart +++ b/lib/domain/auth/repositories/i_auth_repository.dart @@ -4,6 +4,13 @@ abstract class IAuthRepository { Future> login({ required String email, required String password, + required String deviceId, + required String deviceName, + required String deviceType, + required String platform, + required String osVersion, + required String appVersion, + String? fcmToken, }); Future hasToken(); Future> currentUser(); diff --git a/lib/infrastructure/auth/datasources/remote_data_provider.dart b/lib/infrastructure/auth/datasources/remote_data_provider.dart index d81bd78..70c0cc1 100644 --- a/lib/infrastructure/auth/datasources/remote_data_provider.dart +++ b/lib/infrastructure/auth/datasources/remote_data_provider.dart @@ -21,11 +21,28 @@ class AuthRemoteDataProvider { Future> login({ required String email, required String password, + required String deviceId, + required String deviceName, + required String deviceType, + required String platform, + required String osVersion, + required String appVersion, + String? fcmToken, }) async { try { final response = await _apiClient.post( ApiPath.login, - data: {'email': email, 'password': password}, + data: { + 'email': email, + 'password': password, + 'device_id': deviceId, + 'device_name': deviceName, + 'device_type': deviceType, + 'platform': platform, + 'os_version': osVersion, + 'app_version': appVersion, + if (fcmToken != null) 'fcm_token': fcmToken, + }, ); if (response.data['code'] == 401) { diff --git a/lib/infrastructure/auth/repositories/auth_repository.dart b/lib/infrastructure/auth/repositories/auth_repository.dart index 3d0f8df..7e1e12d 100644 --- a/lib/infrastructure/auth/repositories/auth_repository.dart +++ b/lib/infrastructure/auth/repositories/auth_repository.dart @@ -21,11 +21,25 @@ class AuthRepository implements IAuthRepository { Future> login({ required String email, required String password, + required String deviceId, + required String deviceName, + required String deviceType, + required String platform, + required String osVersion, + required String appVersion, + String? fcmToken, }) async { try { final result = await _remoteDataProvider.login( email: email, password: password, + deviceId: deviceId, + deviceName: deviceName, + deviceType: deviceType, + platform: platform, + osVersion: osVersion, + appVersion: appVersion, + fcmToken: fcmToken, ); if (result.hasError) { diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 40b1d03..4c8628d 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -59,6 +59,8 @@ import 'package:apskel_owner_flutter/common/di/di_shared_preferences.dart' as _i402; import 'package:apskel_owner_flutter/common/network/network_client.dart' as _i543; +import 'package:apskel_owner_flutter/common/utils/device_info_service.dart' + as _i902; import 'package:apskel_owner_flutter/common/utils/fcm_service.dart' as _i179; import 'package:apskel_owner_flutter/domain/analytic/repositories/i_analytic_repository.dart' as _i477; @@ -146,6 +148,7 @@ extension GetItInjectableX on _i174.GetIt { preResolve: true, ); gh.lazySingleton<_i179.FcmService>(() => _i179.FcmService()); + gh.lazySingleton<_i902.DeviceInfoService>(() => _i902.DeviceInfoService()); gh.lazySingleton<_i543.NetworkClient>( () => _i543.NetworkClient(gh<_i895.Connectivity>()), ); @@ -261,9 +264,6 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i945.AuthBloc>( () => _i945.AuthBloc(gh<_i49.IAuthRepository>()), ); - gh.factory<_i775.LoginFormBloc>( - () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), - ); gh.factory<_i574.LogoutFormBloc>( () => _i574.LogoutFormBloc(gh<_i49.IAuthRepository>()), ); @@ -276,6 +276,13 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i147.UserEditFormBloc>( () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), ); + gh.factory<_i775.LoginFormBloc>( + () => _i775.LoginFormBloc( + gh<_i49.IAuthRepository>(), + gh<_i902.DeviceInfoService>(), + gh<_i179.FcmService>(), + ), + ); gh.factory<_i346.InventoryReportBloc>( () => _i346.InventoryReportBloc( gh<_i477.IAnalyticRepository>(), diff --git a/lib/presentation/components/assets/assets.gen.dart b/lib/presentation/components/assets/assets.gen.dart index c528e32..d2a149c 100644 --- a/lib/presentation/components/assets/assets.gen.dart +++ b/lib/presentation/components/assets/assets.gen.dart @@ -14,11 +14,15 @@ import 'package:flutter/widgets.dart'; class $AssetsImagesGen { const $AssetsImagesGen(); + /// File path: assets/images/ic_notification.png + AssetGenImage get icNotification => + const AssetGenImage('assets/images/ic_notification.png'); + /// File path: assets/images/logo.png AssetGenImage get logo => const AssetGenImage('assets/images/logo.png'); /// List of all assets - List get values => [logo]; + List get values => [icNotification, logo]; } class Assets { From 411d1274bd7986312626091ce393b51fc8a465ef Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 May 2026 02:01:15 +0700 Subject: [PATCH 097/108] add files ios --- ios/Runner.xcodeproj/project.pbxproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8f8b914..91ef9ed 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 227E95452FB25185003AAE6C /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 227E95442FB25185003AAE6C /* GoogleService-Info.plist */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; @@ -42,6 +43,7 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 227E95442FB25185003AAE6C /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; @@ -109,6 +111,7 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + 227E95442FB25185003AAE6C /* GoogleService-Info.plist */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, @@ -214,6 +217,7 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 227E95452FB25185003AAE6C /* GoogleService-Info.plist in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); From 86d581f5ea30b76455ab11526264d5b2b1345ec3 Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 May 2026 14:48:53 +0700 Subject: [PATCH 098/108] update remove animation --- lib/l10n/app_en.arb | 4 +- lib/l10n/app_id.arb | 4 +- lib/l10n/app_localizations.dart | 6 + lib/l10n/app_localizations_en.dart | 3 + lib/l10n/app_localizations_id.dart | 3 + .../components/appbar/appbar.dart | 232 ++++----- .../pages/finance/finance_page.dart | 2 +- lib/presentation/pages/home/home_page.dart | 6 +- .../pages/home/widgets/feature.dart | 2 +- .../pages/home/widgets/header.dart | 453 ++++++------------ .../pages/home/widgets/omset_balance.dart | 163 +++++++ pubspec.lock | 38 +- 12 files changed, 439 insertions(+), 477 deletions(-) create mode 100644 lib/presentation/pages/home/widgets/omset_balance.dart diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index ccf296d..44777f0 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -429,5 +429,7 @@ "package_name": "Package Name", "@package_name": {}, "device": "Device", - "@device": {} + "@device": {}, + "profit_loss": "Laba Rugi", + "@profit_loss": {} } diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 601dd7d..f07c475 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -429,5 +429,7 @@ "package_name": "Nama Paket", "@package_name": {}, "device": "Perangkat", - "@device": {} + "@device": {}, + "profit_loss": "Laba Rugi", + "@profit_loss": {} } diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 2dd685d..91ab6c4 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1300,6 +1300,12 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Device'** String get device; + + /// No description provided for @profit_loss. + /// + /// In en, this message translates to: + /// **'Laba Rugi'** + String get profit_loss; } class _AppLocalizationsDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 2883d3f..4f371d7 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -618,4 +618,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String get device => 'Device'; + + @override + String get profit_loss => 'Laba Rugi'; } diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index bf1b641..2c66dcf 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -618,4 +618,7 @@ class AppLocalizationsId extends AppLocalizations { @override String get device => 'Perangkat'; + + @override + String get profit_loss => 'Laba Rugi'; } diff --git a/lib/presentation/components/appbar/appbar.dart b/lib/presentation/components/appbar/appbar.dart index 51713e2..afe8f0d 100644 --- a/lib/presentation/components/appbar/appbar.dart +++ b/lib/presentation/components/appbar/appbar.dart @@ -1,76 +1,21 @@ import 'package:flutter/material.dart'; -import 'dart:math' as math; -import '../../../../common/theme/theme.dart'; import '../../../common/painter/wave_painter.dart'; +import '../../../common/theme/theme.dart'; -class CustomAppBar extends StatefulWidget { +class CustomAppBar extends StatelessWidget { final String title; final bool isBack; const CustomAppBar({super.key, required this.title, this.isBack = true}); - @override - State createState() => _CustomAppBarState(); -} - -class _CustomAppBarState extends State - with TickerProviderStateMixin { - late AnimationController _particleController; - late AnimationController _waveController; - late AnimationController _breathController; - - late Animation _particleAnimation; - late Animation _waveAnimation; - late Animation _breathAnimation; - - @override - void initState() { - super.initState(); - - _particleController = AnimationController( - duration: const Duration(seconds: 8), - vsync: this, - )..repeat(); - - _waveController = AnimationController( - duration: const Duration(seconds: 6), - vsync: this, - )..repeat(); - - _breathController = AnimationController( - duration: const Duration(seconds: 4), - vsync: this, - )..repeat(reverse: true); - - _particleAnimation = Tween( - begin: 0.0, - end: 2 * math.pi, - ).animate(_particleController); - - _waveAnimation = Tween( - begin: 0.0, - end: 2 * math.pi, - ).animate(_waveController); - - _breathAnimation = Tween(begin: 0.8, end: 1.2).animate( - CurvedAnimation(parent: _breathController, curve: Curves.easeInOut), - ); - } - - @override - void dispose() { - _particleController.dispose(); - _waveController.dispose(); - _breathController.dispose(); - super.dispose(); - } - @override Widget build(BuildContext context) { + final size = MediaQuery.of(context).size; + return FlexibleSpaceBar( - titlePadding: EdgeInsets.only(left: widget.isBack ? 50 : 20, bottom: 16), + titlePadding: EdgeInsets.only(left: isBack ? 50 : 20, bottom: 16), title: Text( - widget.title, + title, style: AppStyle.xl.copyWith( color: AppColor.textWhite, fontSize: 18, @@ -85,105 +30,88 @@ class _CustomAppBarState extends State end: Alignment.bottomCenter, ), ), - child: AnimatedBuilder( - animation: Listenable.merge([ - _particleController, - _waveController, - _breathController, - ]), - builder: (context, child) { - return Stack( - children: [ - // Animated background elements - _buildAnimatedBackground(context), - ], - ); - }, - ), - ), - ); - } - - Widget _buildAnimatedBackground(BuildContext context) { - final size = MediaQuery.of(context).size; - - return Stack( - children: [ - // Floating particles with orbital motion - ...List.generate(8, (index) { - final double radius = 40 + (index * 15); - final double angle = _particleAnimation.value + (index * 0.8); - final double centerX = size.width * 0.7; - final double centerY = 60; - - return Positioned( - left: centerX + math.cos(angle) * radius - 3, - top: centerY + math.sin(angle) * (radius * 0.5) - 3, - child: Transform.scale( - scale: _breathAnimation.value * 0.5, + child: Stack( + children: [ + // Static decorative circles (right side) + Positioned( + top: -20, + right: -30, child: Container( - width: 4 + (index % 3), - height: 4 + (index % 3), + width: 120, + height: 120, decoration: BoxDecoration( shape: BoxShape.circle, - color: AppColor.textWhite.withOpacity(0.6), - boxShadow: [ - BoxShadow( - color: AppColor.textWhite.withOpacity(0.3), - blurRadius: 6, - spreadRadius: 1, - ), + color: AppColor.textWhite.withOpacity(0.08), + ), + ), + ), + Positioned( + top: 30, + right: 20, + child: Container( + width: 60, + height: 60, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.textWhite.withOpacity(0.05), + ), + ), + ), + + // Static decorative circles (left side) + Positioned( + top: 10, + left: -20, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.textWhite.withOpacity(0.04), + ), + ), + ), + + // Static sparkle icons + ...List.generate(4, (index) { + return Positioned( + left: (index * 90.0) % size.width, + top: 20 + (index * 25.0), + child: Icon( + Icons.auto_awesome, + size: 10 + (index % 3) * 3, + color: AppColor.textWhite.withOpacity(0.2), + ), + ); + }), + + // Wave pattern (static) + Positioned.fill( + child: CustomPaint( + painter: WavePainter( + animation: 0.0, + color: AppColor.textWhite.withOpacity(0.1), + ), + ), + ), + + // Gradient overlay for depth + Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: const Alignment(0.3, -0.2), + radius: 1.2, + colors: [ + Colors.transparent, + AppColor.primaryGradient.first.withOpacity(0.1), + Colors.transparent, ], ), ), ), - ); - }), - - // Wave patterns - Positioned.fill( - child: CustomPaint( - painter: WavePainter( - animation: _waveAnimation.value, - color: AppColor.textWhite.withOpacity(0.1), - ), - ), + ], ), - - // Sparkle effects - ...List.generate(4, (index) { - return Positioned( - left: (index * 90.0) % size.width, - top: 20 + (index * 25.0), - child: Transform.rotate( - angle: _particleAnimation.value * 2 + index, - child: Transform.scale( - scale: math.sin(_particleAnimation.value + index) * 0.5 + 1, - child: Icon( - Icons.auto_awesome, - size: 10 + (index % 3) * 3, - color: AppColor.textWhite.withOpacity(0.4), - ), - ), - ), - ); - }), - - // Gradient overlay for depth - Container( - decoration: BoxDecoration( - gradient: RadialGradient( - center: const Alignment(0.3, -0.2), - radius: 1.2, - colors: [ - Colors.transparent, - AppColor.primaryGradient.first.withOpacity(0.1), - Colors.transparent, - ], - ), - ), - ), - ], + ), ); } } diff --git a/lib/presentation/pages/finance/finance_page.dart b/lib/presentation/pages/finance/finance_page.dart index 63beb84..77e9ae7 100644 --- a/lib/presentation/pages/finance/finance_page.dart +++ b/lib/presentation/pages/finance/finance_page.dart @@ -126,7 +126,7 @@ class _FinancePageState extends State pinned: true, backgroundColor: AppColor.primary, elevation: 0, - flexibleSpace: CustomAppBar(title: context.lang.finance), + flexibleSpace: CustomAppBar(title: context.lang.profit_loss), ), // Header dengan filter periode diff --git a/lib/presentation/pages/home/home_page.dart b/lib/presentation/pages/home/home_page.dart index 114ccc9..62625bc 100644 --- a/lib/presentation/pages/home/home_page.dart +++ b/lib/presentation/pages/home/home_page.dart @@ -81,10 +81,10 @@ class _HomePageState extends State with TickerProviderStateMixin { slivers: [ // SliverAppBar with HomeHeader as background SliverAppBar( - expandedHeight: 260, // Adjust based on HomeHeader height - floating: true, + expandedHeight: 300, // Adjust based on HomeHeader height + floating: false, pinned: true, - snap: true, + snap: false, elevation: 0, scrolledUnderElevation: 8, backgroundColor: AppColor.primary, diff --git a/lib/presentation/pages/home/widgets/feature.dart b/lib/presentation/pages/home/widgets/feature.dart index 2a05816..36b2fe6 100644 --- a/lib/presentation/pages/home/widgets/feature.dart +++ b/lib/presentation/pages/home/widgets/feature.dart @@ -49,7 +49,7 @@ class HomeFeature extends StatelessWidget { onTap: () => context.router.push(PurchaseRoute()), ), HomeFeatureTile( - title: context.lang.finance, + title: context.lang.profit_loss, color: const Color(0xFF8BC34A), icon: LineIcons.moneyCheck, onTap: () => context.router.push(FinanceRoute()), diff --git a/lib/presentation/pages/home/widgets/header.dart b/lib/presentation/pages/home/widgets/header.dart index 2c03366..b7ee1f6 100644 --- a/lib/presentation/pages/home/widgets/header.dart +++ b/lib/presentation/pages/home/widgets/header.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'dart:math' as math; import '../../../../application/auth/auth_bloc.dart'; import '../../../../common/constant/app_constant.dart'; @@ -9,6 +8,7 @@ import '../../../../common/painter/wave_painter.dart'; import '../../../../common/theme/theme.dart'; import '../../../../domain/user/user.dart'; import '../../../components/spacer/spacer.dart'; +import 'omset_balance.dart'; class HomeHeader extends StatefulWidget { final int totalRevenue; @@ -18,45 +18,22 @@ class HomeHeader extends StatefulWidget { State createState() => _HomeHeaderState(); } -class _HomeHeaderState extends State with TickerProviderStateMixin { +class _HomeHeaderState extends State with SingleTickerProviderStateMixin { late AnimationController _animationController; - late AnimationController _particleController; - late AnimationController _waveController; - late AnimationController _breathController; late Animation _fadeInAnimation; late Animation _slideAnimation; late Animation _scaleAnimation; - late Animation _particleAnimation; - late Animation _waveAnimation; - late Animation _breathAnimation; @override void initState() { super.initState(); - // Main content animations _animationController = AnimationController( duration: const Duration(milliseconds: 1200), vsync: this, ); - _particleController = AnimationController( - duration: const Duration(seconds: 8), - vsync: this, - )..repeat(); - - _waveController = AnimationController( - duration: const Duration(seconds: 6), - vsync: this, - )..repeat(); - - _breathController = AnimationController( - duration: const Duration(seconds: 4), - vsync: this, - )..repeat(reverse: true); - - // Content animations _fadeInAnimation = Tween(begin: 0.0, end: 1.0).animate( CurvedAnimation( parent: _animationController, @@ -79,29 +56,12 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ), ); - _particleAnimation = Tween( - begin: 0.0, - end: 2 * math.pi, - ).animate(_particleController); - - _waveAnimation = Tween( - begin: 0.0, - end: 2 * math.pi, - ).animate(_waveController); - - _breathAnimation = Tween(begin: 0.8, end: 1.2).animate( - CurvedAnimation(parent: _breathController, curve: Curves.easeInOut), - ); - _animationController.forward(); } @override void dispose() { _animationController.dispose(); - _particleController.dispose(); - _waveController.dispose(); - _breathController.dispose(); super.dispose(); } @@ -109,161 +69,140 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { - return AnimatedBuilder( - animation: Listenable.merge([ - _particleController, - _waveController, - _breathController, - ]), - builder: (context, child) { - return Container( - height: 280, - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - AppColor.primary, - AppColor.primaryLight, - AppColor.primaryLight.withOpacity(0.8), - ], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - stops: const [0.0, 0.7, 1.0], - ), - boxShadow: [ - BoxShadow( - color: AppColor.primary.withOpacity(0.3), - blurRadius: 20, - offset: const Offset(0, 10), + return Container( + height: 280, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary, + AppColor.primaryLight, + AppColor.primaryLight.withOpacity(0.8), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + stops: const [0.0, 0.7, 1.0], + ), + boxShadow: [ + BoxShadow( + color: AppColor.primary.withOpacity(0.3), + blurRadius: 20, + offset: const Offset(0, 10), + ), + ], + ), + child: Stack( + children: [ + // Static decorative circles (right side) + Positioned( + top: -50, + right: -50, + child: Container( + width: 150, + height: 150, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.10), ), - ], + ), + ), + Positioned( + top: 80, + right: -20, + child: Container( + width: 80, + height: 80, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.05), + ), + ), + ), + Positioned( + top: 150, + right: 30, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.07), + ), + ), ), - child: Stack( - children: [ - // Enhanced animated background - _buildAnimatedBackground(), - // Main content - SafeArea(child: _buildContent(context, state.user)), - ], + // Static decorative circles (left side) + Positioned( + top: 60, + left: -30, + child: Container( + width: 100, + height: 100, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.03), + ), + ), ), - ); - }, + Positioned( + bottom: 20, + left: -20, + child: Container( + width: 60, + height: 60, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white.withOpacity(0.04), + ), + ), + ), + + // Static sparkle icons + ...List.generate(8, (index) { + return Positioned( + left: (index * 60.0) % (MediaQuery.of(context).size.width), + top: 30 + (index * 25.0), + child: Icon( + Icons.auto_awesome, + size: 8 + (index % 3) * 3, + color: AppColor.white.withOpacity(0.25), + ), + ); + }), + + // Wave pattern (static) + Positioned.fill( + child: CustomPaint( + painter: WavePainter( + animation: 0.0, + color: AppColor.white.withOpacity(0.08), + ), + ), + ), + + // Gradient overlay for depth + Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: const Alignment(0.8, -0.3), + radius: 1.5, + colors: [ + Colors.transparent, + AppColor.primary.withOpacity(0.1), + Colors.transparent, + ], + ), + ), + ), + + // Main content + SafeArea(child: _buildContent(context, state.user)), + ], + ), ); }, ); } - Widget _buildAnimatedBackground() { - return Stack( - children: [ - // Floating particles with orbital motion - ...List.generate(12, (index) { - final double radius = 60 + (index * 15); - final double angle = _particleAnimation.value + (index * 0.5); - final double centerX = MediaQuery.of(context).size.width * 0.8; - final double centerY = 100; - - return Positioned( - left: centerX + math.cos(angle) * radius - 4, - top: centerY + math.sin(angle) * (radius * 0.5) - 4, - child: Transform.scale( - scale: _breathAnimation.value * 0.4, - child: Container( - width: 2 + (index % 3), - height: 2 + (index % 3), - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.7), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.3), - blurRadius: 6, - spreadRadius: 1, - ), - ], - ), - ), - ), - ); - }), - - // Wave patterns - Positioned.fill( - child: CustomPaint( - painter: WavePainter( - animation: _waveAnimation.value, - color: AppColor.white.withOpacity(0.08), - ), - ), - ), - - // Sparkle effects - ...List.generate(8, (index) { - return Positioned( - left: (index * 60.0) % MediaQuery.of(context).size.width, - top: 30 + (index * 25.0), - child: Transform.rotate( - angle: _particleAnimation.value * 2 + index, - child: Transform.scale( - scale: math.sin(_particleAnimation.value + index) * 0.3 + 0.8, - child: Icon( - Icons.auto_awesome, - size: 8 + (index % 3) * 3, - color: AppColor.white.withOpacity(0.5), - ), - ), - ), - ); - }), - - // Gradient overlay for depth - Container( - decoration: BoxDecoration( - gradient: RadialGradient( - center: const Alignment(0.8, -0.3), - radius: 1.5, - colors: [ - Colors.transparent, - AppColor.primary.withOpacity(0.1), - Colors.transparent, - ], - ), - ), - ), - - // Additional left side particles - ...List.generate(6, (index) { - final double radius = 40 + (index * 10); - final double angle = _particleAnimation.value * 0.5 + (index * 1.2); - final double centerX = MediaQuery.of(context).size.width * 0.1; - final double centerY = 120; - - return Positioned( - left: centerX + math.cos(angle) * radius - 2, - top: centerY + math.sin(angle) * (radius * 0.7) - 2, - child: Transform.scale( - scale: _breathAnimation.value * 0.3 + 0.5, - child: Container( - width: 2 + (index % 2), - height: 2 + (index % 2), - decoration: BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white.withOpacity(0.4), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.2), - blurRadius: 4, - ), - ], - ), - ), - ), - ); - }), - ], - ); - } - Widget _buildContent(BuildContext context, User user) { String greeting(BuildContext context) { final hour = DateTime.now().hour; @@ -326,37 +265,29 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ], ), ), - // Enhanced notification icon with breathing animation - AnimatedBuilder( - animation: _breathController, - builder: (context, child) { - return Transform.scale( - scale: _breathAnimation.value * 0.1 + 1.0, - child: Container( - padding: const EdgeInsets.all(10), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.25), - borderRadius: BorderRadius.circular(14), - border: Border.all( - color: AppColor.white.withOpacity(0.3), - width: 1, - ), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.2), - blurRadius: 8 + (_breathAnimation.value * 2), - offset: const Offset(0, 2), - ), - ], - ), - child: const Icon( - Icons.notifications_none_rounded, - color: AppColor.white, - size: 20, - ), + // Notification icon + Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.25), + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: AppColor.white.withOpacity(0.3), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.2), + blurRadius: 8, + offset: const Offset(0, 2), ), - ); - }, + ], + ), + child: const Icon( + Icons.notifications_none_rounded, + color: AppColor.white, + size: 20, + ), ), ], ), @@ -377,8 +308,8 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - '${greeting(context)},', - style: AppStyle.lg.copyWith( + '${greeting(context)}, ${user.name}! ๐Ÿ‘‹', + style: AppStyle.md.copyWith( color: AppColor.white, fontWeight: FontWeight.w500, shadows: [ @@ -390,33 +321,6 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ], ), ), - const SpaceHeight(2), - Text( - '${user.name}! ๐Ÿ‘‹', - style: AppStyle.h4.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w800, - letterSpacing: -0.5, - shadows: [ - Shadow( - color: Colors.black.withOpacity(0.2), - offset: const Offset(0, 2), - blurRadius: 4, - ), - ], - ), - ), - const SpaceHeight(8), - Text( - context.lang.home_header_desc, - style: AppStyle.md.copyWith( - color: AppColor.white.withOpacity(0.85), - fontWeight: FontWeight.w400, - height: 1.3, - ), - maxLines: 2, - overflow: TextOverflow.ellipsis, - ), ], ), ), @@ -424,63 +328,14 @@ class _HomeHeaderState extends State with TickerProviderStateMixin { ), const SpaceHeight(16), + - // Today's highlight with enhanced breathing animation + // Today's highlight FadeTransition( opacity: _fadeInAnimation, child: SlideTransition( position: _slideAnimation, - child: AnimatedBuilder( - animation: _breathController, - builder: (context, child) { - return Transform.scale( - scale: _breathAnimation.value * 0.05 + 1.0, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - color: AppColor.white.withOpacity(0.25), - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: AppColor.white.withOpacity(0.3), - width: 1, - ), - boxShadow: [ - BoxShadow( - color: AppColor.white.withOpacity(0.1), - blurRadius: 6 + (_breathAnimation.value * 2), - offset: const Offset(0, 2), - ), - ], - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Transform.scale( - scale: _breathAnimation.value * 0.1 + 1.0, - child: Icon( - Icons.trending_up_rounded, - color: AppColor.white, - size: 14, - ), - ), - const SizedBox(width: 6), - Text( - '${context.lang.sales_today} ${widget.totalRevenue.currencyFormatRp}', - style: AppStyle.sm.copyWith( - color: AppColor.white, - fontWeight: FontWeight.w600, - letterSpacing: 0.3, - ), - ), - ], - ), - ), - ); - }, - ), + child: HomeOmsetBalance(totalOmset: widget.totalRevenue, user: user), ), ), ], diff --git a/lib/presentation/pages/home/widgets/omset_balance.dart b/lib/presentation/pages/home/widgets/omset_balance.dart new file mode 100644 index 0000000..425f91b --- /dev/null +++ b/lib/presentation/pages/home/widgets/omset_balance.dart @@ -0,0 +1,163 @@ +import 'package:flutter/material.dart'; +import 'package:line_icons/line_icon.dart'; +import 'package:line_icons/line_icons.dart'; + +import '../../../../../../common/theme/theme.dart'; +import '../../../../common/extension/extension.dart'; +import '../../../../domain/user/user.dart'; +import '../../../components/spacer/spacer.dart'; + +class HomeOmsetBalance extends StatelessWidget { + final int totalOmset; + final User user; + const HomeOmsetBalance({super.key, required this.totalOmset, required this.user}); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 8), + clipBehavior: Clip.none, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColor.white.withOpacity(0.3), width: 1), + boxShadow: [ + BoxShadow( + color: AppColor.white.withOpacity(0.1), + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + children: [_top(context), _middle(context), _bottom(context)], + ), + ); + } + + Widget _bottom(BuildContext context) { + return GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () { + // context.router.push(BillingHistoryRoute()); + }, + child: Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.vertical( + bottom: Radius.circular(16), + ), + ), + child: Row( + children: [ + LineIcon(LineIcons.calendar, color: AppColor.white, size: 14), + SpaceWidth(6), + Expanded( + child: IgnorePointer( + child: Text( + DateTime.now().toDate, + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + letterSpacing: 0.3, + ), + ), + ), + ), + ], + ), + ), + ); + } + + Container _middle(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), + decoration: BoxDecoration(color: AppColor.white.withOpacity(0.3)), + child: Row( + children: [ + Expanded( + child: GestureDetector( + onTap: () {}, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + context.lang.sales_today, + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w400, + letterSpacing: 0.3, + ), + ), + SpaceHeight(2), + Text( + totalOmset.currencyFormatRp, + style: AppStyle.xl.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w900, + letterSpacing: 0.3, + ), + ), + ], + ), + ), + ), + LineIcon(LineIcons.eye, color: AppColor.white, size: 16), + ], + ), + ); + } + + GestureDetector _top(BuildContext context) { + return GestureDetector( + onTap: () {}, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: AppColor.white.withOpacity(0.2), + borderRadius: BorderRadius.vertical( + top: Radius.circular(16), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Enaklo Bakso Bakmi 343', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + letterSpacing: 0.3, + ), + ), + SpaceHeight(2), + Text( + 'Jl. Tawes No.53, Rawamangun, Kec. Pulo Gadung', + style: AppStyle.sm.copyWith( + color: AppColor.white, + fontWeight: FontWeight.w600, + letterSpacing: 0.3, + ), + overflow: TextOverflow.ellipsis, + maxLines: 1, + ), + ], + ), + ), + SpaceWidth(6), + LineIcon( + LineIcons.alternateExchange, + color: AppColor.white, + size: 14, + ), + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 7a22179..d84b1fb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -213,10 +213,10 @@ packages: dependency: transitive description: name: characters - sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -857,26 +857,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "11.0.2" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.10" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.1" line_icons: dependency: "direct main" description: @@ -913,26 +913,26 @@ packages: dependency: transitive description: name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.19" + version: "0.12.17" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.13.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.16.0" mime: dependency: transitive description: @@ -1502,10 +1502,10 @@ packages: dependency: transitive description: name: test_api - sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.10" + version: "0.7.4" time: dependency: transitive description: @@ -1638,10 +1638,10 @@ packages: dependency: transitive description: name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.4" vm_service: dependency: transitive description: @@ -1723,5 +1723,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.9.0-0 <4.0.0" + dart: ">=3.8.1 <4.0.0" flutter: ">=3.29.0" From 9076c9c66ee952585c1dc176c4cad2edbc7247ad Mon Sep 17 00:00:00 2001 From: efrilm Date: Tue, 12 May 2026 15:47:38 +0700 Subject: [PATCH 099/108] update home ui --- assets/icons/ic-report-product.png | Bin 0 -> 148069 bytes assets/icons/ic-report-profit-loss.png | Bin 0 -> 162004 bytes assets/icons/ic-report-purchase.png | Bin 0 -> 155511 bytes assets/icons/ic-report-sales.png | Bin 0 -> 155443 bytes lib/common/extension/date_extension.dart | 5 + lib/injection.config.dart | 72 ++++---- .../components/assets/assets.gen.dart | 29 +++ .../components/widgets/particle_card.dart | 166 ++++++++++++++++++ lib/presentation/pages/home/home_page.dart | 2 + .../pages/home/widgets/feature.dart | 13 +- .../pages/home/widgets/feature_tile.dart | 11 +- .../pages/home/widgets/omset_balance.dart | 140 +++++++++++---- .../pages/home/widgets/promo_banner.dart | 79 +++++++++ .../pages/main/widgets/bottom_navbar.dart | 9 +- pubspec.lock | 8 + pubspec.yaml | 3 +- 16 files changed, 442 insertions(+), 95 deletions(-) create mode 100644 assets/icons/ic-report-product.png create mode 100644 assets/icons/ic-report-profit-loss.png create mode 100644 assets/icons/ic-report-purchase.png create mode 100644 assets/icons/ic-report-sales.png create mode 100644 lib/presentation/components/widgets/particle_card.dart create mode 100644 lib/presentation/pages/home/widgets/promo_banner.dart diff --git a/assets/icons/ic-report-product.png b/assets/icons/ic-report-product.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c008f2f7d333b7e7dc36572a5ab9387aaf9b72 GIT binary patch literal 148069 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�opSGYNkmfop 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 z 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

  • fwVE%V9 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 A!~g&Q literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index ab98328..883e3a0 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -1,4 +1,6 @@ #ffffff + + #FF6B35 \ No newline at end of file diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index ab39a10..0bb8e82 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -20,6 +20,7 @@ plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "8.7.3" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false + id("com.google.gms.google-services") version "4.4.2" apply false } include(":app") diff --git a/assets/images/ic_notification.png b/assets/images/ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..63967d058e6ed04cc059b14aa2fc99c32edc6dcf GIT binary patch literal 1455069 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%0Amtn@d3P0Qs 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%0Dt#wn|Ja^&w$FlhU(Sfv28(jwFH0-H00U*p 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

  • =J9Jp?gP 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 JPDHLkV1lg9aYq0E literal 81011 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%0DNeVtFaK zu3(FIB{u>IHj!5@#`F4mfaMJ}yePLGt@w@v|Fn z@mCjN*RI{rpWB9bj0L#ag|ND$+XSklr@U_SOEyQSG_zZFc4c@@RJ&n&wD-b?< zGS`cRb#+YGBs56rmQQr$S9|-I(yPoZ_b8_j@0TNiZIfR3!pmEyLdXn+~Hz(VH)BT{QrLHS=_z&0X%Te6IlQH zIt*=1qBA}YZLOXBww6k_AQ5Bt@f`QV7mEolmYJw$HD4$>os4AcHp_2~vK|ccE7Q$S z#SUn`W+q4C1#(&!d33n&Dzn=r6DSEV;hD({p>MDk#nfheXy08hZ^1?Q@JDv%eqml( zHUt4;qu%}j^!IPYULQUJ{VO|>P9;SUoQ&{SqE%hgrEs>D`6W)0qL}2jr8|iMynv5Y z3W#C>C}4~);V2(WksV?JhbzDlGr%90pbU2!*liMeNg_41g4Y=hqA5ar4}xO~`8?WF z?RaxbAG&wW;}3tn8B?cDHZcLC9xUce_3PX<3V>gj9C04QtU;n!9HPu*&Tfry&X}pO3zPq0KEA-#P*9EgeXv;>hLmC=_#A9r`jYwD{M;lrL^_xF6fPBiZFGQ&gynAsJ6`>poL&Qi`fg$#MjO{Lllo;--JL3C`CsV z`1k93aMlUm!}QKwF;v*b_aa0ob7k1;`HvK4DLv&{`aj`N3SKEVNk}t`Ix7P-tnR)R zAHcEB$waiWNMscc(p3Y?a-eDhP(C6VDx@00M)ER4wpUzwRCO&v@dQmE@F4@ljjqm#h^33jKq=TE^>!femy3ks_W&8X(Hl+bt znyyuWJ1w1!isEqPgkSiXFzCcfy)WX_vpY%dstTml6 z0oJ^hG9d~QS+M{L4lVGIY8CLOB*R(N1BJpPbPZwM;OT?HZ^8f9nrO!>Z~X_?+;S0) zJO0S3;sK)eP8)b@kAboZKBj%y`dco+amOFdOUP1feX&j@se%JC&B zK#K_!ZWxC}K-;kp>N*@kDX=UW!=nZCeF~+|q2Sok39aYjMIe`rVQ~C9Job+}FlFlY zBF==B4Q}F(e_R^@B-U`VMgb_x4>hDlSy-BP06(5tOIcQCHl4&%|N0NU_LaGK?uj=r zbKK5|C5p)AhY%A|-yuYVOr~!fG2fcsUWy)#S&(8J>)u?4J>P#c(px6+luNy~ zzsmV1HwcM#=kF@fU-SFRU_ZKGlMbPx>UAZ^hC4?W8uGQPI{sGaCwcvr?jb9

    Fb= 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 ArT_o{ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 1db7ead26a1212bbc7d81f422a6ca1178b8c9b49..02b59ab3c4434e5d9b71aa7a6970198d97f5c1fb 100644 GIT binary patch literal 670051 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%0Dk{F+bpHo-luO{N6*$(k4&9_(j)mZBzzBHz9 zP-v&`o5XXHw;|ENAzti}CiJYxd5cf3^chPGgF%t_--ON7z{6Zu!E6!0U~n1P1zejd z_Iy^zo%|g1(%5fSesdKWj^1Xz7A&|NsyCoS3&(oVoU)AYL*duT57sTLh~!YUA0UNy znY0m`1%#5N%Whwm@>IrKJD2N8G>zLDjSZ(Hawu!byR}8UO z(8W#NQ7h*k`{YmDfB&0*`u+LLGv(^l*zd7MZpSv@c)Y}qn0Y3d{~CYtcpQ%x=eS(` z_otuA+xI{INB-c4zUzB#O_k1kST-T$YiE_+HxW}(^DRNY4S2MaJ*ldv6L{8x;$_OL zS-s&N68b_TuIXeS7JKut3g}*En`gX*R`j3cf<88j*mUwI-Px=BCUy z(Y2_a3ga${4r9p%tL@%m2c>!{0GBf`urj2mE>^0*Zn#UE4Cf$is{HwuR(=u&m=ziy z(`1rT+#t78oO=ZlRl6VNFnY^qG$7!QHcD(X?H{)9ax}?79VFqDOF=EJMN1Vcv8WbQ z&!yeKc7UIVvTCW)>U&tA3d1fDyp#(e2eSCCL!=pDK)p5M0s*4~HW9X^l22sxZXonH-+Q?UIZ#EFKeWqA%_!Bd97F*QbY(YEZ6WIPD{HQH9^v|^aW zzF9Y#(QQtd5oLp6d3GP6k*Mw+bE;Hl;5Ou7alczB>ObMZ*Kke9$=tvq7~}V3EcuE#USf?U9qV)d($w z4TLmNggB>UsFI5xtKxTHnKOS=MF#VJszZXI5uPuN144W#RXdE-Oj%?Y4fxp_p-!J4 z?3ThBR*7>)93Vdx1$@WMoH}C*lQ<#2gr8>?sTV^~Cp4{XaHe)s(~^pB^UoN7y`KuKWiA71xuY;`6k}_#eR1_8 z%xm#Mw^Ex|Mpfomw&tbJ$#FAHHadsk(yjBu)n^^DHRzkNO!`G>W9XTKYJMuNeD8sx zeOEZV;77oqJ#HY;i$G4u2?<&Yb(s#o@ChV50k@wOG|qiUXj2O3!XRf%dD6^FW1`zi z%}a%xSKIW-^QUo(i;xg}liu#3UzGGYvqK6nZ-Ll?i2--T!k7Uzimh_jV@CuY6wF?P z0MbMT-pS}BCsaV4IMxpQp0B9Etg(Z4Vcqen*0kel$*Wn%?#g@K_yu3`fBe9;ul}mM zxL^-(j0!#;FY#lS9(7$FwH}Y-@sc{mQ%~hXulVs-?605Klj~PcFYZnwVi&Q;p*mvs zR|rBF%33goVF-+=K8lsqb1qofk%i9s8x(xa_)stmWf7TrkFquxX{3A_Zt%(HqyU%f z6oY#B+?j*bI=EiP9-WVMI2i3sjC%M*8k!G9W-_u$X{s!x(kZrB26(eWQ(Xe51$7L>ZcJT2&K^`KkXyvvAe_wF!DNX;h7(fu%_=yjqF)g*XTG9z&g3Mf6K&H$16(R~nE+y;n`FP_guZg|;>0iO^)24!3)O5L zY6Ry($cgO6B%Mz{vv+91&Twa-abf*l-d6cxg^Q6O$$80KqjgqOv>|t`AgEFquIBkI z>zJ4;t5@S_Ubu`}(Dc+=CN{!?z1k^(zu84XEwevSF7L`=!L6F>ZvFM~T2IVkFoS3p0(OUFpP7q|{$1&=TWd)`%s5U5a6Eh_@t;e`td=HvR) z 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

    ?CFh18Q89PnaL&IBcnSuQyA~ePetFg zaICp)XHI5JSy(-)b#3R!W&S;l}oXMq3muAz91P&wM+G^-*|cJwkXmt zvJ-I_N($?WLYuu^S??*OcayFoX{xz-ge*6b&aue_ifP5MGiS<>{MqD9-fo2~6TP&i zbvCkjUnbk>0cO&=Cvj@wg8))yNOUjRyT{e61x+aM^TM+eCRXbdfT4pCd+atGI zjR+`v)`FjC9r6i`YtsRhtxnFviO%l!BP!gk@J{MbR9omkRYoYN%_i~X<);oWbOQ34 z>rV;_x2Kcax1+lN%;Er1HHtKOrEGabzVWyreb|)iULs++(sdqD`-1mJmoAzUdm_q( z+dUT(?R;ka0%KM@di(7sufO_m0Qej)a4#OFB=7ZNw=6#NtKa<7|M9D>edw%l#FMwV z-gf~YkejisW|y3T6EtlXt4JXCJS4`zRDA8krt+*6d2qfTlY{#lH)TU^$FEcB3GF<| zHrDw)L|{M*WLHXE1kBzgB5+m{+l`!un^VRR9PDB1xjsv^$quMe@DkX?r8cQ8ikvgT zQoO4jiZ@asMy!zAj7qIZxfv0cP#s5@Ni{oHoK#3>n)BCXVxWdvt0R3^7%4zroDPaH z=y;i)QS!sosT7!4)cx&)k{GJ2dQ3M$IgV5{M@=~PvLP^p=M>W2q`K#BRIwCMN@Gv2 z!I*^KugY(3i6qDN#-HvV&box1_>g}wl>399IbH3utHqIb_>j?*MP|ZiYnJ3{*v$G$ zg|g#ZVF_T59nJX1b$R~U&#U(L|GO0|ACK%BSRdqlyO(v5r<5QIvayr5swSvoDU61O`!-zYB(e@(7(i)QkO((17O`;1SI;guWfWFh*a#o8sHUFUlNLU-5K;;n z9B$Vx45<$;V{bs5GQ5=@Lf(HWNw!_2DJ{afu;ofcbF}$%!xA}-FsGeVv-X8 zK1?K|%cCCd@>kCjmAyJeI|II13omCaHD$d$aT&g6FU?no#T7vSWPoi)t^uH|Fp=<^ z3Y)>oyYAFuC*Q4|Dye1{V_N*Fq)|TD_S%W-(8Aht&xY32mdRXQtqc@%BjpD7VJyQ( zVsb(mN+DAP8IB6^;6QCRsknv=PHSjfwpN6K%r&$=5uarT!r$c%5!cDegL!e8ihU(k>q2Lz9O;xP z6DJ^U@MJ3l@??vgx}>~kNX@in^b=_m9F=!wF6#M)K6xz!r5k{FDKPxzyua_`XzjJ$ z+b2H$_`?rzV4vefkV$K%1OLDM`}}|L#SQNMI6nTTzy0xf-re1uPo54Od^N5$mC)6L z(rTLPIA^2NgC(6pmZ@uW1oe`4tebJEHvJXllYHKj8J;~9GbqO}S~Xp#=;LVf-a5Tu zGB~_I*zC}TrYTvmFJXIS()v33NRk>FLHz6}p;r}GFpT-o(uKSe48lAmSh1@DDH{@*KGJVJdw!VH?g)gIk zT4i*6j+EJGc>IlpYRhOsRK``Q5D7_$rNGRROI_L%_A`Kg8NjiVxPhxMhT1taDk|&1 zQv}IGSczL&(kv2}zI3-BZQ<1QWzfsDlSP-JgK5*K-nx4s^Eitt`({A@vw+fQhHug5j{i_Rb!<<@WW@o6sOVQ|%+Lm3c zo7AYVXdf{bOvognu360!K5yF2(|qU0JkTOCfnlPJXf>!EVF11ONjkg zBjQPds>`XaYDu+REKu~i?t@?(m6(b#4qg%5y<;abHqkY^>?-K807oEEr)A~sGO?Sw zxeMxcwFw@zc!%eV=$oFL^lu8YE}C<1y1Fv3lTq7dnKLP+l!*~Z-*1c)miXNfS8S}# z0MNH!9LbAKhL0o5LU1TCA&VC5b%=I1gy9HB>~KTN;-i`NhJcK2Mc%fElU(QFA9-^P zqBMfbI#WV4l3)&vL3*KR3@oXRM{ACg*aUCQk-PLc#GZvCfOMLmu2lV(kxckt3z}lgkk}Hjr4yb&-)vebqvT3&P&f7R3lxgtE z7`u03^g>RNgxUG&=5X18;ZQ)>l^YxYN16BM3Ah) z>{P6doB`^yN3%$GrP@qI*z3WjU>jS`^6+LzgX1<9w)(Jaq%prIs2FBLw08_r5xry<) zl?qMbfl`yObxVwyO^e|M(ca0yfj7&LS!3yB2Mxlj@tm5Y(Ra})^XVpGv2C}-4U}?s zL^8J_;Xad@d7$TUnX-M~QB(Vrh|1@&hm@)$%V~eQ&KqTP&a+>JOwIuNKHfLa(@?*6 z9f+wZ!-fxQ4L>Pz0dl(pamd6dFAS%Z`cU!T5){)~?X$CreWg4dm9*d9LMG;;yvhVax_{8Rd= zefF@&1oMLOn2{e=wp6BFNhz-hQ>5w(?VBkjQZ*MXe#kU7_Zer88QIluez>?kIBlp| zSnNJwbL1kInP3dC@ShZB)_yEGws-b7*6Kx#_94jBx^1`MF0@*8bFAFCX!Y^`=-WU1 z2fw-I8RNm``dMFr9Ds+{=Xjkz^E1a6f8>pq-~7<3^3I(79A~@N7_dvxEK#X@_}xSQ zR6~U$*3>3DOW?bH4t5BD{h-XZI%7c>PG=c}%~K3i!l$I~cS)G*MttDzZ%vi9y*izltmSxw`b$zwxvQ5o}6ch}9h7Nr* ze?`>{XN$zSxK{K@z~UPv6R!HY7~~1MH#4%>v)rsZ{`{0pR^$lsSkpCqNxV)9H31fs zYceGZjWTa#L5Y+Akrq`B9=wJW%1RSr^b}Wf9pySHg+1+l$hzI3wK*}1h5}lrD%+x0 zx%)&~;gy{_LGfpvlRW6nhVBh^NOS6dsmr#{IO>|O+UM-ej35;$mrz#j+`V_XV2QJ} zJNiTiR1n%#_#kwlCjj*0`P6g}3dkJJ)FizwGHpVk!Q2tkCv)xRG4+H@nE^YP_$$(@ zI3H66b<&8vsiU&Q!QjhgB@6|Ya+jh0JbGO@P0hn`6Y_HBXEzP`n&|Tpd$tw;kG{GYhXL+ zI%iYG+0;%Qng;Q1sNL<+@h|c5VKxW?!&<(Z7tykJAlJ zYkg!>*|TBg+Rzm^(tRqZ6Cn(r`71Fs@SjI@{Ou#O=BLB=OV!b(g?<$({$SqOm6-H$OFcvb2$+rZGm}+C#o#wqQ zX%X8-(4-s{-%V75ndJA*2PcAylXIeDIUZr89mj1H;|7ip3LGl!WT5D-E& za2K<%i>|fvX53K(jAEuM=Voz7Nu3Le+WHt3Xt&#Js-i>O86mSd1+pLkHPa9^Nzt2P z+teBTSObVX)erW_gJno(pIAaUPUl6nA{V0^7v5>LpH3Q46od|E$Qj*bCzM(s(J#YG zk0W?*mgCFj{j>#TupAg8lne&fU>Vvmo0Wb`uCxR;DZ#Vc03OJ14+uCn%|uYHio=2q zHhWvD-?q%y+9Lw#_mMUI@RKB^cbZhK=kRV@}w|%romZlhpf?CZ_~^G^3D(sY>-$1z;GwLuv2Bx_XGaivr2V5sWbv`c|Rl+*n<6=2Y?sI^|F#1m`3@Q0W0D-@P3*<8M84l(uorZcD2<8Q!uv#Tbm0~;S&f>^w zD#mSV-AkQe(`Zd|WY0eVR_5elE$bR2uD_Dr_>nDO!_`~2mo4?lljOACFY z*?o9@=GXCoFL?8NKbrUV?e0-K@8<}xoma=VOMudFlMk71%UT7E8M|^>x%5#uLR3KR zBfI-@YvCTLUVxhPgIT8SLOCe#MM&XLnoZkXYuHU}GVAoy>AKQ(ps9jesJ*k&^wUchh>f&v{d>{zT;F)u_ z?sc{9nuKMYawzHPl`pLvm}Y-*Q*4j*)VM=w`iQF`nF@ARqql9X>i*ZgGlg5@#e?XW zNSqg&QHOwVYCJtAVXUnrtH`a(u#{})*Wgi@F5T@R5X=%61=o2pBN=m*!VTIq&*r?# zIs^8dgp*q?Fk0l3e0u}&n+xTsb%T5vBtdGNIf-dK|+W`^-Nxqd~I_Y1{F)j z&nO(Oh*h3SC|UXxB&|263ko#Wh0;aIPm$IvXJMk}gKK?7qQmy9cy$KAmW|JBX!BWB zYP5ze`fPTTNTm|b7Gel8t78N6M5vJp2;@-K(9Og#?QhMqc#5PV_rzL3!m5}xW)V>o zLj+dX-TE)3>}VUe5OTe0h8v)pmY_PtxloGNt`A zS|KI)qBimNt#WzlvK4E}Jh`%j{Spye%KWD7#5cRHOi#t1$0$d_5N6UGVbi<2PngUJ zE3EOmq}H0ubwz5*)MB};V8tWV0`$3GZ$0im@hyM& zLlI9~KMt5_I~vUL7ll*i)h(we6md()F7^JU4kM;*z%02fHoA zxT`CGY|52?tw>GE;MmqnXhvr>m-_teJExiU4F$)4WgU0|%r={m*I{6hB8DtsBw}Z0 zgqI3C`Hqdu=QjV%kk`B*N+>k*-^nx_A-KD`*xn_Kkt_xJ8B-}O z8?lE5KSuyduOue|ju%}?lj}M$Fcgbqz7iiwiYKM|1aismrvvZl=Nh zYKSny9|0dvdka{)M}jUbuVz z`;N%|G|#u+m@og_{KUtfeC*?If9jRjfBJ8|{If4VLA!OF?fKRow{~~LvoY3rVtGPL zsV{{iu=2{tgQsy_JKS@0#p`;)x`U%cSnI!TZ6#tAt0iH9$TyyCAH%lP2UPiz=>a5} zt`yH2&j6pc~1;ZKoRJ?qOfs4feL>6f!|8 z1cj5OiS9=eUZ$C~wR9B+q4m*@-kOt(c5l51n~nqOrREu6~&=R{@5sII)-gqZ?SD_7<%( zYJtc&ZOpbtS7Z)2b5oKurC!l+AP&b!GQ{q`)`OGT-r+KUJY3zJ9euJz17~$Ga;Bs_*bRHFp@_1)L)8g{`XlKU;8C&f z+#z@}Xba>J4_TV)9~|qsO=0vIu8LelWP|g%P_nUiK3b8R27gqQN#zW$ckEO(4%4-r z@bm_pH_r^qrTJE#pZwPU@XjgNjA3dGObSHw8#T3Q}npZOJIeCn_K_y@6+#J#+Q z6we~Tf}DL}^0#Il>&NWr!?Xi66`{fJe1mgi22VJf3AQ?_QM#~N%`%rpf232Bhykpy z%!amIeq{pFJyuqHQ?L@cxfgf2Xa%!8f483lq#8WrC|8p3=-j6dR%D<`(jHKQ-!vfp5i4R6szoR1mC2a3eA}-Tq84OoJPrYR6lzjGQ4gz z;i~PX&BS@bZs*Uq`}IumfK>W(7{>3?`<-uM>V771;hkWGxs1zg125%0$*1buWf zy5U#n7OD<(6Q`v)4q17T>Tl_PIhf$+gc>1sYL~#2pPO)b2Dffw!Fqe^+l34Tf{-#f zwM>j;PqI_AY0a@?&SU1e#H1jw|?VzMtQFP?e~72BpYRa&a< z()krx?rYL9)}Uj)n(foAJ&kz2xA%R?ulv9`@ip%@A`}X$DjZ1S3drUm4V*oa}m$9db|RY$Jx$_ zDIA#SP3ECaMKGqL;bBTC^){9HbQoy7s(}**gHg1TN(YI%DfbbRN2^gD`!FyH^13LW zryx_Gmbp`RCU;dgfRgJe&K0*lWml>yZufy zqbo`_nxdL*~f< zLpGmn{mq~JiNhH8U*Zb!^YvAWqEHV9fcJWxpZvr#FMa5P@2rPEpFW{H7oci+Z-q9N z`w+DO>N(0>Cz~~8hb#06+s={#IZ)=%Si?1q6KKv&H%i4%2ty0Ye0_G>NF6yGE5l{rHz>Ii4bBzh`K`RCK5gx}QzLdBHPUip6vWtlB?p(Z zq7<+*&@ihZ1(c-6Wyf%rMr6`>(25N}a`q)Y;x-A`Q;02!!kdGUX1cG*KYshQJn!FX z{jT>XRbTaQe9N!>1OGyM@%h^iCC+s}4_bTjw5Y6$u|5WZv7Qbp5BPZhm>upaf z4Vv(a4Ipm})&j%-DWA!OBjWiQysx~*RfauwYCjH|Um&i?au6+S9;)@K3u$6y#F=2P zpy`loZ&M1BOkA>>Pv(D#15?_{X6tlwJ=-1O%CaZf_Tc1)piHX%RZ;Hb0Dhu`4d7QD z_p6BSWMv7!wQGI+g>iE`Hr{LgbG*?lnrM)O>%cVI6I8W@Jw?4;t&~e7MdJaQ4Q%Q2`4VxcQC?RLoK%ZQ zNT#M;O;MZz_iP5WqP?b>XwIh4+?G48g(P-|we4=gdb>s&1P6E9{+Zh#n~zAugg9Kj zBki`u=YRj2GD+;T7|K&+37lmx2DU8yywuqu43U#`aw~3X<_6bkH==tG?`FUnz(hzM z7*i)PdJSoX88i&XuAwWG^cXgpsA_4wFL6N{mFR3O)}A zwg*uTS7`2i3RH;2a!nEQCNWa2U+qHjj8NRHBhdPm_bvJ{D|7yzpMK>x9vAj$ah|%rh-QrGL%sq>RZZ%5 zLA3pvQ$ygH!a?Y?!bt<7$U^5B0U8LW3_ZG7Eo8}UiVjgz4o4a~4yS^O-7JlA^CdWk zsJ=Oe3PGOg9N;Z>GcI93I4Qifxypn_1(o~_<%jX>mcqFZ6Pfby| z^oYw3Ob_*}cv|&ZYi}b7_{+cUYro>p{3rF|3#<(B<0iE9UH+p!Fh9>2cUzYg%-(L% z9+`i;`JhR8#;L00r59fK>VN3PuldVg-rD@Bzx^Zs?C<}X|K_8w_5M=kv#mXj1t-Sw z7$$tVyNkhxDouE4DT`EvS?uvEM4S4aaxYwM%ur^bI*oy4YGm>xGuNr+od>DkS;nr=cyQv5Q=P>kj z;4~_;s+T3{xXXHS*WrBRnrZchV(Z}M%q!)pbw7VlZ_0TFVasHDIrp4=bDOP7mt7#u6;q|zbu1-c#+-gzL`*RDwkW_-Ay0VShXb~` z^r}%i8+r3D0gOlr=eocL?9r{b9d>Z2@9)CNV#Prg773!!ogP6$e0f+8a};mIjkFW7 zYF%l%K!TP!mm7M>c;c3?uKT%{6c6&R+UnFU;w)jf93O!=4jJS+NaVs5Q{S|X6G(e5 zeZx680?&Om(>*$N+(il~tkZ_pa^9oD#>Rzn5Q|&qr^dOTQ!li)2A`$B8GpQ(KzYArMBU{V^a5vp&mKzM2x%MY{1#L{3eO(k2KEa)rR5G<- zIELS{2jJ8D$f^EPYz!JW<#UhOv0`;IQRqs_&a!vo=F5V0N0u0UmfnN`kuPoo$C@B7 zSxMuZU&136m$BX1@^QJTxlPxOZCihGifFugC`&EoFaz5wmU3%yyh8?e?O+sw*EWv& z3Sq=>L(K248BeA&0oe5|$3gKoV*~vF6{P9?*It<=xUPM6RD2H`XqqJWS&7?!(M!!V z`d|E4KlIOk z!_R&Cjal{nRxd3M)-pJ&ln%#Mhy|RkF@uuE4Wk@V zI%;aSfnRuHIceCVPfPD{veF> zcVGp7cl5e7sJ*mJ1|sbtFYco5kUZccLTHqc7>Kwj}_Nsh4ING6Esy>%*P^~JD-5ocu?;v?ivTXARBtP3@^P@&JHfj zPB02J))YEY^#_p*Dj}wHnOV)vT5;%<>RF&?5GflQ8v)8bsDEYF{L}-Ni+mxCdZcyx zNXQ}iBfV6zUg(>}vN)#-Ei1>T(e$?3SqLGJ30E!p)TCQD=shU6wT$^dWj2ER#zg&b zZb8baYKFbhGTBtfR^!5{Rzi!SmqXcfNdia3?seH14@k)-LUac2oAv2VehLb3)n3Tk zE7*EuWfSY{0dfMHn4!4}f1%Jg8KegjHyN*p|47OC`u%59A6=fpRvUbw-k^+cvb~~W z=N-y=wG?@vP@rE}tXv1H<|{%8*qw$GV@;Ou2M4B1&Wh+)4kbH)_KvN9yA49AOWz_O zxU~v4(wbyV5kWbaw=qahN+F7@dMV2#{GGIyz19|>97Ase)xZ!FMio33hSHAA+KlTIP`$n73&-VWHM>Q2&z~dD@-*o{;)6xd#tKFiw6L?x(4q!+j z1Ur?B39WwBcF3C&w7_ji8VHf|p~7e)OWVy~E^CVd%)%+H?`X;c*j830G3GYy$QeGw zZ73fKWBFtRoab5~hHq-HsP@9N>SKCeu%}Yx)YP~%aTe6EyI*%x-8BCFtm)qYMA=qY zFBX`%Ue4hy>!*mib9`ZhSl9DYI)zi1n3lGtE@6WnPb#_EnCg(<)003({QvjBcWhLp^w&WtN#CL258+ZwI`I4`*^NZs9Zm+4J5Is|bx9o$QbQKkIK z{_WTvIhgfmbEoKbV(n<(G~iFx70FE39Y+17e17Pp*n-s+?W`XY^ggO4(mFu7gf1qY zEznYWRQZ&wtk!{-HneZ~%CZ*8>IUbG*hlKK5t-%=4McTMh@P5QMVrP83N8 zY%WVklB&$$Y;D`J-}l6Er}fbT8Iq6anJby7!fjR*m89-tnhWIM>dZ`aE7pd?^u&z^ zAaWavr5(j#WP_gkGRcc5><}%l!kjS~)^=wLm;sgw+JbmEfvI-Ah3WVc<94XviLr}c zoGXg0Y}N$=QZurIP54ykkH+lgC0It#q@r5u2qJ^aO^vtYep3FcSARJ*nzUO}DkNws9 z$QNg8cbWV#F~(#QlJk?kz0tH0VTSL$)k!O(L6rvKr4e$#pW)W7o0Kk}`A?6sU9Y3(r@l?J?TMImN>UBZ1)dmJSY;5DU!X;;>s zn!pt4?{o!2M$|p`Kn&+Nm~&`!r#NsA#!!_Yx%XB_!8x5JEj#T4e*g=V3(BHPJ&X*1 z6iG+=y>!xG8r`*#2BV6q-Ah2 z5E7a{hzh?RHD@~z3ArZisko8u!j3R;{U= zrIQ4QjOOu_r{rAbM^nfMJ>)vKG-*vGGz{s)-2G=WLW-8qch&xm8*^iIJh^QO{fxbt zmE5*MP{am0#Lf|C2T_cv>(1z0TGfN2;V1|NvVQ`VGQ7Aco0pm_%gT3N`JC$(&dbJJ zcI;VqrOqZVIffYBBRdSjC;Bb2*~lxy=;qj(0m-jmjatvsNmZwGWJm^}jRH@UPbk$1 zG@{T*6P3O%EJd2n&-~Pn{%>ElBuH~fHy>WV@KtdPxWehJFTD;TBU&dcHS;z>uUq zG%enNQW-un?6_WiZ**P5Cn7HBB5QL@G1TtSzmXTVmtSnsl67Um0_OPZUe z9Z-XQD?^2hZ_J4aO0>c4EM=4vLK3>_l)jTYZfdkDwdN9*7n58=c@-KgrbAjw;*Ya; zHG9B^=cHx8@=T00o4H|iXDkVp2yua3x@26f>VVv zC`-|_Q;hDyK~rT>=p^GA0*MrbZ~G<5F7KtfT4AB&-Owjd?S%28>M9&yqrLP+K^d$r z-$o*ZNEY-2s7~_PfMrbCzpEo0J#YrFm>BOOeY07+$J|hpDR!^v9Fixe*2&LQ_ug? z-=tuHbGEy_RQ|Z%hj~-#l<$84VP@Nhba&o-Dt2pByJ`D3x7vhj?V8WKHpK&bho|}; z=)Tc^?Z5X&f6c%9EkFHl|BL_ozx5xqoWE+_tm905eDpw5A9WhO;**yMBdUIwh0r$Z zNz7kaBBNREr`AbhD0pYm7nwOEuFxIA_Q+ZNSpI;dzmO@qnvAhM0#AQ9^n)B1R`D~o zaklM48+)H*At-=}>Ji}6EYH{i9r-CG<43+=1vC%#=RK8(jh?~UVkMA1Er>#m(NyS`=w zXdF(?vZQ)$viwV>%G5xPoT^@V^5n@oPvgy3j}LwL!3X>qUJp3{@BOMLPg*AlapwJr zpsOzRI2p!ze7hA3Y{9L{duynbgQ;8>whY;i%+Q@1-Er~2Ax|7}C#{iGDWIh?|=B6On8!L2#dASxG3NuZb&l)jZJvfnti#^H_~LaG_LAIKt&2$ zOC85-iZgeMjtnGqX}S73;Oj8tk7Dry-4SeZp7N@1<{0FrE}B-~EwZ=&Y%S^IGCAQe zqYNMLy5CjbLJZG1mYl}wZon+<2YUC(^ zpYaJLk&mI4W15VTKK_)g@CG00uXPv2t^q=7Y+7tpJs~Qsz3W!ktZKPROB8@D`u5@I z($w=0QZX5nE-VQMWkBs_X2pA@oWP)_c$k`l+IPG%&(~V}yT9&hzx=ztv)VZ3O3_%Q z|D!v#$wcC9VmT#0hBPM9+(Ms-F1f#iVz^cMB{XS1BbZL+Kk3GdI0kjSj#XGLMetnN zQ(yFN{`SBUzGEOKJGEryC>jQpKq8_rMr}XMceJuKKUWvs1wO8 z(xyXk@?fkF-nrwc0ChwINXSu3!kPDic(Ka0pb(lBda+=e^xeED`pCl-2&E0@9_re4 z2A)}{jhhX4ltypJ(EX*BKv;HTX`wJNEQlfO+&5oY?!Pr1u2Xj&lRC!h;T{}7GJk-5 zdC+g%8V(8KL<+WsNHbGKx)%9E#wt-1mtAh%ouI%JLq)sqwBu6s&cmi!+OnI3zTKvK zB}%@47i6Wo=uFRBf+#QZItVYK4Az`?6qw5xk1@O)$?i1U)vR#)RfKba%ob?5TBaK(b$9~+XbGN zOgB-C-BsXuQBWAQC%|Px*Fc@0tntMAV&&x4gPeNQn4r0*tdrCVMqv>aJSKfkjSg{8 zaAHgIbdr!yF8^%#jWX*}L_O{;S{{+7TTBqZySx{YQ5?Bh7X>>+AE5$)pR9vF+YWV< z)*|*Q_3j9lr6cspDs8Zg zEr^s`@G!ZgcL!#nBhb%bok#{$*C3GxLwu2b5fT#z;vCb5K8c0aciKQW*^IKuO2w!T zh|Dxf=vPWCwL(Q$oVY;2rBENn9>na=c86}qjgm(IvQsg3aK-X3UWD6X8CtceWlmjM zCEDydL9)FX)Qhk_X6)bG0u)p1ENRDaateiUNwW~W?E;YB8+{&8<-3w!9WQKF>AKE+ zPXD|5C+#MP(gY?A*%6Py9g0ZY^zSKDzK5slfu-$UwK@+hjfuHUU2pe+91QOwohL!d zc6;|}B|SRwR#p39kqjoi_p-|~G$FS}X=QECbFy|t0JfxPo6RkcukoGSe1dA*POk6_ zXM$S$L#&`RiLuH$I z8*XnZb&a1Z<~W%WyDGg+siTdd=LDeZ8WIZZB9$j7dN_6z>Fp3+r{xO43ts*2zW2r7 z^NkMzpwIYPG{1*)(R;kk<9PZV-#zZ{m-im3@|gXQXhmgZBUcLx&#D*_hgB!2kU9+E zhqOPQx5foMXBDXpmbbgs6!n|bL<+$}miiHpAVC=kS5qf-=a8%TRe_v}oS`0(f*g$J zV5*X#UwVP5CNrzxP9Cs^a$ygFS7JuwG^atiD-t51P)))HUH}&WD{FFc3;m*~8e3wo zuKc7aitS15G941(E>Z@`5H!%Oen}$*C_SGhugzG!X3~%1)_WLa$(#}Hf@s-Ro5Rx& zLe@OR$5KAE4-YldnW#0i65!oII4ci<7o?tEaY&7nfmn-8o`0H6L6i;W#^Z|l9ej@11+i2}>OU+hz&vqpGyY2p{3t2dX4vn>QzW|aI(ap>vBfNF!t#c#!o9D z`H=_Y<`RWWb43$UiC;BT2Z+kR#PP001|NY&{2X7Y&%h?rqKeH7f6Q!8xQSTXh9(t` z=eFA#p_OnUoMd}wMjLrnLM9oISd=iytz_Pkgk^)<>tV35ELb{mK+J)TXa0lyQMDhz?{ki8q_U+%s*==98G)zY| z`lRY$Q*k`L?I6Udtra9DppUp`mu{%lHSK0ki0Cv#jNrMW$MtF}#4sL6Jry@)+)~4& zOtCZ4R;xQz^6A^_mB#6!pMzrzS^ql(bF00Rc3YfP!b~nnsMR8i(eak&yIXl%$lyAg zMg+BjntzApWzE@(vIp(jQ4rL%ftwQ474^ci2^(n;2b~x)4hcR?+iuKbQck?H)s#51 zlUOtcz`Nx9nck!6jo@lU;JQz7#GUErwl0%^x|t6rQW&sWGQ_Dg1kjS*>arFX9;fT9 zref?duKs~3!nA{+x3>1@Db3{8%Pi5#a{eBY>hDa-B^wBn{>`gqRY5%)CHgs6OZ$Z4 zlX`;99VGNgh>4vM6V2R+>qg&b(-8WB*)ixn85QoH6g3o0vt)tukO!;>G9-?Lfw+W_ zW`F}H$9*G%%&ek6jA{TATYN^>=q%g<*BJnoUiBftf6;qa1zdX=Mv6z*ludhf61)|#hIv>n;BL0Ez{%>FWntxEV^D@t)Ssk_oKT7hn|FFBD zZ(Ho|xmUYnG<$7OhjPn|yD6cye}pfg%)$7~`ql7k9yv&-}tx`Z06iL39hGwZppWOU<%JYS%Rn9sQRV{N#VY4T;q`DYbHTS>FN~7TsJdfE3$1 z!jf}MHHa3tX=o7-#zJ%f>AC7G%aZJ6;Wi42X2y#pF{}*IZDI{Lo`j}ZhM+aKeP%ah zn08titlS$B52p`FnQ&a=H{@WDc776yBzP>jJ@0 z!o-@A8*Ov6LjeO_o!HllPQ2URPAFP<&oPP5uGdRa%JY@ z7O(u^|NMn*Je0Pd@f8S?zvU)9yspO-TFY*%@h0 z#@n)J=V_sAfoj9J!@gnq(0j)k!ILeQoS?CP#CfTNk|~69FL`UjdLeENeF*Cu-C)Dm zq3{+}W9^wTiZ(%Q;t~(_igUn<6r1lUN-WL;#|IN@OHj5QhXO5vq5Vh^AL%tDp{nH9^l=D($z%CMn{Ed$FhzV{rI z{v!`IHVWTK$ktHr3STy8jbqq{mauAL7nS@gvxg4cVFZQT4mZxWE=2v3c(GVtzf0E1 zHFw@xv~`Z?o`4FMqMY}2ml-;tFrV0jInof#-yywcU3SFW!f^#}N2;yZGyyMRu;m1} z6e2gE$?HGWu2|L3>K%RcN$W=10p^Pt+5&B3#C_la(l%F^ROyQDz7X&4CnHCD`AM;-#gHrZ*P!DC+nX)@5x z++Ofmb4!j})$0+*7;nw_JAU-X#&7()mbU(~=f=Af`d7{AODl0f-}mS>jL{4LfS~O9 zvI`6vZKq_tOB2fXvBiW=AH6EnY}?JqMb4+`<@ZCbQ~!#u{B3W&^MfD!(A#gm_3Y?( z9N$|g6?#?_AijL9Vh?wY)S3+(TLww=3O;6&ru6tr7p5=uS%~Ug8r;XQY`hm1+Oi;3=akeUZ!W`kynY4c+>D z_W|B}Up6jmtZ)@!Baz}aeR}gEUAN?xCYCXdGQ27YgNr4Yv1KdUokM+U(N{~O>>ea3 zQ&(*bdE?BzDHRuv4P$R!7zPTBI60Mdo_j$G6XP=j6+i68xNlU7Uf9)kZ}Dkg3hlkt&_D5{X|TmfB9YQ_xmZq4#M`7^=Q3ntH;+>zRJNFXiWNi0=D z^(yWEY>u@Cpd!;}5RFSh0pEfU6`_FIv9LTzlGB=5#*o#}bPkg}CN%uhlL9(im@YLd zX=F;?6|spK9A0AZR`sJ=If+c?0@Ka$`*)9UATte~0;#^ly1W` z?j#^5?5*p6Isv+w@nE-5?4hK>JWUTA@`-1A-17X%zxJf=pLu%5qsP8#56y1B-~o8Z z0ra`O`$TfsQmK~~Iy649fQKw42OYCX2A4@bAob^Z zv^ixcv9XpHrHwQRVW35Kk+9J=6vvIdCWjjcDqk&%Y2SdM`Okwq0Y7i_1Uu_!IB?qAz;% z9dCbr0}h;ruv7}JM6dOLcbp12OPOLO@T5a&3Zo(bO;f>|fhTbJ(^RtvSq6w2mN>Xj z7~(M*{Jef(&Jm#koLFQgSwJRDS*o`OhGUcu3BA?y(Ti#_n>2s=dLnIrkmD>COWEv^ z=Fj|Pcq3Hk%lT)glU0e0jLSC!E9tDX1p(-(SZ7naaZsHrW!H42QCNk?qA7Q-(ThNJ z93$k(E|PO(xJEz3a!Lob-o&!aP7CH1KO(Ml}(s(-ME2kjJFxYg^?)`k$(_A6g zsZK`+B!fhdcSR#EuQ{o+0deV?+>9i1z+oJag5i4ttEus5^{+$E+432f(q|bBMhR`Y zFbE4{o*|-$8LZxD$R`tk=A+&PZNa>pQSKTar^sq$j7d5F{YNLZ2}LTt;YY;VPA z%B+l9AJ?^F&1N?ECTLVdXngjT+pcENf7870>ozs-<0duM0=#0Ha z@_riJ(H%hw=cM5*%S7u`MK>$+3mzCUu?`XqnsZY75m2X44La}WKIT}^*b>YVI-;Jb zCXEbpkTB_W{{a{0w8lY)gIv4Wq7)9G4MxErg7-j6u`i0FC=$iz@ zPucws=@H7gIFU|m$5;XeqLO4ccqeFnKE~>@Dxo+ZX$Z?>+)j_Ri${{{T@X+i)m{@G zBk_TnFFQB~IrXHmfq?K5j|WX&QeJRQl4mV1xS4{=&=3VY0@sH@>vL8wc5qtU>uw0$ z0-+la^uHht`gZF*m$DYdb#h6YPO&Keo|HmwkhmWa0lt8HTQqAQ0hdMzYnC2Ge?&0$sfb)+u zG#of9KpCaY$<|#jX$orI37{6@5MJ}MZ+q`Ie#-~`r`JC;+rVd!1K!lHHnd`~T{4J6w7U}L~)+ET=K_fKP4C5^)5!WX;JJH zFKb~Nj>a%83fM6kJtu~=C!)!yVSx{{5GMIJ1CyoYiOQ?<16%2V%4a`AsRJ{Vrp;gk z!!bC0JMs?ECA!}I6!##PFULhOEj4t%<1Wia^`tSER~jh0>YL1_k)#gR8j2uiYb`b% z#4+?fa(c7;)g#$*t(GP-UNvnC{`<*%bKph$T37re60hd2r1;DuPupB+eSF+>kY)V} zOY0iGZa5$2Cb`f-Q?kU|#kan~{lw%r9RIw8sZyat2IVP|KtKUD#aN2C$Nq~LVxi9+ zZ?$+TmWkg`iUX93(k;Ry(+B#4Cck_+{!1`yT=9`&z~uT#Fc}8i+!15}4-Fp} zBf{)F`fY>B2>^T<04bfqCq(!5j4aFE5_&LE<7OUsu(JjSp#RBi7z17TnI_>^U8Co zHvb8|om`O8xZ_x5u?#|Lzby!1O-0T z+=3E9f`uc)Y^0zjXNVD9WIu-dT4xciScf__6@ubJRyvOy1vM})>MS5a}#4n8!yVnzOzrXn`ZtkLUJdw7<8 zIq#*c3fNM@4VU-qlmLP%=ca)fW>Jo?$x!w)lIJFEC>+qxolkd%35}5*x@=gxNZwHx z8-hJ2O@+%vkn|*Lf}SV_E0dttWxU?ruoY_OW|%1ptXgYvJneFxPVxfuGfFtDX8f7>|Lm7Im}f_ex{()<+`swhum7I= z{^)1E_b>k^HGSO>I`^FHqtBHW{HfNB>WR$OENrh+z^Dw=F>V_1uY`3rSa&Q3pwxB zJO_tEye}%h*uhqyNtzZf<5`qcR(1|Zc$1hX z==&h>)W9&dA<%rT_5cm24mRaZ9jyvtobxfX+Y=h& z^k8e>gO_L4;oN9#nGD{8-@@Qx=AY$LgxO(la*gH6muO3F?M8*LK1W>(l}3f6fklhPit-}3 zcUn8fNYl9*q~y{tYNa@dUT%R?hE|+)_{$IuY{0Oca2k`Hoz2_DzTf)cAGz-vzV11l zihHl71Hir4Z~q#81M^SMQ<14a0;cr0rPsManCpV&YM4bPF%NOU=R;is(8LMF_TjoO$C zomVnD#d!?K&KmS;Lw>4VOAdpCI z;gJq~$r)0;g6%kAkagfJIiMlJ4!84}L85U1%Hn2ko9&N$^XsmzZ@%?)|M5##3{9fO zxdx@QET2yv-lNImNizV=eofN=9J8gMVy85SOyrsGI54c|dOx}>3Q@A8MB?+ZMs`@E zH%QvVp}u%Zf!LM}Bh4V+b&W1syVeLpjE1_lb@g-N z)a>l=hp%9r7lPta`;HP(Ls@6P2DLu@@K#)_^#)P&8Zf+U_dEE^^t?}0{f4AM41L#9yY-H^>j!c!bDEQDWbmi zdTJSYz~3`xHA|&=47>tKG&Vv&R{-Y-kdXHvt9XuHc)H>fXH>Vk-Z1u$@>yHGU0Qi7 zK!%MSd=fZ;^ynKUNIcFqq^!)PYaCh>neV$YF0zg`_0)7?M;0%K4EeiR4jCH57)%!J z^;SoN>51b*kwsamGwk$$TGQ1VjGIO%vTLYExGo&OgH5-o%K^n#n&~-{&>4^&pxpBk zFNI1*88w9f8%?J&egbehkYv?--hcJ%PyO_bzw}M_4gkN+DllZbL}i- z8n;ubO7YWXHR`(P#pFR63hbpc%|c{4<#AFUA>N3g14&cK6_!n$RqC0NfQ=ILn*LNi@s=xCKtsoZ;P0D!d8%`6vFs>Pc`)9zMMC8RO# z)b3OHIwjYl*AA19O!ytz_d|1fm*b)dE}i%~wxH6WT8%Ay;kt8>TBq+%sHF?-hf;mn zrj_B|=xv`Utg$l|6Ex66%|9K3-g2bA+$~vF;c=HBXwKPJiSIfOZ35%9v(~xb<-A8Y zOHPL!@H;!J?(FqWsG%mT+K{PXLNYN@OUKG&x*axzsRr(n=lFzkj)Nkg_bnafR;d9T zNlnad9J(v;W{&hwoR7UaYnV~EO=4Du{Igm0bLQTd`SfUu2Ohe5?FS!U8jLa9WpS&k ziKqQohmMk7G@f5n!%-l@z}#Bhvtf`3nq*P2%?b^jJ4u}4V^MI-{}pGSsiZR%C>Am# zWSoOgPC|Ks=h9rf+x2l=jMEFh^)LTh_docSZ~TTAw{eMf@4DL@U`x~^q#D&)(I{Dp zgSs;qo~Y_IWNyhX?NoTM{cNlsBC5^7H=w%|UMj0owYf5|IC;!EYBej|$EY(i6*A^% zB>+A&DOy7sYK0x>vJGe!)-&cbtWPivP^I04Ezy-!5q2o+Jx*5ZVYZG2;oe339(g_lz(fIetabIZtD* zrhTVs4rg=f|B{M}R*}Pd-)G(XXBmnbE@xvQb>tbPg=N$ieNBj)weVptbF`4rcr)qE z1jk%gW1MyCL7PDnMC^MgX1POVGle3RHi_iVpF5K5RbwJ)eRVG@`Wn{*s8)swV;##L z{+@KNF!4kH~; z+ZCc>g!AUNS4vGvkCNWexzLg?r2y!4t#;TG@^G+Z#8P!KoCI=TEM!h!FD{-O+l=d+ zh1QrFX&B8!$27$>@UYW(>Sy2l5Xn(IApXt@!%v{sngGmu2LQg#?cp)T9UJ3)zkW3l z>*Poh>Y4DDD?twc&H%rl;k~BaMhcp$VD`7wg+o;c8c7xeMKSIK!cQ*C(0>~x<9YbN zYDjAyavV{gLHDX;bM&uCJjQk}j1A<>Xx&e4?-`|gj3D_Aq=&9Xp$LXN{HH~-$tQ|) z!fHk*5(R2*>op+`eW z_Rr+Zyl3M&yXGcw5c+~s$w!n>pyk|izhp-cHUf%1cZiYtF z;pEL?qykB{EiD($fvyeT$w|k>h7wa021E==s}MWxyXvIK_*HXTb)1yeEW#=R);P3p zvbU_wuTRAah!JNfmzVu6vDXWA@8`W06;x+UG5(irLx|Y21K_0F1RzhT(BkX{eKk(4 zFS&bN2~RvW=3#Ou^(HHI&%pwuzkr$IV2GLcA?IhNP{m*xtUQq;Y)^zl66kp3v?h)Z zKu~bQ;ABTm>_oW1bON}t1sFI(RtZi8UV^UXWDej`eD4?j=xN4+Ev)IGhJ~Z!xvc9Q-kEtWhee~n!TY2y=ef=MK=TH8|_rAVuZ5wf!9zl%!@HHei)$o4%Ulf}3>3lvJuW(G&`deuOa}TWBAUAf?nfB+2{{Ok##NM_>b z*X=OalT43sKF^&pn;t>H3p0&d&QkFRnn&#j=%~!a-P(AwjLaSXZNyoe9UOnRmH>_o zF!s$7Y++wAv?cixh~!vgkP!XXOCQVdZ#)G-;^_;v@GP)J-Fd=3+lNNc(rP< z=~>d@SjD1&=b;0RH1S4LK74P`_#)AxD0Vs&F;LBT)aBZOQI+QM%&*QIn05?9$%BFv z_86doN}R{lPOl+9(O}9a#l;&7YNn;8Q-88bF&3e_qMFAmHX zqp$TrW%m;BS|D?^39jlt-4bhvl?UHBcC_=G@;P{24?g}1HU=GMfZyf9@#FSo+r=jB?>#iq z-S+U+DU92XKYN892x|c9sA;^HHHPO(XxFeBc}8}c7$JwG;K*1#SL7sd5vmF*rYG`b z9rt;obUEgj$o^5NC%-r5dQCCF#x1k_3~CWUO|k{-piLx_v*f-;JaFiWu-?qVuZtRy z3lxc?@Q;Qx-PsK5>kL2zFI#rG`$EGqLF&yVsG3_0P-((r;^!lIr`5b3X~B)5ysoNH zz@G`sn$uS2*soxNb7U0aEwZDe9D%r?=&_dMycf2l5oi#cos$$cI(1AlS5Gf*tREER zT>jnnv_3avkCH^BY0K1pa3C)mYKMw_2R;t&5#>gUxjd$68k7KSe@smXKu9^S9pfDn3(UaU?2` zqd$&GvSl{UlE51$6K-lq&M1`{E4h-F8CB5Olo{{Yc(8F&vAB7ovx|lvq}bvlaz8B{ zO(g4m;v7B?OB~Pqun(Xssks>mINr+Y4TpmzMhH6cbzk@uWcAIk#*qHE)<4&4ZInp9mNXlCC8+$Kiy+KD0u+ zcP)g6$|R3}gNIOzFesnB+c8h80incL1BhR%t5C`Gy5rUfvJ($Rn}+NZVa5JoTu=5+ za?n9&zL!29a+%3ZG_)8bXp7rrb{6XiQ5BL!hB)PXvrr~jLD*U)Dp*r=AA)*Ob5E|6 z8QV2D83g2sY`}nZOL+pc-{rG2QmF(65FoFe6RugJ9vYt5elzmtm>9Y4LFZvR&kt6r zzV$x)I#^y^KY43h55M!QJ@}ycJt@%fvY4A4R*!qH;}y4_wTsIq?(8o$=+BUfQqpSB zzIgm(LyVg=1UOh_QI#l#SEXt`>jOuKEnP1Is@&`hlKz#jot|`=k&6{dy_Fy+ctq29 z9P~MganvI{lnEG#s#|V)YVk%JU8$x=igA@3Sd!PvS$;?z089*Rm92>_PZp4nX(Iio zM-LtPoFbA~XjSNwfFeq7fHNrNNuvm!StE4(Nqo7+GCaBv%2|YDyw9pQqrp!!CGeQW z#b$s7gB{;Nimt|aUS1Wu3^)%ML62^|vFl95)Y3Q8yG%|3`_I~f8)+25wkk4kd!(!u zeUS{{0{1};72{ceD1Q>V;kTtTtdWU_AwT=Hnrul14&4oQ1mcw^M)N#HHi@$h*~cLs zU*~LNo5kR7$GvnY$XUov3M=Rn+c;kD)&pJwXU5eurCY7tGdq-nX$iA18LT5FOejg( zAoMCUO=)5#P0lfJ6QRe(M2);7vwgaH_#>Uj=q%!Ab^hA8BSnv*V29@<1!v9jJ)j#e z;WckQJkrb3yIh{w#MXN|`L>Vo(H39zo}Z7K53D#WJfl>Iu>j=|NZs_K^AJajT*{nv z<$cfef=J-%_}D*u!>_&WKfUvT4?VH(K<;d z{qCo~_q!iT@X4qCdtdX)zwx*H(_XP|#Z2`fFtABIegJ~*b`R*Z-tM|P)SV~tx4q`= zzx>wwE^l4Wp1G=QDP&QMN-#)Op!J6WFDxyvNfkDhK3`M#R?369oH|mXG`OQlD!(V^ zb(MZX*|f$ghK{nbMjIvZY!hRcVFk}S<~=V% z>uV(+gN-neU$fs&g(?G10`beRe=_?3bu+@yF!heEAUK{$m^2$a-se3&*dEE?No$}5 zS^WoX`az!Y6j-doB-#%8K%A{74$-($$MlzJNoCk3Iin>t#eXk}YiN9(t}lYjta=mz zaX=H~ql@-41z=z6hfnlb z;qwxi(~)P%T&IZE#U^Bie0fu0ZBxQ1#h2(JD5xedH%{o%l;^>)?yvDZX`)Og!X;fW zr%ov)@(B?pih6SJayuz(Q!ZZ8oEYZ-LP!RRuFu@&a%E8#0GSpVkWC_`fP^xgTm~)g zBpMcU?Lvk7o+E!`vRF@%Jk!rq>o^*`P)Z2?ji6o}YE##``eTG<8?K|BP-e}esH@uU zNI9#&&{!ppdSL%-`)Y*tp{7vg{&rr=I3@(R6?TNF8lllD(?$reC(|p#_?(BlE?G4> z7!^*ighqH@t3!?evGrNB!oQ$}pO2VK#-?MG>MwN7xan1XQ{<;PL21WG5g!sI zQMRi8KlV4jqkq;PS%WKIWrH6eQ)iN)~+t{n7M#~DbSvcc=(hG-%JAEgUd!VA8GSeYuEeuwg2TG{;Ti*f!5md zzxWGZ`=dX+Klnl~tpaii>q91OtV#9`{NkCG$<9Uq*);c@QGDs+PrUKw{So#&CIO`` zWiYi4g~H5-uB)m5xzn>An2qomPk%VN#LQ#Ez>+cw$V61o1jQ^P)yhrz3MJJ5EpZXF z$ZS^T$?7(sK|!fRDv{80Mrxj*!j0misn##2zPVMT?#?qPsv!_E)01fTV7kWH!=tIs z@l4UzLD5P5;L<*IBugNi%-*ix}?+x(@CN9uC z`+dtqg?wKS8)x$D(92r28(RitN2Y3STMIkl%#@=bE)#~1kb%oW<>JzWNfZcarbBvU z0%otrJ1KMW32Q2`kaIoNiLPv6h$OKNK$+gpa`UJS(qmeE`^GdJ)0G&QGlWRD9c`vM z&m%af1gNRi>dBsRJ>=yP%ia(2hk^NXVjZ})x@&BZ=nJ9>vtQIDVya(`{ev@vI7{dB zUCHkoXMk^Z9S8u2=>rrqd6L{2lmznDoRof%fJ%18B@Cdztez~QLxjm_?24?T$W)q2N?T3c zd;?>x5sQ?@q``18gUU15`U0^5Q*6nM=`F5EV5MDJt4=b}^!YD`gkEb(840j)oZ+T? z-eMc+{lVnwh!K@+KWQ+Nb87UHQ=~1I_ryNxRu~sS2RAEW`}%A)Iy+30rp`$%blRN# zbTOx;Q)UwgVLUMKIvUdA6XMW0E2fE*4b>fv@owsk0>!GGS0&JU-i@4RXM9k?qb$nO zKSU0G2gEUUr*VK9C}%opHR;thrb>(gfa95z z;bdlaglgub1E+~&dL^w;3hz8Ii)um<7>kw0-e_j(vTs3h3}yql28v*#UYx%lp%H}>kXk4(eI_psj#d_qrG1ZJo^5QZTg8%?SeF;Ki z9$#G)>0BzoYqttMQx+?X8@T}i!hn{xt1v}ND@p!_&x(m>L&&Y^4YkX(XfC_tB%jYCJp!ZAKYZXFNB zpmjUy21o*z3GB+L_C%=Ndg$s&%tbi?3IJ6=s=tAZ115}N3oN)wMx$nL4Y_ChZJXph zO-A}C|JIPP2?hs84o{}x@S&YPe2mB6_~r-x!+-zsce!T#M0jn|j(xI^MV=!LyT0%K zr{3^=+x2zxZN`w-j#-fwQq7?s!bTt+phZFKO=naT9-!DHMWS>tROOkMFLk2JPRg9% zk@=d`pvH)mpi&YH$PV(yCqss;5F^I`u6$%_HRj^5QqH_tOvRbs2!Ve7UaJ*7vF}2h zv*~I}#eXX@Z5Sok3Dio=Uu?nptn}HR)GWSJ3H~r~rPCBvC*T z>L7d*eu4^hTeiC7gHuSV44N)jH*$wu0@>p7D8LNGaU;!oossY{aRyBa4L-!`!nYa| zukJJ}YvLnj(t~#F`>ERCxSpM}S^W#(eh>tgOno~qbs zbvz&sadL7YqN4OmxU^EkW8kdJ83{ot-XFsr~HZqr{sbs z{!-V(@$jq9Rw^4gIo55lYT|vq>npzOH-7Rb9&Y|=X4|%{RcgOuRBg>nrsMG+#GhQd zimPokrAz^$jXRK7_~w4G>dMo8>zTKF`YSJP-uUwO|Eu=m7v;f?c+z}%J4ziKIYVIN zngD5%L444XKR*Af{>-O*!5{tD&%W*9Rw>Jof?(*f*KlMQoQ}D!W>XgB2WF#X7+rE5 z-NmbsfxC?Lm?9AH9T;5hIf_hl3MQOb4?!EifhKDl90rDgXG7F60mn>dY@uv81|8x) zx2&tU($l8n?Fji!(FiO-7=X?5D7Cwr{&)X3q@O$NtsvXbSzzF$rDOw5@TFpH)$fqe zh2NrKazQucqN`h;$uSfo-P4soDIbcEpKH#xM$bs%o#Hr99m4ao5hO%WA;!Pc^x#X_ zM(EsBAPi>ZT^~LT%?Mm!}$ zuJ5u&s~3^YX*4#uFlLhd+Gv>t+<2bXBQ57F+RRjct z^zlYr%75UY4prkX&#!2sO5(p8fXPJq7{LWjnOsVIMb@P zyAJCUH&xB90NyIZ* zxJ=5qQ;=BQ;xb`2MYQ0Fg~ZV-!kH$mgOgPxU*ZH(IXYADbbR8+80c=?E_Ekd;c}3p zrjwO4oy`iT37YED5FsmPEqL?67Rq{d`i8oaox!O?H()MkQVd#lh<c0(8A?qMbW%CSj#{L-&SxiEiNC6bW9EU{J)IGv-Q#b@P z(APe)L(|PJ$h^eP7NgYfdSB|Hh?K7KV+tJMjY->7G}0&6)Cbe~LvfIVm}p7YRRG#o2Fk0{4cBAEz%uMY$U} zjoXNU%?_<;r6=xz+V5O@7i^;(tk!&}&eY*boN0~OpiEEz4RuhF+|5Dr0V6d#v(9p9 zTcyEH5iS#&;wTWZ&g(=6K>{@tsD#Cou@ykc9<($}X|vhaqbL!>TG?2lm{mDCVlzr> z_90YhRi(t;)gC&|8@j?d-^xQX_UJ~>3^zU`RSVzAuZGmrzLA^ty zqX5+ZY#XkQdGGB5d;9dS{_^peuiRF$*b)SFch$;hz`063I}_QJb6*udV08-rrRYpuJjx%D1x?78q#QP;37332wTUQVYWT*=0#jz zKlLl`dGmc&fBa2vy8lbRV*RVrXct`u&=4K*aGM;>Z28xPR$O(+HnuiZE@mn2OEX?$*QP zf(Ytn%DU1(1hhm@_XOA(tP`6f;|W*DSgRQ;P)zeY)1@er8$`)+=}`6=o3vS1n@C$) z7{E8+ z(3a{}04qSLM_0Wgfv)k57_(N6+Y|}+J$YS_nrc@hIBx2G;$#GS(Fo*y7DNcghK9_8 z94J|7SlcABOc#xt!$L3(8P?Oeg=Ht>Px*r3O~-1Ot~zy^ z)(`JuwgT&l^WoGoWW-!#M$c8l1>PW4qt7*^Nx*B6X`?Npr`M(Ec`i6iJ3zEg4%)cYQAkP5bB`;?H-07%{89_TFY76vIltUlS-#JX1M zESgp!cLCcp$kPGWyY$Aqz6`SDsArvBlIFzyMnmIN`H&?t8{>`*2q0?B1A$koK|VF* z?9}0mR32plIUzAMnr*;@^mNbH; z+(mBakF|JUYp;I8n;6BAJuh9o!{&QtpgucIh0>SDVE)Cv|HKQP|Lil*K0ixIzrFO+ zlO4e>J_l>Ikk}nQ3}dRdr4SB|82l7a{Mf(55q46TY;%k|`+k3tg!euE#h3qySAO$1 z|Kb1fzm1D48+$g6wU(-OtTo{H??+P`%jz0Sj!${X%fIGpp8CNbyfVMCWbXi7!ZTYg zIdUM5=aUlPF(Qu2<`4us}2F?_|`}JAj6g1b#eJk zz-i1={p4wuPLP$O5R7%K$ikY;n6w_&j;4;yny84Y)&%s`v08^x5-~BnoZ7{*Grp)S z4lQb=HD(p~XML2QT+j$ZXs0hvDibBM=z@}vB>`5RwjCL~T1AvYV#mk~ zbAiNj$@DHrCQ0rMXMyF+CmLAclZ8`dDX1QKovB)BUs~PGG>m48eL(Wwl@**tJ|5i; zfG%3#>*?r;rOJ5`=JdjZ4aU{87bRxe+5>0}67U{DGBU+w3x7h6w`$bMJeE`n(zukT zh6z(pUd(8fzhJpbO8^*L;<`~sU^4$f4b-)8NsR|r9r6==q`#ejPMymW^W=xwgnq7I zW+@He>sQ-_i7>jydA6-c?npkw=>6cfh+w*eC zE9G(OQ9{w+O(6ahWe7MS13jE7= zn|&B8OM1NWQJiR#@!)}YEJrl01lQ%@0l6B|Z?8og-nDGC%06_soZZyA>1@&AR6)J~ z=eb4j$9^TF?NSw4s4-|$1R;eMDr7c@A&_XFwO25X5n+W|H2C!EbiP?D$#0MhKuotV zY3fK;Sk0%zRZ#*Y71(*b51np^-gfrq_{Xj8i`jOGL^?;$)1k6p+I;O5Q2$eu&%D|p-j`a~Az$iXR`3=`e&PI=TXbrpC zFTDQsANip-e&MhF^4_;?&-m%0q+2_?4@x7%F81WHnC%mv^9%pM-~XY@tNS7@Hw@oM zcELs0x`H_72+mO%(cyLGqmBRzrjc;ZC-?zwa__@QH>?*kv*WS-`0o$MyCcUXtNk#(E9zq#PeHHH;Z(&4GL@*YRL%^s28XN6N@& zFy~3+>L-oe6`+N5 zi(D1ToB}?0VrSw7{(06X$_eq*0DOb;NQe6U1cfM9=JY z`798^q0Wmp#P3O3L5ld?XT(*%b2{~BpW3&J-=#Y76XX@kMDBji15hu_LzYPY`so!N zwT15>)6T8+9qnbfDR~Z{`F|$WPSE1c`2Y^V82m*7FejZ+%+o%Q`LpnX1^7-k?tpzi ziDqST%vM4%!qyU$OMVllq+rIFuVZ|Srhw8L8xd!fd1#8gENLm!&!{vdfXo)6e7|%} zO>NScQ9#|-`QVGW$<~jtONV#A&R5HL#1uniDM5Pef+|)A{P4h%2h7$c{ShG~UUu)!fKfCm&l9Rl z&kLZH>t_t%Y5`hHmSST^$nCjnhj}~y-#T@`n6XUcOQde<#1iRIGJq6yfI|ui68w|t znah1xVp~J7usDZ!ub|mtJjD=UplBInTLp$9r_-H{T%m%5LiR?xXGnAu|pCaTU7u&1<`hWLJf9=~Y zG0K^77>t#d#BRp=g_5br5K+!6O&;Xl$_NS_&kPa?8u07%2V;Vo>j5mdSr&IVxFnAr zO~JP@NCtbJ5t)hk$F3vB?BTmUTmf%!i`7zfyBq)34PCQ26h5l(QeYu8J)91(!( z%Bb&0W^g{XNxd-O^}sJjf0oi^C=~J+sFo2~DP(=d0WWMEaB~ovh()voO%wOCB~7(u zBH}u1jI1XZ!2?~=q>jSU;o8IJK4mpiFOxYn_*3$_tY%KD^a|%%3;K1dc)GyqFF8)^ zX@|f@Pd;hTfKvc7$*q59Q}4N$lJdc|yBd}CcWGOl)3-k8 zNDg`ABRyl#$?bH3yw>~QF~not3#sd59fdq) z=%LeUhF+RyUx`{M2>8HQLctYyidi~{p_q~^N(v&CLkrY1Tl@UCzcXMyu(Q%Q&aO~s zARuK${ngqn_fzjL=J}2zm^oM+rjUs#_tdR5*or@rekc8aZXh@`_^V zJZq`YAskE+B&CT#t$|1oJYQ7#=bx_)fQ2lgRI~=OnTk0URF9l7$eq<%Wq*a0RqE^- zq646cneA=eJg9*vK!dZSR7@c!c@(|{)_D^#Cxqb5-Umi%lW^U`utTb_NnQ_`RX)x+ z^@KKb&K>VVWpKb$uRt7=Y74o{dB<^#&A-Hetx0$?xeX;@`^=#S&VwC;EcMh=>BEPY z?$q^YE~D#|xI}Z-yaYRXCU6!6QBZk00Rt?rsTOqzSPQ7HazDE-+43L6HlWwew!wlA z$evZQQm%*VKa*m|z)DWs1=*6L+&Q`9tea6b=mw@K?BH#h_;wf(&~^-Vgm%_Rt*6$Y z^^1GrIwsUWNRr9A2JOto9Wu$YQ=!4h49%?`XKLhJGWJG?9d`24P&0E3E0Pjrz)O*d zBlPro_!Bd_A{G4z#p7VsSR(;+o&wHj^K@z#+kV=w-|Y5Xd$>5SBREf={E*B{~=7etIwrryQgsf9c^YBItj@+e` z=g2me&jVUEFt#DAl&!)5M;$bIQ|&1ZH`j8g7AApw6vlWC812918O&@-#WT!8_t zE>A`9WRI67#vHgzHr2Ds)fr&fX!VYgcZ3XqBhr`0E1=1Tu-GkQ33M&Wei!UX_t`Oh zWnMAIHUucpo-Fw#2oEq_jWU3mXsvXkDgb`1_?QkW`RRC&s(3x`_O>P%_dGPGLT86` z1-xP*I!cl~a2!Hy0H8Z^i=i1X#=p@>eeMfez1P*78a(Q>8ZRl^vurOx#rQNy_RDw6 ztjZ>HFF}b-)9>T#iis23QJ&k;6w7INe0a8hBVzdS`&*|_HGB& z9Y&$G(`Qh3K0jGjdLEQM_UJP|`|2-w?YsZQ`nP+ui+{cLmk_{fot$NX$ck&2_b>TJ z|KP{}{9m}w<~BQHU2RL64%Z|`fYO)H#TZ%tbAyqhCYt2>GyIQ0Dbt}n<<}!L)M#MN zPFcly7()fSzwr z&leBXq6SF|P60~jE^_gd(-yOm3Ug9sOdU*t4|x=+^rJN*kKzLoK(TJ%mERhr`0zF; zSH%5{Kna=t1ah@QK9fBZOtu;Mq>gyBazax-$2dL35NIU526+sWorH36&{C7D!9LSe zjD3?lkj)mZ#>@nuk_#V;Rge12$3Q1H8|7$w4m}~8&fX`{* zs=*4DPdej+>qhQ+=>n8GGWq`KMZlfX=nR;L2V`9h2B+{L&juzI#VJ4@rTJmxccMK; zfn&`mEILk6)8ThXMbWDEvBepH*das0G7Zh51kyLq^?7;Gz4*An!G&vi<`OU`TN~D5 z1%`r{ve+qu*&-98?qeoRArd3ltwLa+OLkeonPb`k#F+D`pLpy2-`=kNzt)AH(65z8 z8FiQ3QvvB^{qphu<0tmpw{LEJCw~IWV7REz1E5QGwW-_gh%v7&13Q`+783BqT`JA- z0gsfk93xG%9rb0Z$;F2B%(erM1T*jkQ$m)6kez1-U%ftHAK9&Q%H7cbVp9M*X_A03 z@k8Oy^E8$QWSk(cMB{SRo3j2hs<@lXy%gL)?6VFA8!gHt^D{?S18B|DiS2Oah^U5- zUh?PQd>OJ7Lug6v3*#uHP$5pzKgcNHR?2dgQfKOHfCIwYH&HMr&8SXO@!BB)vQ$@H zGNi2aQqPh?u-=43a`lJ>ShBXDThiZf$c?u_23sRUA>qon7e$w*>03eqo#DbYoTpeS zlrr4p;q@{`uWI8!<$Hzdlp%{M>7d%E8$EeOaX~KdG+1Q_GL;m1aLV7v54P|R+@`R5 z7_#%=o^E8k;!D#+h+#E-^X$vl3CAe63s?3mjo;Pz#HLWuky3-K!Q9lrTURW|F87je z%QVir!(;)em1Ck3aITjrRN{oeqfE8kMz+Yt%$~Wgf>NEE@9Mb67vS)2o;7q!;HFaj0!D zrmE1|w&B>cQ!?Z9^nrvn&7PUqb+Evc0`Ci4a!L#eMGashsY7;S500SRcRe{saCOd&| zh_b?tN#pczZ8BEK9uok`@T?^M(DA{xC@t8F*0+u5^3QJ3h@qq3e zc(s&Z({Pp@y2@FDU{Ou?g6X+q_A`oZj$g(55a)I(tk1A*_mYzQ| z9C+Dq7)ILCpa_}Ame%x@A?7g471BfU41+~dyz(68TdL2xU3Gur{qKFm?g4M^dd0F2 zv3Gf|`afPzb@vZ^U_Ihjecss}(IT^L`N$A}n)Wxj$W)sjLwS%4kyX;ui!dO*XKIs&>0Ht0U@pAx1K=Xhs z9cDt2IfPKuP?^|d{^jsj7_%}OuHR=ef;Zbd-6gnT%{(~fwxz!@4iHrN0*6dM0}9u{ zcSU07h@*(WU}L7lbTojS=@QHKikq;NX?{!qnLXl^w|ahLw@nhywVYDbVkx|oJn=(dY>}^ke^vU z%RM-$US$x5PqDHw-f0N3nHD*nv^k>$B>*&b&NR-38sfX+a>#PHp2*>BM(svuG(eBb z-!q2889s+)-yCZ)$(|GgeGNxp+z`R#u00 zJi$y*%ujxfF?@UNcmIul{#U;9!CXvxAiZD$1Ju;U&Jbu+QJhYyK9nyWW%U~E@P{JVePGBFI_Iy#4W& z1nxt{En-shV0 z)CGUH|tC8~_NZJO-&<*P_V-nL|b39l{YG`EIU zcsNeJC~IT~fYBWQQMS#vwxkV=eQz}CaKHIFg{jL-lvz;Ouh6SuWzBCmVTv2w(41Ne zQZD0129*_+f;aNxd(C8MHihCRy4|;n;~|BX&kSwc|daY8DM~Ck2(h~7rBVfifYD;AH5Pu2%#!s z&`VR4355m&B-1H4U5*vH&XDY2(4^x%by|paILIX!AOlF%n0t^qQ50Am%B^AhJlX8q zoezEF6mjGF+OBT=9@LB6k1GVk~o<;$)8mI0no;bHtm|nmHja*%?{c4&hDs8n@^9V|XLj2~+nZuJ-AB0x#0n zQ96DcTLuq`tCuv{H<{ICfhGjo3w2|}mam1?`T4TJi6MI(30XmA9iLUBdc&}22caWu z07oGfoIT^5Bs73Q5umWX-`*?QXiCD}+M!xMv~Vhla0^TKuL8iy?^aL-%i(nd+FP2> zTBXppR?6Op@{i9z{=qx2%T8o-|^Kx_tbPMs$y#xoexTe|w8k4-UBlgW%# zYbfIl4abbQhtZzdt1um2w0=ECH+$q;|BF0*^b$xh7(?PQUNN+T&kj%daP6~i_OXwC z`0xDBpVqd0xik)iJwJ6M%SN>eXaHnglNv${^GjGlbF$Yn%pkfWS!7kuIbWL`_k_2t zero=9^rp^48Jj&|_Lk3m)t5hcy|&;z8XcMGa5mlT1)_G_%sBuFDyw=U~+E z_g|U<6+hDXs5M`mh2Us1@07tdJ`UVC>F&^=Gzv%3EWD!2?-Qj~~r{)`t z^Q9)BRzd9>B3=71BpBkerrvv=oh^tF1D=N=HzNEantL4WACMF{tAfG_=v3+@8GL2OG$kM8VOmmAcH`KM zpALxUWZsCY#ir21Ng)bv6JwSnw~agoS*IFicrBkvTS#qC$o!6*Vao%^;ExgR2p<$+ zH-qz#ssggd2aZH@I-tQgGATfj^qBPmIX-HPan;962Q~(S=bU<(IQk42cQm?4l1+qF zZZO)x2v6mshiw?2k^|Zt$oUe{T4$upJ0|6#hT`B82(*EzSZ?7YO*4E1-@ea5+g-Y* zLsTyk5y02Ov466cx=uwkH6fp^_vU_S^Y*i+`)0&bPukUubHnE+^DE}uQt5T?b-W_t zPT1*v@4eG{zqRIQBLxc^kRVb5lWHC{hB8KY)znuyf*|_9gz+TyrRC_>cS=ihb?ewt z(sDE~1|G-@uo5|B9|lWJmi~$H&f*37>WumrB0bxXbiXO9#sD78Hbaz1T|%Wqpcrce z*-WG6s=1isEJ8~2!1&z(+R!HN$#5{VDZ#TB);VaK;wXHsn&sy21`2dO`6v>4Hb93bS!Jkr>&$!(bbk3i%7?)fi2j z5T-hy0W|i^hn@+zm>NSMxHoIW)sk8}Q+k_>$W=;Xn~ErrJJ@m*1H0isu|AQ`q$LdT zLmFspgD%p$Y;XdnB}9VJa>uSo?-Z<6Xujl01XVwJn+*=lG$o`nyIl^Q8oYYE_-AMR zYl{8hNN}aprF?CUR`OUh(4e{E*FlYiVZXs?K&rNm!7@9nk9RcRjI`9;%>qK&GU=F9 zdBKBXhHi6D!$28Ewgj5_;UL|SqS$Fc*Ju}hvvKtyW0H!ymk7O zuloz1_4oeQPO{~{W)n|ygy5F-)7QtjU0$_uC))O^@A_Ns{Pyp7$;HJyowk*pjNwvj zs{$ED^@zS7q|@#~{|pT*jao0O%N#1wVHrJ0f_SsL(NaYzCksun7P2)v5l1kUcdD$b z1S^IEt5AGN{LraR8&Ed{OD?a4&k-|Dt*!)Gs@3a%?)>Di-B4n;2Knn#;a9Wo5z=|q z1IZy!3wb(u{QzUkB5|!qSnZ_AhSq5v#g|D6dje22d4}1-%9Ym5cY!ZKnn8QGYiJrt zP@U@1x3l;~(QmRqfj4+z_nWN&Ij||FW zT=M@;vU9-CwLYO1A_WEU8zx69kA09amgMmOTDUF_ayND^DV2X^KrAA-J1n5}nY`*#D*aMe=ILY}D^HGl-6?P#8u2o?1)P%}Qu*dD1)Oofl^<&5 zU_(hz#5S_|HSPMwLOe2{=$`SFuVhu<^8nz5b74IDOuzquTTkBdt>=tz?Nv4boauvl zIZLxlf_mVolvMj{v};=URT`Dhks&cy1?U$=UnOZmsl;Qg1ThBvQE9Hvn_h5_wY;VZ zW3tZgkXAq%%mCWP2%rJ~RxWduxI~LHgdD8m2cu*O?x(mu34-*zvZT#cfgQp~#S~+y z$)img9ztm{NKx|Ks%N8f-}C!SP=8JF-?Oku_@k9fl?{5JCFEZ%$$1(LQW0eApia)? z5fO|tOq;ZfDLOp|neGe<5Fe9AnT%MV*k2m)^i-vChL9$3ehd~gT#C#}TNM%0zF3hZ z&<+hxhAmkQ@X@d_2|5bF%|Nc)qPyf+)VZY~JL0J#u=J?GSfU*GLqibo(*d zIADKRUGQ0@OzJV!Oy*I+zyrPuljwoZ)V2 z5vn??)ZesMU`tC5X&}yaeG_Uy(kRWFRo1%6%Sa4Po^Eu96jdL5rL z04N)B&BeoFz$L{|yd4TyNM&{K(dLJDVYg0W^!}-T9XorgAa+JlXZgf8rRaK;b6ns|W37Cp0vAAsJSOqA?qxC56WE$Y|Owb{c!lt>P@P4ph?zzc7_Z zYqB#LYm0}ku^e|l*UC4cz^%ftSl@OE9Ccw3U`?u3h&Ftno;rOI`2>X=*z4>L+b|EP zZfC>aqQ{~rpL86Cf+@fg7vhWCwV={5INc&VoJVie1FrGo0rU=Rvaom|Fo${yd{gB} zfRTU<%2jtIG=;%Nx`~_Ck)Ta{J&va~wun2^uTRzgFfz3RW| zTo_M1VK;8vxpn)h^|pzXBMc(+7HElwB5HXiWkR<~00;@uTbbMz{HUl}eGC&GCg}T| z;YJg)KZe>if)Tv2`4#1OR5Af!HE~Et*&B07LuE8IP24i>#RXwt-znjLRMr6!?+AQ! zVK3A%bgYYwWQ9gjgaQR}l#!x*bibV3vNY$irD9PBTaHI2E~ua zZHz~mn?Se$dqR^fb+R*hW;5YqVg^@u)MiU_ExyNqRwc&(zKS z&QnS3bUjGA-)PI2n%hT-+h%Fnt8J76)+}Epvve}W^9%z-k#4I&msOS0=m%BbC8MPc zjLy^$Q)}B;4y&x(dEm_ga?e9tPT<$jArAu%qg?K$lX+1lC=(23+*7JGj^_m>3vBl6 zQcumWMnj&L<$;iGEK@>3k$;U-EE5V!MOqL56|J47KV|XCul{o@t7!!^ZB{Ocqo*s* zPYM6eU;AtqTYKi&U;p3U^g{2}cf=B8ZxQGwLOcNG0Z3?&2S3;ahe$m$)Eb|)YMg=# zXc>}692n?TPauXyYu?icKURHI*Y zfnnQcJmk(d81eR+x?!jYpfOM$`K#xIU?odU|Y`?YE zIFwmU^TKS%;^D=DN9mQ=P>?n|jwk#+7HU8@_DW1ihJa8NofylQQ}k|HJ51#XL|PJn z1qM+JA(kJJ+IYWjOp{@Y>|r7~{wZV^3pDQeKu|qT+-# zw)q9p{?`9w2siM_t|KH))A{&=(Y*Yqhw6nm2L}QbpDn4XhEt{Sj16fc{w)VcF0K}5}gn*W@AOj1&)poNb-F`CW!rWDmU7! z3R)1G5&j;1&~!)OkW2hEc^>6?iUT6Ff)Faq`6G5^$lAO|t69ga`EM|VgDsQt^dEVB z!Vc8>N>vYYLqfo8kqscc0=a-ek{Z1@8P@a$>vQ7?O;0Y?WqInBf~I8`bmb ztH*u1>a+PpJo8NZl;=0aJ$*92Sn#jxk#?{2=Zm++=}ydXtJ%%o(ak8!98!{4PEYo$ zQ(6K5IVGG5?kDX~3e{>~>D)>lqF1^2cB^}Dp8 z2j{L7GBFEQ%^nT?Kn%2I+CF~#1NkWMSy=!v|Y8}8VMTQA>bA}8ziMxCi zPtI8|kb2p-qYJG@)1b%@+b_RJYYHxNllCl0(j_#4DgZMb&g27ESMF#GY6~A!e!jbu zuz4G{(+DjgnnfJ;&Y-uuHHoS~5y_9d=b^*BpFoZRcz-hF73wLb6X$%!b&oqm04YRL z*$vnaKQ?w{k8>$U?*_8T#FSnmt;AlapUmHy#Zh1iO`AA7`U;e$Siy>(TA^J77e%5v#*fAkGM{<*Jhrxx4h`;HGB zMfya`)Q%Wh(Ra~Ur!)lZPvQ}y^k^8rW_L5D0t7Jm>_vuxq@5sAel}>x8xtW+DTw)0 zV48%Z)*7ZHzg!;f=nkQVj`|bzUYd(|;K1rvuFCRmoIOWpr>IujxJFX=^8uxMb|3cj z$zfGM+csn=620s^ST>+=f}?!h{&^2^RMMcW)9{)-?G9+oB>g#C$>`H(OM)m$qmoY1 znFJL#@KF0=3W;Td8CW2!5T@R2-VDtzq`k>+I|j6)h{BNT+K7n>a3H)EB~5ZofmiC? ziJnBIVaMNNE}qwT%Y~gjFijlNmc6dl;KGIq6XWsdao3D7q?`aMB@%FNNL14!###m>7haYZtZr#7FonT9N z$iU)B-=xyNOrvoMKVq;wiG|tfD9iApwP9^?FD((q#%29b%48)vl{ z)0h4Q*L z{6p6eqI`*mLdw}HBKat5lT1*X!nu;gHyelYtHao{U9{9hUh#OzjKMM00Xn4Y*A%yW z7Q@UR3}#~9DBM)35vKpcZ%6n;&x_0Ze6|0(9hZpbb&ZuY5SUVS$Pn3@-+AA!e(>>U zK093skf(dnLQcw_@{+QXRq5=nit$P|!20)7n{PFfi)M+>*iGGdWu`4u%EmZu^^24S z4rGwNBi_%V-drvAq`mnIzU)st^@OF9XUR~i?&BO(sSjwKS3?pcrO|J`>htf%*=E&$ zSrje(_OK{*V6awCL(@`gtfRtU=#gnI%i5f!=HCu!OaE45fYIjWC5*f+LopKb#87S_?v$V5gwtqrF6NmFnEp z268-<25*jVICUx&9fK0G{8c-6{7F2>Ge^E{lBl)QNa7j6>DT>_|Ab%)(-@EjL&FTBqZnbt2em_$AL4#8OdKlG3Fg{{ zV`ZyRFl_)l<4xS8JP^2*a|%aO3VxX{k+;0hb{ey9OSt;jTYl`~tG{NeO7GrlmAJ(e zxcAESX~Evlk{$5XPLIr` ztO7UtM>)hyDLGeYEE}6C%bguN@p0%Do56i+!Gveoy;2xFITc+k1^!jWo6Aa-rJ*08 zUm8SMNMvHB)wWesB6-ZbB$Po}@GOysmV8!0LQ%PF4Dy<_IOdY(YIU}xKxTj-4b+M~ zTntB!PB4#|g7YuLXbM!V;-&Cq`J<*mwOdk@oM80SMX=i$M^(oPxcU#&7(r@)!rBkY zwsp*gLrRd5sqz$XvH>$;m0NNqraGDD(Nr_ zE4U%b0i*cJ#dpWmR?Umdr zwy=E(-LZbv)wm1$NqH%uVC?^UPd+_{4?G?*>mWp5a2{s>tdzX~)hJKSd4t1rz?N`2 z-PSLdMQ6$`tZozzm8l11tDofkj2fRjA~(tL5H-kFn*7R4-kAC%`CeWAekSb^CrMbR z=_*q}K53uH$sj6Jwvck9xgXO7IlTD)nF5~HqCS=TLDF~S`qA#(q$oS<_J?d?X%bn7 z2s{6@Xwt$5mQORa>`_+lTyr3X@?(b1VCr-pb`MIsFtdezrzuQS+(0%-MtZcS?`yTk z;+Qf`eA_{4t=vC&SiRiK!NeLVW19q_Hjj{?v)IN25E;GWBpU)CN5e%hbCQLGiXHV1 zWdX*wn$VWXR3o++*>(gPA(t^Rfs^5X+18je1qSji2r;Li4!7}s{qye@Z|oidC|?U7 za1R5j7sya|tUvjte|oxcqc_{GF5BsrYtuuv^w9#uCL-nTP;5PmKd0gA=&q@UNoFvr z03(T)X;i_P=p^(^W?Sps$Dl$(yvJ7UzScy;Yo@^4CJusg76B9BSe>#xv2Wzo9~$KR z4r#(FFn<=`f`wv8o4MO-0Ly$EY$n2KU`Q$LK8o?_?Ov8q^>iHpwRqr-; z$gT`O0fWRzJq{dC&}7nbgyb146~{0b%NA?(u136R6~pCEBeKbL#p*CR>j{K$W6P8)B0J zDhVh?G0eJmcA7o7pm+SHHJ0V^Z9S<0TQ~s4Ke=pxE4~;{K#Y|>{#hp>E-tNq{`F8V* zzdTbx(5jvyiTELeQB@_@MjaB?)!%>Y$8O&~J(TxNUvGa7T6StiXB>{f@7OT-Aq8kG zp*JPXJop94SX>VbS!}B~*^)VS=t+!9U2dW}$D#1lssjNIvxwlafIt4?qF?Rfov;0( z*Zjh})~W;je$9j?Q;FoUu``8L_DHUWUA8ZH!{7TSpZA)5>;#k7ug00%n&B)PXReHm zr^Wnes3+MeJD>I8g_6EZ`7Z2aI@4{Tj+y7DIh9xW8zYP2xsUAcM~bM!QrInUu|jsN4yl;jR_pA`I;B~<}RZQ{`D6tHt~cgkc! zg}&5b77%xg+Di4SNR3=}$^ehs}hbp*OZ zd~`;&%7dE5_a18Xwk_`nFxrAyDU{6vK$OiFX7wczi^6&|mS#fm=j*7y74q6 zQ|Q{Zb+rsIIVngi2n^iDRm_0raEJ7$REl zaElK}J_6PzD{_wMx5xPwu7hMlq10aw;e!z$_~oDb{CzC!)D#@ibl%b%Ww}t@Zd5Ou z^)dUaKJO}pRfETye5TohU$^j1F{8jfCioG1qI{BI;w7>%-3|E|)5i{*)`Uslv+`(! z!$@|lU$r3`DG!hA({P2znH;+6CS~)~(PI6iQ^1zJ1rw7XL0WT(t(CR`1*y}|={h6o z%G_n8#?h{!$qiG&K+m47;_PqF3GPr64mq1XTh9Z2>y?Fu{s_@GdFTzMN3zgj0q)g( z;u$q(O#sZ!;C=xU0!qXse^Z}|RE8LeybN%vYl#V=jFlvXH_S9C2);8DYUd;xO83?8 z*=9Z|0L$Q6_3U3s9cv1>n03<`6C|L)Sq#|8sgEM=Y2lSNRN&W1p0>*Y$CHUq>R@vo zH=5??K+6##E)$%_MGQ-()g0Y!ssOXA;!HWn9lCG_&igL?<7zvIbDOSx9|Ik(JSFEj zBB9E>(o)whKOe!ecR8szR`pQXM`nnT~-hgNxbkbPj`IVcK6x+&h2aKb6(%^ds$%lvOGr5 z-|t`J56Y{~h2tlG`ss0c!NujcPPwppnM@sY2&Yj=v(w9mHD_ztU#I5Jq+Is#Qd82Ia zItRWzH$G@qML6Tw%^_Ro$^zF_XvJIF>7h6*R^hqaq)MWhEPxXXVP_~w{$!M|D0_sl zwiK%*#bGTh$#=&oA+3zulfn-*{K4%2=WI%eL|Ht=OJMJWR1lWm%`;MKs#8s5sPYgr z6~X}y`qK2&RT0UGKW2wQ2^U=~>}&`hfr(HOqp{``*NZ8LMy0+ChrKL$)}Uq)`WfcM zLk5;N(41!q3p#_^yRQu^cY?v7#T1VBtcg)@OVzW;M5I!=tP-39@!Dc{9GYlHB3jn3 zas`zy$hjq02w50OWYVEvTD#cb)gF06%s6p0ZtPuSgOIc%82?3?0kmOci-H=}>72on zflhAu-iRbr}6Oe#@A;!9A8Li908Nl*f@ zo&@6sgW!XbH!n~S)CvR?eGn9HAif9+QX+T(@fHgW_z+E1C2Go4mDc@S_g?G!=IC8U zZ>{zJT>Au-SVeMbuUX+_U)KJ={(}=vpPooE?PS9RcvOo=WP3jHhrXUFf8}5Qx4!a6{~^1-_4q)?ecT!{2a9U+ zjyK^jm^+01OJDrj*S_(6#$;g>v<@!oppI6tL&=u>W?Om&CMO3E z^b5IS*Ja94105{p6RLyZ4ZGt(swR$7&KPm`StKOGnZ&oE<~}q?*QadRrPeYGubgu* zW!Drr3X3XWM-iXa=y_17eYfPOi5h1|J`YzhHrU4w*oO4v9ZetX!RL&6s91&&b_UJ} z2AZTyV4d~$2@S|W8iqwbHZefB#5gx~=^QnOu>L`P*6m2>Dv^f_p`2H2ASWBf%n!uP|ex%p+iZbysL(hAB*j#KzYHLt?&vZJ(N%bW_&k@1#>oW zy0ktRCA69vV}c(6;93yj)3f!XpbZGFKpLR5Nx>|}%vtoi6dnNmmb8z?j9?Hwr5>PL z)Ca_5YW%{SWyOCVl`@iTcF0GAV4Kk{+=+1mc&P`%G|AHx+cJ5XU@&Y*H(euGrsT}( zZzhl@@IHydA0vQ=ch5R)VT{|5K4)mvB_QZrt<+=zzzdqr2(j#Yare+$sbi~;zNaKy z*k-^9@tOq92MZ&!*jn}6Tldy~(0}qp38mLQtmg)-e+wQqd+1Hd_+~X9Jz197&(+|E zewX%*^YtQ%+v89yWQ|2QY_E7a?TUvm9c|diOQ`aQD(tJ5J*<9H zr|EBB_z3D$U7aEQUs3?k@5Qr$=*;$ut^eWo{l4$*?;4=)#?vNCeJ0_;xPp-k#7Pp_ z5F(B|V^nDTN`Qx#1h^014$eNcJtkjJbO=GnS1}1XdeBn%mI5LOy13md&%HCfKUemr z|M5Ti2maAN;{J57IN=fzp_?&G7OcLT3{q=#&k>)mzvW-~*Z%vz|3?flBqoRxn;*!! zg1HC>*Nx5#&i|y(LuixKLZFQ16ot3?`CG_gd&Fu}c#4$Jta?F@obVwNlU+ zNh#$yNMdUHraO2c#}RED&O`&UPnsXuQhLY|F!8q}r}G(;paOkm_Do|&)ijwIoyKR} zsdgi`p-0r{GN6j&jIU?tG-P-5h0!P&K{?N&$YvE`k z6HA5Asne=?0O|B(+q6kM^vL$a!GP{%q)y{;kMXpF^y%OsN6)Zc8k$gG{*)N}OHv^W z4en_3fv`qQ8Z0tr1d&iWOGzd`NpJ*+5vB{k&=z!=(itq;0#E~^khoO+i8jG`P53ap zk2}_p7N0})8_#FUr%&G4mwv;`$nTO@-8ch!U;X#1_F?(Fym>LJ`(~I=cTW50+E(2? zt(^?5^a-U0ML-x%F+7x-!oj|4JyppfQ0EB05#crPwKK5%8`^8$EC3EZhCXZ zIj~mR7(FoExkma1Gy znjI?_BL67Aly)aI)N!oUE2En!2?f8Sf)$TQ5EmB+<1|1M>K$q(MWsPs!m%3egr(Mq z$y6vx2iI2({%2g)vcyr<%E9rNgR9UVJ~>h~ zSE@?~P$uK%jx*$ZZHG}gR+Uf^y~(z6d8?`Ld`KSvbpm0{CHh~M+W)Ln`$0QR`Nc$- z5Dk%fE@LblOtNs5dv|v4xDq$08nT0u&e@E7YJ8P6y`i4L9u3?qCR~t*6kQ->GwInt zn+t!UjIvrZ^;YG#+kg9nj`p7ZsFmw13AJ|DHeahBVUCIu_}VzWko2 zwR4yJ5(+R{m~_4f$$>Q6P;fKF_?Vj#QQ)+U1PWm?i#cckgjxLo9@SC&(R)2=W!AIE zfi-3Sg2Y1tuZ7T;?a?X^dUeu0=--JN=5TW`v)JMaSENhQk_EH}X2*Q9%zub`GtUXTs@t|@Rkjp zc>lu7!8~~X(yQKlVxRl`)ARESyS~&Kn&Os7VYk7lVC`p$h=jecl;#$kSmiH|)*xEn zOu4J<2lh`Znb)l~9BlHb`?ATORyXDRcErQ>UL~Cn^-3je)ARF(75N&1x0R z`-Hn-G4s-tm?%DD(c0q=(jW)WRuL)eh-9Pvykb;&r3r93p-43Z`lQoW#&y|;0K(Ydb=$CZRTnlYTBDOa{JRIWfe1#k_?mbX)l zK0+C~|+pgtMcGc+#W=Qrz8;^rUIFcb6Vd7I0OR!n5G_yAjlLVh0NCr zXBsjSOT9x`^NMJTm<66$u(PM{&3U)V4Sqy8=H*X-EEeab%?I#2c~pv{xajg>7rT?8vou62ow$b$SJ3}p ziCjWn7==64NL5>v7BS=w%P=Ed;L8h zy?*-S&GYB1ZGdQ0wr8n03BhR5>8X_nfK)9W|3j&=?5gx#mvVp@a%B0|Qx$(CiKa&hOrLs`(pGsYQz^(!3E#|_s~zlSMy*gkq z3;-IzgSKVs*_AM)T+``w`EWhhcgv=->|X6Qg|&u$=&f{kO&;Bm9-;{?x{~jZDYbss z<(@Il|3+Q_ogZ83Sl>?{x9vC4zqhHvs)i9L)A8GJq#_DIM`vitc_*m1yOYpfFHHY> z&sy$zt(6=@o0cR93%cDb5XfL@5GIn>IAdH(h%r|-de_oD^!Jb`+8A52yQ$JJL@u4w zFA($R8&vsas2t%zUfhwSE9^!6e4iodS9No-n-GGH5sI#sJpo0obs9iD7Fauu(F{e- zo^E1)tqM4aNy5P!2E zt_-GL!V2yUQO}bxgrZd?qpO%D4@jbEodJ$mrbV*s+LhQt7_eDtdcOKsZpBbyjvs_y z8yP_mF$7B>&9fe8NxBpa{{g2p;ThY|070^RusUeZwGmD;6ET6@nVdz(4#A|x%K)8L z(QMKB^e4A(wI{^C_}56-qXt*;!A3XJ=ASciKrQtXPhkJ^kNt`7LoNmtUl~+Mft_1p zClZvtkAtZwX0-BXk(W@8&b*hA&QI@l1}`PbJ|B}KDhn=fW`gM?6TgRjMI0Ep@3I!u z+gp78#s0#-`X_(jU-;1$5+LeLrroQTJ)P|mUI+vJ$XEXTKlIoC>QDaJk4ij&><9|) zv|5sfro3%4j208ZPt7Ee%6Vo>G%ct24M+V(Pn{L`DF~WUi8GcXW*e52Qeq3yWTi7Q zLGd_V)=a<{+3h~?oCY_Ltc=IUL$U29KK~i1K5kSrQnzNR0Ax$=*&d2WIuoGr=wI6L zD;c*wKN6`)bbqhX%XB9Q(7$xh_Gw+WTgJ7kF0wV!&BBZKCl+nwIi8{g zVm722vtW?|tw>5>MkocdI+%lHGK@ngq=Sa+tE;h{ZC2TXDP$x%qwABFS&=d#2vhQe zg+@|u6ff?tE7!;O{XO6F8&*Dkm%ZxDPTzZg`&F>#eFg4d>w5==uAO>Va(Du@L@#1 zt6?REKcfm_05t5R1X~g0I-qx4T<@u*nfCGwy{UUdlOgz6ZU)EO>P9T8taRB01y19| z2nLCmw0nbj){L(%E=pUOi`@v<$32lA$&N#J3cC40!Sxc$0LO#i{2So51^HwWix*T- zYZg*9*RRUSRhtNEMr_H zyZq^T9ceyoi)Hyt{1fB00%NQGcx!SD1~&IqP!L@k?$Y z*cDrZyN^>b(jtwgx0w;K7v%~Y>YAS=$yGy{GHK^_XP2x&MA+3jn+};}9oN7u5w#ca zaFU;`-dQW^-j=dCQIlW9I3SBn5e(v)G#oN~l18;QGY8-p+;W?7r#Nh!((7yPU;XM2 z-EV$-x#v?{stsw1rR%L}4itrfJ-RUSuYY4dpZ|2j;w@G~$mp&r)5X{dLX?Wiju_)4 zrTSCr5=Y8IH$(uwLiQmV&9OEW98KV`y5i*89KxT)yThf&Qv;&tWZw5LuiMXjkjFnmOcdv+9%eXmPc=x44^6n0T4Ss$=j9e7k!^S>pP@hLDwYecFq{AuFf_^NT>K| zF?n;a3|hDvg9sVwxKLHcCGnS*F9z6$J-PK}#g)qlM znF*HFWbvP2S|fi$%AiEh0{?T;mU;^0$6>tdYIEVSFWJD-B=RV`((5l;>UmCMu%IP< ze#<`Yrb=0DHA%MyhC}KVO8LGAkBubz3>}hZkzB{o$Fy(wDKHLc{BQT+OK*7JaR31a z3HN^39K=idG5*M~@y)m-|7|poK&oWP>T?7lC1T4wW{NZu+e-HVR%6VFWIHepHq;l> zJS}TvH{5NTx@O!|eG?Rby7n>{y zWR`H&J*7%9v;jp6O+lT*3=0BVo_gjr=060>LcK(Pi1cqgp>H{o=hJ})oFTxI`zK{D zKl8sm{jR^^H>QOAZhYnKVeb0bevO0nIrH8}NHjva38$u18e2F0Xl_hlgB~<4@-2i+ zsvk#+k9y+r%d7c-mOw9+(KA8RR|xICk}{@QVQk6ZJ>SSQBWFbA7Z;1{F@4}4G)qjr zBLt_AnoH!Dgf507wL?>o6V25731*J61uJ1h4gD@hU~jUR+Mvv?RmfrDsm-EXLcSi- zUe#YofHgxEABUf&!$mS_riPLH)YPLKgUem@IhF$sJsI1&gD%}ryAZ9Qjp`+)PjY_i zf&#gN+*7hdCg1dCg-{)iUeZT0Dt|J%Lqs>;87D*@y#TVASRUrJn=rTJ69u*L+AY+Co+iyX}%y zsqVIkJz88-PIzc`NQiKqk7pb3K!8O8feEN36XVxL*)!Mp$@9Kmz1lDL|K-oDzv=fn zQp<4$!3txKKH%ay7F5(=81kjR<8OcN2i=^l69|9yFaz6B1)ifysL4!svJ{d+Av*s- zMshJx_3-l!ML_vrT{%CoIScmpy6N-ng+=$Zo|SV)aDau+qIuYY;-Ts#YJ~o0Fx4jS z=4?UXb=?_^ish_pzB$SJG1{Q6otk?1u#JmYk4yS0dA5o&^>e^V;o7KL+$26nA45ZB z3d2$MqCTgPLtT>1pm%tvNL5BA3!egcg?6u9l=x869cavig0li2J&hpE&X(znLSJbGV#$<-KQps|@QZ^>-m3X< zxA2GZ)*{1DchLq~R19+H!Op4gfznuXyYZoha5zJsr>!Ah|5N|<7yriJ^Yj~AN`4o; z{8q~2c>jVxxjiOFhyzzi7n=ymQ472pnF$rWdim;cHm?3MIVI<&R!R*-5Bl;X;b$Nu zsB#)%7i=TjUDxzv7cA4quLJb~hoa`>>>Cx;llfif63g|(IX|+N3{X;#SfHvq=MY%# zkoF47aCU*t;cBHEfq@WrzAvW}ahJka4WX+WEwR0h*2pJ>%4GHwG+3gR?#u=^`O@4n zkQR^k(ES~BSBf$25S%(0tdOef;ocHjUbc_I8?7 zFJ)KF+)vYzlRiK60$)0)|re&k2kKs_?cvwizj za#1l77cy1Wi{6-TYyE|P@8A96S)P|a`}pX4+OYd9isl_@QSE_8E#pW)>cbAZ4a;W| zXf#98tXCAFoz-F!@`(26@lc-cr_+b=pDspk5-0#q3);Xv=A*Ei=cbSeC#r6@czL$} z^#)-Pur2Wo9g36?8%n zfj^Q5Y}PBs$S(ef+{}DDYz+2&dJ2dUqhLnofzn|XqFaXA658@XmF>274#nL~{%M+> z7F5ot)n?h}&;_BvdW`7HmR#Re-(VY&u>hxY4pYmJmW^lQm?QhkW$-d(Z9Mo*tdrgb zTNwybpU{%vu*Vpd$DRPCK_(~BX}rS$ZFQw!D^idRp_pOSz;AmQ25Gl{9Dg#-_RZoX ztddF+InpIWDiD^v)$GKy8Dy+Rm>dp*#IyylOCx&WkdAbXa1DKv`D*9%kwTL`46e9* zamF)Nz;R`Buoawg@+ReWuEm5qcfI`YXi@glY1WON>XH z2O^@gg(p*%ju|L%n-OwCZ0#=iW1597HX>Ld`0~!4-C-fNK7YS|?I(Zg``5DfFTC7u zvEGjW%(MvIUw!oY+u!`<%&+8r^7XRsKxGLF(^41=Lf2_M8h{hk0{bBO#|Z@}cKs<9 zq>oG_-=OD=^sD0z4W?c8G`D|{yq;Ey5O=1oE4+}3k+u~u>U(%2IJu*?YgLT80c1+! zC!d{xy7dkPJx7i}#ta4MmSWKn#=^yM^?HQH9N!L}T@aN?XA8<(m=B&*@kj&QkvvJ* zMv=}a{YJD;Lp}S#maT z8c#%k_^gk-VGE-u5htvsy~{jGY#~V*|LJc9yd>f^nLFfiI z1uLKBYAJ3}BU1>LP4C(_>gfrW`^Ei(9wNOEB@@b)IG_D)VBVQlnFJ4%aJlv{!xap^$?7-Y71j&|lJ6o`250oQkMD zPsP*I$Is8NZNoPWP=7v2Az8sl1c%;%r`N$&M!A3uNV?aOcRsE^-H?h;X*)Oc}T zpJdQVbJ5?iq&+&ANo3KDw@q>^B*d&aHxE%LEPCzg3^|`gz}{hx;gZG!aqsdSQzYFT zK`;wmy}bR3`LFy(KmHQ&wD%b>uEz*z8_~aLg+>rbs$^WRKf1*?@A>K+OYZ!Y=qn!2 zB;{i$h@5$f6yu$G$yV1t#hI3Y``!l~dc6@JR3Q~aucZ2DSmy}_PDD~*;wTjsM~;bw z7`mjR{y#rQ!w^@iwbvq0&xw(2V(B^id$yyJ9>vi#FJ@ zm?ws+(zHIyR7R#Hk3u`ZQtU#lkD48ff+Ge@Fy!KOFC5!gjY`}};b-`O0BblqcVP?L zO(-S&{QO%3x51BvR$hDN6mzgA(cnT@fV7w>%q2-({X|}>5~t+>95cL)Rg66YqDB); z?(zGuHj$r3dqPW~7|j+!N}&GMZFZhgM9n3~BO-h~n8+{b5BfQ{7!jr+dj^J*%z1Ql z4tT6VUk0XhY_I1h-FmiD8W)9fYOVm3{=PTezJVk%TWCSYHw zduLnlcl5Rd;R@72=NqiNSSl0@V%xop&O!0##D!}3!et7s~yN=F_ zJq3ciuNQZf%&fk%13A!bbCy_oe4l~=dNGyu3Tj47Y0sLPdg1y7ejT6aUS>cl;200o z#u$-s3FYs+6?+G~?{AuY>9_x2Lq}yvry*G`V9oYrhj5bCTi0Vx@vWcuFRc;HCm)*bOLAdDFk%n;2Ne}+9ed^3HPs0sfbh=;rgeRADS zD>*Yh&~}^&D2IUeo+iBc+ShNUFa(=vi0+R8B{-QeG2W%_fqeP%U;MdmeC_)w+A=j% zkFYIHNZ&4TC;0#%?Hu4vpu^G!egh0SZPeNU4dkyrL||eEIx^WySYQe;N^7aTJ42p2 zF^SetQh}1}Hh$;RahG*B$O_1rEaM4bB#e5a%xU0_={9^&{`-EqZ{^QG00>ZOy4MVX zeIJ5j5@}1-C>!x}Uu}|SSO`+7L5@Hoi3*nxS8_kRAN7c=L)*_eX<};nJKHdupFeTF zv7~umOLhZ40zA{fVMbG0V~t9PLyz5@FBnx?-NccQ2uM8|P8J}(W-c)ib ztr0&vZ@Z)BI`{+LVkWQ^W>1R=a%YpvmgEwDm6TWn|@I@Skz`V1-81p7#{9B$=HD_H8Ft)v>Dg=6!%c|Z%)L>7w- zClWe;vV(xOHFw6o2DmvQCUMt$UU&|S<6z%VCZkSLpeG@!Te4zl$uM<4mME^7xveC> zgLKHD$v!BE}SCqMJ& zURU|kikICa>DcF%zAsWB=*{oki4m-DREX#(wh`I4Cp%i|-)bF3cPi8*C^nN=TMYu6 z`HE*P;!ICl70%i{T%#M8Z3W^KTwwY{9%P6?0b6TE@y$c)uh6|>5H8io{RFl6aRQo# z-_e?f1;K6#KWL_eN)foJVdN}?omWQDa(XE$1mxbSPdM{@H_i{8BSm{iVJvoiofFXB zeDT+WU7wG=ArkK;GzXK862X{S**TU9C$vd)RnNYtSDcleI&{jPn9|zQ)E2Jy_ETC> zDJr3Rqt8zPhB&RHt*%A~nw(|?74O~CB&Wvdv<$B%QLo6W#DP8#kX%Dl=N3pweWO9B zv!}(G;PdVC_coz$S%V*OsF;#`PJx3L@8`IxxcGE)Tis`;sD#yTf5NBm=S@$Th^1`& z6au1npl-Js`jJY_fX5oc5^3kri6qpV))O$bgBvfgu{fTD&caDi-eq6Kb3pWYAfBSZ zO`G1zCSw`#sn^WpfMd>)YMcGeAN%LpF?na>_JQ8Smgs{3Mj?#qg1i48f8tM`6WFek z?W)c`-dJ;N6_rq>A--?s(%EEbpr_elDuo-k?A%A)*X*xaw{x`HA^*5ZRzrMXjzWX> z$ClP0K@OpMJ2*ALA!?7V+ltWfFncQhW*{Q0C-U)F{0}G==Q!j?1%sr|SF!ze`|$Vw z&G{eyXZudoSt$DsenRgP<5qIwu+Bwn2@#w_s01&bZqQ9UQD1Ag>2S8>!zU@1)Ek;0 zYNB9!!N5-AD7J~o7_ttRk}-?+MzkrrqvUlg7idNcbJ)|)QPGVrhQdktCQB)f{pc!D z*{Hg4F$@MmPaV{`6t`n8*ZWDCH(_kRN};J~a@Gjd9M|LJdB-@U6Bwu~>L0hoz=%GS zp?87`vO5S1GQ=aTRD>5%Ltr3WnIMI}alrJi6G(y#>v8L4ov3C!xev(5b|E;=gyO=5 z3)hg6_=%Y1vn7;T94%tnH0BeI78rgsYil8Igla`%xM0L*Z%CJ}I<-Z-IO=X)_b7#l zY-Hdsuu)XhwCeZ(9`%_g4sZ&P?{%-w8Ei7aN>k#l(iwy5g>tl(E6gMcNW7B`E&INY zoU50oh!ls_2@*oz;g~Ce<3~Omo%SXEK$P0|UNUb(VOPjB#~hn&fi>M;da) z?Uo%vgWXLBVF}li%6)`n=lx{Q;htXmetGltuirfK<>mbW!20^${z|`vzgk|P0Nr2v zo1gyawf9R?F)a|AbT`K6FzFMjc4X|)l4#0-h2jm_h&iNA<`ttQ=o;5$pqwVW zUAw5(fZnQUR7OuSV8CL*M^rqL*|FBq<0XWH`YU1(%r3GO_(;q=vxF&GCi?&)EBZ$Z zgd@~EWI^$&Is(^wGipvzk1bGt1Tta_392?Eh(hvWO(;6Y&r+~BQ-q_9DnUfh>|`mS zFp=dVMeG44tLNfSj3$i9Y$T#0MqsJ26z}969KT-JXJKgB^t9DOR~Au|{6qw7j1 zpPR!xsZt!oY-b9u5hWN3EHjyBq#Zgx;N@__{VRXx->u>ieq@(w8e6>1_f83h<^gHl zhWMrb>OcQHFv3lT4}-t}l_;dZB|H~9H^CyGElW5!HYiv{9#yb~yqcTC9zBwW8(d$4 zO9==*akTV`sDPr!fZAU*?y)cm<)o;j;{mALt6p!5Z++7~`l5`x?~VbkBuWiQ{&k z(CKp*9=$Uh-oa?sA~JSzFK{V97X$XR=-dPKwTnI4WpFN#swug65FZ&6!1|v96 z5R6gFE*W9Ip)D802CM;T8p`3J=b`8Hd?H&rh3mG`1U+XOBo=kxvh+&av&0@g5dTE~ z3J;sR=CSWEj((P<1pcIqa`+2ZFex5Lo_pjcL-Cdv>v!?1^=* z^_8AP@0l{gd${cyCn_MU7Yy}Rdg)*C=>^X+NxI8&I-o&PAnDvvFz?3VVdqfNkSm)A zji+O0Z_zv!Tf{h;j7`1u2ah2|5>GoOl?N%C9$>^|ZMsh)yAVMtO3;|QwAsplQTil+ ziLK6MeCxJZ2w7ImY!n*`g4)(tdtVQMg<5oH$i4rqnTf zX_JYnN)rEX39(@#kkCY}JHPX6M(9j~VRDdyw|b_0wEAs#!5>3s9nkawY(yLi3~%^} zG>T?}T~H)#T?DG1J?~!ed}`gYFMI(yCbqPNxwje$j}AzK5IA0%jl9*DPwrnh9n^Do z-7LB;v^!!CkOXInyj5p@_WgddOYXok;8?0lsY^K|AJ^SRQ_#)g&h^U#^+BuvQO1OB zwU(HJG8;1|^&rq`6oF;{0h~9q%|5WFU-bLO|IMHJ@P~i6-Zq7jqLZ5Wg6rU=qdxUA zJ<+o-{-Ga^e=Iw%=;8`{vSM}0xE1||i^FrTQ$FpJbKHcSsGGSSp;C@xNCiK?KDqF* zhuYVaj8ESAFu|P2>OPoKvET#@w}ROsaF;Jm+4> zo1KTNvjW;7e#g=s2`mCn?i*0`kzEF+qy#bd4v@txC(fZ$oi4UYn!uynKvrh*r9Iry zPGI~575kN9CQ%6$EA&7uh)uC;_K(>_Oqy13K8$jtNL!>CB}Qc99!jKjDxFYgQuU7= zpq?%_nYzwr^K4rcJVp7U>nL}kZe^N=*!Gs~7pOG}y}VFq3M*C(Z@NYWDFIGG7Yz`M zh8F8TnbsxBYV8W3h{T+nrwZKs?I6T=LGlKH386eibTRO_khO6nfXo$v53Og1ttvJy zv@4|y80=G9C-{9NypDS0wWU;uOVv7^SgEJP*@;lkggflLdk`ZSsBws6-_{wx9$Y$e zJP2p!L1bZ^VV9adCq?mw)=#b1Rd2K2=6-#@|GE~B-?gu^^1nX}J-pof7?YSKkZcTh?pSn}4gXW}>lv!S1tpa{q9tvZxTTaB!MB8nzRGFliBQLdlD zld4Gu(gi4LN*}rbc|W^BGf;A1;CQkzury=C)kSDPL=TqWX}&(p=$inB?ogpU*$zar z`BW%>gew~Cj8|_0sO$8M7HH z!1LW88EA$kj^)%(`Akk4v1$E90#eJdxG})gx+^A!cd2VH$xm`HLNy30=alD_QY2ag z?7?+{qUC~;-^Aub{Uju!U0bpqrVBn(^BdT3Ncg^eYWZ;O#E$XOCgat3EP>1y_6lcM z#?ci+&3~YRBHAJ#Hv#mzksNY5!Z)dwio(-?oIsKqN3|;4w9VaZY^2iNE$Nxd^#eEO zDdg_=di820&U3rXOmVc*SG)l z|MvXHIq5D7Iena}F$aV-E8v^C_jF4#g?#i|c^J0x~W|`uR}J?ZGHe z)48Hkp-iQJEnGV&1kE;SFwn!UOf8o#vt~D?Y5i2Q#QBlw%@d%Eei{~NOw?nC9T7UU zaabgCb_?%&*q~LE_P5<7Dt#yV2)NMbT_J~{gSK!55$e!;L((67m~*_zZE`4#$;{ZE zLWbnzSH<3?Nzmqk>T>WrE*5Tz#F%^NFN((jniCZNj0RM(#COsTd%ei3fr&@M!PHK1 z5}Axw$`LdzF;|P!FS-Aj2p;D%U~5B0NJx`{qubpD#SIG+{yi`pd)wo2Qfj9`7$ebNy!mj`~1izt}$inyTNU;SR1_8UyzpvgE11fk3Jsm`SqWZ2p z`^hk)7#9cyA_bx#amPY2yMn3NqT(Faa+=zw_FZRVJ9}N-3@G!Fr1+xgh&atMGJiza zLq*2=(8NXI7+S=>?aTvg`(>}akTkS-in4D+oA+ni7sA^DRpH! zlp}*sv=+g3!KgTY5ah(dX4E^R1NWFbgOOUsgOjvC-nh;lnlCK7kc)Qrb29~Zh8*RZ zOr++j%(wxbluPj0*%KFe+tR>@pXc17ksw2|&5BF}s3}T>hf9uhL@T39p6%lDn=&kb zUf4~WBw9y#5L+twILYrDl_(R9EqE%aQ7+M=BItBb&8Fj;$@&WD3TqA47(Ktj6-u(f zd1mAJgJTaVC|prFNm1!}EIWE>rt?f=1_tEo?qB)sf8Dtr8xyZbUxdthtOodeN#=^- zjQ`TV{~w&a{&w@{w`%~TDDDC5BpZ8jo_XLAl3NNu)hkrru~Lpsi!c00u zJTX*(s!uJaw9%IX=+umPVD9F*Q@P7|C1gqGf#L`bN4aX zs@TTqmZ9so5`9jjtz`zh?awLXQ=WO$xkv$#LapU0)$v9XVGVuI<2lhuRR8 zy`8RFmoX6kkUP@;Fr4aGv1k{dcxeoaT`Cf!X&AXu#BB2lTJg5C_sIUUyS(oxU{Z>$XQbJ@qF z&Kq+T(xhbR>N=%_7>H?C(Qbe-Z8IBcl>7e4ufwDn$K)iwq zXOkGK?VMKsH2cWxSAXh%x`5`F2|yQsx7BqcU;cyc-GBb0+sn7^dZx=6ezY^|sfQ2A z&giLXFNxB$WCheSCbNz>ki*LWML@d0Z%4;Sf( zCryv_W;%5vY9mN4NNqlgt|Kx^a`w3p`xUxWoX~OxFkN_rMl{W}w7@fX9?%^;S+cKJ zoSSTKSr1Chk*+X_g=kVk>e!@ZJc*D|YX*wmzOsE%aO{2}LlnNk#i3spnPBYq?%5rK zg#;EJM>uw1oQP)3+`duE-=TLz)Qj2GD(SH|lYp7EJxe7}Hhx(m7+BAREsPMlacFSl z!9X>q)`vZgymv7TlTtf}bT&Af?kyG(DUn zog3I@pGZszCAi>2!s(HN#YVO~pIPyA+1Ibxw3EUG3Y&EE8TX6QaIC+V+rbhn$s5sI z?1}MxzY6>4evdbA{q^f#*UIs`^_6)lnfE6EzUu9p*XzUm_Icm$pZo9wds|q@6J3oi z=NM*+u~jK4wlyB6$#QC#P3vNVs>$x~;QXzxt%N zTr-)5&aMVIk4&bNN_r^gWK~eo00po(q)8zYt3cy2%ckSz;*TzRcSCn81y83ziQpif zz%y5Befqn2hwQ24f<%}g7-2?`a?;msCF1>(1olw31?$%y>w<#mDcjwu;thai&SHom zW?{$1Yugdj#FUedod|;Ddgp8$Ph)n9JqPWXN>+f0`y5s{TF@}NMXo3hc-EnC+={0i zzoI;y>QJD%cZuh~T7t*FOA6c@j%*59Atc zxU$oAAMD9A9ex1XFlh6^Tc}6N{pnR-_VqU6b!T{?l`6^{6DJe#kVkSS27JbR`oc8Z z7*wM#v|D`)LP(0#$J=c}IZf!oA4dd% zh_o;Lp+C&6$vB}H6%FQ6SN!h-|NeY4uPW~LjX(F(&tYHKA6GlHZVXagn|(km9He6( zMp-|N{iJ}fcdqi$^hcjr^$b20h>Zure++SzaNWH+{=R)X-lW4DyVDPH7OK0|)A`?% zH;zZY!M?ZCNV8CSC)b~bUk=+@&=%e<=iTG;Cbpd1+_cpi@lG;DJ-zKl{S z6P&##SL;i^CBO9-)vi31OPakZn)j6&1Qz=a%=(BH(zQAOsg(-FVSX{c{q$@q;l!tt7DRjKgvnK zJiqJ>fhMFQ-Qr|>qr=5z7fa9HG~sAsQ@!Ty2b=F?hlNhH(&hv~7kJOTE~0bM4=Bgm zp{&4FlqxNNF=%;){O2^W7K8rkGBWk&J|Jo25}(zX_v)Rog}C)Av;y@5e)Ql4aNQ5p~-K+CL9pYo2 ztAZI3I3ThQMQ|Ec9`^4x=6vijVX;es_L3$m_MBAIXjnRs0D!OnW!53w!ckGMAGImH z!*Bvj?eu%SC8L~FJFrkp!Ycd#{P8G z%gZ{|Wxdp1$R-plSx{r#Z=p1MJf0}i`+lVqT#%L|v&OhwY%OrErgu#!qqKZyw{8+U zu{S{HP#Tvs@|!3#rYNbQnY(CbY^5+06RI7_u#M*DO%yyVu+>~`8z&Y=kj)Nr+Fnbn z7LcnAy#<2%FcPd#;9iZ$(GgYB9e|{R&p3MEmS8e1KvR#XUyOqFQ3?Sd8Kbn)0fz3h z-hCWsw4;XV&)$vq#p!~^iA)&r#@;8{G4y?!%gB{t8!U_aG2JO){`8r)7z}5y&hp13 zQSA(6X;jcQfoO^+Ay*vBz8_x3>Q<{;?I)%P8KcB)ZXkxItGOfwNX@_UC;<}rB ze_+~#j&o3}X-Fj)p(_>W7#}SMC_yKsT5KtU#4vA7=Py(Uls8=B57-2A_2hY*km;s2 zx@KeVh`js1d@_5~#_C1v7cjc2mflTstSmTiSH?m_MrCELX_x#?U`T3uBsyTW}%h?}d7Xyv$W20&Sh_c%J^64|mC@}Tt zBP2S-D6U~-?AX1o|0#^_5|$113W$Ovy5sGj>=)ln?m`rM_+WuHMpsxS@$^J5?|9Zo zg^Z%4Z9O`qvCd0y_V{ceAJOxb*(b*J3f@pMCC=IPc%74^WrGA;t9VF0_yB)n)jkFs z>@e*{ZGSoRn;OtmY2YinJfq4}hq%1x#@W1iDA`Vd4b(2ypWVWe(HEg4Z-PRLl87+4 zsCA{98?CWEu5=~<%q6YyfgtwT-7$$KJE{b$ex=pM1PN{OB*U zM*L0oYTdcUcAxoIy?wqvefVtt#Je_nI=Ho^0j`{&6}E^DKoyu+sA)&|>LP@=2sdmM z^+ zY>rE($dm!qbs!NBb%m#E^mWkfCT)eZ-(IBq=!7eS{1FB&DkhV`V9DVlEK?U60(@W- zB3_!)0zegrv=;f>odz&hvgl+QpwUY@H)M^qWrph>RrHVQZBI4;^hOao^! zwgg@NO9eI2yT$LXJDNrJFURvm%4D$*RMJnPjG=i~D&|g>QT-zqMZYdsA)hKi>A6`4 zkh@Q-S7xBc<=Y0~ua6mh(zzGMR`?S!Jk*_38TIb#;Auw^8J8Ch0?;^eG3B_Pglin6 zfm|dt2e*1kx1-q=f28IixD9Ez=TxUd{l0as<*WYhLWfMXw>d9T*WVw?+%^WD0^pNR zzV5e=qMq|5%--1A$EzYHzN3<}x6NNtx!n?j%mo2{?IF>2cjwG^J_i1XMfrJP4tqZH z?MXcJF}Q>8aVvWUSH5_pzmW!5Z!dt%`QWe4+SSxTw`WS>YiSDfRQAT|d)*JY@NQp! zx_#(3yWit>8)>;+IMfG0kblSj=W%!c{=fI{`lf!}A=YA`V&CUQ zbQ*dhp_7)q>m1QDR`%&_8bb}nBSK!jkRjM=taT=JB&tA4mh3SHO7xmuCMPHR>FOkW3lXRgGwfN;h7 zo~OY?>EoB`14G)yBLfHCvs#ll%JT*@aTwR4CFZ1p?i7Cp&VX*9L19LAA14qp{xas7 zXc}QF!FMfgZ}+~bFa{ghjY~#nf<6NTN}lN?13G2uRBzH^|F5LoA$ZS|NpEN zf785fm(=t9>uhb{LrL?{At%ij2L8g3x!z4j_~+=mf^ie#pkM|K0y4Uf$gx|B+dOs_ z&>>Qser8*%tRTXDEAFK@ibnT>T04w54<0*`{4-hK)Wje(Qca{F`zI#NYOU6|P}|bo z#6_kb2IyccCgveU0K#Of!WY=dp~W-zk}d{nP);L#G4ZiWE{3-^#0@-c#Qg>*v;9WS z|DA<-(F6bm4>tH0ggQtVAkE^>&^v-PRiF>F)vprZW*#Eb z0N)?~4Tc_Q_B7a@(&Q>}bui2>JU$zCR=fU)k#ilL{n};mz7jVhiXb=zUW63u|8OsL-dyknfU5E`p$y|FoI|4k0*(G$Q2~f#bdn@Ecqy zd2F%lvG`uSLib{{tVD7xz*ulKAkoXxED_xrl+tR=gh_D78}1A~knBOAWpsUdfCP7G zf5c&+!i5qtWT$OKe$8d0tP(}vizr6$)N@Ivv8VHjyIG@qn}UAwfBV7MiN8fRHQHVx z(vnW#>`92^I?8)!Mg~L)=@bF+Bv!*zMrq~NB#`rppwNtG3>x2YGc$)6r_IhuBs+3d zT(%Zg^2yQrj6!-1RA1j^X!b%|2&YCD=og>moTF1~Suux0hoaru6%mRWYt_23C`u<8o6Z0oSmpbGf^?JXeaLLh)!3{VS3FZ!^i0pQg;4j-<*?TkAOFJ7e)QEJ z`2SQ8egp2B*h!wf ztoPw&eVs=u#@y?{0btfBTI-taCPVjV#Z5+<_DJ@Aih$+Hw2AX%CAwZVQA4Gc6)*#( zWbT7VCn{LZMPe;R%g9;odBY4W93T$xNJWS=J<9YJ)6fZw43nFp`$WsXPG922s$tm zHZuP0$R*gxNsWa>3|B|95UE)UzAaPGZd*i*B^j*YcvDQcqLC}u{%6EN2MC`8(}(4w zM3L}^>h__kV-oO@r6)@zWSDXZ7mJ@~B7s*}h$l~tbcaJvw4kZrj6e<>1_BG(4>hWS zxECZXejOd;J%$8AB8IvwsVI#Gj#;!E3%*n8Df&~|^Y^^E5tuDHlH^)rT(qmKDc)O} z1)bB+`sgDd08TsLc7x9NJlKoU7o>4#JsAVW`v>3fc~1V4BNmjBaURB+8RGq>`dU2k z**!b;>dJG)Shm~HEIIh?M!HGgs!+W3kx}O(BcGR=l2_nr^7rOBNc7jT0DRO{d3Wix ztK%(lRE{pYZ=Ue=13%a*YM?(_ptE(ZDjL}dY?K{@5%dDG$;V{&s*!3b{qL!yA1mNQrRb(QQmt8ff`SN5U@2jIW{-bk zE2Is;G}YaG+*CKb4;oUJP(rRNlQ8I;8YX3IyC3=Dsj|1{4HEIRD-^LcBnQmdW|=El zUIt_`siB8)af_WsCrQKxkd5I3gqtR0t=tpTWS;%&wmKc#iNfK0!>{xR1i+n7&v8tn zd-p?7M~8AmUK>N`9RoP zb%StX&hymy5rH|GVkH+45=XR*DD8ga?8*`BxSw9oj;rZJc)b0^pZ&=G*8hh(@H6$g zjZyRctIxbAQswFFqxXf*e+xyrmJ5XUx$f#Bqj2<()Cr6I2W$f2zwA@BEHzly1{wZ= zNL;L!d07KBT;!OI4VWWQoQ5%`*(q{Y3WQiR$imQxa$=L%E^Q%*AmPknrD{NO!g`hO1VLSoJ7+&Rpamx z_0p+Jz8IxqjLJ+RGHlhld(!%FU=YFZ)Qg{}q~%FP@+(@n2&-U9d6e|(!I@3h+w3~^ zR!`ZDL`+ZwB!h6+@SrrGRWHP}%5Ph4FKC3YerP#{Z&ot`uWnR&2uJrh^`!n14$PAy zh5dy=KSfC-mg``NLmNVJ590WVT{$X_`8B4ZaCuurPY=P9H=DNq+`3~IRu5O4YVzAT zAnKvl!AYsg^>1u=eiP9#y`=H<1cP`HG$5lXlQ~K2Tc*_vR z^QfL9cEzR?x-LG4PNWZ@!j7Y>`RMbX>+|eg36y#WMole!s#0hDVql_Mn0LGPyv@O? zo$Z+y5>k3M_??U$PA<96x0 z_S_yDVXY`6g9!3cFUD)}P{TyRb6IZe{&LYo-$UOli_(c*n6)^WvKI>J%49eTkJ7+{ zIdf-CErPMaT$-@U*dJ#O+RjZaJtgt>JIbi^RUCR4x_j|-Mvv_>}NdG}5Im8rp88U`(-f9M~IZ_B6x8z5#I zf+geQS0JJ)7PGq1x6pg1HxH>?2kJzoE}6^?$tT^bdwCgzIOzJrWQXn(o@_D(_Rx`( zb!GtW-b_ED2gr2E(t5l5_E_1Eu@4gy%zp2HljP^?FKbDG>SFrgHq@fP*~BErZ%98c9QdqU5+UOKGZobpFU)WbQoP~fYwNxK)bLl1^oC~ z_2$q1dHaL!i(b6y_WnxD%h&QxzTGW^^ZcJGAu$*BoMoWT_bK+BIC}ZOKrhv0m_ak4 zx<|C=JF%g^3u(h$ktjopZ8VG%u`obMPZ}BQ>;Vx6%WNrNdO+I1`-xn?j5QWO&&jxk z-dLW*Zj<(`{7zfXQ?$W=!9e8l8sp22mZN4PFcyo1b4Fw z-%Zb@)3)d`F1x^OfCFL1*!5sQf4RV6-iQ?2q0svVF0&pLjkvv@?(771h-}p$j%LB{ z{VGGVU3^t0VJM2fk}ty8$S=VyRrHSebDE8#$08{Iu#2GKpmwsGz-nhu&()tnmg>|P zA>b>lsR525_0Ay76A`_*(ZqkD)gR8FssBLsP^l{X2S}j(BHGRq6XVIQ4Akl$nDQP7HOaa&wXL2y1 z;h^cSkTn{gL5?SyTtB37l#gh zpY|$pKp|z0+hOLDEOR<~OUEFyQ9N_f#RHzE>KEHf14*rIj3#5J^r08uK5u$OQFBmk8Hg*GK+EB-_H4Wg&GO!xb`ySK9h(?=+9qb^)(F^`Hn>((0%o6>(x2$ zZORB1`zf6`)%OB59vr_`!H?TZ=kc=B@JP-K;)0Ntp}QePOx608O70qovPP+=hY_tI za{Jn3=t?01@RC9vvL;+ zR1DC`2j|At{-Cicelc1TE6_J!DvePSqnpHk#(70g zCGWXjHxr&$Kke8|^sZ3tU&3_C=13u+dWDo{lf(nk6h+-p#94H=fu8`>RWS39JyKVa zj|asl?3c6_r9aLlxq8+oQC&naOU2zr&{TYCYy6O&(*`q*Iy9vdK1H2XVIMOOp zgBEYiXh4ny)Bro_1NXw4XK$&`Pxn^;2Z_}EL2g`!1I;8FzKYgmVfA*)w$FMJ#HL1R z<>yMM>AQS;r?A67H-PH!I4Bk5#`{vXP_>_7ciR(bl!`}EdugI8+rfse(AJEce(=F; zpYui%-Js+Y4lOu>cMMurIpxm%UA5p+P#a{t-;36Ad1Bdft-6=#zb)P1T3WFmb+fcq zO_t4BPowN*`rDT{K(A3kUCqm~drj4eyO-h)<2KtPD)9cKBID$N1V$Qf#lB<1j@y+? zirnjEb~MNI)g$4~nE92AI;Ma>WTs z9kFQ9kOOFran@JslzX>Iia_vQ)>J%mjF>m{>9Y0l6Y?LYIuYUv-ETz6lC;$G!UHse8$e!wxyzsjTtNlhc~Z*9kW$BQ95U;mg6as29w382$^kW z?6-}!I&#H)Dm6*`(MRp~*~A!49dI9DFc}gi8V-K9hfD6)>F7JACpbgbeeM^YFXg4I zQbkux7ywuKJn{#&7)se-@|OH(nhP+p1Q=EtRr9eM4wM8uqJRcnIw}}Uq^UBcs0Z)F zUh4v#g%Xoyw68GPwwR8}SBB?MsI!9e;p!3}InW69XtNobSG!DvPu^Tk-*j$F1E_7} z>;f%)UzOAmIrc2FhNRa+<3Cb-1GMQNP1)E42?ja-8RE)lIY=p2B`rlmA>klr21zut z#&9fU(wR{NQv&}u*&gkV#q2gi%L?o;fdn(Q(&d(`W*hIhndp?2!~oMUweRO4R4N2B z1bC)N*czzC8~rmlyxdm19|CB|gm&+9L0N@V36@nno34J#ZPcj9f zpTLXXx_G$g74$^+M1HvI&CmU8)cc~>@O`~c0={0gU)I;YaXMT$q(+O+*Y0c(XKZyp z3!9#xq@fS3?dH%01DcFFl)k>ZO-o7lp$NqIuh2v826GFAPCW{uRwKun@IB8X|95wZ zLo&}YHG;+Mg>jX!=2H8e$>Wi?E20y)fiVg(5GG9P2*~DWOG{^Q=ROJWfMUn5*0FRN zL}^#lwcfYux34KW0~`=PxOchQNYk;|9mD*Dy2%8F;shI_nNVC^59GRR(2un2A-ogV zZb6x%Mm=*T1Fe=ot=G*FfQ|bXY_guuyt$Y3%?0?bnrxxtn8st3taHp;fgd;Hh6S3a z16ccv$pz|pSnua&xO^ves+-l$e)rg%WkIcnpiQ!WLSpB$d(7=}9`Y0#1xsJLs^+Op zdk^ z%K_X?=gojB7Enb=wcWjsCD-h}gf$)WAnKPSIFj+*^Fwzm*#Ms5Q7AndgK1;hrYV|w&-Nhsq7z+k!pJKn54cx@wZX)pXeI;rwe*@=7|Im zv|XPdu4;R_@isanpPquwZTv0FZD#ar-x%$pyete1NnIdETwoXKoR*GXLy)?pPoJ*- z>z$8yooe*XEF}BYe^5`a-Tb54FJ>Pe`@h(=EDzY>+Zg5b^b@C6suQs4qK?`-#sz&U zy<3;UV*wFFfO_}U=0jZloOd32^R$z6rMgX7wtF5_nV z8M=E%H2XuLKkw_|;`K8aaKhf_DEG*JJoo1o5}nPCgay9qX>4Jo1UX@9AhlKKoq!jB`DygqO}P8QXW?S&a&-4W)i0zpNBj!jWS@j?UD8c`btl3S z8W1I!FDHNX^p7h8rg-#Ig1_O{#e*~dRALSCx(t^r-?_Z7>C0N$)YmID z#hoqn78~I0IEC&(cnL!T`s{&oMKA7@iE|gFA&7(u;+i>usaMK3Vx}in7q=DK$l%h)6X3uxAMA z*p<}nc*FHORB9m-8iN6>M@#XV`Xgu)o?jPDExZ^7hE5}=N#`Qp@b*~OO8-oYv~4QJjQtkCQ`tXHU4&M(5m;rfQFD<9fb5+ zv8MzPYJ_0^FkBt~Soy##N*FIaUAke)WcXHSmR$xs+ozH@j4R~=B6yBOA1?x z`O^JZWSih94rl5KW3Q|Ein~3Lnmlp717|1jwgbK4hf1{EapP&cK@su_k-b8ZCp41U z;0st(ncAg}js>ONCnd}AIM)<|vn^lO@H*h$0{rL|NAlO%jh%=<*?V>bZOXnAt`For zw@j#MDkX3NZBhEeD~p&B(&A6iCePMOhw2u$51i7A0p)zA=1j;v12N?NJR(9{kH-=i zspv~}yKS_21s39VNc}0IE6AY6oB}?l6Ux_YxKrHwxZz7F<=BxknTKnUVH@!p5{Z^YhgDPf3DTU41lD*fv z$|;tBSiy*Ga|S6b#yhd!a+Ke6l=jOfodhW5S(=3mRd&(1qXy2?E%010Rbml`7jSiA z5(Sqw4w_S(C!SV zNhyqQi0Z9-g(~C`nkO=GDDtGTUv^YSJB%e~H_rMxJI3U2Xa-h(B}$u1cSL`jGl^8C z|0F3oJGKP9#a7HDYa8PQt@$XFdh+Yf8m&vBqhjoAWyuMLVR&>eDZyEHAt(7cm+I5U zTJo_#WU-H5s$^d+yz2~ex^~Ae_dwhhIqy^xpPgWH{qm!}shjeUOPc-^ z-?{~&XA9{vMd2JnWzm+&C{4CMPm6n#tjg@pMcYBCST12WQg{7{2l%s_RxAP!1W(p)wVd`-^purd$%b6j!DiO>i9nz zZuCtz{%FAx9^S#@BKPn%oz%zqrTR@XD#72801Sg@bZ?l|!V{ zjka+F=o*pJFnL|6e;PZRddw1D*sgsZ)mywt$1%rWboam0-htBpUH*kk0<2opL!g925#7)ja zBnuk{!6g$g29ISATR1-F(umU;0I-x? zuV-(DJB`bqWJ|Go#$tGfTtJ{x8ifN{0I7H^`0KFxu2vm7VEz-fi((|uo`FLwv~ET_ z!S>2)mN^L~LCp&*bI3M(|AZ56_uAaC#l7-yadI$)0BL9P@n)jcL2_yZ7R$Mi|1w$x zRJ!x&czTShIfs2^!_eSl|83I8RfiNrPZE&v8i*V%(dDI1NNV&uS&RG(qo%zDq?LPj zkwF0yt)uU@aqHb`(u`nJecA$^x~Uv=W}lgOrp=KmOC}CXXvzW3x*It!Ev{>_IgmYG zD96x}E>+AhWkZ$L@?cy#48`hX)j|l=Z!+K+K!uKRJh&*>-h&Ahc+bo&-Da;(0BAjZ z@Aud{#d%2?8;aCWE)`uW(|w;Klcew|QT?at|4*F|u4+@i&8|${5!Sr(#SA${eOaB` z-;tWI8o;yrojrRRQ`GM_H2V07d_vH~_2RpjfP^_OK1h}xZkTx+Y&rCmISkn+Go@(I zvjk)(1Mh6E#)Ars3Li}38e4gg2>9>|+Re=zZMm{q4hNZfA)bQb6_5uq*wF0Lw^34E zp`b@K{YjlX2!@19g1Rx6Z%7jQ&;X{d!+Q8ezT=tF1>`n#kT{H?GBi#2B_hJoq~R=T z=#=?|5h`VnP=B&%#P7OuUksmlbF8VW&Sn)_iRhrX18rF{xRLzgBxKsKt5N(im`{e( z^M<(7$lu>10+MK)hT?^ZI0!(5Ut+!P=V+nt#N0QN#*#-CMEz)noMRy5& z3Hlie4T@FNvlw@@5$fP$}JcxBIIj_Campa9d3vq=<^;?OtkU0A8z=7 z`#9Gqr*=M$8wyA+im_OXZ>kLN6a|>$%X#uPrO>Jcl9S09RhMQWRk7;av`e=SmY2l^ zsgongZkE%W@e8=bePKR%{>}&Mv-H4;Gg!u+|Gk|SM7M5XVS(E5&_UN@ z)TH5oVUma%;;1f83COW9*jig9@|EJGXmj^Xw2VoT=Q#}$+WNbf!Ir{-Z#a4ofk-^( zqhSaoYfC|oYBSYbr3)e7>0Jv6Nym-5d}$i)a>@&6O88bwC0d9UZ1Uoy8&XMk~@ly7IY#qub5Z7f5gJ7VVvfY zZ7M)3#k#haSg4Ha6sjXx!*TDM;N?}sjs{Gp>eIazj*;Z#!^s8@8)4d>x@Saewm*R8W>_KggHdcbFL6jsx% zUCpz)Q%tpw$}5dh)BdkGByM1Y)0e17D4Pt>g2LSjLAzUuSRA$ikd&W|)wHJ~Go9Km z^a3GxIOB|`17LbkCQq~0#$_N#&zzbt{fHsX4h4j|2CYqxf}dHiF0sr-{gDs$f)4Te zt0?@GMr$f@*Qg*bRMz?1v;7fzRnd!D?O!Bro!b1+T_E~w|q54oI_1LT873A&QvXB z(vZf{#4d!J@CHwq;4NJNT890wN#spCCnX8$l3%n=Jl8qW>^5Ip`TX6m6(c_DsGROcG2HPY(fUkDzEQkR)(cQsEvdP>sy_Q`oDoO+-z-pF#I=dMNWFr0r+fRz*5WOv|7(Wv`Jc`5Q zMvL~=iEDv+3intEq&icAY-k?IWD62N((zgskQ-ecNLr!r?uz=fC4y3#2PCqrP>>RG z?JRAD0)&`aa5Y8QWip@xQes8Oqv#avBUQ%}U|`ZN<3Lmp*4{vKqb7;hGz|6GkeqXz z&jbISNslLZA!Fw5O}FI7XUU$YKFpc!QGIb)q;MVF2LYd(ttCV z0)g$DhEQIVogGrsU)NTi?4a_lt}g3-N~uJXGMZIT>EX`k8&f!$N>bvQ>sn}8VMlCv z9kgF}Dy5K%K=1s7Mg;k>rKr&gcplr`F%KJxRf(gVX*PB#q;$Z=W6oy*UX`q6cumFcSf z-!0G|Rk8R7f^yFv*B|D1g-3Scp}IciMQG+0L(0A56Lp|~OXP{CnaJXK;7$+-%@Q$Wml3hY6^N*4RkDs*^j zF#Q0X1Dqn`!R&z;F%;XnR)wB-|FqTg_)SU2s_(dZxS+aU>S3*8pM>;coE|fwO%oa6 zoSHW>L{Ka1$PGLeQ@kAVbY&s1>m`Yl0G3GV+emsm57qp6?)Foj^;Y2c|(F zDf+(LLqT^Sic1=&-f^>mpKz23RnI4;A>3`6Yo!zMPNi zzL-8jY&5l+nfUUY@B9CJ<-RE~?fuL4%Zq>f?bUEZcu09XW~wKVRyef>U2oRfVm8?{ zLZ7f$^d500@78Gt^rEvK<_cvsl?%Ymbe|v_Z=5qE7o8Zo{{vS=D4p;Um<68THd2u>Q;aOG7jpxcK30dCTU@@I(k*Nacis z)Gv{4f0G;6k$&4iLD5$ZDjwUa>p4;BkA9~z=Vs7kN)SYKY6sum^-cTq;m1 zOyESxrLCAhTaltrvY^}y!f+r_E#Z!k*4Y^m>@-=Zt<-27&Dqh>YDtVtACx>{O$||1 z%VVo!dDS^~75rD5lF3Bzh%w=cKk5yw<8+TUD#Vk2z4+oCOp4wqV({)F_YOE4p;0l3nn-kG`u}lc`RPqn9B768-DcWYqx~3x!=bd*xG8(d0Piw7xYN`l69NgMXsR}(E>~ixo zQhIVQ^Sv^fi`dDHT3XYtn$w!@AI6h?mw!arP==5kb|6x^82XJ90xJDBoRkzu46+JE zrf|}>dwvKve5(($nOGidfwUeCM^FcZ@6w%Q~BDNH?`kl<|(=L=@JK)KvWvq4+WtZ>IbL}Rpiqmb%sLy&Xq?>R$!Lowgd1LBT+kM zQrui~kU2*irK{s{J<{22TAv&(Djr5h@>mqdZJ$#~IZyZJ<04>58X>jYFwPSsWHSQB z?d|DT_MGQ4|MH02`xt|@-|W3z z%&uE^*EPnR_r2Esct6_xzF=!o3(8kPiN-{O2UbFQLQo;$1Te;rCdMN<0>gn46{TuS zLqm`d5A;9@L5=aiXcW_=6bz<{NfRkV3k6$fp?yF5?)BVr4m1BBTZo(0I(WEVLlXraoG07cWn1lo(nE+A#G zsA(snU9-CZg0Zz!nwH97tKAn0sg#DAv*~`ig+AEoWk|DBCS#(%yUepkQ5zwBcmmKPtl$UUMQkn_bbWoP5-{gEbKd1?{R3Gx5$p4GB`| zoSdg`sch0Ar=uE|TS5*=Qgn6&`HtTXjTskyxq_kNLNid1-Q5FrN9UGdkm-h3I3Bnr zDT->qo%+(Z8HPg}57fK|#j<(Ty3g(H*4gK2FJM)6?w2&sE>u7J4u9OsS z#VYHqd`;M#UwarEyq3#E}6rFNvov>F- zj(o3qAA38yr5w7))H!1GD<_Sb7l!}$T&g$CxD643`=p6FoePE%^!-$$AY@2?Z zngTSK{sQpWqSfx884w?bXbV>L!!3jJ5|ITtAyZRjfXV+NxY=Dh%?A#SXDF&tS6XB4 z7vz5{D^B?*hp31C8U9RC0E>!{rSPQQk~i@xUl zRXko#4oevSbo=VYCgI&P;t$Cs61lI7HeXL<0j5Es(z!a{Bkut)7<1s(g z;_f(Wwzu|Hi`o>(m@$`VTkVud1D#zx8qv|o9!WgTHn-+1APh)XoJKhe%UWgTg=g3O zmO!B}Q}f2{BT1HIXX2?~irgsh`RUpmRbI8Oots7R!1IKKI}jN2lt@w%35U%KC_AfT zv#5OBhwN<-y^?^<+-$4>D}`Is)of_<#RgGgcxdpDX2#6@Z51;i8aOyfHR&2=2yg(f zG$})5dbAiL&4lOm!n~d*Gn~*KSK@1E48nMHO=+0IW)v|I*xunjg zdyj|1YDPWzp<(lBIH!W%g0lALq%Q?`sAHmLSz{qYUrkG2x}$k}#n#lqWq#4pUow?j zyUYzqXT&4&I;DJE`OrMksR?h5{!psLc`G;965P1Y7UMJGu<)$J9n$HU`^V7dTXe^x zwhIkSLIVenvO_0N?qe?}q6%K0mHWN-fbgQxE-y)oTee;AX8&6k!s9CL!d9KQ*4u6A3KyK{6 zH5tE&(3{S9 z3T3^SpDZS)v_|YVZ)%${5ODmeIF?&x%kmZBo#9ow6ppT#LZ7L!toP%={hU}<-xKD# zdL-vhct1rdv%{m&?C^K3t(N`N-7ctpbbnn-mri2=a{MU@ooFb1TvaD9>K}TzM%};f z%yOC0 zJ`1_}H|!33%kLqngHG1OdXFtxrG%-8Wiu5`DtBU2jzSJr@IjXLyBn!mtQmkn z9}2W|zfw9?xl+PIw^ZN>&jX9G&iQsvik}`Hh;tq0=|H`CHS_lDgZdPIzuUK*gM~PjbY+<2KMt?Ebg5@`TfuEWckv_~ zDv9rC*pH3obIP(x7KfIu+qghG=LKHa1 zpI}^bJsv7@m6(VYvOF7VgeC_E#R)tIJ|cnGp*Jb!R|{t-YDcCs%D*%&=cT86qEjXAktyJ+TECV!a8GT0=N7HJa7K(N3#J54s>bHf{Wjs}D8eep zNtC5$;?vx214{`;y`MUbK@Jt_#>b1f7v0CcYT~!*U+#me?6Q4Zqkon4pBNLoy<%O3 z_|uopj-UMgeEW=c{ps$a|E)idF00@A^S8YL&%gTld;OvRyg!3q<5C*E{To{Jbp6Lu zubpP+ZO@nE9dD-bVwx-)FD0$_B)uxA6Ho_%Iv7O<45Py?B4tVEY?Z-As_Tt*%PkU_ zGSO>Uf9Hb*XMiX?hmbMi1of>EX9P^yH5O%sa40r?w|c8Zik>66lK$l9C*@PGItyzCIDMNq`&FvHkMVCpJlZqKZ&6{GyPn&MKt=#60EcD9P&TeqaL1K zkCHH{kB_~bwVEY__Ado7rV=VOQ{fVP129MjD=qVCq5Ct^C=X2SEyRaAS zN6C1A5LKj|EWE}udzmjonXPd}esJ)N3N5eFA%#3H&jbgJG103CbPreNP}qp8BaW1A zCzlP&*5lOf(Qz4Rselvf%W^O29#bJU(%hCI-0DTzmnCn_Hr7-7v6P}IB#0?1yyb@q zEgp2dGL(Cu-P}9lrg5qf+&%N%830XClbAm3)juSYQS(3@&XO}Jd>dG87UK^$5L--j zwW8VG6b3kYI!SL5R(bv$hp}s<=@M5B9|p>XCFv^HO4dZ4L11H4)Ys@PK-m*)51!;5 z;5C3zhnDsnZj9P7-?E|d>j3SGor4h6mkWKRDTRE!({OaA2$0>dhh+E0iKu_ZS{8LY zUohmOmrO(oD%$ji&CyRyo#eAV5oC-_0tF(wvm8y3DTk$;#|X78vK#F|R%1#Vs%3Q- zvl!(oD{V*^iG-;*V^mjSm2Di5kag=nKz>A`6RJgp7i&u&itx{Hgy`REV*eh_V9cj;B3el7f zAsCGeO=4G{Q8iDE?W+aM3)jGtQ2WbTxDuD1`-Cnjk6rMOE9AkE!zeNq5){rJv=WDN zvWtL!#vMEOI$25#HmfdVMu;2)v-PF|L%9vAKZl#?d?bg%@1Q1m3`dU87_SgNAFoArKF zNBaAv6`*G&bl>CmFSnJSqXo)xqfe-I*mYOS))%P-AU-wPgisuWUUQ5-J(ALLNV|u# z`#5*P3m}VC-Fprk4+3gNH4u0sL8PZ~7BAwWA#@9+R<@RViZom#g^|Q;B8G8mhjqCr zct1al7#khY$5ri|@#4d>cJyw~{rD)B*DP+kjefps<>`iccJj7Lsz1t49G13RyY?o8 z8!7-f%YHc+N~N4|cq2A6eh(&pPiRb|RWv*&aSrA%Z9t%fwp3I(5NKWjQa)$=uhF6@4 z#MYou29q&llOyJ+o@Ew=-n_HoEu7bU%w>lIj#lmY`xuy>KWce2?o%QbIHkD?8qO;X`^S0lL0e+|0Gc{T6Q)8`_(hN?0CGDl8B8 zHv${j3vlyMZGDu^0C`c{-xW63@EMwDF5R@_vMMD56f2d+WFJr{*9e&pc_|Qg1=WcSD<_l+aXyYXSp`&4Bn~bv*FDt@&0H zyhhKmh0`ojPt!d)6BoC`z1fWNYEz+B7-tU9zKr)?k8u5at^pyW-S6Vv!JTWDz)UwsMYFwbTQlEw zO0j_sNZCwW+Zur20YP*5^F4SaXQvq5>ECQ*(OS z!>6nLM|TK~Yg9D9Rp(lO!hd}-gv#SyJOFUwn<%QP%v+LX^u|JBYoNi0Z;DIJHdIQ5 zk@Z4V?`8~SIW1DB6Eth_Qf7K6%~SzCbGuCG;G=JfE$2nY-2$xBc~n>WHgP&Y8bqSf z{De~qc6YRS*Hx)5-uiH)Qw)o#Yg^+bd{95fbDOE4+||kl0tMcpL|ZQE`E#~8v+GJj zyTTp}$n^oie*U!Cvn(@T@$@+oQgE?cFEb*^I%i>IuW|T=wl7jPkJQf*-%q%Dy|h(s z-0o_aJ{L|o6V7e<<{NLSz8Eo4jJvfw5cb2o_F`$h>^hvxsuEW66g_vfz@u4?my{_= zV0jI1lLtehM#_DJ0pvUd_k#fwwpr78kL4;Jc6Q<0he($C7%&UQBu!nUb2M=z$!?m&Qi*UPoX-d zaL6jv6;A@A^+Q-LxOJOvDmyb5I-*czhha!26egUS+Pl1^;&g7aBX#!mkd#y^>_(Lv zD`ed;n6AC+7ad=XArJG}@*4J`7kLmv3_VBLHQY%Zj8LJQ4AluzCa_CxV~Ck=LmoG7 z(?y{H0vY5Bf}venXy-1s^x_>GUMX^0s+5>X$aSoMONe(M&=lHY_0g@7|ztb<{@0KrS zrZ}ZMjm8ie!6qskq#vUf4F?1wlAYxUqjlweDa9vo-k3^f*>1t;|mttTKC)gNcQ@4>% zA?OdvN)WKKy~FCs<8Ina2k;sBcvFv<{%_Q4EW3VolZ`5#igeB^y&>zru*elOG7ZEl z+Ym~)7`e0()83Vms?zICQ}Rq2zqnCIsnz79Gtwc!>4BupMZGNoBCz)i1vkhQ7owgf zb4|dECrJBZYz*EbBa}|Cv`?{|O>%xH_p(|~*~MtCk?w;=773O*B5?!X<}wR3>gKRR zkNLTd6fRFlJ_*{Im{aR9J-&K+d@d$Ud6?BwmMzrAOT_D7b%C&mnr!?Fw}Xq1 z69T4f@?0+KG&-N2Wtaq0*~c{PN{q5tMnCZs)1w<0S1#z#7ChR0egd=?HmVh_^gHHT zB)bu!z3WuNih6wYD{i{aPh1-QQ)$@U%pAd7^x|H=5p#}l=e%riryU4KViWmPV~?A> ztkmgIsszwA_e*Skb-Uq-IJW3p(CulC3l@n-?7JZEX4g@z62M z;5!e*qt*?-@|@>dw^YaGag)4BR(sZdFX#7CjK%Y}D3)(xzdD08Njpq=kizh`n`QHC>e+>a*|^| zhit8uvEeh>PT(c4`q4C-vdK(t@2s=5FRnk{l(0d0`3arF+1=;PvbAKRcw=>_jN82N z*hk;ARt>1+%W4sK(L!S;Sc@Dkf$6paJ$R}aUNp4?o&Y|4eoN;KMX_XVA6x`;*wv`C zlgvg99>+-!k(YVDE?)aBDanvnrH6D1xg;A@7$P5|In%ulS-A++qgGbEKV6<=n`)aB z=ICXjNJZk19F5Ne8&750gY}zYP)G+%RSsoG9%5ahBioqh1$=0Y#8W5{ZY+&@wg&I#QY`1trG|LHL3}u; zq2%P&vPLk9FS4x2_`NY6$kx1#Pad#8wO@PR)V6!)0XUxbv)4X!sy{?WPUn)cLrtAF zM}^!Z#&$ec*=}MLXBefcEv?kj#FI&rm^x|86(Rs%Z&k< zLo=_l{1ZZ=zz`qS`E#~yeE8w85a)ixSGM;wra=ph&3oj)-I(2i-Z#v-3q^ zxm5ogk=rOW*(jK*J?ptR2AO-`7=LT{1zJG^{lk?)yA0(dShJ~`LtUoPBBbjum-g8K zh&1ye#)%D2L@=)qlb*SdnVK;%n{U!3%xl&`lJhuEB z=aG3Cup=FMlq>;W|O+2qU4FSKq%;1CGG!toh= z9E+*s$kNrVxUlI&HFiEmokW;oY<5k@_@M*Y1TCq!EF{DVKn-)absAnLTx+Xz z#Vq7O`Nh)-2XPeqQ?tZ)__|Eq zyeqrKaU5WfiH%OJD~KB|<4+`}5lvx^)wp2izlTYE&mvI0e>S-yiYgefA9 zNroOutCb}??}LMDE+;(=a6L%3bnA}56?1SXtg#cX@M^&$jRY}KW2b9#HM31I(8w56 zIiu`apE6Woq_$q}vEC(Lub*67B5L z{9mF9-{6tfKA5XAM?D@AA&Fh>U;vy)YW2dOH!Gk3R2Q$c*}U;A;-_C7fr(JOI? z^i_zcv-XnX_0K+DK7Uv@@xaaS9zjpIVOa{+UXP4>#p_^u>`2KESZP1jh}USqF+gO~ zbMrU~p&KOWoRn;IyzAwh>hR|wSp;+0*2y!zu^tKOfYwb5i{GMZQT<#mx* z`OK*`F7R<$_`L}-FuW*SlQI4YJ%u&*j@#skiRu;IBs{%1F~kZj|Cg%>ORI}mi zdFo|0z`tq6#|y+Dmyn%ZrzSa_bO3JIM#>JnuRY7O&=4t(U{1c?T1uU~?scu10Yb0a z5T$)~3$h@4fXn6Pm$_=j1W(A`vz~hq)rf!@5n2Tm^i}P4#}pP9e;D?_g%hGehcPmj zQDd#G9~LThtz*%VuX9Y~we9tj4&<2*V%NxtmnEMp8yH8|+RgDR6wHbX3up8W=LNC% z7&7RX@5Eu30Bzpbm6_7B0Y{ zNIN7zZhX#B<#wh5`WE(#-0DIUW9W(JMjR)ei zO7r+ktjqeeOMs5f+a=k%ufRk1a`vjZ;z0>RinWhE!`cs$e=r}vQHFde0}@3fR@bS3 zZ#5i25Ic|2H2lVyN@sWGjxyA(ReibK^w%PRGV~_?7rXKso*ef0Cr5@UUt2LFQM~~M zgt(>8!WW$(A&t0~vrSrc8JIlIv`(1@BblDcO4+ffK;eGl1&LBZ=oGu-J#Hts`0Uc? zR3|nn!vH15NZP+Vjm5G)2(;(Kl21GJhR48G5)ZMzY#_mDKF*a7MFUV9B$m9U3P&7) z+50xMZkVFuyn}NcS|h69DU1QAC3tE{b7Q6~B^xSFp5TJl0Pkd}q|9#NZ|9auz2Ouv zn3PG*849H<1yUkZ`l!<-ywn!VrcafWsJeP;2b!#rqXV}*jnO7Ajix;4*pQCo>_sud zTb^&mfN20G&V0t(Zq)EWpt?QAe&3B}xS@!%^XBJioS){QCM9U_9J5U<8R$im&=H#7 zMRuOt6AYk{{>Q^O^8~FO+E;&2kr3c}tgVZ(*&f~Q(+q^M zi|?6V`;j00==?X(3*(9BC>4hV{mcF2J|vukkNe;A;r-RuUVt2)D4SzQ?=0**GLO%w zjA;hBMWv$Lb&tBoct{1rWLRqBpaSBn;8|DxTqIW{Q@|_y)NR!6(!9x&jOgfb=6uUD zD00albXj+qiv%WYu9n>yi-H0t~CgU^~@i=n+Q!|O@aSb+1fHK~C4tZU9OOisUX;HWq z#NmBBY~C3XljJ<*s0tmt46UIDF|pQmyXdWcT&HSK>l2c0cLyT!$m-Z%==y0JN<-(^ zkZbcSfJ1l*-H#BWt0zCWN=kVnwTP$L%4dvh1}8({hlaO0*2?dMGl0qqyK_O?I$E{3 z;n!`a)#lzV?M7J7QH{1iW&pZ5lpV#eR9?J2q3HD3?^rkC<9KoaHv_$kbb14O*bu4H zJ&?3m`QAm(3d(h>Xju%L42o?pM=EzPyaBj-r!#EP)9dq?uEEZ_B~7tMWRQC-aZ00C zE(bbFzT{z|g5)d^*1Q+jgto4@F+^CmNCJXPQ7e8WZiby4VhDod4B}G~puk`Zc1kDA z2VEEq={r+oBzF#mv{i7Co%j1n{ZO*`gTVtFh~u4a&3wxB6Eo4CCe+IFAs)i|U_SW6 zC|ye&aHiOpNlnyLw)UbQERT#dW(_l@puHb=Y41Zg#O zNP)qi;!=axk!2X`jBTOcZt$h-eYMo2!2Wm+{oA&@Of^z8Eu3kV1eY|NC^%nR)CiX} zfo!BF*S=aFhLH88`3DvD1Be<9;ieiuTYAXg@q@YUTFgg_JS2jqi9oiCtxN`X+3ib4 zm4{9`JTqZcPpF z*$X;1@PpS=;R>_Udv%`P)-_9{l$XZJq${4();?#BYA!7ne-FlY*f$W}*eXky@JnoV zOko}E{cxTTqSHW=nh1ejRUiK^KUfa=6MiG5qx0mOnNcR%+M3N9?z5l&=qJAR*S~NI z+V$o@j-VqBdt|x$F9xs5>mHo0hmJdsQ|=!5$FdBXZMDUgS2=T}iXZHa@N*6A6N}OL zS#L1j$j-IX%60(BDfCs6*~s66`i~w+JWkv3=%Ey$yma_glpbloU?|yHDfogr-2fd} z6sY{bSZ$kvBH%uaE<6mJEF--pZvUeZk6Oz(Oq33+x=&Mr!-xIQWWS8Z38PklHE>X6 z^HQB@sEG({WPtTNab>9RPP<{R>L&WLfSOCd!1KQ!Rd=`=9($?1^2{l>+X+vkp(g$h zBK{^5<~@g|$DY4xYgm<(v2iBjQW-{<(@;O9`B9vh2Oz-WSw*!(Qk;s<%On_WU}}|d z!Qqsc+##OghC{_!{i>C6&NI_OGjTbk=HWv;7$!5^TDEp2c%Lc1cMLbTrR8BSdecfK zm55wkTn6~sR|9*Bgp0h$*~0)SFlPN^@i{EhR+VJjD^Io?CmXI%7e+I<->^(&E1TFl zG}@WD$zBTKHL_B$2|+mCyj%vMKRlwK0b{Ea?G}tA8tBce zO>{Iy;W(113}4T6Ic|XE@Rdb!gs|Jnnnd}rh+$*yu)-?R%@rMlPG8iG02>t5t#Zu+ zrLtRNr|P)D^cb5D@sR^ev|H1Adpj}q6_d&~#ki00jjFoMxZjun@oE3c(`$Pt{?XTY zD8BaQ>|GPlq_wCEQPvfz?K1YqL5r<$koBJ{oJhBQ#P&{z6>V&bkwY2iLvl9llj#CS zkT3=ZTA8wkL4^8C$pbDC0q3|PpE0(xQP-r6JL^!bG|iqIz0ICYYwf8zG?b_(tpR3> ze39ce}qhGpnFBRpGT|x$)+@49Q*QElTE@qx;isgR$ z7zpM&5{RZ_D9hCR^O|TuJuGkJI$nF+=#i*0XEiev41{8N&}3@Ut`BA9mZ_|SL_B6Zx%up=8@?`w zVYL;o(%Shg6{$88mdG-zIG1aS^s1P&rS4-0l5eQw_2ndxHo`ZRB&2$~Glk~7k(si+ozCJoHyn6C5j!ecu@#F({3MuB=_5tOMcJO6e06da#-o*EwV z*&Or)AWSu>Dua@|AWB3gdkge;>Rgl!eTF=01$pA;W;*;+Uc++Q)-{*V{6VT>Oml+z zNb1?5--$1Msu{utpd<9;NZ-+RC4B#;cyCy?0oA~1=JFw`upoPD%mE1{1d->{nf&qh zb2AO5_ND#Tdq_qGj}D8z^K;+m3Hrpg)D-^CeX|FE)TKPqsgHFa80k|{>ldR`NJECc6E8 zF33=3TnV$K;U~==99c=Kpwo^zF`QOL|q?JfN z(Mm89y#d*FkWHgaL#=k5WF&1uV26m=T+<*C#{cg0Bg`#vp>x6fB{~zPV!feJuHc-2 z_bIR|tfq850f@UU@lbZd*4sT7>=E_eQCOPU{;B>tr=k405ip2MhQ!XjDSYKB_u$-Cn}9x@934D@KJ}v9 zMSQ<%Kncl023v1cAh^mHcN}wE!2+keHX2)udrqzeiT#Son z$=8F3!?I-KSvmIM{YyASiohk$k-C{PWAZC>IAI?fx`~+2VNHID8mbuS#2QxN(AW!* z?_7f&<~`ct2$j*PR9=qzI9q;vIr!f_y-lK}D}rV9RhgfqHznkjzbg&P{^* z96}*1`LV)dxCz%{9d^7_IQ1Tq&?&sC{KilHq>lPw1N4&*xSV(DOJ?#t*kLv6TYtyz z_>uqgKYw#7uyMoYxyr^xk1Oa0A&6%gGtB=VQA#b6DbxAXLDiv^_i^=a$C2+6DeFd> z$6m}5rlW-5_XbCMI^5#PJvpCXv5ZWrXLxMubD_fltENmWiB`q)jd1wmv5*sK%M%9P zS(J2O;5T`GC#oL{(2$pBQ0N|m_Tcc%XXJf)yuk`&NueEmlJS2O5I`hl8dOrKnv!El zN0;_WL;0Bu6W7sF#Mw)(DJdOH@%Lepaz54i&tLiUe|rXyOk20&4xQT?#oS|p>0VfF zE9l!BvF$~pGv!|oHiY)GaqZTaK;wlS>GQVtdd0M#?ej^-#w(&*-x z8bX8bpcsKjN1(;D-Ww+!2=|j2Q=ENSAw$k5`u&@+#Mx#pESBglEk3!ZaF@=qYK9m^ zO8yY7V|ZP}?80s%oCcq=^pHq`a-k6n1{Nis2KT}t^uoBYgR^xC|^m3$F)NHh0` zcfVUQvXl%R+}#_XxlWQ**!9#+)57KH_Z$k&89eF?Ry5u(hm7>hML(ZWRfiK#Is+XB z#3xb2Ro)Q~vB<3g@c4LvnwFhl)Ho?0Nu5@!2lv6=j*eKUU194~vo*@@qQBHv2 z$uP0F%2aX=!)|YmdiNazl=p;Hoi;lv?|<3=<%IkL=Vq|Zw`UwJM)^rpjda`h;&>X!$$ zWrJIFKoJvrv9fS?KPio=6s_SCl>B#Uax+rQPC2Z7TL(m_$S7&x^aqRElyoN5JdrB2 z8;wJBBKAMZ^aq{Kat&#qbdWqs>eB?@!09Cw(&(Ea$}YX!s@R~kIV5SLQdA$DaE4TwR>C=@M z2xGd`He61)BOpT_Yh@7N83myhXR0BepgYf0X6QEK5#U1P>nto`dT2kPCvP)IWktMN zXH)vwFMpkR-(i*Z<&d}p|GKi4`i0IcH9q@~{KFIFAQ3K%2(@~cMbq#Ll<=-|El!sm zJu`WFLW-YMor(jcEIQeY4QijEw4ep>6w@^A-6%auNw-PREqAj~DYZGYB!kf7xi3a3 zZdU_Fh|g5<3ne#(0~$4^{hkm!4vqn*lo;KSos$v-{+Og9UqR{2Q1#SFYqh9nqMdS` zqi2At!WC0?QW)&CAw4i}7rQ~F`$VnkKt)-?MnQ8mtouku3e%D>+YlzHo~)#$(IVgB zo2^%6+l=*N!m_>P40w9L0+`ax#;8Kew_WerKx)=yiJ@{RoY^9VvivDYI-`Vex~4o{ zdwVLa#Jr`4E~yE2-Rf39Sik4CoqnPAkDTYq0@+2GWSIwmdxGJ8oEOvrxXYi8cUQQz zX%&FQdo@aH0N?ftGX?aU@Bt&P} zum|BiGQFztx)Ebkaoti}2IXTNM^UyVzw@BmOnvDlx&?%bynmOP@l}`e;o<*FWb;s;pVUpt}Cb;I$xqL&ipAZ)M|?y%H{|a3Pc#w zJKpNd9R$H0@xIy@XO?+JB>Pr!%bAuaVG{ciXY!bikc;ENoQ%fio$|N6g#5+zh1i{U zCIEk(7U27@rI`f+2XP?kUTX(MW}eIC%O<7BOU6!6o4#9)?0pW9G0tfj%B7{#0pT#4 z-SSZK2mn>;ug}&3W`RGw2*5q1%wDE3WFvYh#Uv@HAN{?ha-ExJh%M`+I0BbrR6=-}Qk~=E15}t}I1?Bd4jf);K^;2%9Chn)-LZQ~&VVEU1}3_v!k!h4 z&Lx4U>}nHrvOYp??aVu2li1Bh7(P2+ku^Bw0L7$Iwv!ors5>!j)+WOUzU*0ytQ9`0 z(Whjvsr@vS!ag`UnH;g}4lQQD_^|fWblGZm(bBnvAl&d{9xV-DY2yEl^T+3uR%)ob zzimfFJck)w5;<qXr*nBN<~i44$&;StNV`yi zp?U>_#qOjJ0?#ssYC5IF_FSj)&KJ7_SVXvPOiHJ=FN;J{vPi0pK_MVZq#cuX{{gWZ zFS)q3GDKN>%u*QggrgP7P zMqqV5HAYDVI2q{6C8kWh;63WpE;Tmb2M)m>r8nWXN{YhIWcZFQ91+K4A|9ryly~nQ zcZgV8YHM+;#;9iu73~7#F+LJ!>3wM<#Y{tVfMa(l+mYr;XQH=?>tVN1ihD*wnuJ6g zhZr4&ks8;iiHS<98J9yecy_=WpU~Yj%q<+n%kdqCrF-~-T|PIqvz9 z%yREyOj*(!n=Te0ZS17Zs*$IVOYLzKWKyj^EXEhOR*M90R}%`UbLRGgg_#q-4rHZI zFNmDyI;{pySP2&%Urv|1Wzi>LZNm{?H;O66*C3N{B&c@DZZ`J1R!RF$KV3JI9o+ zlI^cW8wh^^eq%`6y);S~Wbdy!ln->JBlB-b+;Vc$ zOEeelug(8LeCheVuV>~rUgE=hIhjV!sr?USlTR2U?=uoSruX;viOQ-El0RR2-gRyu z_q@RB4&#r0O0mg1<@TW#(P6OUO4>?85G5M80 z*)4L|5Odb~A7pzpe8A7tXdDV1e?$5N_GHU>WRyZ|P7ibdGFOPTJ7wh+mYASdf)7(# z4#HA~qz`(lp&{&0cGxB*^3cV@vh;ISXUDLlxa7+kvVNlXaW3A}Nm&D<=nyoAjPrC9 zoyRm-5nIt^tk&KVICX0Lus|;bjCa@d6K6oQM1j;%Cg5<)t-M$1X$A)Yp4KTWxKDah zYnwAg(8QWfrIjLvvxVK!E5Xrh67sUqLc!Ah0NQJ2ycA?!SSNX!Y$NHgomVTE^KTi{ zis|X{e-sCjPn-3!T5GnlS!DDDOK)X3Sx5E;hVH096gW+!FL|iLHa7f@qaI;@$-V>X z)3|kSA5YFhx01|ULA1%CW_T^;vDL@vn0f~+XD>C2!C?hS)SeTO1OInj>HILVo@vkj-= zU_hZ92mwYsZf3gkwr1<$E#zzfKzS{>jy$NtIsp?2g%~I!Vpy}dcsf55@L>0BOS<6) z^2j=t&XHV!jahy7b?)rjyZXPsR;*VaeSWNU(r4y5T+$mhRq2}FF2Mi;U>apENInaQ zMSb32M3caZ9$8`zE5j$7QtjsrfTMK_G)e#rt0x)Mg01V+?D;gM#k84bOg1Y} z!fiHK&)z=S*dNN{vlko(WjJoOL^?c%U~R3D*G^O-J+ntceNu(jGM>sUM0U#$8^>}> zL!~oq5o*^A_GlJ6>h3XxLlJDEz*=jVl5BWHEGJEz8J%Ub$5U$XzWV2qOOrB8@$Xhn zmEmz()37$xRpRR1Xno$4SYiU8MG6fR4wr32?Igvmya72ZsdSJ$L9-aXEP?l&v968^ zUli-+!4zh`UX4s9&X9wmb{P&kl6P%m%m?z?(ACCtTS*haJcn()fP|GA6j*R^u9das zKTm72TW{{B2dl{=Y-!Ovl>1!aTM{D=FkdSU7}zfObg}qY$#BgIHrQp6Ij?%jI34cH zQEEK3ae_j)tzvsB#8u9yd1s??TWqkuEqYR-pF@Qt3-ZX?=@$8>>dlY+8l^$8V`CS#YQr4lr@j^6F5F2)K`7(>)Wi3=!e**<33sB?lYE$J z4x@@AHtjJDE6*dJcm?zZ@O)7RQ9|yalyQ=dV?H2VxqHRR)c`@q7IZ%q3Oq95MCaD( zr-$cl(kiQ%m(!1#jJCq;ylS= zC;e_kHXZEqu!bEho0x4aZ;yI95V0G<6h!v06Wm!Mo-|CQj*w*_vft=C(71r(m(aOj zcuX&=v+^jy&ABX78T3XoopEr?@x-bPRnq1NMJs29c25I8cet68kL2mgLu6-Fru@p_ zE`u4h1=tInCfnvljSlBFVS$@i&@nJ@b6?)7_cOS#80uwD zYhWv(w!fTa$;U%(eKx}Qa(J#@T!^M*=4a=g(kBWJxmlx9yYjqD55*D;i40hk5G&Si zUFC5S<3byib>!+v&nYyt8J;PJ8T->(jc?S=?(P#Y5v-tYJaf{mo|b)Tq>FEZc9K(L z)z;{?mvA%Q7uXney(l7!#g3wyz=?VGp(A|(gJy_6I!ZVdBTK?0BShIxU(?h|7gjf> zl`T-Oo>5IuAw?1gt%zF?#PGo?Am<3i!VL>2mEEW~%(LSUGfmV8@%%cS0Vx5E?js&E zs);&aR$;r9@Pc)clN2}Oov(806WU}8e)7r4*fGfG8r(^Sb8Hyf{izufO);w0*gqyS zk&WYG=7q#d1*Ur9xU22$S1*(wXg|8GGYZiMV zdR$RI%|MCDSGUi+dHM1W{cm6VHNP$l`^~N(b!Di#ucys3BCZ1b@Bin&`-i^od#7bE zVZ4QhGs;sA6*fi-$x-0ZkFBifZB}qS2^IGm$_E@?9~6V37j)c`47S5({h;3)nN=ni zRkM|jEFPjZ0!#5dqw;bsvtVPNTgDtaXBPRn#CPD&h}~*xmKc=E>|o`;C8s+F^EufL zWLkyenYo&bRr|KH6LP%(tNu5Ssia)NlXA|StMm?rD_%@UPw8CB4C6_M*hNXh`E&L- zX&3u}XIG}uiarht(JRU!2MtcqP}Op#p6PfLA49SmK^_?KtUN`sSA3;tZ6*!aL=esy zlqch;QF7;;JKR_2?^0$o(NLldNNMH=gr6v~Z5E+JTor=0vVEDqlm2obSa3lwu$c06 z>r`QaoJE!1v50Xgw>xxi`uy>fc#N~;+@*e45w%Bh+!(G$qN@S&JVrRolH{&97M+>)n)WGK~+osgojOS zARZRoB9l2uF@YfU@}-Sd(+;)Vy%a%@-08f*r6KPACWCpmkBTZrj1CmRN^m=7 zEjkx*r`rlrC>})FZYCR2jTYW0v*C3&-e9VB(w=ZlmA32wW=d)6wZS&Ks-%8n?;geC zP_p$&6cZm!cK*Z=K>ep0*1*CqsKzAW*6n zY5f`oh4Phozflo{8f)3>c!o4L4??1!ifMxe`Ek>1&W61!U#|Py5f1(-5T%qBH+Q{> z_?v(HkAL(#|GCjJz`loll2;2_m#5DLV;srh_?Ca|UyVQfhu)01@0m)jrD22uF6g{Z zQ~6%`fQKIL{G)M7TB7Z!*O8sZ6wdO!Fij)a>#6-puhLL11P-YV;lmh&ghT<3(!+-H zlq?)x9}J1(1F^@pxGy0$-ijTk`t9(`sS8-C46gQ52{x(1n4O5xGLN+IFQoG-+G@6< zk%&+u)pa}8H>nxQ%?t#6Bt$&11#a_XptyL00t`|yTkcQI@JItU^42g;eH3yCPy2K6_&DrQN+H#2+C&p+ zdO23;=6rLw6=fUQMOxr_=3Lt)CD2gs^~1xyc^!{O-0y$eYsg<*UwJ#-ij1dT)u;LE zY-IB_nPjIwgMkuG;VElrFwNdYh>xbJM6c46Al-efMj@)ta`o7Vr^R`|d{Oty)SK*y zU^)quPMWP=Y>&8wR8yXxrMv1Cu}taqvLeGGo=z*!6LacsMoJmH6J7{8^F%efI2$d` ztz`{!Dj)Yj@fqeE$Fyfcn6T!o5tcCDArb=`YT%QOZ1Cb%f4+uV4)8Cr;Z@V#wscc3 z)aXFfzfBNooq_z>c>yYHW48RGSoeyV2np$;JfJ1>?%B#K4#ltnReR3C(g7cdTJt8F zOAK%prmIOGDqUbz9W*N&9I-7P3kl;>7O_x{jpAg^r>E$6Hh`T-LxvM?@uytN;LG-L zLj_lgC4RM(&(6$P>1}`vF1VE&IF-#y`=5QG6Wa=nOv!S4)4m@G4Htm)& zbzlwJ@>Ot2!8GZl-x9YBi`?0C=i_mD#iVxz@{FKu2*GPs%-gA^u@G%}@<;!yt>G-s zmUzbXgWl~ud>!p5f2F=I}}Ad1rWm9@FPujdHJU9ai_R| zu(h^fIA|SfF)0I?8@+~iZ^w8%tvOHk46+!b?t8z1D0F0JMN)miM7HTIp6ncFGFj?z zS?VR))Nx@p>QjVg@p(i~+D)n)VkTojIY*@@#}`j2=b5b)p2WEIjJe;sj0fC5w6UTu zb36{@=wQj=QEh^&X2-X3CfvIkZoCD97PRo|2BYYd1cKwa#nLf6Cv%i?Q9HL_Zzxvp zsOFVgNhQ_jaO9AgtXQSf7-myDCRgCDs@XEJ_ANz9d&1l66aiSZuMUD#aVh`aH2~q0 z#j|X_;~jxHE2sqNGb+JUuOe4 zr?{~+iA#YclBGpmL}DVj$p+NHb^*Sc1OHG=s;9xK~8U8ejPQn>imRK{VzAefna-FE38}u)2|KcAZY& z({uX<9-s1vwVjA-L#3)nc_U0BEBWrr*4-5I@48#b?@uz0b1)7p8e}(Ie;Q#4bit~r z=J6Jnh)vJ4;w@sEgBJ_h3Ja*`!QLAN~Ng%}KQgAx23w-J+@7?S9}N>{K(V)U8*Np6p$8{>S%l+nTab{iA|^kn^)*6ie=AicwaHLjX%7ibCjgw#;;-Ilc=`jIF~%I z{HW*lG1i%i4Ft6eKitLST)BwDBKBf{kq)Le`avZ|?eUg28%_UcS85Ue3XgiTiAry+_wcIe5Gg*>il*iBXzS>ZRuJ8N&pc-@d* zAc!iJIAf13_$*Gga)1x5jly_2OBvs&z`j$3S&6<#4p`DFfF(_c?};)9SxRF)f|Di^ony70!@9Ue9kaE`J$)7YI0!UbvD zL_uJJlFoXbC_7we0XE)eTY{#a%iCk8%*meI(335}HZrcew422Rh5fi|8#J3#D@9JBcQ2qXlJ-BH&?4Ef=Y&y{N8-DfIl(hAVc_ zhRo{7?u@7nIh~X)LyJK|Jye<>D6gY$IzxQAS8yF9k0^}hKRNLEHk_d#Sf79dImBc*JG0^>R3{*sncgcZ6Gyb0qMTim(`uPCwd^$qGhDI` zE9}EE0irKmR}QYKs}!gbIs-H-ByD5jYCdI_-4Cj~!Mm8L3Gg=2OUhVfUJ-{A56W|+ zk0u)9di_>C3aTXQ%|r92A1;T6-{DMek=lsCNa0@?#xsTyB*ly@_IcasSBt`iPKNuX?uaVC3`0l^7in}6h1yvf$~jGFYR6}Q0)S}tsR zhsR8lloII{rRWVP-~gX$BIBZ&xx806K}uBfMg($cV1~bv8aSgkD>PdJZeq z$#cdJ3D~ye^DRZRrOrRP8r#$titdNy+`%3>t!@&UoyYXNfxCu3N(B(?Ny;)c1KEA% zwMa85whh7BqvfmI@dP8X71MfdMSNb#z&BckzVQ<8y(cK0CO8?_j&qqgEz`FR8TyA` z_DBBxANuY8QoV6+Fwu`h-x6iwLGkFO(MV*Ig1)wYj+&CC?O4cvZl_bsGKWHsy+zIr zyI={wB-0jF0O%uDS~8Dyjs@62mrZ2G2ej1A023pKCqJf$931eDpFIMFK!jV(-FX%l zHOdFC?ctn`g#bN3!oPBkD6`K-)p$8OJs9EicLWzWOU#uA%McIh(h=wfBGr`Ya&z2Q z#%Zavk)w(pob!2~Nx&nw={li!C7SgI4_4@j4w-AbaQIQiz_yIHnZ!v=9WSKM6hf^} z(`s#Upwj&Wy13(PR$@wBph-N=gf!>`PnlA}^tmV3img`YBt30nk)kiKxPB@trC0LQ zN1))5ElnnH~z<3O&JijU4>bOF`&Spb#P_r2zvYj+N>>^VIq4|f1VLdWIVT7puw(9kJ$UWV2sPB`1=fB_0K26*4F zy~JEY)fmyjUPpU|02OSQb9g+m@64e+^sERs(M1%tE4;z*{FzbM6yp&X$24AXE5d1} zXZ?^875xrA5ks>K&Rou$Mg33?ZpXfc2oQdH6vDmfPDk1>|xr!4Lyt^ubPyJWL zI||U#*ZTMyx7YUvR=%TU6K?N3pbN1?=sn|5TqesoLG?Ik>%qidZNhL`O$mPrke*X+ zrg}?OxiW~aOt@nie}b$AM}|XMm8H=$M7mT(Q<=V>1TcpBDG}DBUnQIqzo`KO*V*Q; zNdm<0%Pp}>HN{b6`zp8eQ>IOI7>5jGTHD#H!KhYnk16g#ZS_jo%j{v~7&5P+u$)Gu z3NxmL!)Xq%4svLevV2MzNu<}2AYs&mgLMQgt%qDjc%74t9A(OPz_E#Qw4#c|6p!6K zl_w*yP%l)vOWcktGKyKwqEQyk8Uz(!&60JZ=)*?svC3($-c6XO$%b-vJ<;?=9Z)-X z)nh54lrb`Wf^erMM`tvXK4uK@H}OvBKpskH)UN7t27&p|Z;iPLw(|>;Q*T)Jv&_He zh9XVd*}W(k60kXSwAQ2`+&L_sMc0s9p3-1WMlL@Fa>=&z$3-N(Q=1jfCskA_*TO|L z&$jU84H?BOwvtk8n7yNORW%UMkrIPbGY`CoppDvJ|G_`^!EgL038gSU$p>r&$UY5A zdir36+82N8?;7)8-YcgtOp`F135D?q#yVmY7&!r`dLU`43Ho-q*F^$!^cx2si*iaTs(yES#C^XjmJSW5(NXrloLHK)Y*JeA+bd|B(B`614GCwY9~ zNeMB;-fBpsUaF>Ic=9(@z^Q;G{%lT)9${EMi=tN8ZwQF2E zwgz{p5F~(}O09V{c_;CXt8*hHQsv^lC#+N(4ybA3|05k12m^@&uS|j9LoiqjGgEIk zeykroz2<#+!Z>_M=U(Z$shLz-fl}xGqm*JVOqyDA;?g|(K|G~L7JPu3sb<(S(^wk4@q**4FR z@3KPiDTE&X!<-nY!_q-IO0qofiiY2^Zx!MyY?5np!`MfbzpJtP5}Bkx8>^(Ue=m< zdz^e-DN&4`qNGy-Q&rzx18%BE*ylLXoNb$&)BO&}A`LC)O}uEP(rmFT_TkvpW6dCR zP{b5&+_T57S;LQ%-vlJ|-3Hvx%ZuX)&w_ZQL4;>ZDzh)XemW1=NuN18Sc=VvBB?ZNbA zG``89OU=P!rFiWM_q3Wz)(SO~yPcq(MGB+Itj!t>7`JzeqJDu%G^`d2np^#%G}$yv zLSiAlD>tbf>lO691-2^4w01hV|qZOJwdPBb?sCRhF)naZ1Jf>9?obOrZ4b3z>Sf2 zJMa!ZzXF=ABN^W&|AQ4!+Gqvl;}si(=An0l_ceLA7&wOIMWeBT&t+M4HH`s@g{8w~ z8EUJgcStBrh$=g?URV6+@BZDt?$7_PcE)s!Qwk!K{`4+^kWB2Dey^Ih_rLhj-~8)8 z`Ag@kST87>&i}V5nBs@7>wMbY6U0|-XneFJSak6lKA(?j3X$&=NSngZ-9n$c$*$tW zh9nb%mP;;aPo5o2I2H{xzn3IddHdRad2^rt)K|W;zw}c-{5$`JzxqG_sjpPr;d1_L zt=kxL++H4Q6P_7PU6pfFyZ_cvFgbrJi;r-(?D9$6CAk7p!2%oAePWSCnleS=dwV=_ zNy#l@kqOboU^0Voqk2$;xMC$opO{F-ipWyP`d%g|*y}TVoacFAv|cRid$~@d+2=a7 zE4*bDQ$m;oysK`7ENBGvszWpKamJz1aZ5}k)>^M_O* z)W%?N8DuUkj)E8_C(Q|z`O`Xla(;--M~%D9)qL(EIYO916NSfUtcaEiS2!J=b(poS zc1Jkii;)Yoz8^dN?8v&N1z2&|?^@Y9I#``FCnCBX5H7EkrV>1b4z&!^fn^SHH|9y^ zs4;ZPBgzO)8$3VCJn=p*jOX^VCL(tj-@B%FHQT(T3gG*gdpFx5B)Cc=|Im5ixLTTv zxjYo8o;`)t*DQ9VhVzB-^Hb8Ca=d)-T={Z8rOLZ6jO*V`0G_^T$9o^#s?J! z0z>T;BupJSRd-9<`)Pp;vujj_U_>c4eMlwnkQI-3i0hn#&68e(NpP4f{@xm8b5mF3 zj^xpD*i8CjiR4MboN1T~B5e%~I;B*He@`mGFI}8xIFczv!O77jGnz!3o-SZsWEJWp zwBc54O1|Sv+46M`2_wV{*C_~V&*(Z(6>1R7u(?nw&q0{sjs zfT24?<-HUJs>UuQ*%hg^DR#e7mF3bqq94iE$ebB|+qfoU=P;^B9eUnfoo?$*aB+Sz zpG6LHC&l0UJTHlINb>1^LnHXB4vkOhIdTY{*ODk~X z9QA^N?5BSCe^=1=I@+1-5-I%nUG`sdd33n~8QS;w^?%||{HgE!jbGS{&e(OD{73)GKN+uIkI#SWKlDHTProW&@<)E;FaC?){o{Y;&;C@z zo4w!L`lshmkqpZbRiMxx-ZCT*g}HNHM5G&$&*jxR*@7SF<7-^Cf~A1pP0W3k!jo}S^%OvXzCKUQLYp^3qVY~ z%nJk5ZapepxCEhBD{UC=gvE!1dBxDM=WuTMma=U;8UIq&iz5-w21`)WsFnlF(8k>N zpjs$A;)%_+ux$)W6~dm8KJWY-&Yy6B*R?ps=#hZbinVQH2UCs7^OQ<)tfsja4Bq>) z#kYa9oE}{l#G@oU_mlxs5t1i4LiYK1;66=)1*CyA(51>SV}^W!qj} zBE)5ZUGgum5oI?p^BdY8LvjD%9Elyu-JRwhvqLFMd#MSGeEf|7-7fkn$%DfXOdiHQ~w3ClScRuARR zmX=rfgi?ifhipJ59fIXo zxb0k}l=NVz65eJKq!?xOL~c#StK{NB&+a}VAf%`|aqxyFOFrBIKy1Y6ILo?N*VkQon!WQS6=9YrTkB5->$Oiv05cv^Un zBuSiZXlIXW6mV`Y{33!a4s1T47a>2}rIQ`p;SkA3c+_|DH|d>s2OYl?t>XV||vmoPJTTYG{R$2^e`lKou7IW#bm zc>)uEzKc0jzYh)RHRsvs_`oodk%RbC(Teg%m%JmlvfS!qo3&_)WM^^SU)Ia5;+uc- zZ+XPHuaDOruOlD7>ev37KmBLEBO<@@rN8p;{JTH)NB-lV_{x`SuMZ+VLerZ1K6mmc zo8wb?nib$7gq_(l;Cg#fYcB5^AIKs#gPhhZ-rd^m%Q( z_F0ZdY!ufJUdHCiA=Ez&VQPJ=Zejpci8UMyNIwIoN2Cl)5*a4_Zr%GWc7$|OZ!Quk zT-Rd)-?d?=Q);WvX(DSCpLf;qN`E;oXrUR;IYD_!2UCi2=nO^RU5nJa*s#jjn$%}2 z+_zG?^T9Lg*?=pCNoU8(iPR0fOH%E-i6$);oow-+gm*eRdj1Z@T{!m2ys5+ql%wg* z4Xzs9J+BeZ`B68l>S(rM29Bw=i2B0=J`$JCtJ+f|rU7IEBItHUcNF2R0FWkd8kDr9 z!<9RUOmW^g4G*gCEfX>(Li1n_X2T?B+uKPc4|OL-qd>_%y1Z(kT;#1V1cGEejbc9% zA4_yANJ$QcYjEN(+Z%-#S}e51ldYm`yHRy}{a*F3?Nk4Ct9W++@YkD1e!M@s*6W!0 z>V7ori)YK?kzSHttfvzMZlz6=Adh=$GOyDlX|u1iDwUQm0ro;k6+BQ#rD@qCaeAf5 zG5d|wp(-Z>M0Ir#<~vrkrUt&Qa*GyEBaSQx12GA)eaUVoQ28WZzyrIB99~#Lr=Bg0*0#6WXcP862O>vBJ8O>8kLo zCe5B%M(`-_dH2w~#oYWr50T}Lj2c*5KCzaLcrIys<}_~ENFq=;wZUE|8iW7KmnJww z-pu~mCrcSfD4PH ze5}Ix_n~GX`T?kkU+4U|){pllLibdF#C-T%s; z|6_mjSIl_uz{=s#CW;JQS0pO%{J(faS!``{#c*x{pg1zO;8vMf1R`Z+jta0) z)+)26>?K!5Nju!9El9Le^E@#-E~TY%y`5;xMiu^`BnkJPsFWNV`^2ROHAS@-(MW1A zixa)1!nC!+9B#IanH$iX88~6C;GvQMAjnbYc^CxcOhTpl;bbw#(zW4y2tx-N=}#Nw zoIk;O7!t9Zh7FWVYYTplbMhX}uMG~o=fUVT0oT$&Z-qleeYH0Nu)EPTq%B=Sw3f_Z z2~^IjZcwNW!$3LyBh||1k1b}=P)lQp;y*Ot)%g~I0BKBDwgWKR`siN#HEfZ)MNR(@ z?Mh)eXQz2U$jD5Chi!)^I$&!keTmGx4hKW5sW9e;?8%E z@xVB;=KLj}dGF`!S)bCcOr#cS4E64!yndA#_cKw1W@jU|FboRZ8sf1=dyrUSgQX$V zz*K|(Xw`Iwb0a_x<&eE47=$9HPbyL=)ScGLc5OlG zS{T@;1NK=d7!IN^Cpn^M1B5i2&lg?!?3qElTDB2G=$nA+BCmy~2dr3=npe!7fy}dZ zxtIf#$n1@l(`v>&W$zKPLO{^ySW8Q#tmzz5N2}&5sWAsp38AhJxk*@(&o*S_Y2_t$ z#VQop(k#phxHt-{Bw4-h0*^hyQtNV*X)v~pwP{(hZ&#UnEMb&oSxT0kIViJB&gkmh zlqXO@sPS1Za;NZrwz*Pt)Zvse2E&YpqMhY|6Tb;uwt^%^O}#mK#Key}l%IP8CW12@ znGVgAe!GF)J;#Py@@=DYW@b<}f~K2nim_9y4)-*+vUpgTni;Tn%fayGHK-a7_!%h8 z;weQjM8OeHhN?EfsGpg43R@zr4|ObMLFeKe7e3|S<-O2!3Tl@|DyxfURGt)ad|2zR z{)gZ5Oa8#Wb*mih*HA0+$^O_$p*^OGu5o@;nU;3%~+4cYYp5Oa_{L$}w zyzJKz?;+n{(zv_ewdbTVeb=;Rf)S?*z8mVeUnf|Ceh?iU^Yn9pMbz6PB&pQX%x}g8%4!ZO8U#x6+A(id$&-LU{+4V=1nWwC5n+4hWfy6EmIrcn zj+_^Mk9g63Ft&L&%1k{?;p1u(yNE|WHDO^amz~1nO6*rtIU&5$WI#7mOn6}E64K2DC)5>9}({8qR*asBC3@}Z=I zVyt7smn4B5rHB?naHw<|a=d6JLmo086V;l^^Ga|i*G-=7=lo_hFJ?pX{3BMyy)<}R z-l*Ixn$`VtJ@$sWonJldK+LVFei(JJDR2qrU$KP82!&`3stDE=D2|Q%vs^-l9HKXJLASgUmBfp|*_1BPg_3of z=Z>7B)e41)QWv~)_}P}^*F281OQgIH61*W; zS1B{vH9tf_PWx&lS@1$QEHe_gfrCyZz%0*^*iZt28wu$Q5+7U-l>OPliL#4F(WT_( zAzq$p?2I;3*y*gXd^)Gom{eAtr*~Qr7yl~^1!QTj5Um5q`f{T z-OZ+^W!pw7GNkw&gVmNP2a++cie-N;?PIenqe!_&P;CE>!4c#nC&!enw-vc!>inKbT9{30F;3^o9r=v zI{hpd{>GDJc@mxEbr(&BPlggzOK1Y4w#Uk=UC|? zko53Q1Z#T$k-%%M_g;Vdcm3AC^xywi-^N(f)>1vUhC{a>HeyCJ(aQk6n;=W7g*+*v z^17y&1YzvE+SvS|Gsg?$0(R~xC%HdG!*8}!h0!BI28L-RxZQ3)9WQ_1w|?9H!bim9 zUpEWI;~1cZxv%l@oAKW3xX*9M_qr#v_wZcE%+O>rvLYKIRs*T!vxC%W=*0-hz&R`k;WI@UR;yvb^$cvC3#( zmGmiP>1elu7C0|jhVe>2gh{fy$faom%ITfuoNuCo3gUOj>UjA_wo$zMIy`vrUPaGh z4EBM1rsS>19v7i}S`(Z4B|hoUvO|y)l~=0KGgXi?1sTG19^Nd}QA`2b6X~;gNDUi` z<=7emHQKKz`+ zf%);>UOOI8l_D9hG6AiM84R$n2$&N`7AcJF9-g%tWC zH}YU`4g-T0w1d3t7{ODV90MzYIpxxFuB}Ja>_2Slm<4oU<4%^sgL#PITv9^zPBCVuz42#60wcZa%*fG!N1X{2d9#XhNKPWS>i>NmjHsGNR z+~t$c2rnjbZ`m7%1)SRA6a-B!K9-~)?Hv5hBwsRJ@us2}^)?lp&|OqDIVa)q=aM3% z3l2ugEw35@o7eqZR$4$8cVEf8PYBekPO}-+Wa0{U(cCECN+&ZHR@*;gUxQ9=mZvF} zvvG3vMS{4f!LIVteUIctPV+89W&Amytl=nz68yobVtum1!a2+2KbUlfL3+!D+*QBw zOCY7E5L1p9N{jGKuO}b;&x*FdpoX>(HlJNK$X3jypY@5S-|4ty9O;N1b&vyJn4*zO zfGwGuO*+B^MP7FD)5q>clZ`%p^-?!4u~4xMBTKp9WuV4Xfx{n+@s(O%`j7tb=YHS6 zZf!)G5#mp}2S!i-N6&aDOXxfP+duik@7=yu^%>RpK6ej2$RUHr=A>dskYnC%x~ODF zbf4zyQ?p0Pw|UMeDK3^C>O!Y~`OeumJE;P_9VWoO)D61ayFnf)(&ni#zVvwcO2l{m z=>G-B#m48a`$8FR^gK#qmGS<299+iBp0^pl`d5DbH~iyY`GFsNe+l|Or6v|m3R}GZ z&Ec6*QLi4VICnoWJmN9uiO-%nls#c#FtI=ci1%Q*g3Hgk3ss-sRhuax=)Hy+=M1l2 zi4ggvCG=!YAzE#Pf`}*n{h+u{XXp_$@u;sIs_rdwYNz;hvv5$luRm$%TF}QzRsmP^ zv1g0u_wFnU_E2eC=0dc6B|=Y*kokwi0RKd|&l(nSJP}}V$tTX>K-g#;N938z{T7PEJH~pAXmJ-v->nyeG*ZBh%0fnxSHxiQXw)n}-Ne>r|9I zvc3~;=RV&?HOb3fJYJ;N0}Wf!1KW~$Ck&dCAL~-i$V?vPt0JzJ28Kvxpu1{kZ{V0Y z^jS|Y|>(b#4RL(NDm&7eT*J@2C->Q2RU2zR@vi<>b%8!Q+S8SaqMgm{c;XGhdLs_ zM98f(m~%S1l<+PlCqcNvV3rjNfb{#Z;f|_Ddyz5sP-o9RF0uMn3snsfLbvi9-AFj@ zEJ##Sg@zangyB<7iuZSPpmq34nt_)H3s_+1?gh>WZ0km}Kl8iUoiMoI>g)pSWI_!c z6Tn4*n^}|?^LU9nYDpi28VJ=Y!j8A4qZ(GQuv^_<+18U#<4PViW07GZFp7zid>Rc zK|20C`0Dj?j_;_2$}L#}>UoqPpH+c5}(fz+ql;23}vVeL0HQQz0-A` znSbv0|C`_W`+o1MF|Mn!FZIJ!-ep*6#rvO-Em&jj<2U^`|MmC()Bo%};&qw?1?kq( ze5ST(9^)7iSlp!2F~S_K;yu72NLgVbct7Pcta7I8_?`&rnjJul9~xf*31ZUW*eN2A z&JrvJ>Pr#7;oti=-i+I;$Bx^r7uzc;O8LRNLl2|LKd{99jUV`dj}FRapd1*O>{IT- z36RQQfp%pP9N?y%7ou}!Je~N9`oQyO(Fnog%Ye`IrV@sNKOzsbPO6J5K0BA^5n|V_ zp?M^2PISvJ(Rj}@bwl~GZm_=1 z299m5-u$>5rmeEu)xTV}!=D7&V)S4Pp<9y-0k!8D9F}&X2nCAOAQ&WDj<}%Bl_xq3 zTbT%sro&KtABe9zXrULcA55|FG?CWfO3_#F08?A22oWZ-^RQuH?S|0moF8|mHa>8G zbjM6nc_)-~pR4>qgn}5PH*&riP&wjBPbCI~6MfQzBH2aI%;4hIM?wQmdKy{O3=R3T z+EPQNuzGo^1ylYr(-LeJPrKX|0>ByxmmjJj<;8S;lFGNn-A`9{fCwRF9B8-N1o`Wi zrV~BC#ho+RFp#qy_rpo87~`Wa<~#BYzB+s4-Iu<0jK}9b_xS0r9N8g|G^*G1C~^@q zN!iA!Z81661WR*1l^hIpynrQr3b$O5Nj-~PHnoP;id{_&=fZ(L@RGM(YV&YCj7^B5 zw=F#-izj(piNM3Yf0k`Tb4lLxWSbuxo>iyWs8h7uh;|?!8wt!n(dbkoLd_F(aGA>J zI!BlX_mJ$lH{-!P>ZX*|^gR+zSw~}Xxwo|pjUf*=k4)n!F&s>YuC8$y(W(;REGX;; z(7`rr^Pv7Hg+P(iKYCWHw-14kOh@IVU7-Qymg`d+%1*HCsI<8a6<%9X6(6V6uNBW8 zvzUuSEsigD=HXnZSM1yl$ z;gCK5xr`aEY_%Iy8-jc8V=Z||Ix6uMwu>bQZu%Khz%6?}L-6hh(V;D;(;w)pqqrgk zVB0`KkOgz3Q<5;gp5#F+HNjqKosmWKn;dL=3k9a7DL)8izZ`Zv53kstiTLT4H}|i9 zwLbVD9~rk1mov7tQx;XkQ#?S}6LS=_@tNQ9&wR_T__jBH>Br`{-44^{Y@Q%!O$8)y z29Oi*VId~B<0~pImhBMeT@4=l7o{_I8PXDtdg=p;JBkkhLcMU-sTL=GN`1?;CT@^}c)WbMd+O zM!@)jF_(l}%*EJ5L5Rd|DoUd?Y55eSHX=zIMWHQ8N&Bg{R1xGunqFwsD4`!xK}e*C ziehL=DQyC79TX?!+W10@jcsgWn{&?IYt1pL`M=C(ZPO3EfWUaKNa6ULz2A4OXFboH zV~+9v|Nb4gg7>{=QBZ1K!qjj|rQ592=qpNijXULmAxMN@teiE2Bd($uWD>YM2kviYNyO|Y!ig}juGuj)%{B1bnr-tIue zttFRNk}zGKX3Vp@4KOI3u((!jRFQPc@83m~>KEf|^=wR+u)L=PKk?YQE>5ise@Q@CBg2bX1Gho9+ptR9_(u3i~&dfChC7v8tf6}d106j>{4ow-?SjUZGf+3=1K;vQ&>DQyMH zxGvKXi}o}HrpeU8^g%SAyBhxeLO2U?3~K06@JF1rmKroZhnp9W^u(0_`Liwd7%?E;8TYWlV|E^PFvQ@f69jx7Mbvb7Y5hFztu z-g8ojMplg8Hou~jdyujBA@F#Ugd-qHI<0T-A{Bu$+&E(5Tc^tOICnNx^72?<4~ELS z>fYVc^DkU}>Kp&X&;Q}SH-@!cxJg}^c+}WIl-zQ>h^14y)T%n{LIng}fCz{a1K(J?_w0FS+KB zJ5x>7P+CUoW*Nv#D#R#`M^xmslo`2p6#=+FlFGwNN=fTEbH+!xYRkeOPz&( z!^7IWkl6S;3>1Z=;ZgekpQyNh@^m-k1^y1Se1a2JvsvaUj52A-^oS5uXGXxO-3ymR(41?7}3ECqLhDajq6-D9hfBBfod7K zNvsal(U2Mg9}*m@2AFhz-Df?dS^ac=wf+bLs#nd~#uyQgzveahwztLpRBN&rOZ}8hTGZn(X|anR>PmomQZ?F z6NR0KF>)M{y(2j>%~R{Yo@yUjg0tr7)}UiL;UZ?tVM(T8hpD67%{2##n7qfC6X%E5YDdj zbisV0sJnZ@((F)lnN(^sQhO(1%k<$$_cEtD0v+L(o;bG}ji=(s3}y? zlqvhFBbnzwQdOH{aW=Y2m35n)o*kESjGJ&imtNb5wW}UW6#_Jl?jTZLhwc{WI@&q*8R4%~HQ^a?3j4H3 zs?C$vnH=;bc02Q3u(>&Os*G&&_cPM4|T%<%fDhOM3KzTCg&(hn+#&gT7N3 zb%CHCSnmNm59ur%7J1 zP%mL?pL+jYq)&GxMOK?k@lbSm+UKI8iuQ>{ry35?I9LfR+i-Lsy#jyjPSz8j^EtmR z72|J*S1qagqr(th6ic2XKI0X2=T5786u{W#mx_F*$c*71G)%Mf>Z`mR1KNiohw+ zN4U~fR_)}NxHCwEN_V)SD6|;b!~};-hQ-pU6J&eoki-=c4q(2od0L|kl^s_uF{U!^ zAWYS4sl-_}3DiTvYIxczaQP6$HA*WrO1q-ZU>sEP*NTN1at*fH;()bfE)LBaN{9q% zLW5!-c%d6q^FzsFl1d@OcQCZ}0$GuoQ3XtaRFvIAU=E)sa%hyF3|p%DQr>9}-@Y5xD2S`1Hjn?$jK+@EVB2LjMqIPzskJ#L zpD*~q2?p%<=jEA*_r-kIcYW7u{`j9>&B95Ovna2c2SqbaXV-iW1u3+fJ9l%&SHJ1= zzxB`l)L;J2mjFZ4jolbh-HG2n)9QO5hNBtoY3a76BQgC@8*S6N%6&=+H9S#m0~H5I zqhS8#Rc@iqiY;y~Yl?S+y7~EbdM+<7`Ml4)_pklQW%FELy)f%qY} zy5zWh_n-K-Q^ehsaCDCSmqneoZ%AasY3FVu@ua0XyQAs83agrf*^w=ar!8xRXS7ESgoJyIrt5c$< zeq6kR%fe2)#zkylcLHZagW+j(ah?&mMuLeD&~>+e#n)W*$3CrJ zZ7ieL^sDYWN`h9(kb+k-Yj z>bqDGDf3OLTGZr{ibsMDLXI2t2l?O+Vnf~Bc926iB0o1qdJo;3<#>9O8K(mMiO%;@ zWO5w}ZB)KG^xLJeoT4g1doXrRZ>TX#fk*H3+hOCV+`F11RA@k6i|^DPCP^lM30v~m z<4SE(hnKH_*MsO;T}yVcR?Yz1c=95vLK49eI>pt!8ptN}X-(!*gYO7*GTXqy771+? zNWaoccKr+CLGuPc3VBbpPmv#H|C%F}x{yTfr*>TfuHsf>`Dn9gks^dUu?&02pymg# z9*ef5&8>kV%fOsXWH7glW`mfc_F>i%3CY10MwvKy?2vt!HPIbfXVH&@5&f`q>*2y} zyY%PV#<*>SNU&XR;HH1nQh!wr7C9`Rx1!J41QIU6`Ts4WwN zvQUvmIr20h)Y7nh_t5n)A|6mC7;KpK+~;}IouN#_ zvuSNDTmrWZ-AW#*XZ(GORLAvS@CWBi%b`glbLjebOk!UT&k!9$Jax+%%IG=7B%8ME zSf;i~(B;ydOfk#ow70NURTOyhZld)oCN=Hr3ppw1))qhx^4G>uQ|KWf91P*H%B>Vq zIe8B7h4vKyw+i1FgKVdQuae8EE{mwh^4Syz4$WjGtZ9?iM_h1Cqb1pk?T?Es|KWvi zLPmF6WxR}E4Yy%5U7CXd#5|4F58_S+OE0(j_3G#<`^mZNfDG!#~6hsL#ie8H%u}VjjU`iIbek%^ z_|WiC&LaRPG}9=$c~uq{#84;JQYc_@vdxFA7LDq2gI+P>|knvaz9Hc?^L;j}zw z(_F$~dxx>l48zcI{!n_G1G5^n3Ad=d_SlVmgL|1D8RPt}cip_|v*Qe1 zK|g$=+XE0gs(TCMeW4IHF#2Wn(ckdT-uvVCZsLV`>5HYfuG-X0ZMX68u7_!yKFD;+ zV#-F=!S=Qr;v&`)ZXn+$9-?uiYhr>`41-8!qDwD~5|m2!bB$kVc^aoTzVIBTDzFVa zw8LDVbLd)ZQc!FP{+hGaul_GTezT^VYx1HTZ5~OTNE(Zyk4D4#=ZTgnS1!iQ?b=yP zn`*KSZlq3^;H?BEXB)EA|5c1}h)Tc#l)CO@NtJ6K+!#~m1j{yb$c8+U2m(ga?lZ9~ z;58<=1kL_3Eb3}p35>$(C|^x2wzy}8o(oElhLkE^R#Va5iV5LO#u^%rP#;=m<$)j~ zl_W;q@Zq$U=EhPszke9O@X`Zi3kh+snEKj1d5W|=|mA=C6KvNzE*ox&(Kj(9E`Ttz{!0P9Dqh3Y+011f!7z9x05BG@iINBP0)H0|Au1RMG8AM%&q69KKxR*_&+Xu; z9Qml~srHQ@Bcq2zCLRH1-$xN<&A92_Bv@pA8G7UBYm94EcnJ!!+aF%p)lAOV1e*&s6YAMx7ZgOi3g86%!5&*5jcEH5e*nX#0m%62Ox1z_>a|+MT*tSw+!&W`YVm|Do;=#CYtOpPdGGdSJ~;ox z@BZR9e&l28x+w!<6F)cY(Xx(k4R$4#S@+dxv=D{ z?AWQ*C^X3G8X8#TaXetTTOK?x4%x~%DpwY*3llBq;2CXb*Zl_7i$_F-cgs`NgH!wP zWj@y1n_hT8dDa}Ku}4IHWV{T78pnF6uPrdhssDq2?k#tx5rI-)ua5@ghw3Lskz812 z61mSvRH@zIqaw8hP1`+v*fU5TH$65@r6CA0AfcAla9o}Xk59hp20>rZ2#(;3W;}z| z(OJg~hB#Xs*RT?G&Y5*`@aQjgvZF?NTPWqd2D~i|jD@~GiA<((YV*m}YgJc)+FYg? zM#M*F1DA^@?Is|A{;qOz*0GBmS#xI5)LnJts1=qPY9b;+EWv-;pC+RaSc6is47 z>*-GF6es!#+mDXG|6v?Fdlcc=F+TXsv#!Qq@AcSTeCC;@nPZc*47di|8y!b7IxX1sNwz?TZS%(pVV|(DS-4iuw}=SPf1W$v)c@(G?R7{EqE1VVBpcJQ(llp4o>C_ z;F^pbzZ0~0?ZNeWPLqbDuCY)tsSOy|w#F6V8wY)M-!!`9wTmCJx0i`U0Kw~TWqr1Z z-BnV-rYY?KC&Z0=S*w0G=()`^7I}@Rnqa&*iU~qmR4l|%^fVK@YV(v`64AgTgPHWQ z^QI59l`fB}ULOGBQ4knjU{u$9aC+5iso7W|U^oVpx^p~P^0ewWpyeN8+o*RH5kxn_ zX|(DJrlD{!-%agDPH!W}mj$!hjasP`rrv$7*d$HR7>h1hOFq}1pG_PPqO#y6Vvdc5 zeKPUrcumf>27J^!cZmiWrh$}^2#J0~kqll926yfpcsWui3$L$VY7El7p z@>Rn($hPdPDZ6m=+?Y9e=xVHq78ltr95Qnt3E=cv8ZKnG34Ol)clT@-$+%tG=O#mi zN_*Cp{NU^=_O@IX~gN?Ih5ps&5(yG ziy3^4JCVj0(<-{!9^fZv9^90ci#DgjBfbBG+nnof-z>i>ZQC}#0_M}2vjWa*{vhm| z#cXybOQeAF#qRK1^RIJSi-Tno7O||4mu#P2A}+n(g~Z{6@d)=e3}Y@0YkbriM?|;B zUiB&4ez{M&iiu%`q1r3a>+OV$XePpZFLwjUE}R%~pMBW}E1$uUdxW4iyYq*qZc_M*Av^C#h|#STAk~A9{M<85nPpHk1SMrU zBzV^r??|?don2D>h2B599Q*B!zj`0nH*?^~ZN~S*$AI0!KI9CNNY0k0$ba(F=lkcU zqusK0foGDdot?%QDiJKG6x0-oGN{uYoS_ouqc3}x3I4j|xyEpI$DQa{#6nCQN4D3| zN9a4lmBmmOH1le_q3c-8&nTy7G>7f^UDTc|@jNv2Z*#W*guT~<=i$?K+pUq@n>g*a z*)6D|eIQeosEruiGYI^nGgi~awszXWaty!#K|sF0S)AfrJ2S%vaZZjlTml2iQ+ckW zApj(>3}$Rc0~zZrpvyWTG`h|EHf&yuimjx6i<&Dkdztx{4U#hmRN%hX;ky{5X}5n+UPBThPmEpya?$YbI_JBL@3 z_HMZ`_DLSRSqCH&Q`Vif%yk)pgjQ*u$O~Pe&8aj}1MXUm;Vw-uj`a2%`wpyr)oszV~YAu0U!YfQn1fGi6RT zMV!%W+8n@G$}+hQ$j>GUKXZkRUy(^$VEwe2y3`WuyNp<*m!^LAR5`$Y4A7D~nh`n= zJaW3>YG@Gu1v|}Dzw!<+b53N0+=fe=V|%$yh|tQf&C(hN?+=>h)J{I;MfPP0SJR@% zW!Y(sJK+@0hB>9oi&)|*P=b34cl0sbiCw&!ba}wRhbih1oI@j@Y8k3;-cqVCTtMce zX&lrI@z_T%sn2x^Z@X^ThZ_gjQLf6fFTgj*6u7d#RomDsg>E0rAME-=1{0;(@3M(k zF!t!iA4c2fioLBo-JTwMaQU&Xc;oMV?m_Plhy)K8OxwG&`+{5E`;b^hPr_70fmSDhi!7iy?avtPG% zX#JEEzuqCR28!HM<>jLpPrveIU-9l=S`^MiV0djZku4Z)9|Pi{^G$egkA8TM{=;AP zMfZw1i@G0pl30xure2T?96}MCYEM5jm?GT1L?p&}K>vl)o}tuQo$i!yC*U&YC#510 zk~51c*xs-?Is}DoMOY9#5n1KFwSibAzmM~M@X@IuTI-Z3%g}vsusU*VM;8&ljGHs1Ae9W|0Y+Nu1<5D_@AsLrnQ_%45=;t~0Uy9AbdYcI5f;BxjcE6dOR+ z<}`J;Gyu2JId+zy%`6HTKT^JwOGDxi1~_&@IBUotrX5<&{->z39=7A&A9&wwV+}or z5~GO?uKl=2NeHw4I`Dk+e{Z%(JIcvSU9FbAMLIt<~(oAmzk z^K>u!n3wrLbi%030XB-Tn$xaS7U-7dD&DE7)qu4w;^V6BE=g4|0g!TcpbfX4>b?SF z1om>JzaU~rftBlxfl!JimyW#IQf45?LP=7Zqp)n@n%Y+#1!3t3T+;AI{HTJDY%`Avg3pR`E*|})t>800`c(C zJ7E(DPNYbz-)e+u^%8il9BW#8x?B>2;2IC-1@otM%eZ;&=weVPpod?dOrr;;XLsx@ zNZC!F9W~no+;Xz$ak%ULuia`J9NxI-H>iei@bZ+EdAZ&BwH(EWO5a?tY3xsp?$B`A z9y@^}eUx#r$>XYhr=ZJ7r%6OMzN@v`rZ%k+zowVsgH%KuS{HpF5ur7eNOkB@pz_AU zDU(Mpo9Vj_O+3HuSZfD0$?ZY0btw!;^47tQmH6Z-A;wdreD$BEFFx(@{V zPsF}~q%Lb;@_`Ti%$xtfFaGck-hEInT2B(WF&5Op$ugt?%N-+vsSfXneOojA)Yo&l z=PT+=O)}lBgW2XRaZ5>fRdv%B!ua``zZ~&Z-}0?5{jTpsVZMTic=6aC=^G_a5S9*b|qsqe`E24xxhSQ>=RCmGAk2xoyx zYE<%Vqbbqs&fj~@jCn-QVAh>7X7GkY41*M8gknfco09Tk4@9^BIIIdHwLYc~&8gwA z#rc{~=|HLurZP*Va&35^6oA;vS?Rz846_ru6M9`Ii7wD&^C5^0r9eM$LQU4Ja&x44 zq)TA>noJ}ld~GWM$@g<_uvObDd6;`f<#rRfe0|lIxIDk~g6-zsWB;$~!{3gt*89oA z&QJRnAB6{VyzKFtOv3eh9~V5}?4zyurak}U9Dp&Qj2q?Gv2j_on>y-FuA+L)Pf;n( z!IL?Uw;`rIs>yE6e#S0|nEm5KsI3|fHF<-L*2!XzKW9#D6%;K?Z$n0}PBS4{;Lv!S zz5~%K*;+|8QMH7UIifJb1LZBJj^?$EHLnM;ti!Wh^U#S#(YClQpdysGeFAmc^I6KX zZ)!$JKP!$X1-NWVwZkURTb}7wm3@js-9Fe! zZ*nCmrqqyvEjLm1*L}dR6Vs;bW;7`zn)W}poHr_x8z!1>+@V*wd=ekN+@fVg2Ubs; z2x1*qqMs{Fi3i{A9Q6&k6wt>sp%E9vi@^%qy1j~cHelXRIsp%!>!^tRvixW@6<`4c zxdtM^oC!RskN8r1O}Vyc$lWrw&;;vW%jBO*&<}x>JjOS zs_7=@<)%H6@%BIVr(W^R|7wgoI8zJ{0S;2?#v?t{`HxT%i0r)BZx>1Z^18SFz~{X6 z```YSZ+w5vXDe=lq66Z&Ot*ndjNsbp5($~L%4V6h8f#;o3~B20DT%7p94*>4)`-N6bwLO)bs!=hh9NeA*N2@awN85*-Q}!WJCSV(*t!>$UzW{v^+x>j3~%6fKW&~i zGSz>dEKEI#{LG{j&`{qLe{MspXB{YQ5hSm^Qg|ZYs8ZD%nO(zLO~1=+GJF9&tQcf6 zB+){$4l}qH+M6X7ZHztxjSfY1^2md7KBt2-I#${A^oe5$4pSkfT{ld3DnMt~)c1zti`-;pQxoV$O;J1X1N!b_hwmAq?5J;p56a=186;0ArNlv84RN-l5aexs2YGkc# z`hxp24Q_2LDc5-wm(5h_5%O({fr(4966?C$HBc*ErcNQ}c)Im-Kw|80CBxh4?C<^E)&vF^Mw>*~Ix-QyP|*$6?wx!&Zsu7Rga#;gD{oU|3xQWB7V_ z22O`fRCl#BK_u8gz_K|^+GV)$>^xczO0JHrCA8wU5A$J^Vujv-J^G1sBSx?cF zWN|g;^f|$unz~}3Zy{0IwwE1n3fQ>{TNCh?IX+E<+Z-;FAXku3X)`cbm9* zrZt2uWfvylVBWYbl46CXgOEd}FRn)2oxP60305R)(#5WUG|aLKl)%u-@FR{fzD>SQ zRP(ayq(ho^AptGV=4G5mP$EL$5XNO1-*wy4B%09*TSJqFlqg=U zwYdXDyY-apFw^qX#aL(-&p`Pj=9+{|h}S_*7K1CVbi+XX$CP!BgIR=)uXiz=+Ss~% zOOxFZqCmt0E|@+e4rCuEpoq83C3Uy^x$UxKL#WAyqbHlIq4R@MtTF2xDO~C3kFIjV zW`pigK=LDIJ4zrS%P5X_u>D%`voS2lw|uh{DX=#MGJOmAZTX#+fpI^!4)d5ed^x{4xYlYGuBJPJCg z;!$(HbMdb*-?lFrq$Hkr*!&A&Efh;z*Un+T+xV-oG0roy)ST(cbl*cYW6PeBV?5^1pPOI1Blg z#}&Y})S_i~@E84O{LUZw(J%VY2jBL)KmQ~D>?0q{eEFJ@oNi{GMUq_~ zIR3%G5V>-bMyQwOO9Qi`MTG>>4$!}efFzBSG-^f zv>W`yx$sKYL#IM&@*f%)317crSU>uapZUJ;dGUdQWKU#0HW%{p8CED6b14zf-p@lp zXM|?o>O+v5(L+Lw?Q_Tt>kD zkf8_>tj#tM8=7|%6PBZi6+jRy^0gehhn_cXtV>A8MAav)&lGZ)^^iJ68{%aT6wkHV z2%M|Kwl)>CLza|ItVUR^5@C@aax`UG0&5y-9x*N>HO=sA3wI5Rr7$#BVRw*AC3u@4wN8N>t;OR5kJ(xHES2F>Ejp z@M~SHlhm&rQVsG|!`xwOUfnlr?nSpmVZ}1HL17DC%vd?i9P*RZ%-ByM8cjTvorT+c?YT7$Q8vTxUmAAo3yQO!YMeBezEt))R15!bgW8>w zP0&AR8_}qQ0%nROiwp<1t-IXG&5$7GBXZJ1X(f>nL`DHdmBwlpkR);vr%EcgvWC1| z%@)I*&x-rGrcJ}rh4f~ngfM(6zCL+5$*m2@UGuH=d;m+KubNnA^lob3TK*>1Ud5&l z_q{w|@W5v|oeHFraDB$;4DQp5Z3_@ve=)#Rhx7W<1iS=Q>S@^lm&ca>@v1X zQKQ>i?OQ&e=}=NHLE5WBAMy5oe9zyA;Z;Wz!kU;2e#x?C<#wDxR8o=#(min%J7I-wi4jfMfJ4q#`>B$Bq^ zM5iWF2(Ti|kDcR#@!-jbXI}lR;#GG+vE=gT;aE9!a4MH0eBz`2FG%d^)&wfkA?0i|+`!FqWo>9$!8XjgAFC+! zI3W^EUJzo=x1zmK_=B#d!(P;0Y0!pTO~N>7s*RFzu!qg2(kv(25a<2qNOQPlVArBB zA6LV-0Nv3WcrR|XHq2IbD!c{^IU_Cg^Sts7%%8#GA+g+!$AQK zxFS<98`RI@m5H6}WQ35XfFFSNlkF|-`^I;qB5Fil;vLVY`q$DVr(USw%_At>vPO-` zNzU*uV{|PK4P~R40j_EKB@c^}G=RB{EBcu-(@5`v<=X(t#k7S9g9?^pq=4Qfps@N5 zEML*Gk54q!+6#@ucM!eWi|MF1te;XvX`a*7p^NPZ-oPJwT|&lb@(arpuF~Dye4bR0 z77hs5gXGcRaiicbFUcu+rs6j`l{Km#STGO#Bk%mb6_%V7NvPjuReo$EoX;oY!MaB{cwcZ<>4D5)H%~*5a#i+zmt0$cS4@4BiC^BKC ztWUB=D~&N_$m_$b42~hN$*R4AlA>P}Fe&h0_qu1Fk)!}|%o$isE#0R?_H`r9CjQS* zCzyk84#0PRoy`3n8@FT44w~wn!~jNIDy56wvSQaE+4Eo?mb5Ckph!xhQF!AFi=Cv= zeAe?&Mv%C5BAB}Fz{(ey)YkN#BjkHzI}pY<7E`Afen z=j74d?FSyK@0yRCsT~Wo$%sB{i5I`r@-4=lH-7b3zx#c0e(s&${%!C4OaH}tB5vk< z1_$QHA}%*$rBAN{7pZTUUGfOGG;HfO8z+K(Pkpq0Zs+r?8JCYoT*i3j_U29B_NPAc z-}w(7+`Ef4aN3_DrT3Lh{nwPPKKezNm0lhiC4;-#FZ|oz_TYu*UJQphBNIq6fs7g! zr!Dj@(-Y-r5!cQ7v%W?v@8)nt^CAM;e?dPyXRigpg zt~WrL0&*gK99GNJ7kuGOgDH11(zJ~leCnq}Lx=ISIq8OBo#GKI`PQ;sHgu*e@3w{E zdp|Xig}V;0=&RtqN;E6f0@ER;)1vA@?&RC%8)PS~_A^`x)wZRK;MqF06gDnMdK>of zt7nd~qidM06QA|FV0I}6n9V;@fHFnTQ!GRN$rakMj5=?bV5pFhQF$x?q^fjw8)^{q%bZ|;I$^2O0KhOk2&?QA zUR#4v4?Q$`YUVwq;R!3KvCZc*U;5>*#}yvGafRfk(ra0*9*qF-+DD?bO#jZ$z4@7+ zUv|#RT38RpEd7@XQb7~5Owl(}xYTnjN{LyPj8d>}YG$D5j8uowLDfX#1Ql;oeZUN= z$9f;{ zQcl^XuF|yr;8n9 zOaK8+Q~|Jkmpr_sl&>fw9M?;!#LK?^c*~1oXCy|~$*e3) zr*{dBf415!uyquR2qPS$96>%}KwuWtHy={aK-8BcH21yX^Utk|50wde_$ALP&zu~Y z6zO#noS-RrY&zWw%V<~Ir8%8tU=Vx3_tN{8Df6|Pmk~2~+8){Bs6@8_lYU3s52*5g__N zc$>c8=^k7812j7`(bl@4NL@xNJR^(YeXqrbKJeiW{Dr^xvTy&h>%N-so?fj(R(*Rq z(ku3XpgmMl%N?UmFP^65tf;uX_nPngE3f&^|Mc?icmDjJ_%px!BX9k{3+HodFFGeN zMtAY|Pbf{Ek3&g4(E7d~^};1@#tJRC6Lt5gCx6$U`}bb)t$*fnJCNH@H#2pG4l2m*mBV;#}#6F8Cu1l3VAH$7%@=D2l2x<|3eMsFw)$K= zljQ=SYO>>XgfK6qM7X_fVa{G`*%8thhO>|i?NPaJqV*GS0BLi7zYc5Tg5Gw-ijY#; zew3%??uQqO;?S(Y!rW|AT&G#ix;+-kDS31vbToC@}sUZMpCpb#fXX#tp zMyA%D`ueZCob%@P(E&iOM;?Gre${zC{)VqU|Lq@GB$xXa6!-2e215bq(k$jqwmtge zu2{7DD%`%VcxH~7F?d}&WfNB9kmN4;NfsppdZaD&lSIT^6?QQ@sW8~mw*NhZEp6R# zUND7~bhS-EKP4?DxZg`sp|p0#8E!R+nl;_iRlshj0`ghB!eN{4)%H|1a8WvyIA?1& zOzA+=OgF1Pge2o>WIE+Y&`+PAcH6lt=~9Na$<`V=#YpGC%|=wu_GbE_4L)n6k>{ zIn8)=@z5H@j!Fw4ZH+1u15<~-nl5I+V(&pO%ep-kVX#_CD*$uq#|ji$5-AV0PzlwR zPs_M)!vV!;F`~)ESHE&#LTX7i9y&aea)+rw6bU9a0V?QgNio(nAN#9Facb=Tt+^_+ zwSk;M#z?n!Jrq$w+VMz*DvkAP&(&_&wDdR|*C%LrTf0rtohaQE-XxojfSib?(bS@i zaL#A!!P`O2LE5dVNsb6P@$=>PC9bJ<>-rF3b)!ZHwWz9PsqbsMgX*lGQ0csi! zN}N9+!(TZNdmSf6#Z%G#(VzcwzwcYVIi7tv#QA*-^B=11jy`X?=-Gdw?IS?!uJdTB z050^$)_B!xU-tvw{{@lp-2L-A{?U8??%#RucmMT|f9RwAaz5iod};k$d57)rQ+p!% zN-em1=czY+?aTh?H$C$Wf3WU8HXG{SjMMrnbKTBsMmDb0UR(C!1CYl`(XQ&%cJ<&M z{`Y12nHfL++E?FM-RYI>T*ow_gag6nk@m4`jpbNqtD7A;W&!m2cIQrmgGk7IicD(R zBQ@ulKE}{BDQl6WvWOC9RIC*>I@34D;nMji-Hg7h($WO|I_i{p9AV^~=k$iQ$1~aP zvZH`HAJ>BvT{!9tkFS2c!Fd#t>i$4d2()_9EVf3Uy-zyAkz9s%#Djl&4C0OhiOQ@F zm-;;1^>5H%b*8-tyv!lzK(K3*-!#hW6%mv~K}~kYXhv2dJdqdnv+SWEc~V3fq>QAj z_E^R@@pi3Xip^_ql!Bh`+-)%Z!J^H`Get?~olbxiD21g|_z9)F(BR8aPB;_@a(ghR ze*)aEYuB7otntj1+Ke+W%Ad^KsPm1s`w0&0>5vUZ>O%yLjU6@SKPvT4qvqXYl zQgM~lkwlM%j&)b5XA?_a-@YQ!_#uy#BgRG>au8NuY;3}|ZaZFc+(uo-qsH7`VtLqg znJFfgdz2*yNAG*%LUzQG{6U+=?wOVtjmNw0MGJz`#m?481|#j!-x;gf*e4#peB~?p zgLB+I(gEr9NCNb0Ugz^OzxV6!kAMG}LU8JZB{H9Nc3ZP~Ga$f3=-*8*X;9jZ)9I3~ zt2mM^@8q#lV6@wLXvznYf)<{Ir_8~PYhpK;jafLw8`-M@TW)^&3ZPZoksBi+kIYfchimA3enwCcE- zq?AT^u2?w{|FYK%cEQt`VriNpggt}7Ytl28_a2Vjm-uKVx?DLu{L07 zR+xH7zJ=WplnD(YoY%6e*oKgVX}hefn1%9xC>_^1I8DmjuJ||`pEwaxw@AYX>M9j^ zMiPbMkHlFJ6tCg(akr7ZkB|lV{0u0fhLRpQAtLNcu|3pQRPN)vINeUPBMJBzD;**b zt;koTI8WiX(4FT%x81yd>qM3Q+pg6a1!IuW!6@IpXNyJ zSo<%dce>~q$N*;mX%*796kG(caWSB-FvO^hQ{A0$H`?F( zjL-b~=by`)JDuFwt4_Jkr`KlySB|=IbPQ0t`_P7ix$ zRj>Y!{u4m+x%Z#qoU0ndF$uPXw#lQD!G#NGOZ9+~xZ1&deE3x&i?|oCAwRpL={w0^ zbqM!3e)`M4t!^aNlzx#_N$1QXHyss$*~fQOjg<1qmS``%Vb6 z#K~i)5W#)bXUmG|X|_nat9_&n5BjsDw_p{-fI{In@$m?>sF12>CGZKU6i-+KG2 zV}O`JKA3no234oUjh{kW;T5IeFY^9FnRX6Nk$2K*4|)bd2ZB=ASzlM;v?!>lQzH{B zFen>Y`cY6ojlO1}ZPpfTPE7MOL}T2% zR4*p6^vk?JbiZzKPp7UPWhU^V0}Y{pBp1XaqYPO_+<6w4hAygZ87UG;ou`7V5%u*+ z!a3oTfzb%`>wJf~wa+Z^p~&TDX)LT1Yzw`C zl*HyEeq-s93v{nYw zDVK?tQ}niIE(>ezm_0>U5q? zQedf3pssUVpZD}~C|?(^YtO2%)Fn}5^7T80xJCV+-~7iu_>OlxJx+I~X~HtF8nWE4 z(r?*zIAm!TM*Ol1N*N^}=ssH~8s2pwKSbxk=HS3Wk^?m}(w(nWYYG_8^Wng~JJDBI z-#gre8Jd@^TVyUhH$;dsROv(DzAAMzAZHr;Z@QZhwH<{BkXMs983l z%!c^HR1_UpMhJ~`6BdKM;=ZJvrBR^n4S_~vtbV{|YB?R2RU07LuJ~G{TAHZffphZT z8_E+KlgTDbTh8)TXs|-iNYDt;l9O$4*AcjR+ERKeWRPDQ4B$tAC znoeMBlHxb@#5l8{6>PSh@o9Di)v?{V)P78Gj80Jk`OJ%#Q*vR`FXZqYCG@cCf_}^X zDn(%H-qmarP_p$VF7PJj2Pb-)Jw5Fg)eX@}nnTuynTp5l@xTxvAZL|Y)S8&N>ov7X z9g+t2=8q6b3b;6#VMc>;2KYpDp{+5R5UJD%wvkP~h%Tc=D#8ya4m1xKT*K#)SUI*?2z^plt%4*_7j$xxp#HJJ39cZ-T1RCAZLgPhtA${^qi{|B9p&F zM_vi-DG+_Y!~?=u)R!i|c{OfPsfr;pyGf^7AVfQ70Xaa8OkEV zh|@&$7dZyYHo4v-Y`&ydqOG3L_rCo3=T;!&<+A?u&}i@K0MKNKVPRPN|CiT2_9JEpgbdWq#LY0W zHKX6KUSE&rg$3$hX2!DGc4)g!CuCb#(8b5rnYQ>s90J??-gx2n!okD`jfw~e?)Jq% zbkoPXzy05Q=Xd|Lm#zaIjRn$_ut|GrOduvS6GJvm+(_58Dw9JzB^$^yaFEH-AMLxl zNEfr~~T3nPFEdZ>0;+X2t|jYavoImQr3j3z3KiORu9Od3zbK*D{R zZtU|mrs6MaFjO=+k)*Yn(6 zI|HPq;P5({SX#9yBuyH*NOqAH(p&a?q`CG9z@ zT3rwIeR^C{h>daNy;)@-u{7TKjKxVvp%Wxyl5MV}r<5FM4ck_19eRp_KZFOlB`aK# zD@dbCljOHSN8K-@9<Oz|&O{cLyKTKna%;nH+9T;-A;gLs*yN;*sdwq4*#)jY0xFBEYf zGP$x+pot8cO1xnMtTB5`M&s6YTWHIznTdlsODmW&Y`f5&5~L2vl@?ipQK-sbkp)&1 zq7u%`9RECW-m8dCH$ziPYL~6DHhV_xFiHM6?vR^G3^>-h1bj5BGIke;d>7g^*y}Gt z%6!p8d!_zmQtai}@%8KqrIRM+vtWr6DZlS}Kr2bShbU+sB^IPn_c9NIBBi|0kWOGlFl~jr? zjivoAK~?M0sGokNU-wzSDZt=1aA=SDh`HNpA~iOI($vim(+#7cTpILHVgPPS)TcKq zRojpvX>fI{o05abIl}LEbPHT11t!!LegIoq24_NpkWisGB=M`QYGJpye4XWnRcW!-|RH%uxD} zZPx_*fCi(ZB-s30C#?U%nWQp)G_%1Ozy{Oalp_u0Tdv{S&T=X+e zhBB8;d2rcIx=|2%<*G86FxA_MAFIiXmf22<X&@9|1Ytv=fjfqU@q z3f5emmscY1oZ9`{ar4yEzX8SLr{t>~`1t4*wz|Z4(bEscO}jbu7cT8I`Xz;K4#^Um z#NSO(NX;eCD$}|sV|psEEUI!6M&hdHYjno?L+R1%?6M#>x1~frk(dD8%B4Xn2%wj_ zrH||KtA!1i8CO37Z9|48i3Bqf7(YK?6qkgubrkx#F*|HHBN18JAthIJTe+e%;Rsn| z&8bu}A|;00Lbm!cR3^0zP2=2Emkh(`iI$IcND?dTd?NfgrMyi{B${k_Y+kHWN$n{| zUowwXZO?666sO`KurGZj=9^Td3^l7#*h@zFVtCN)@h+UCFYL#3lOAMIUA^ZMs!TR( z2KNYAr6^ETs9weG$&+osf=%U2RI z1GYE>cj!TCBjm4g>%Tb-Lre@5ucYd>>rG_4a@3+g=uNYon-VYn@+;W3$V-d-#?~U!>fn6d7Jp z8Dzzd9xLng8QR*NX|Y;?)T^&wH%^d47;Yvs5POMq5iKRv@_cp*%2+Y2NiTD$amNfw zzco9fZ8?MoAj@##)E7q(L=RhjvlNDmAiWGk$Vu$!{e|6JH*8FTFfVDZ5naCyy&^F{Gv#9MB;0O`K z^c3#1j5@Beg`<>iIXPYuu3N2f1ttfGNjxEy?G1v8u1RUiT8#;Y08|(l(9pqc7Xvtb z-)J?BtH^my9NaB}uwHRQL=%8%ETmCwn4T8X6q--SQT&fQfW2ya4rabqNBVtBoc2L-C9&0ZLyPAk1dblRB)J3 z9i~KUGf<8nFb{&|ttr3@m-fV++gw76+y9RR;%~cG<7xjl`)&M|c&#=8n*!t1V?Obc z7r*eH_t(v6&!6|MSnl!gZ+OROY#yY%OnrAxgUy&O zPA?Bx?@mutAAlTW3eWkF!E2V=5^wVo60}HNL^Z<1jV9Jzh3y11?wl0+)Vvp!xDBTz zq+?HE+DTwKdoIHEdaU7f<0FjLjDpdqQdKj8Lk2#&Ol{|pgqKD^iK_RN^_`mQxxbE- z_$SlJBmLEXST|h zi@%dK%LN3+6N5gRebCx(_eIx*xWRaHb` zfQDYxYS64YNH~vv9~C%KsEM>nfb)`N7*>{E|2Q z@`vZm&4S|eBO-WD0R*pB7w&LbsLDSY#>ez4_9-F^zOt6jI_mxBc4@WOf<1z$T}tlU z0sa5EV~Ks7E^$qc8G>&E=Z<8I@yp-$H~;r<`QtCfX^^$xKz->PuhOC*s7V^KGRwIW zX;4)uhoo7b!E|2>ve{F{OS9BQXpZ;Q)-ZI+G(88sb}>aL!pXBrCgLTGq<~Eou;@ z$FfjY@1eB4HwP=Ajox(TFJ&@!29I!$i4Bp%9^2ZI=-`Be$PdP7M6(Tf9havyv8&Yq z*pPY04o=_{NWSv0){o*t*yD%DcWqnuN`r51ZtDcPLjeW7HX1#_-Xd~nps|;!R!!Qr z&7KSlIbw)bS5~vjtCc6X971F5{I^l{*yHQs-#kJ9=>>uDqXPh5s{YqJ^%Up(H(&Ys z=ic@G?f!$d<*wpQb_9Z?5DPncvcZ3Dn5PEH6$N*k9b7s~MNeB!tTQzQ zJPoU!P!k(GVmNzI+^nB7%b_&IKpSEsc>*w9i+h`KLY*>6w`>)1#JD2RBBWg>T-{9f zHmBvGoMMo)yPntCsKz!qt~2+zl}XEei#71VB28X|YLeBt*=_;~U{#4L<-|NC=?_Jo zjsr3s20U9;$$`kwxalwnVe2{U}!o-Df3&RY)`MQY|w(SKXp=Ehz7L3n?slDr~DkBo)XZAXQ=3Wfsu5h7XlB^1x5A zgV$MK6pOml_*h{s^Gftqjsz`Du|o4=vD zYqbMAC07VafvLzCWwbX5iLAyI4f{}<76WWxIIicZ4IZI%BDB zAN$x_AHVnJ5C2L%ey^X`zSeHq^#N+I!rWMxxc%`lb#s)*Dcg$$ zT4whX$O;jOlk4s|6)mM+W5M}V(AbV3;7`JYS}~A}RbwcM{UqcGQ5}=V8Jb(GG7mh< zY{P*%LLkJk5{BZlrgtUHWSQBb;vvE`CqI*`Fz3ob>oI%!Ybi|&3Wlubd33VY&iN3lVfaf_K{vK`2KvF{nz#lezF% z(tnvjP>=v7sFF5Ti3x_4Ofz|!)K09w*~y|?*7hOcB)TNA+cAXAB^6D|rT}$=J*@wR zjA^Zd3d})E2m(mR?upCUD`wyMA)TUnNg!mEf>uhCOh;O^lI)S z_AkFEFUICwK~TMQX({C~Xo5_|495ZoJ2(9MM;VF3BBa<9n^5Moc6r#n`r&7!hs6k8 z5RhcCSaWjZxZ>8qwEtq@56eG1eT$Me=oF#$)ibibx{0~frVQ0XUG$gJ{YRK zyW^61?f6{v3un%!`uNy``9n`W`L#d!leb^;Mg2j>gM@RpVn;${+e$TGp6emOCVdBE zyC2d8?!V?EDw&;>&9vjFP;H+G_HkmXi45zN??yU*OOyGr_$TssYZ@$$#qxjWTi*P> zxBk%6O|ES=mgx<2)CrDHd~A|oYl|wPObfQ*LrNK8flpUl zscoW;!vW~hudr>P;sx%VhU9ix)7jMzopVwECOc?2=2;)%G7cy{FVIe><}I*H1cOsd z1!~yreyG^Y*|nxVG`ZYzj6$Rx+n$~I-TO;Jxd%V1>A_k)guL8&R~j*)S8;(iHC!c1 zWOA&jjxbw;t+fiuLYrJX$hZpdQP-jAq#Y*ZJ*Ao>q~~6O?ODv`VEJ#HnFTd$gDH!o zuz`^!O-3?n)TZPGwT{vNA|<6C#CmozW^fNz&kp_meww?h&syFQv`nASR#`T~7|f#s zVP?^H!L^iXBlBhPOOCi74iaG7?pkSWFyvmU{Q24V4;uB+={mTH<~G)_$D_>^JpfQZ zufOl6Q91Tj>;lQ&mDa8DIeuL|r_~2NuiWyvYZX*WW|{piXw-DCL!hT=?h<<3(q`eoqH2w7pn-tz>t6{SbNYgCA>ok z&y5(?#sXuVQ`fi*$L8L|4y9dPnI^N2_PA3;b|VMt{wRxELmf$OT|6Klv=uSCVdb#> zg2dlo=;o6>3mS*nB7CYjc`uIHHH%l_5DYiskeNQIRez3YTkVzAH~gm1scZHnO0Fr1 z4;JYjbxEg1ZXv$<5W)j+b}^s>Dz%xyVPoOEKx?&|q%BQ-h^oE|S6-}ZS+*A5>~Zoa zUFSP3gi>`9E-kOqbp}tf%)#0jUbW8iH zU{s30AyamwB?U%P2$b$R6Z@FtMmkk>H2Qo0eYfPMA3X{)G@QQFR_)6=r>39~1 z+y01uQ;r7U7KGxSZjG?xkpzH6$2q0YeQM%iNG~OBDu!y(9M8`1wabLeQ&vr$YDgeJ zi2bSOi|{b~Pha}Qul>V+^p)THH% zuJ&+?U3%B??bY?){N!_l6E*~+are!ozf20|D8^hq*_+YN=bwDdXME%rKlB7z=|JKy z$`g+qv*|9>aAFVg=xbEe3C{pPn{Snc(3;G*&;su<3*jyoDh6pjcBYZQ@4czab^cJYR#$AE;lHzN|mkM zRtSkkh5EL!2Awq#b*q{UgPd;f^e(odmKx~&_+t@MVF?|2yUxnupk(JH@UE^6!O6|_ z&qnzLlfr0}N&r=JjMEAdR!0Hn;cQHcnqlVGY$C{`mn24~BA(5m_2DUW9)4jjb5bGAJVf=cBZ?9h8QmQjguP$x$4|V4Ri;ER9JK294~&+fz$X zfTCRZu!DU>y*uv1fnPf#_xDzkjdgC#ijUd&Cy5rDWNl3Q(xSjefU?eFQdl2@rd#Rt zWEK;XT%$5&<*^QEaV#De>R_G18$x4GlldeNUiF3b0!6ZCvx2f&2xk_n@Z_L{xYW_p z+>b64NVAM7Dj{=u;3(VI_Lz)EMtAY#4c6gguAB_c6izSx{ohc}eWE@7M0<1q&}#v* z9~}Tb`PJk6X!rgvx?wA53IVJvfcL*TZ_fVHOa z=LTZ3hU4j|jBiu!0iu6ZgK_uLY((D|YYY_QY#WKuN%0ljL_D;#-gW}JdOSg^WV76f zii36N>D}iY@A5opu*X6`K|8ePELnBl;^{=NY3rT&Vuj3YX^DK+JyeF$Gz~_zU@P?! zLKYwj<&2Zj%oHDV>Bbf-ZFiLr^>8APvL_WA{?O<`Pp|XiVi`_VJ}Z+;u1@yeb~&n7 z?a)_C^3elY_X9+S9F0Rkyy@nwQx4lYYXub?+MzIZ!1Hwy=qibv^0`sLtduhFFgrS{ z-RXvHh%LEv_MA(UiKm=m%gfoMF-U@D618G8QYpd_!Hoe$o$;B(!?2QRvchyl@3mn( z9XHtRoyTD95;xe#pUrsZ-}>%%KlQy|`~DC0dymPB!4A3X5T1nVnsboX_b7dfvbG2( zY_T@9jLA_C)H1Zoy8qtrha0w{d4(mF;NSt>R`DUFC? zQq!l0_^tZt_T$uTuonKPc`A2d$s5uurqT*E-Vw^3b8P!%h)n<#*rPL@VZ;|!SzXwT zREttVUXpkyCtbZ;4a<-@ybYy57|-xgRW@^QCQB!eLP70Tm(9GzAGEsIjvoMLZUZs( z|A_;`)Zpf``J&!p2->snpf?jT^B9o)VI zY%AoCm|QQ?tB=qL7ODt9YrrWS5lIK3j0O!qg1Fw@#`4G=D)SF2W7n_$inBI-O277W4X)+BP&85Prv4 z0_byTB79YM{|S3jo;kP zdhVvb==Xd%&%HJ0x*m^S2u=IVeiOfyUhKW}kAHML^RgCk$#wici|D^@^yOPwqq#b* zn+Qi%#Hb4o0K8#Nt*YCf3dXtm_stzcYDl#Ugy{nj>P@aL>FhfLh}FF$hYFAyJ4v<} z-9pMg!(WjPpq+1e*9w8|i~bq)mbgmhR#RfVy-4b+iUT>R`V`F#6KPgx+g0Vz&3sHx zd^OZ#jFe)QG}4fw8&a5V0tSA#j8nT~$0iuxpxe%IRMpC!3;|8ua_de{)}qmy|PeGL5#Y=nubL+5tr%;cd?T{!rJ7^A(qh8usv> z!U3(tQ6yv04sX3?-n9Mg>xy{=2XvH=&KSdzh4r1K{aWFhKp;H$p7DpUQ6gMux#4X; zg##TIdL`G+)IP~0!z!k8-^@)snT325rKAMWMV^zy@{$9ogI>E^w|=~iOiTW?uorR! zm(nmm&6M5R-V&Jsh!dpXfzP=0y)mUxU$F#}5jShwr`K-%m(Pgyk&iw9gO5G_1>g8b zUiEkWX6JieyZ-Q8fmC;WBXRfwbiiz3m!s$8(r<+y0jnCcyeOZ-=v4VrL+rle?|FC5 zs}o4=-hc6c&$L#S?la@(zu^zO_XmFPNdll|o^>V{mPA#WI+q-Ot=~RtFO__QynnN(Q(~Z`)rR^nJo_?A zkEH{dayD|{l@yp52&zX#L=zqp(Z9^v0c%0Kcy03gl?m9A<|HPI!B%b0D z=&&PN)?7EU$gZ|SN85%S{o?35DM5Ak_STEMEVoQ*=yB!I@eE|}c3)ozPE8DCRTqZq zdy<62t_8h37{8bvuOxQ+**tfc8^)!u!*XbPb2uZFL~6(>9fgAhK70fLP5Q9nA*Vkx zd^%Tk_Qy-@KHSYcE;D-4kh1m&`M5%@`R)mTqyHFS91MTp@sVow#FLzo-#Fz@A=PY( zcQ4{t=a5p!P`0h)Mf*$^-MtIRJP$(4=$k5#cx^`W{!8cGE%o9eEXZ9!~HY~RH5 zD8CaTM{^*vk{!9QBTlni9N<&_A{FY4P33Lj?|RiGBQ+%PAdVC(f=zk!THXg~nj1a` zkFM*w0 z2fIVGzW!v76%yuz^WzjpGB_QCIs}jp(bCXLy|W8iWxVo@oEv)nFi;Ww6rKUGQ@Zku zlMv-lXuP|hto7EHG`8|7tf#`})D>w(&~(qW@^&6IE9NP;7CE*8e19z-P8n=&fX_A@ z`3mso6KcU5d{Wtvvkn+$nxUx_X5L5DebQ4CP$>Hf&!7{z$~fWTabYmOva(zBH_=!gq6FUp;8y6^TVkde!tT#b#?-;hlaE^7*F!O__Yc0He? zJrUy+m!JK+-}`enf9vQi@Z@-6uI$JUo7>+6_5+T#w^&Z26J~??`N- zWQpytbcuN=xv~jMu6z;coBEabr&}0>?tGkQ+}?l_lAn0%5B}6!{`pI*mndefg>~YH zm)5~#ivPF`?IKrkrL(P&t;O!n1)cgjTfsKUj{fR3GCGb)Kvpg`nzE%Up@C$tglR#Q z^qG9@)6UPLTipk(E^UJ}Y35PZrEDYuTT-%7otYBWTcAJLZ{bs)8UUweDR;QYV5+Onk7t3*UCPt;MGn?lnHy`Zr<=piWfj zTO|%1T1$+%ARICr=-9o7*blNLrt1U%LzAEe;M1?oLxU^J!2L0$?bwvzDkjJ8v0b!e zHw^uKo{cT)!f)^Fwe7x0NhI5FlCR^s#I-1eqaTJW_t4IwEU@ar@yFq4l?CJ~ESYLj zT7J@yVk|1SF^1Ih=bOC2spV1of4?3b z0RC@Y{pn|!u{|1q<*Y_1)(t1-gvE>@%|Y59sX=eDM@t0Vl9($;oDyi3@Lj5Qt)>A3 za7r<=N*55mC>-(VZfu%Z82^XA!8WeJJ%pZp_;d+v%P7yjIS;5IRcqKn=@hYoF4pRfj+gWCSRx{<9 zku;4lrV^?`untA>IxscvsT5ZX7EO zuIg~lCH2R1*+C~=OBVGs<=Z!*>q^u#{DC!@;k!zi*q~JGtX^jGu$Sp8kg9g-gvCB? zn*^s6fYcn`_@T8z6a4SsX0?eB`r6mL)lL*C#uaq07B-tT7nm8D%7)dn`I^ikk*jZo<$%1N==+P25toQhY8GfpGv2awv2wV~`XPsKH zzuN>vE2@~QxuT9J@t$|1Js#}?Rsa2~U-$A?yyo>k|Bv(b-n#de;NuJc{X_X5p~Yu6 zk6}mGdesrpoR8@BiV?d(Cqn zzyCWT9@kXI`XdcHCC$UC!<$A02X1klU-gNEm@MQ!QNBSfP|0~Hz^tQjr$nI!tamaw8tP`eh7>tYgxjc%o1|R`Z|(rR+UdB;TB493hIV? zK&2-rl2R8^Uk=+2T<^Kc@(N>BFXvmUh}Kiocx)*}j8*r|V~HBudYpe?zTYmCU>yz} z{Wsbth6s8koL+Mm#e6S!y6CyTvZ8sAIR7v9-X+%dEj#ZTW6rhrx#zyht`~M;JBbwA zgb>kyNO6dPAO)Ndzz9PlAkmKspiOp){ajDFGyecuHU)BasHO zkPwP2C15AfU?KUULjIzsLOVYgajLPz~FACr(_q&fRD4wf<|)@%X;qXZH*!K<&h9QX1{ahG}>M7J`jC(j|7T~VKA8<%u5h?z9WQ?A_RyDO z)B(|xLqk~MO`f?tCUBlh)~Msk4kS9$@W`OTgYLiaz!X9KX`iH!JtLVy}VVDZkA1I-IX{>ciV8HHeQ z*q9Db0!>N9lf2>1y)$o~xzQ=i0K&$14?&Ij@CG9;arqIvMp_=EEXY%{fG8EZRGc*` z2Q2WWLL%xaxgxvbnukgLX_*oXx{^bu&>_rQNWs@JZM~&TYt!gee6yuZ5tb-0uV65@ z)jr&A-^q|)NAt}~?7(cD)7>_Q&@wPh(Gc-RYn2Gc74r%`ml?mvImhocr-$D6%+Kb$ z*VE7a^k4t)UcLMN7e4=c{;!|t&wb|(x39Gi3(o96HP3R!hU$HJK=Eg?&-0Pj@+7#k z_|%xW;`|nU5JRdll{m)tw(jv%ecQ=Pdj&aeIfF)L&$a^=~ETFs@v|lr#OqpQQ7$rC`8xO z-AbH&ER0j-T>`JG`qz}YY?I<(2{oeXzzFB2u_c^3%GCoXS9=RF#dAa0eGy%kiYXs- z$sf0j9s$P0tCQJ_B$}47^dgf+fnmD~s%L59fMu_^P&D2%)4NsrQK)RZKuki}OUABmCqrDB>8q-mFdqyb{ zfh#!xz4hISBm^t66s9>?rk^zjTe}hNK!^|@L&u&7NfH98^Xqh|@F)!9Tu^XbX4Ezh zOX-8v?dV!(N`iK*HtNII$5j*of7PWFmslleWARWAa)Fq`xJl<+{b75BB*%gnzcgP7|t=D1@_u{NOPgM z&4)6AX+6(YY3q&9?}H&NMzkw<&?>y{=jSn2A4%0ZZ_jCIE(<@?v=g~1qjXBHQ@~jT zV?9qCZL`Y(2`R?Ve{lW`-LeNGGPo~PunJeM+%dQz0w%C1F7Y(Gj}O^$`|?IyDYUjQ zTUV8ogYTbuI%bIb3v!NRMCPhP*)i$ivO?yd42wMqPT3ypBr)Zqx%Osvfu{@OFM>xz zA7_*jk=BELywotCCp@^e``5tp#ry6^#W6YCnRN6v+&#!a>8Y}x|Kcx49lv;fe=x6`HKfP=E3ER?Lkk&{M zLt+}_A>-va7Cij&h{E@6pRoY}GQ&`fFm;UY?V|ah@tET~)H}BUsowk>KmFtX_&@Tq z|L@=U_Q>CwfS^7tfpZM>T7EpdKAG*1(Q(-1nysU>+C2E8L$VkQeufHH4%DVuhb>HM z%}Q^xomDc!EVdw$*)0Si!BWX(f#8wooeglrue+9_V3NT5y&o&4xi}q$B{RRV{WrOD zJb*pNq1suithEcBoXe*CTWLC+R~4?FHJ+gcuFsSbGsfv78AwcT(bRYpjX^1baLAmA z#id-nYOD8Do9V5NcSuZAju=sut7Wcd9#A;a#5Yi1EQ8oeOy;o-*<%vR&5LL`>58N` zWsA{yCfSh=Ht<*&>seZ~h%Jq?RHRXBaX%F1Omv^)NNUj~tFI$0T=|}jH~(vlt|wyB zW#(#KN;DUfH0xWaX?NXHWoC|m|BeWg+512Jr74x;N1kB2>;NDNDvQm447da{|OIBC7Z|xJcF?V zcnnMTo_092=^uZ~;&8vfXCsxLktkN5S#5B<>3|M>r|O>sYCW1gE{mG2%= z$|g{37B~B|af1VNOZ=bI%E#H} zhIF_58|nx?26K+W^Hz&{9S><(nDTiXA}T`;x6T?sqkMItr65eG>IVh1fI!Sju}N8q z4M{pGHNf0Q+l@>xSmKrhnn91jI7rh{d2(KlBr=F1nF`|&b&5-}JUB+@9;MN2!GLr( z&(PI0Gk{9Bjj8R@)AR|;lnhGKN*TMvl9#Hz>22fhYogCrY6Od_aAt?DGj(BwCHn3+hDONt#6UbC65ake0A}@c+!&7- zCYeja=h1K9j>vcCW6#^Gr;p!!?c=}t2mkOp z@4ow;|JuLuy?^%4bq%JIZ1jCzv6T0R6F;bjLKG4g^o6j8K{5QyDrQW3` zb-XcQMZkamcKy_!`Qv}>-~IPKdi(ahi0^*9?IC2{t=hSAu$C5gQfi<6!y}eFBMq4A zVG{61yX3Cd;t0pburJ?obQUix9Zw<=*=M_GEVv=@#|Z4)i^&rDr^H{|U4gaj z3j!k0-Ha^oAvn2#I0ALb*QE6YJd1=Ui%@EpJe#fANQuEaweqf$j%a(C@2%PAXT;Tu z{-0;w{%sFwWS-ER;5ch8+J?4OoEMEyPXuhnobgyg)05+LCZ~%OI};zf&nFUA>NF zLjwAM@7i%7t2+Ba^wGkAL{@aYNo-GxYjj3~DWmgBzyL>977}4rGjI62Yf0V6qB|K7 zq}dV*|H-wo*Iz5n?nEk4Qw6X5F6!MYu3zbj)iUZsp0|A(m0{EIsVkuKhyrNU^QFL1 zX8Zdjk5r9Y#_0ele_D$?iQ`FDE>NqY4~s>gdy&eQJhTw$&e>@(QJU|aA8A3yM}s-1 ztWJVsW&(v3DRi=lzrAB0=c{~(_y52@#?7su0 z^5xALumo7{oO1FAYg@Lc3ZUtYg(6o>XSlF2n~v&fby7WAAsc%Zl36)bdg zbSvJAQ?yCPD|e=>!Uh*ai4(3`MrpVgJc&tR(OMx1`hgW$RrY`K2TR!0Q;hR=ZAGRY z2a(5Y62p6R7TK*0K&ZgfvgN20jt}_y&*+pk3kWy)$hwDR988*D=_G=dvZpd`B_N!uNq>kE4HJKyyYw=Z~whp>izE4LAhA};4;Zx!`3cnpt4;GhqD5u4{l+{%i6O`K95?I+@LY_{KALr1nunwS#KZe?Zfs7KYX~JK6?B1 zr~iY$_)~xWKYV!S;d8(D5B;`3|7UK${qMisrVTbB0?m=>a$rA(W1bJIaGB(o&lvnA zwPBr<1(tLZWditJPoMm)|Li~gKmPT9>*?b+A4a^+{M^hn#=I9aW_a5aO2wY6;oa0p zw+43)5MW7*%w?QdKSL`oC`S6=t@IIS#dnE5j;Sp^TjH-j&M4UfosGXKjWJLQFBV?Ao7q>5 zjmV{HN_wpmso@ICgO296z=yF;P%#}F_{`ixTBb_^sNqXPJ@}2}8&USBS zg(In;a5saAYa#yTJfX&iFr{dhqRuNyR@&kGm1{q!+y4Bwi5Uuh2uF7i zV{t-g6wXH#5>*Go_w7=W=jes~8$(i-O~Bc1GfrICJ`1+6`u2UlE8qT7y#C-N2Kf5Q zt&e?a0KU=J+c&q*ec>0X-lwYyuC9I9?)kg|0NM0X7&1}yvij%9)M}Gla^QQ|Kxv+w zj$L^Zjso@a@H{zW`Xs$aX%`SM2)8X_f*gOsIO{I!#i|KgJ!XF4rs+ZYA`*D8tuUYv z8_XoVeBmtJ#G~y2gF{pPDlGkqdt*pMfK;n;3ZUFZ6G{(SyG)a_e=`L^80B=a&_Av= z^Es95NIB4ynl<{#etSKa0!H;**J)!6=k2vFGIfVBR-HLS-ua*B>B+im*-*bp;S;XwvR7ntX0{F`3Ry=90Xm6k!7jFG!Aq zC$wBDjvUA!4;TblkIgfLlpt()QNRaJn=JgO_k4yGqy{fNVq_cAifn)>Mzj}ygwVwy z6j_!0zPyH?)l1?v+OA?$U6ALkKyk)e?(mLwQI1I-KujTAXqOS7DVKBJpm`8ivNXjU zitao+CWgZaJd2N^26%1FtVD8)q6bu7TP*&1^oOq>p5E4*kKg|E|MXw}^zZmDZV`{4 z`|!K|%|H5ufA*hw{k`7@yBh?tv?G!%NpQhs-cWs#&ybgf>J7d7a;A3NdwufJFa6m6 z`1616-~X8(`|agp~^vN3qdNcyGV-OQNhdauwCHgWL^|YT>pE>wE1}cA8kt#OrQmjU zZpd`Xh0W`#w0Yo~@nVk=d_ue9(&x_e8ur~f(-=;Nj~DJtY*UZCh}%rjnp)1UvTvw{ zL!F^zMJw;1ZE0Yo4H|K~b>1KPHox;b??3;yZ?8Xymkq%A>Us$R`{iG(^Xk=(xc%_; zWB<}8m%wZzT6myvb{(nULI?si1M(P1vQ#~cNac%5AAMzgRar&=Y@JYn;v#DSp+uyN?w?`WYy`#`N+Q_6^uv3<90H%#AfG}Nt3Frj7DFWt%?;kQ z(K}tG@9n&u&7_2h; zr?&51I#kfuq=#128^klE495n#E0SJV1y5lvTcqg7?J!iDY0_A}6_kv~e#&cYa?tI& z#c=B8WkqUPnMX~IV{X4rT7Xjbl1GakN|7d3!i9qQ4Rj9>Jjuzo*yEOY>ol+0Lp=Nj zTMdb8ro_zG#3oxH+C_#e`^iHFFnOS<^W{MN0RnM)07@Y=}2-(3}B& zH@}NYAFH#5SuuKd?(5Bczjd$U_Ie8}=0{miU;gS({>eZ6fB(rpz1zx}?|%6HZ~2#g zvxzqbKceGDw`>>U{ zOWQ$>;VC6dghgvngrjNFK}8v&FsI}zVCKJAduZpjqza%Yz6F0thV|`-fk#FAy`}iR z?Rc>h=GcX;M2c{3%hoSJC`rvW?^$qEptKPt8JTTGv59k)ryc)E+XpGJ_mO zlYX9`tmetp=aqD0y1__~!#JFoGixobd#Rwg*+n7AUj^Yw)UK#x!~s3fI{VxPb)$%l zQFvo0!)mDxpBQm?VnHkb_2Lj_Asaw>1zeQ(!4(h@&Go7FOf6lRd`~4itjrZta^JH- z8Z-jgpRC(_I;t6YLOTy&&)JOdVG}pCfsw>1%{X@VpbMcC_)Z_l^lF76G=YrHeSgj} zp~8!OT=GNS=OBi4-9UyoDA2^f2FSRr0);-YnU>=PIzK$}_bR5Qx7DmLtx)WJ3UJJi zmJo{C;}zs_m7+llV^J3HO|>kihuwei4R;oSMT%VA?7RV1Rh_b{!fvL_S5NW&yN~PM z4?9=!MFRBfYs?o4&^P|dci(&Zf72vc8;X#%pR$Xr0sv8-dobSnj;vxdtroEoxf9;rXo%L<6~#C+d`SbxPLZ z{M@~&Ei0Rku8Z#(+pYaR@=xS|D^1g1vFo(B_D;8g@4Ij4v)dRFQMTQeXJL^Fh2qWv zrYrpEu#l#$Nw-gHnpVp4TzC%MniImLaRlJbv`1wz%q`TgT3UBvCmztOo<1gyd#1y} zBXhM?1F1I9Jssf(9-Ai=+l|Py$^7^hiu_O~v>@8=G*#_A+QxS$&CSc9yP(_EER$p{ zzw_B=BB%CK8K~R=-S$PeJ@cH~-@LS8nKRB1StzK^XS^(>cS~BHx@MEhcCLjg4PVlW zx2-aFMndE`gG%D}%hPzOhtvUj6l7_@)2zFZ?Gz@fZKn z9Y5r|YrQjX~_QNg(b$?{+6uX&o$LVaM71coEqH?(yg$=@T-Q4v-*${(tQpp#j)P&t{9PL>{4R@Jz?1Q=ZebxL>yF;~+;d3HfXm*cjod!o}0#gRIu&+6k zbsFgb(2!_i=xZq)1##ZB*yWYsL)O_JPwSa~5z{8$=jo%7kF73&vLdTVJA`0r27`QX!)wwt{(M%&XwR>yVGYkr6B zR5zcBOzTIc(lkWyzC<9tPj))2C3${s_v_|x1OQrzW&Ki{Xf4D@m9D#tRuEYZT}oMJkOu)c!Y~T=eQ$Y z<2{yFd-ot&!`k+zq8h4L%SwPY>FI|+T&WpKjc%u$gi@Hhr7)R!(6X(8uGcl<7*JS@ zat&3)ZmT-=`Augq848*w5rxgM3_m{o*wTWqE(jR8@5(^ONL3sE8z1iB8N|Le~K<)c3#PQZu0pm>C!>U7*j`7%MCt} zPmZLup*f{u=#FjNZSw{6dfld#t690VfJLB}GbjtfJ1IXX4@ z2ufI=bCF>z=r8e7*v@s^Bg-ip(-zi=%0xi--7dcT@;#j@Gb>}Ijm&f+#~Y}CYw z8+5WaJjr`?8()7@x8M0YUNUdL;n&S3&zG-X{#8%$`tSSxpZlqw`3!P&^?9P(wOg_E zH0dgY6)>P(jo>sH$|!8ftj+v1i%ke)kAG~$QTSv@UOkURKzU6PBOLgMgYm+{S2>Fu z4p8Y^(Li#JEK_3SLFEU5l4E#aC)C8DT<}dNfe-{!gU^%h3B-tE`>0)yh)Y`aY)t_8xa4)1J3ui-4tL@ z%Vf;%hZz9^63{ozY@=btfdt%3OM3P&yX!zEVI9E^_@szqJoZjO!WK^ms@)^v-e z1d~KEme*$-nm4EX)DJUpLS7Eb02kLzTKlQ_=Er`=fs^&BZ#N{!mkcq|{9SgBZ5j^t z4u1AzAZL(MQ-W!SfV?RjK2|8@NYvrs^PCNt;p4UsyyCrn2 z&z@ysJo~cVCNZK(ITpBs#;YMyHzad$L6Nvw95&M^)fnVfde{XQ5c{8k@>HsfBG`nQ z(z?*FNqMwWjv^{6ZIh?>ik}mD3@|~#FMz{q(paA!kznFm-owIb!;Sjj3A1SWSa@=m zH9k%_QLPJm6${2HNoDg$K=HoaQ>|RlIkF8<-0$eaIEAIbxi>S+o#f1-Y<4h?iQMj< zqUc|t+2F}t60MYV0f7J>DuxY0vJ2?$uX|F7g%@ykIM%~pZO+-k?tc6+3N7 zEZU>5HYJF!vQh_2=|gsxoUjffX?c%vU8k_(pgFnt(SB3+r-;w|-rxT+=l+#nx!2t< z7JzT^b?Z+){J|gkrkc8AApQkyoY$H!=r~*x=5yI@7qEIU! zOs}GpQP}SKe3crrButTl!VBFN9d9V|R5fcH8(g;)#S$qnTg$`by%n9381e1gQn8!p zB2XR0rMr^$N*7Zu+v&&LKJ4UeLpxdZg=nKmrhz(5wXL}?uO zXJ{!Crte>-%vNFyn=~~gLrV`-4lT#XNECP*5A0LsA&=;?c**;7NCRGAHXGwE#v6&(&BqwAFj(9;6 zq<--3{-I<;F*NH!vuHdzl{+g14q{%9TVG2oPbmv)kFcGH1A!KQ!7Xab(SsF^R=-#_ zaEnzVJtPrROnao^4JH4ZBUAH(c|K(PPz^~kdKt9LizF^i!K51F%#8Bb+VgC#2CYnm zb)rmP*QzNUEK^|9#0uv!+GyM)9zTOGqpT)+AkC^DI);`_OeP>Kf6tLgHH7=hJyG2YNtMsw-bIJLVC|bjj|nM2dp?*eZZif`uLxspUr3 z+lcr7&_9)L@A3Gu1^Cq0OA_$)^()~}`E>v6zxdDhpZXI@mbo}t+0OHuy4zIY-M5~V z)$~aSIfJdf*FmCabZM;#^MuG%Yu!S}GKWugT$ie5H%HPV^b8pVR1)W>FxcF!DvltQ zH3sbcl?6~b#lsR^O!!QIBO;EIJn^nWE~S&d5kd}fOW_H3Fm}C}%(L}*s($plx5njM z+f8nwhs{W5$iduXDqiidPL*|{NPCnZNuo6IBL3LE9DOizaG$wDku9>N{cmYkvK6wM z=eiVkfZJ?@(ol*aMt9vJmyF>QaSh**TP3k8`_|xNMvNO&@AhL^p`2EWWRg{~I*^A% zO$F18HDRYJjfI2OM-ssb4slJfxZO^>l(n2BHQgSEAkz*Ty`HtBeI|;5X$#S zK)Wo8zR1oK;S>I-WQIck7B4td1`GNnkid5#H0}U^F1;46vajpWOf6tRS-A6cG@8fyb3Xqh?*-&whE4TJ}|oT7JL$41yZ; zCFgOt!DqN1=^Ez9z&+x$;t>9cBZHx}5q2V!UbL$(sEpj{jsjFvE^gCO)xkOA$Wpd6 zNo!EJc%UeZ`P0}zJ} z8uDYsAR5VK)We!kt%bF@cGPY)0*159i^L-kU`)?#viB6A`C)?)cSv!Ij#TA1wN6}b zhLyH_JT`Ai`GPVe?0;$WuqM~b2rcVcJEO`I0p@$qs|LJRvlXz#X5n1e zzsQ=_ND4C-wuCSO8}k;PrI@dk@{mPU9c@@qU27>)ozx5}LZ~g6#9j|t{#+Vq5P_gi zmD1Kz7ZRIMZto)X!e}b0p};6I&Ea#%@B6;7-a_#5^7ZVib_4LT0tnM^KK)O+`nP`1 zQ}-QXb%vCOP>v))C7eCu4b->WxPJ_hNrk3ad5o0zx8e8{pbzT8)i9ViosbH z4oDq2RKbUV?i@5IC69i})L(9e+`grk(7k^9)6Q180faCc=DR5)DRmd?oO1865eQiaH92rrhVwuNOTc_jOx?}tIroNFzd z!Z{8?j<}Lk-cF0@#{W=CEJcks%>dK@rI+FpF)?NTfDy7oTO=vb%9u8S@Ya%(IC&az z!>ubsEnR(R(;JHD(l%48pOlP8Nl`&gA2bjG$>8?VpP2rtEZbA_^*a{c9NF3TCmNziEPtizpA`ltW4x_U!LZ%Gn zL=4(QMR_8>)>hr}YqIk6O6UtVIC6idJAbxvN~`C|k#~oCa$p-yn`^$~8Z{IN$CoaodI^pMI<`W=1?^U*J{S(}eLyi;szZdz0lN-mkOpEJB#04FAkE(r8Bo-O6r?O3UQsa3qX;HWag%0}3_Pkh&1a+&&+i z3;f@<>?v;KbSSO%R<&2mn9d&<{vbQ0q&>J67)Hivo~n2HUXzT-S!wr^5HMWAX#3dQ zl{l@*uXuqUn)7VNMqlPIb+Vygh0bU3g+t=3Q8v1?(q_3x+W-3GEm&T^S;vGWSDb-0 zv265CnHm+o84?Z%*8yWIjZi(rgj?SxU2!T-Ra{ zNrL!uhqcBUd#mv7q1Ba))XqUC)|i7ft|=C?8u-qD3pi~&I2uAIbqU690LNN)wVr8e zxHz~!6j!Nh$GBB_-_R~9_CHrH&DeH?p{_u0E9m3rtQD|Um%l9G-a_Vq{OL92|H$6M zrS-{W(|ExlJEFm9f};?D5l)gjx@xo#b3f1ZYL0sSPJi|52@255*Y))x0s2+GdOpl| zZYe`xMx4K&rnU^9E)XgY3h;4-1LB z{T#C85q*T|rO!VKIEd*mj5Ty@-da#o-dq$rLft@mbe<|}0I%qZ7 zv7vRKt;vHRm0N3zKAB;EVz%~3W`Xlck8B zT^T6GDr}MAYr>cNhTdGl3PL2K$>uIcjPeCx=q+F7rIiy)JQP)HY#V4P&RBX9tBoqJ zDZavrW|B{{tBFa6C&u~AL=w{y9uGlmG)7~gAw@8nAAKs912r&IRu}EqIIK}d-$j9? ze|Kqjl;rhHpi4+qV!o>8qiOo(vyy;wOs>mVrfJKBH(1tq&nAdMV7EF5iA^JBcQv#m zwP+ng=gH%U;hZxpG?1SzvE@pC{;3^43>78uCK(F{%dF;}?j%NH!AY{^D>da49xB?} zcIJlqd;eN91S{_|LBYoZA9OJic3{T&Aj#`!AKAH{WUt(3$(=U_(CrkNDHmD)TrHmH zn1i(%KTo`8uy;eFxTteqoFM@A9G-HKV6#6k7 z6QgPNm&6O>ZQxTl*qwODuB;3Q`|$k8v(NDFl;h1{4GWMINW0Dmt zzC8nMY8Z9Rp~HbFnCIYdm|!C<0b?bPOUWCD@_gMrLX``XdTF~q%sm?FkM>_DLa0nz z`oy0IXg(rzVjvVjVOx~VocnDk^!1(@&~g4p5g~?y@WMr@L!%PxSU4-p7h+qQ z9wY!1YtF@%FwA~?&++~{w};1mt!3~F2K0P&_3h>5_-0@E`t^PF7vFvL=A$k0aWVmf{MYB}?H(#?kV$kc+6@M``@p&n0gka$ zBDi=Klsr7NUC|Cn^GfYS3k=A8e@dCd*qqRHxiIpdaA zfDvp^n(V)la`_nHy^BtFN!3OwGwcotI0o2?^Kzjt?4>Xnn9HKRDzvg=itDlSA6 zzs$d5;6s6jqRC&KBKK+nmE*n+CtjXj0fBM@ctQ} zMNZ`-LlBP_QV*tYAm$7vX)114n7@e`{H8%l`5>3A^5mFfEF`C=Y6dW>KxNjHobHQ^ z9EXOWd%}~=|8?DWTb@SGL%};O`Vu@Q{M2a7A+{6VL{MKm&t}0;VnX#1U@_Co8Ljw> zmvY$kiC4?V5{r#IS7e@pbD@Z*OAcf5GG1))|z1_2kKiRAzVt5SlX%7 zVptprOtjD$wrWVzYI+Wh`N&)q4}(P24JrA!G{{%xbP5!a)}nt(RHxd06|zQd@}5#s zxlY+D{4Va9IZSBg-b5-(j*0cT1tXykh~8xzA-xV@#91^42N!Nl_W3rMQ(4!2$P!e8 z3BYi&?v+-GD!0}GD(+S^j$nR3v?Jb?-bHvCH}ENp0e6bKuS3isQh4Khxc8^&VY3`; zRymWZ+8D$#{7BekU(pIoaT_I`MA&KL5|>7@)Ygidv=RtAxVcuM!aj7k`H|K#OrpCs zZBX%5ob73fTre3du0B_)E^1&$S^k4dikzZb%1eP=Ev17*6mqGy7o190LCZc*gPdZX zY%Eu?&Ms{Lm@NMAh=KQ1ohv{!%CmNiCWRPI_?#3o2doyV-q$ z%0XvdDV8uv1|G=ERPI<2AKZ&mnQhYAEOqz^nkj?FFx0;C^QiH{wZFvP>mGf}AxRI8 z#l>Ac!>X8EV(ck>@h=*(t%_aM(J58Yw%h#7N{| zO3G1vQkk3lCE+;sA7~EM5EB{~Z(CJ{*O2F}v*%Iu53%2R`Ih zG-qq)o&(veZi8rrB5PcLSLwK1HB%0h=5+u^KW#lZua;h`rs(s=Cku5-*s;i~mqL|K zQA7X;4{N^U8(HN(%z@U_D<3kUw?w>qbiWO6hsLQ*@(lOS{E`cReaZ6H$`BokGymye zmpukkJQ15%@lPX%Sws#;qj^o3?0mpmp-)1bw{r;V&6`7#ar#@@#F=p#AiiR&+?lB0 z<^uWvtOR#dH5mSkhJr5AONm1E25=drH8);2CVWbdmDVF;Xl=J>TA@B1HNp=og%88Y z(-jVPD1~vJ3@GdA*o!iL45f&Ic)f=gzZ=>F{+k%T7EcX)^Qq~8$WBbpUHa!<8HMpg zvfB&#H_(^unK#d_vuQ*wqSs2aCZRGsb3&a!pFe!(U=p^_L0FQgBtR;Gw_;EKai ze$G)xa8iJNZiQbRbMj5}(Lyj_d3ExJ>HGVe-qdZU4+O^@8~x8|D-Iw&|En||RzUQK z(T&DYtr74HCt`)Q>U+E`K3de4nBOEa_aP8xI6%87U&NBuq`bNI7J)Ybg!VG) zTk%n{i+QPvCG5mdhuBJP-1^Qn;drndN9xn3T__(lnwQ~XogKi;;qEISc}T{ivj4ay zT3s0o3L1AeRwP`2*)C`Lp3dNV!# z!%vh#yhdD(hIY`Tet_~_htD>7fBQ4KkfjXtvIcc&hatm6Px1*|K8iFoOD_bjVD~q? zJ}cd}_+iHlGFSGA^!F#Y7n2Gq9c^mEo^8HP3X0IL8YwNtT)+aF+!%-5d?jXL0Pf#lZZP~Bl=?-ZN-fZUd^f8D^!GJ*bBvSCMir*$%W<7_y-Z%7irv6i3$t z2`=JXQG@~FJS&+jhp0@(6tx2zw0I!VZVxDLIzee#R%Dw4FwZo}C^U}zQvr*@xc1On zSgPl^6CG_Bi>|u6lrtRRQAN5>*yS{vaCDdMr*U0-{3#bNMGo?aV&#Hm+Ll;bROW*F zOndZY^@4LIH2;-?V#n?bMCNSsqnePkr*yxkCf?xtmmjfXSrAGQ<~^rL+nkv8&J$?? z^+8f~rB;sE8HfySsYn|2FA73)CN&wCgo>)}ILhTSC`7kkc1&ok60(HqcMv0#?79hF zA^LJcWQI+xxq-36iMJ>G1C{JB09dxYu+>cotSNK1CdOv5gVpB&@TEG@!#4F7Af%u? z%}&v9hWz0CJ*PUSklUVZ?S7u^&tU%-TGHu+i|H&$W^i zOU$CejB2{&V--+@r=R#dZtScn4+jXh+9`4FrRPrhm(Mn0wrmGV!g7in@h5m}MlpR> zC^o)8i2EXu`;n5o6{jc^fN84lbF%P~~HO52u6cETg&e83@!p;S|TMjL2MPEiU z{LPHWhy$}JSMPZMYNDSKBO};ns&_3lqRP%2$5hVtSt`r*u#>s>yqQyc+%LmBZvMcE z7sK#*kGEG)d8}wYzQ595Mar0?3Oa>(SLI#Inl!>lQ;Yph?QdKj{YbjSg)xmxy!EuV z4elR<7Ay0yuw>W=CB}Ai>WQ5YWpW1>J6ySKn~sbmT*#N$AnH~v@8T`4ve-5dYy%|M ziOZFgXwGiotr~TOOX;IZdEb3kdn%Oj8*4CM+9q8!5{qR`fcT_mj>WheC3NR`d9sW`1s@g?!T8S?3>vp z?UQq)n@`mZQj5|`#|a$8#@_IG#38DL4lfOjJwQC8?zVgO!p|6w>tIs_c47HBLfQ2U z3Fju(tX<}`i(d+!*pi9$E7&l}>Ic9{V#8pGy_8+}tK(yO{YkJ2-JMEd%X>8A&9hz2_Z789Z zbKJ6?v~MnSqYtxsc-jVDLun?E_2QJp(Ar1BI{=O zt3WyoUxD`GQuEIZ zS}~B2PmN5;m%)=;lyU1taO7yaG8sz1!3#dR4D00(yOs(g&BBMQjx3}mS7s*2mr$dtgjJR*IaqRN*8?(bLl28&%Y-3MfREfuU|61T~yrpfwXS^2%B}3Cg0l`4AgCmq`2;r``Lw;<=G5BQA z%OPhgj%gPCLdXy+E0k^V2OHKN@FQ<_cl)r8hd=H1|u*iDy| zJia8gSCQRYzzF1e1MM5m32X@_G5!&II*xHmj+{$hhbfGmWO@8;D9~;4)le#Y)sb*I zlvwGHN6{dpSNJZF+3?!T^2fj!OU&Y;Vpp5@ZU;%K?H!1o!w{qofI8I)?=6sa3a)CH zI!dYKFslr0@G2D&vLq_tS4lqmQd@&pc}?B5)Wi)X*6`jy;}9m4@Ha1abFyzcfIDcO zK960bnB;o-DdO6%ejW4`mk3Bz;L~u=dOza!gTFuCd^KKu?pt3l{(AfBmj>Wh{o0|I zAH2)srk@R(0rA2)yKP3dl-M*a@|o#Xs{WM9m*G^%5GvX#2tmj-h2;OMBD1<%th&u#6(#C$7BfV7|A=300g@3(%uQ$W3o@w>*M zJnwh=>LIl51@1?t=Aa6;IBF#4(Ln>wk-XC!WM0 zfiNE}V3e}q7!$$ab4fP?^$SdL7P??VrKsvwN-=)-G1#CE<|yOl?@;(cAo#8Yof^kW zppzzrL9N3a*$5@X?@4u6E|=*=*<4cNU|3}C^%qaO6NfvJaCd%6rnC&sS=9W&_^jT! z7q=|E^Z@L0)u(P2ABMWK^Pk)l`5g@_vg1f0f(f1 z+yqG4C0bu8wO+j7`~ZD+i^F^~&z65Y{;;H)Jz6;U z0rTz5WQYAXgK$mms1|Hk#ESGrDi1T#OxA#RkV0Lrot3aL|)acO^|PLHg1SX)H8TiD2&3A7K@8~ALuf}7V$ zP>5J{7jbjjQMXBPjG=VnWa;jvz_0^J<;<6}G+L!H_nxdjq@aO(nX~;Y6I=9GLQ!FD zs|1p~Pc=Q`e}1xw$vg(~BrOM*0(cx+9GyjR7J)`6R=d-ZFuhEkFQG4(uLL(4<{;V) zf)|EWvCAt-O)5RPIbvoGO~8#AxKC|tOu;CI7Uc4t?$`J(YTHF8A6MaI+M3za!`x^| zk2q`>0h>F6>3|+k>TEW!w50jVoJ!c^rL-2itx~tfnadZ{!tMK$&yTYaVhmSsLT3B<6nNI7JvwQMjVf~LM1q8Rtrd@ROy^j> zH70rGm6R2$TsRf*GRm>-a`H4^JAMjy*$<8Jly=${LYURrHwv6aAzcDE0sOWKX43~O zZ7M+&kfQRuha__2&i0wDU2X??NqWA0w~Lz-{!F1jTv#}3w00_;!@6^-&q$$Xo6AIQ zN{{xdj3>Zo-6jcu(Y|FQ0H=+IJX~X(QHiaQS599`<)K${YQRm!gU0c35=Y(B#*i;! zrXLjvtSNRn-h?>8iexooO4<(#uep&cIHi~RaH?D!&E88R2~!vE5!b;nH~`1rJymG$ zPciXMY2WuXVLyOT-A{U!_N1Rf?AcZjm7J3X3v&uh{=?Nm=$MkMQ78C*XDR%X5rwN3 zo#x`R!)JW61UuWC!1DOn>tj9tx*^L-%^511!*E)CTDcIHR+b}e$#{<|)}a+Um3?gRYK~bNQ=RPbp>Sh%`fP33bski0 zVNS%^+2#1>ODPej&Cc-YGXRrdgT~OJ5X)&It;l#bSZ#^o$rR?<$*_%u8;O4kTRArz zmJKfQ_;BuFCydnec_x06i&3>U=(XZ6I4Lc&m(FTDtgmoa=}gt$iwi1_6w})`;z4+W z$RyrDn-E(b#@#0={unA01W+G9QFn!Tka~MZcOo9%j7v0fs3r z)&Hlyx=R$Gm+Jo;e&yri+vxYc_?a*N%vU(Z39@jpVKx~e`lx;#=Sh($uUvRA(+Y&36E{jO%&*V8Td$C|I)Mq31N`Lak5gYRMNF&ONR)6`g2fp_eh#yf(!)}Z{GT5kmM8Z$s(c19 z=ihl#t(MF52fIi1xN3~)HckK;{w3|a%08J2tx{wu+u2!dhJ-ZpjvVfQ?Kz7Dq#Y6V zf;EV$Mo8yala|D_sa*Rwp~RAAtIMvLC#6Ao9ISpAck0c2JCsc6#(7%SEeb0_VuCnK z8Q`RIIF=Pw zv@HNH!wV)27wO(Av$Y@s@F*Hm$FEPD1Edj7l|t1vNN7%1)vL=_YtU?WH;AHdSXf;OJCG0sZm zX<|lK=d;D6l1#a9HUDV$`aPbc-sa9=414vZ@8Jn?Ql9iXhqL9EjK!K$uc7hq;XZ}> zcya;q{N`L#;Hgp0`tc)qgDoN@6UPQWDFj$>iZN26tCHf>&fnpggcoE7qih_l_CU{8 zM%)*k*jcAg<<3{!!{cFJ>o93<*wCeNeoDfkXBe%D!Zdk1u}fY>uTdPCKedBgwwmBZ zuQCO(WIz-h(rF|PJ01#$Y|B5sdkO*-A>1dex0KM%uI`q{x_#V$j_Z()i3^71yJGr0 z(vDb?LSYJ)s8)j19k%uUcrHha$a$UN1^Lm(wWbUOZJHk+AU9;qD*^)?OH@_{puv}F zQ@S6SXt02aV;9>2B6vI(7ixzI=(~{eNG*&YJ={3AafWkeOo@kRN=kj_;6@mPF}Lmd zF+PrX@4ffFWkuqz=dUqtUX;IledDjkk3Ra+5C6zd{e}PN+lr5B2|y-~WRky?3c+x? ziDdC~B008?NRtvZlNUF8V>mBQC8|}SwE1236?qq1oJp^egdufldao=|WAZ|EI0^3l z!6im$HYN=*BrwokkK=JrV2>b( z8fJ2%Sr7_8ZORlD)#e1k9Uf%Jj(aFAoEGvF;)^1 z*!cIe^9x1L3i(FoNw2}ndsA*2TR1V92W@Y8)Qi{axzgJiO$IMvFDJA^K#0vYs1%F= zLN7^FvappH@+}tMIjkaX6l=*(qHESy!U5@+{XnUE8Z}+_qu&Sz;Bd0qo++n07mMA0 z#r)usy-TbVwr1?mVm5z^Rf|{;yErTAY77AnXZ@tIwZW zm4L{9{-^0jSx6yF189D&6OM&Uafxc6^V%w^?GqS_xrBXY`RVlnjD|yYouldEB-w@t ztd>eWAt$Y({+*HfGL$$duusjw2lOB_t!8Lj=0yQ>%#Tt*6<{$T3~ZBJ;}|lvq{_iI zTiyd446tZW7>!37#nRqJ;B&zSHk24JfLE@P&FDx529v(~Xgj3sV>PsxgeW2t^E5cK z-86-tSF4Gkk17;X81Pg1m%gc56J5r zJ4Ns@T51PKC)NJzo=)(EQvXVMU~TGKJ4M9%r%>iWUHBj~kBCb!^hT*Fyqu8mHGLx1 z5NE>9Za(G41K=66W`#ctddj`yC|Cc|_OP`R;ohtA;f&x=3NJf2;UFsQ_UQw&8xnb) zUqGW4#oSUeMYDylVERkLi5*JJ(p@fgZ7UB9x{`774Ro2vRZCdTJ^LAyUkigRf@4~o z4F8e73}w+yd4YnhpX@pze1OXJd;sN$w*4~$V)mOLpbqtA5E$Q{L>Qf-eUt0WT0%>J zx2fh9@=m8-Ps6A3B+V%s$G4hwijD%!rRrUsxx3rELJN|?X`$d1UDJ$3K0+-KY*PWD z8a3jacM4;Q_P%tqf_)3J`=(8CkFik}LyAVYGrcqm!Vcpocmq{gc0G!QdY(io zuz(H^UoldPhdc7&bhR-RI#KQp%XFfU*zXD*DyYH9!lET9%#< zzNCWj_?je-lh$xfBM}x0t87RNrfNyBb%)$q(SwVQ%?>GgXJB<|z{5|HFQ9LatX6-i z>a(Gb1?RqFX`SaMJYWm^arDMH zpAQ2FHQa+q3#50bfC}q!(%XnIic`XAJg9Z&6GH(ZCY|2N$qFkP)e2<+(Y#dND&pPX zIo9QEqH>vc|9c;LuWY`McA=_I95cVQBOTYlmnAz1P667Yd$cSBFA=jiEyBT=f9~iL z&YLBlW{HAV?6&j0@z3Wi^%Ec!ca=U$X>JMwupGctxo4b|o{#O4y&d@Bk!*?X@+{04 z&)%J01?2$-8-;|3+tffTfuhfa2`R-EONts7LYCTN>QY&71w1&Uiw4KdYv}MA(RQlMdW&&0AQQplldLHaj0QeRB?5M z5W33@ayz|j7Rgs2OdE<8k%wWuY8nN=Pfb0 z$iE&%lNShK!v6G-__LNIG&wGL9!4Gf6$&N3Beza%X2d-TKMta)=$3{e90_~w8VGr{ zFw~!;2Y8DlZ(Dka=3^uy4WPcWh&Y#NTPKr zl9k@fbgOXoE`t#~orTzW&QXRQ3%Fx<6vo`6l-?%l(7x3s=b!w0Y||WL%A~+`t5?HP zkAx6?>@keh)9WrNL7W(6&l2&IL+(6GfwlKK;!(b1=0d1eIfmdP53=P$lWP7*8$41> zuPHlUQ^kgEH8JeEEx>5Wj=U_=ym1Rx7dnbpG9nAm(O`w%+ z1T>k3AeK8$y6|N@KBZPkOT6}ir|AFelNz^U0rv;Y=1KY&XjL7CrFjE6Emh@v!*^Wt z5Ag^2_@IcvhjS{Qu;^-`h`9u%)hprtB@{v?_0lj*O;je06^0X8F%%x-1PFw-oXR}k z=f+(VWOVDCiF;q59C4DpmH_f=p9jnp+rqF`nVIG|OJJ(cuRmmk2tc<8sdIl|mqiZ- zh>wF(7A|&p9^qf5rCFe#0SKk%-*LDWK{$L4 z2@m=$QbOagxcezx-xKEyPkpYW_~7Y`{*>`6csb5gr-L&?@Uq=J0x(eeouUuED;O23 z&->&w#oDBumpGggUs_Dq!k!NbHg`~IJ1W#QH)ou&+XiIw6;@*uTqrNRhY4$P>n5)jLNTQMCy9e|sVRti zofsS0V2Mnm=XLvG^HbHCfj1bm68R_kLD;g>p4^|vP*yx>?%CAuMN%b=iK@S7eHcOo zq&>b)3BjL2H6eP2b-H&>f40iFowm#AH*lJ)tPNj}I@B5+m#O%69e^Mb2rYtfl_@$a z(<)yJf7K4OuptnNj5@&$EjVgO;tZgP5h=YD0W!RS#Dm;1hQuf*KIq-C@$wk*%3jB6AB>Bmf9NN;?=IiIr%InO_R9E z!X7>TWSWGdPw`Ol*_SrkzT0I5j`Q5H)XUo(YhBGHuN~KwEr)XrM)Yc#ywZcD)Ft0` z)u`Z|syX_Zx#d}CG3z!IYJ(}j#oD+{uU65|@*~g4RW0c_Fl;UuD#x@@9ctO#V$8F+ zmLrV-QQYLz;R8e-%HbyRR#9TGr|%{JK}YEAdYJLUij1+K807*KG77F<8iyiIT}kg*K5#!DT1DD z1dh=bvCw)Cp(jHA7~Sh8Yz}8EvxBApvWhG0v$Ranbn~Es@a|91LwRx<=Oa2TYvujI z9zosIH|2N(5=DhiW1|IYMqP-2bh4PCsxrv!$A&O~Qka<&LZpG$g@+YW&xMUma+EzF z+F1cvnB5Wj#TDe)Yz13U?nVG2})>n=y@926HQM0 zU^4K=w!*wHQINulHvq*d>EIx;k$1|lGOne^c=OrMJiJ-og2M1O!dGf!_44)2zvj1n zTitj>)(T3M|%k%}_VQ>dljW;x7#!I8KPU8RJi!3gtUO#>DR z6fs#EEVYx?NO+*io3HTM#asPw63DHdVzGZlZyErrIDxW?Bqm+xm@x6iRoo04HPy-k z_YvXZZX8RnL!6aF4&|983E2ZtKZNaqNR+3@27?UvF62FdXi2N&N^yNyA(V~jV(63) zRSIM)G`{I(giuV$g@QR#3x-BN2L|svt4Xe}KC%mCS-S3TcMkTZHLDX9eVzfIMUB)} z!_l35>DJh{EL1wTBoeMU7{vakdHb43Vw>7=O=4ZY$&cYdm){X@ThfZ+K2CPd{muhC z(vH29fpPPCN0Dk>BG5EYL{+CzhL&Tk$JP#9x<6TdvI3XK~J7_qmRl0F3 zz$v}feTtaiQ!0S~GI`PVGNZJn?g)pvORpkiy zn)JfUoJDLM7=rVTBu{!KNxb-a;)J^!q^&wx;{u+>kay5soN?>ZJfCx$8nSCb zD{XrAu}hx4S!lT6p{oiaoYFY^rVy{}(x$hGVa^$osu%++t~I1H?qHNZQ_8ovf(WF! zUSt0s{{A<_Vp5!XUNAOU?R~|Gsg#uQqzDi(fnNR2WlcDq&GOf1`}P~hx(Qz)M`)#( zH+Iy>wLLjJ@nWsH^PF0;mU`0`?{$!bOWFcE(iqxgS=$4%$Z%)tNsQhSdOBF4?pJ8q7(Zcmhk12jxn@M*

    5urS(ta^65H5R3}J&qEkA_&s@j*tp$Ji}{;zfI+0h$t%Pw2BYpWczJI- zk&)U89^zlR4x>BH{cAsj*5X^ec+?50UQ3I={he>kY>06m@y@&N^?Vrbz5W&yhQBes z`quet_+!6`zw+TBp4JCH@DG3Gzx`idb95K^kolH^N^0Y^=nrM(reZ2dB;dzy8(lP* zk_KBKEv+>7g|q?5UBLwDNc%@!QJVLyNg*ve9N&?Ccdog( zKl-y!E^OR1kWh+e;IK&zL z)knd^C|8o_a!dtyLg(Mx$5&qG7`4DcPKov<&s!Uq$)7}%{5pk!!-?SDTdV8XF^9_2zEKWlC z`gw!kf>L^&)7rAmR^xFN&m0=gma3Rg-E0G<(7mE%ONCYuFb8}PUaqAcTR43%SrC-Q zzHkb`)Py|kjX*z{7&)xk_1dLR&_Jo~#fWM)U$LWm!K=b}0LQweh@aarJh}eT0*3?X zk;>uT|Lhio!I$s2Jl@&W0^(u{v9CcXn?qCXWsj?Nk6b)aQ`lYy?B8xl*@1DyJgdwW z+hzY`b;VZ|M;n;jhh-ZxEQ!JcIP1_Yy{*_7dk=oGGF5q-SzWK$NZ zlh$k55fN(iI5YWKxy2ex3MJoG8|-<7kw7o7;-e!{8tpq5bzKj>Z#UPD*Gi32kC3 zoaXoxCO2G^(F)_lAD1H?T_{wC(hRSi((+%If)?!GW;M^>RB3J~us&jfwt$olE`<9v#uy>`TZf*Rf2yee7Md z!|dM%L~{G{Y`F%e)UZSpkwXeJxetve2FJHg>>*39tZ~u{h^(X(EANwG) zA7AC$x1|-RV2=0%l|QXG2C7*!m2ztpHyF0i%3sT<8)HM1s~sVf%*mlO&Uqcdt0Z{hqp|r!x_0U7dF_sx3H#`L?~KVVm~c$pWkDLF>~x+fY{Ua zX8MRp-4W+e>k~@=^X@jTrT{RmAHvh%J=~w<(V)`N9??_m^vikDX>190DZ7-!BY*X? zxp0%a4uJ_zP`XNyW|>OgO`C#cM$*+V1j36My}kWir$uC2e`QmiCJ~lMZ*8L(dhHqRk*mS+qH)_2ycg ztr|1uRq`z#xbG*Omyo@2@6!VOsjMJzZk25zYC#AKWNCac?8==9XZ`G9b(vd!^?W=l z2udm@6GEx8zlOf+8&f`D9(F6$LZt5^d;cUug;m?wc|aVy8o2G?7(OI)rtA0kDYEr|}A4R6c~zf_jJ&9tLY z{jf9lw2=wZjAc66I`c`i5OqnObUZt@owrd=_#mnrlpE8CSXgPq&B4i><3X;@vJpeh zW{vR=<=&sT(^?O3k?yuL6$kSc7X@ojdBoxBE?RzTiCM*MG7)v$FU-?5S(Tkql~-Td zyL1ca%#E^PBREDZ(Taqsd|RD7gb0a@N{GyfR(-H?rWN#`z`f8%jx z+_>G%Aep8NE!f6b8c$5Iw6f2VJR$wL77~)`?QINhlM|V{?SZn@6`{S{p^=4$YcWsT zoJ4&t9wP4C&$~YdEIKLlw8$2GFz^O4BdCggBv4X0eAIxA>?kFor?3Kaz_o~|DvLbu z(kb5p?WM!p7Ej$eViP!IZYYM|(_g^~)Kr8o` z>i?U6-T&ra|I9!6Ph|H~)WiKPNuUv$$Vl2@wX11s3Mtg45bHDbx+#*)Q1Us;5=WXQ zWDK68K93+Q?!x);^Eg1(E{v9?Q{JcnB2S!g6Er{#7yWtSTX!t)z8#mcMMK%YCHyZ- z=XLg%Wm325{}OM>>(J7C1_`K z8%?E>>xx+@I50!pzX1cJm@}0Moe{AR$Rg7^VX>$M9)0J3}-b$`t0( zGhxUADq1`|*6M}pS8Ew<18}(GFCR32%uDd9&L>5XZULcKz2HfbdIvJl?R#TT1YQvF z1-WxHyhbL*WD* z$#NLSc@`WkcjE24#JP&I7SL+QW6Wd@6w3=C?Ai9*sf|PZv3C~ix@@%b=TH1wxginy zR}?3Kev7tv5elMk-a+~aKJ4~YvO8hEG=&7uQ1YZA4*IBsjQ0?kbQ;eaH9izbl+#dr zll|E~S}ZQ*Q0Y5TiE%=83HOvo8?xDy8HRdC(DSIwZl{u~N@Z~pamAPP8E=FfCSZCo zj&0Xf8(^URNUA3^b$HGt;Tzf4N5kiY91C)uakH2GEks>K1D}M%`6ySDaix|LpVy3>$V+VE@%-IXg4+J^)=0mJu8P7A4rfxKb*9sSfr_(gOT>hlA3gTOX z8Z*py4hykH7%jk($fScMb2AEEiPI_7sunze&&hrU2ul(;lWSOoSK`B4?Q#At=ciV4 zrGspYIP|J!9%5KhwUljOwJ2H*#3~2nH*GzY%X=)a8J}$L$OToikj6?IzMpa>vgX*- zQB8of_7wZV_P{Oig^T?d1e4xB+v0TI849f>-8mB_DFkV{yzojA($Yw)K5A377KD0H z8zmF_bwKX>^$r)x!|(Y=AKrZQ(g1w3uk8VNu>kyCzxw?TpT6{6x5vkN`*v&0g0(+4 zUyH{#Z+U9_mGq&QYsLxf9NcWnA5vL^ya;!dIe7#&G(Z_=eo3tkQ%{2P=QuEsGHVi$ z7Y!-FjVG|cL^U~<$`E+su_x4gjI@M&QG79UAVr)TLkxh5z>haVki?1cFlX*DZpjl; zI(W=(m5Ng>wm8+myP}zc!Bf1!&CZKNdd4$R(V)-A4|+6pN<3 z%oYor{y&U|wXW68*V@{PnC)n`bhxLsBKz2#V#%;BSDNE+Y%U9>kLW>8Uv*AKC3+>t7gc}Q=H-K;z!H28X> zEzL21(!p@xiAjD ziCWut=~mGfm3QH=fQyk0!30WY{_otd_kk=@2O(4P#^_5I9>e>%E?Fz+D5O+@{9LQS zt}0p0N+0Xz)}J!Am76H8x2R3g{CQ0*2H}voOg20p?hfZltqJ{KleCHFVy|g>NyzI2 zY&Jkkljqd)kU#=Awg}jQ@ZOyCF7H?Iep_tv>6Y8*MBcLmAuX<(LSwo-gmj}Dx8z_> zpbX0~4MTFIIKP;>iMnjsh*h=i6&6VB|7Y&+B^k>u;aHBdwa}2wHCFR%41YxA;BI&uS8c8SlxiEVe`DCS{@ut9UGi*i4y5FEZ`A^@KdHYl*+uJS6JypQ1| zA8Kk=Y_zO>{>Nl@xKPR8Yn;>{e*02;$yIhSF{91gRa_Q1Z>AZp4dmdW#z8l3FINye zz^w|SRB*K@_3k2*h~>pVOYurs>(tpG)kz&=AK_hI9O0zZjru%zT`$O;Sp;$lsD6Q) z!>sUoJ$+`}p5C4FlgHuy>04YU{`&jc8-Vfhvi#k?ZlC+Y+lcqyfB&mr`O19v_V^Lx zH212w>q8WA;PRB*Oidj$FTZ=(K(hZn{S$#a`_2V@ef3mk74@%fyS-r)M5s-zb53Ik zE!t**Q(K;d1GLZ`Nbyr@Y@DeFR3nhy?8D=R9~oX9&eXO24Ml&1EQw(##Ie1@~4bRrcysum#CnIR6cZNCg4yBG% z>^GL?t+GsN(xjhLak+7_nG_EuEC%y6vC#J}Id0npDE`T`@!BCKd!{ycWIX!tRQNP@U*8`yR4yyF(f*_3Rszh^s})IhjlV z8L`*W6lMtbfxjMaZ%mVFP)aw`Rmx*6z0)Cq?lqb8@j_lscD;QVukM+snsQ%(j5!dU zx}55B(~4!^nB~y2ig;&_D%WwRb39)i5BT{XDL)I}vv{oU3|k6olL6j-ZTdk=W&r7Q z#lwD&?p7d3*3+4fLD&ZZ@6cXNt~8csTTEk>YnGoYhC{ET6bEs0HsZ0tF17ND+>B-R%DHJGQcW>3T*edEm)3vm>fqKnF zz`$SA3guM*R#K;$v+ZlviZ+}+F$ggzQAq2o2yJSE#bqZ?OGctxOJ6gAJS|)odiwZG zFv}5+gQAlRZgRCQQiF2peN5}pAn~|60!q#<)Y2&6cK`GHu@8sB;gzH1Q3THxDv8cA z;nw}c_l1O`a*X1YHX{6;rH|_{Bw&1_ZGwrO^cgB35%1&qZCtaTMF;cgiqatd^ZnJ^#?}`q}^a$3Oc90EGKW!PSLH2p!BVS+{q+L&Nw3 z;lFW4AByo&@NTmD_P;*El8w!gENd||6ih$QxN$K#lIq(YG0p`<7D)4QRF-qTMr6^A zKuklwEuw92c2DI&s>jfArnyO6ST#koYXL8fayps!jI2_8k74M(R=7Cgrw}Dnz;mM4 z+9VFD{l<_ecPl0*)#J25lj~t&4+pT&09in$zYL{EJG{1c_)R;ssfj#em~OV|a>Dng zXq~Nr?XI832_oL9iKX?rB5F7v=g?3V=oYqoFG_`vWq<+OsX>)F`y5UA!uE)wWmqw- z!rjza-?~~6%KAWN&ydig;dn~n-S_Lx9F6%kZ>ato3BQN`_NT^-vcdsJ< ztP)QcRy^~1$g|wL63wp1otoBIs*D>wYz9PY5hlAIMZO7!9B;2AO9@-%#U;|M6h^=# zVLgo$Zy?Aw9>xGB3U?Ro%SDFg2?sV*4}Za&da|eKfol)6JnQ70KUpYi-rsA{b3nzB zB13GX<~oL3zM1>cW%g-nt{%!-o?_SxMu>Mw%zGPW_H{gdvdqzRqO~KQDTNns5=cQF z27vtM_$=P8o;z+(*Wdm>_TDwr*KNHI8qXN-oNKMU_esu4&ZW(zH7PbFfu^Kdg&;~K zV8IVop=x3cLT&MjqLfIjh=oQ}Y`=(pQ50$MgMuJ_P!JlmQYr{itkz(lAR(2cIXTHb z`?BVI$9QD?F3kUl=bXLQo@>tkeE;udjOY11zsvHN2*-aco@b2AMn9$; z%HUKm+XL@VG49rOR>BM)UI+N}U1k3m3kHUK0KwYY_um2A)EH|_sp~th`(*F}++H@I zys<|34`6HWyV{KdhGA46c22Yyiiar>4FLlo8!`=CYE^fN7XuU8neoU|2BzN_T4?MB z%5MTsZ2-{WsA;lhS<8cgz!%WRi;6Z!lv~R&9SW+x!Osr^A^v6-@8Bs0FB^rFKYcjB)oCYbg#NMh4zqiVGM6ImZkQVQ_w;jf5@ zD;92@`c9zEhv!ehFp|ZJR-4|*A<|5f=z#fh2AwwLZ8~xyE7sB&*OmFM<}fM(1qI>J zSeib0&s$2GRa#dY(8*d3Q=XXQ$;gTd@6Qc_j+`CDB}6mGZB2@!M*Nxxd%xJZ;?S^R zQczl3r)Y|btQqEbE%V%&$wI|d*ZT}wZw@P{Z8SDKbk|5TIhgP1$%j_uP)43MNL1Gc zR|naUV@@S&fh{tacp3t3PJO40>j@9Hyw)d>7YJPkK=wtvQ;J4g&l!!e_is-{w%Ex) zettF>6(tCBTYV6jlj0n2Eqtbgi<;b8Xr&l;f(mM!I{RU&dNRl8zx}(>>c1^(f8Eyx z$oQwX)&Ez1MSlF9KlP{n_aFX|^W|gz@S`zer$gXGfvi1|HTCLAE%TB^gA{{HZ`3r6idmvuF#pw3R4`w~r=#wb|cyA9^Pu ziVYWA@mOXL7|>l-8{Fin)F+7rPXwqrdzQF+*uKr{uf4h`eXtL|vxA%H~Ewjt^dh>dledy@)o;IFn&m`eW`l=z?1AgxbRUCQZNL1Yw=o6;W z>;fn@z=(Zk%k3l`woGSZROUb#2Uag|VR%_T@dwXby(1J=_~=gFM&9St)B?G_t$naL z&O-7e8qvHgk65o|)=K`x{-v)uG;^!~{b*^EwLktTI~^*0sa7V0yd@vdpz`=X+?GMq zIC2IQoo|whE>zkum3F(w0*JTWQk;F;nKk#6?GZemv%ViE^m#kP(X+i_Dy4h-dQud+@A7i%6Q)YL}i^HgE>GS)d1t}+}C%fE-f(w zm1zCM^saLYy?3>eaC>d*_0+KFspSJ<;6?m%;)GAT^DlPTPdTBS0jx@*Gur(3XC6(- zX{`$3)t=fKFv#6gt8>!(lTXfps)ex{&p6N0iEkuwqcXrBcBlJ{;JjGzoN73;S@^J9 zs`c^H`78S*>^ov8;XN!l5ErHH!9BT7JU;*){3%Z`Hd^Ih~VSQSUu_Qy8Ix7cHXT{f(vJIG!+KA7kC{n$^8*B`eR z?|frQ#Bat|Y%lG%mH*f9>OcSU@q<73JZJylX;%!}5$>sJ5H4(CL-C+aQol5aN`PI< zrah=Z+raRsFkAR$doA3Eiv8rOl7fFBt;(!9EOUVU*qvEzZhCLAOez!)3rumVyF$r` zgfWObSOyv-A?|W_S;Xr3+|5uzO+-=0NlB1DPM1H;G7O&%8>NtO^aD~v9yB1WarUa5GO%@ykEm%FCmb4mSdMMwP@hp!%h z(#3N%2M}YC8q`yE*_Ly|LqVScLMN)Y5zB-FfwQ}_Tg>h$FNhLoG9<#RF;b`DaVgUN zGSgD2j+}3dK&9%%FiBbohCO4UWRcOGXoLH9Hd29X{=lSlv%T_wg9oWi6Ln`p_(OlQ z`j7gjZpO>AFlm05ksp0DqyPMx??t?b_=uG&wq{ntcX_;Ppv)U>6mK~ht2(a+iT!f1c#}>o)Is0buI^MO-1n#9<6;m z#<2nZ{mGBmW!&yVdVgZCf?xNT`HcU3?ER_HXuqP?)VDmVse&X1x6m2!s# z54_KITi1?c0v~q;yKl`$ zd=QfJhnJ7eB}JkEr5v32fG;yY!jp2S*hppwy~L-WDN?7yeC9L0{|Qocu4Vk~Aph*^ z(tW#k!lXQ(I9CtQ)9?f~oQEfTC-tEZYu5{WpVvW`7hRXNJCgn$iuDgbRqFV?&p07G zZ_oa)1Wb70UZZ(~(rNL&nytO;{W;=^47uK4@cUan;`mSe#N)5OzvQE?!@k(NtswEQgg|0KfK5*Ou`ki zeAC3*RZe2fIH)5o^=pR2?@Ec#c)q0O7N9FG(5idX--<%l_R@iE4f5824ASy)IL>j| zv`g|T%*Km7FQ>H1Cf6?w@zikC&pVz?+bMn}J7WEC6IqV5KaSkn0feXoG}+fknST%G zwK$WI9@9L97|BcVpfqR9MY5cv7_xJXShRI9VNyeSqief4=ruW}(b!TVJ^M) zJ@V{I%h{Ukp84)S{)gI!ZySKG^x8wBw;JHDMo^05{*p_K&2Lq0((fyc>qzuvS-%*7yq zRW))zb*$hyVuT*@<7j095-w;!qNP=LtSPtPIN*W3x78bZT;@4TT0MybIFBV+W^Y0x z*$!>)#bV$+aO5tg1_ry9r()vJ#a9vSh!GyLV) zR4GA-?*XdXWjZ5b+4 z961%`4WbtX#LC_Jis!WMplT$;sCs_~`;uHBirT6En9ki96=$iBN3<6ba=-o3_p^CX z2Q+O+6#AYWtKHg-{^kd_rmc4rSoB_LP-z6zEbg@cN4_K1$tEDmO;P3{uvMw+VxgU8 z9>rznnnLjU?*Dcjr_W;gJSbYB_4_qXC4`bnA-4~40~q}&?SCuOJKnfNpZLA$=<~Mx zU3gM9*GQgZ;?F5fIbE0$REmtedKQT347oS&mMF=7RQH~>6!#*_qI3kp z1@AMqefDmLP+DjU+u8Dd)$P4;l%OO$vM0|*l+P;=Wdg$Mz<%qDCAP$&TytAidKsT~ z5p^y0<5Q&>7&wee;RLV~ARN=JS8;$tm&cq)j=^gIX-(%QOJ|NWPnJ6Z4c*8V7JpUk z1c!mmk-plTdwJfOfr!U+pe<6bW!nV71jSSJTtE=MqR$-lh?ApHPG3qDDrD-|l1bj2 z1A=s|dU|kRvP@BAp6k_!r!RcI|MC~#x?6sQ*WQ)$&6W7=>l3e>GsYO-_Sp|xy!)M> z%b)wj@#1l<=QTY*mVY|Uuezj?aewv5`_0O`zG!x4)LHqjHhDlaRWNBf?*qfC)kA(MFPZ>qqlFn93iu__z#@b-d zk9P-fk|kxCW=hk9qNbZq=^IR3?v&$@1P7~(W0!O$A+mHKWx$j+Z8`eo@v0#*1GY## zqs9_!B`LT1J05WvbKY)WwuR zNkmdXR_M8+k0Sc|{WkMLGz)mEvXR(eWi>j0YKQ7}whH%}J=7}5qh;x4le#lFX5+1X z-Nte*y0?>cZ=1=NzQ-2X6GQD#b!E*x8f*6r*ig7d#>f6}@M;;U*;@T>KVZ6;{;LXp zlBLpo0}`fiXP@pf#T`?ANOM1gTSOG9z8qnnBMm`S%n45Su8>y~)Uiu;TJSDQ$8tqY z3$rrf=@l!%v7(zPI-z8C(m95dRkwy$^B9*wo9wUmra2{+2glpgT3*-1AP_Co$`qru zK;wGlD4MQ~Nh5M>W}0+S_(hB5Qk&>dadbUsNGAgCfvM8y`&Y9N$y8cw_ z6u)i9t2wEr*}Dyc7de!X)np?utH5{JaWq3*jkr2F!wG%ga3&W!brEkR+~b`^&nihN z^7i#NeZ?4@0K8u9 zv%miz{=fdi|K#O*ei-9vb86EnD(<2avolBGHuFd_tkXxA>}ZuHc3dB>_DOx4rsrw^ z=IV7(BiqP}UyRXZ)M8<-)gNH>n|vyRRt<9V(db@Cb619J6a<9m6D<~~x<&Oi0Tavf z8lcAuuLqycfwlq)mV*T)@FO!ryHQup4Sp0eNl={yA1pXecC{p%Z#lVfEE@f3xv^U( z#cz($OzFI$+uk3=i!8GA4Ak)4*axYRo4Yy2!LcR7&{YE=0;QH(W z9re`=Iv+}(+iXeE#pmI*mW9g@FN@=ES)wycBJ7z^R2_y;itN6n>HA(H&NP>j7L=Zg zjZ@+RzE4N`+u6zzvnx?fHmE9FtR2(DyCEZ@!-6KQPJDx-@W#{Q-qm{_2rHX>+79kI zP>FGFzc-zhC6)MjNXe;ECqJ&2LKgv6VkCP`j%HHgWZ<;+|Ud_&)VwxvU7z- z2q^~Vufs@Lx14@X;5Q;bV74rf;*=x&{_zkFxkFW+MU% zK3Ef<1Vy_j=UANN*hW_e;_4uW(yF0}z^#KKUzBSA8->?&wIi<2NyrsxU9 zg0Q51asC_mKXEBJ8HEeeHJW=8h*^+#re{kL%L!gP7dF8C{p}f`1GT>`|5N&?!g$~Nyn1hgs%KDMK33ZlfDh9R+?%rPZz#8>; zdlYwS%RGT@-ex-#{JIcy6U>r1D20fVgVYAoEGLL%qF1kyy|UVU$pmen2kPnR1R*;N z_Oo1Z{hAg4G^WqMbb$6;J?b5lM@NEJR}eL+%?>E;L?wX=?niuqER7VJ-YO|9aC>sC zQy6ou^C{w;-}YTw<^TBj|9L_9o9TrdfcCZl_)4$xNBY#Se(>s_`9pvGKmKzMb3LzT zAYwvkGadPZrmoSjSROtXil2BwY-hQ9~|tu!wooe}ya;hPpd(WNC> zUNt*TXcrx!lry1Pke!j7$^=KgS0UfcvBR7@lPXxd7Tkm2Q38SrfiVaf2JPXMts`e* zJMVegku zW}gq4I)cO|d?nGA%-XjHt?*k7bAOEtxEW4nDc%$zuQAMcynAf@V>;rAG|r)tdH ziYtUD9aSyE%$cG5VTjlTdpkZR>9b=Xw}5o`(a05*H9SnWeLywfCVQaF7^K&lu5=f>dHr!Tg2yT25JjWTy|~g{ps4Of z-p_)NHCU*AD~g#j$~@m@EbV$2^=9dbaY7a$Bj2WW}md}^L4-G|4g%mH|oF;H2dZGPd;56MYay+)rh4o7uuyw0IcldT!PIqp@wiU$^}6OKZ%XVxskjMyuzlRxyG+;K z*bO6g_qQHxJPYsO?J9wPh}so&i=55AZlvnKw2|thVx*?-CJ1a9Lm-s->ZsJ}fY>aYo&W+TO&n^jtKVWnHt0@N^R({4{%n$^z`K5rr@+dy{aE z(YZWg`WS`zCpI-EFIAjSiuahL%{jJa4OfR;h>UXUa9-zNUTED#at~HoTiG`B^v^2P zf{&2vV-)>#72g>a)XOTvJQd@hc+HFOhuC3;Q`myXa~L`Ar}WxA%kh{)kV`M8=cHCq z{fO78P*Qiz-@_kH4T+?_6L;EJdG7olonjFtL!}P%aV|Fi!kzfZ#dsL*Ps8-$y>Krn z#1%(|UJgzCmRy{f-}$fpYwvvcy1o12E7f*yUu{e5-co?R%8PsO(Vx%X@k5__ddkOR zJiL7V=yl9l#@Ey9eV5O;Qm{5xKTfv1oHVh7tcdi^q5hXn2_V7eSXL!aNu7`NT6_MhG zJyii*)ao~Mkj*@J^C~L7O;xSEr&LIWkysDmHJa{4pl&r$uX#mr@YD#I+Y&{?c6s~> zZno_ZHS5l}{ai1@@n*4Rt1)@)tj$iYe%|eHt551j@=_dBXAo89)ag=%eq*s*t&sVE zqFUtjgG}?SxAA3it#cvH+J3J?i6RGG7c{Oj+zbQK-_WP)s+-F$_9}MsibTKYN@hs; zJcK3}Vi6YqzCJ2lC7n!{HXBRZtKZH)ZCbQ!cmLY^y-I{KEj%&lLC02-59?k<;J&E_ znx`K%Ep1Vx5L%s%H!J?z8LsbLvW9){aXdWD1Ky@pk80sfGvQ$2NT?qe`JkF>>Nt3* zdY3yj_o=Sl0KWcQik4b74MK)zm!4G9o0)ks8uB_2la4wd6!l(tx{Fpv5Y2Veu0*t& zJnX}4@3=j_&5ml}X<+%FLd>f(b*e^X>?4-BDc@ziM@SFUwBM>@W}Q9RMbo9aEva%L z?bb+03l&3%-ALdNJ5vV_?3D~G5Pc6gei3!)i~-KngmfcMIdX@2q1(e??|}16&z5Ro zA#g@~UDU-;kO0yEndsFOQYd7~Mm_WZZE_e~I*(J)o9CtGSL) z(8w9nzGQIs-)=wN6gG0IDD#diN0lACEYya{b%S%RR=F-iX1m=hA$yg4eCO4Adg|jq zu-|y+AN%q1Z~Xl6?%(nMzWn=5{EFjvn*{t-UYBI=@#XQ(<9IwiIOofu?Z2Cn)};+~ za^e27Ca^p7X#41Cf<2}D5-DfNe=gY1DuH*u|x4`QD6#(3{ik38U9l3)@mn3p{I5y7^=XYY?=1Lm`^D^P-Y6{AV}% zU8G-m1$6J*aORP5rRwpiJ#2N6J1GLNS7Ec+dq}9ns+<00%>}yWkz6nd0PXd~lNMEj z^2Q6*E6RaEb_{`a4M60bT8d5aR2hyC4osC5P1q92bbe{A;13Av6|Kvup|Z4M-8Ml= zRg`&02_%=QY3cGqD2svE27x~e%yR)MTR83~L&7CAo^IT!CMjWzW78xB57u)D3UEbmsc)X1I5q3VO=2$J6HGF-SoN(iotTMn&C7Btl(u$D?zm1Sj;IS zwdTuEf9Cp#s7Z>37%VvC-x3PJXx4U4CvQxeS_}3$m;$*u<;($dGyxJUL1JT_N5A`K zR)@p`yzYB%oM3%-Vi(&@49*zzV*CUG8+ahg z&Zp(wuPNZ9I-wy#c<&sOk&UQIr85JA4f2-I5X3gI4no!fvSex#GX1Jd$R&&nwycn& zaRfJVbzcOg6MLmMqIq?jqVPg7PV75j18!FN+Lj3#jmhO zmS51IyPIev!mJ|W7%{*62(ThoR+n>J6eUhC3$*w5v1uh7JA(=K|a%h^&4o=oSt=W?2L6FU+QiqkrH59df; z9w{Szm0iZxYHa4^CQzR}sib5fJ@3qG z$LCfkH;%j@f99ph@eey-J3TeshS833#c zs26)E-zd%b0eUqS4$QoH$$WwVay12YzOD}~Ny{5!nPQP#d9wQMxJLd4=#6IUr>=ME zu2zKrUKRHJJ3HhS|C_?x_8Z(w)_zjUG_cOrExa;AV~5Lt$Ct!&)9VD@ z?~f>7nKv%zo1RN`mh(EoevN0!P_i)}&JyH{M3gl~s(FQxo8cSy&iv}P3+?l#^L?jo zQO7g$IopFOq@^1$lqd`2-hlz4pKAi530}9Ci{R{7w5=A;r7P%{*|U^K2$e`<#SA~D zv=&qq20LhJ4WHPh#a4^XP}?ChP5TsKF|FxLk4qrZDnzHdRcj0|-mM4au7Lcv(;Tlj zM!`g~CaHa#kkJ5%kl6-=CP(-^3UH8%bMz$*KrwGQnh<%jxlYisrVY!6q zayLWJpCicyQcBhx%Jr4lgW*F~4awtlFqeKTs~>B#1uvVA?wt2TSq>VB?ujDRz+&8i6ja!q2x*DU1kxE9_wdRP{ zUDCtSmpQE*_u5Lw_$C2_uyUb;cE+}6e~7W$oUlUy@s0^|RF#i3Q6iq*<-N#tf;;)7 z6@&mDg1J<yi#w!Qf7+8M zq&{tO@XrgWUA8`HCC76Ex5ShWXQf2i4UzMljJi%iCVy|Yojc`c2bD?pJOSm+TqQ

    qS;mkbEKnf`|i;s{p;DG;j%ajlj}pV3y7v-b0omnFT=_f1AL04YP>)XvF7tJT?5PV&JEplvBILbos1~9t|bX9x%xQ{{%6k)1_vdXi5x2w3+kaj^a=T3a z`1#@Mvmtgsu4c{oC(3f>T00mftH)rKIv9-pOHLr89XJOBbI{#ATfMqCDFzvIT}IF* z=#vr}eUBx&cEg}W-Xg10p|vb7-KNk)+A~W5VbpKQQeJ?*c9$kBNRD>bk*_|yJf!%t zQ&G7JQBn4l#tJN?IqqY1NyLP*v?diW`#i%VV(26~9p5lrB$|Wy4}9QPdgCFDSGO2N z#*XEL2)mP98ltvIL)Ua_md``Y&2q`wvujgwwr2^A^&DFvkQG)GQ zc}$;dyYUn99hFcRx{y?$+3WxX}fR z5vH&UN3;Nl4lq$xVbbnIdR=H&7t=!nxHl_LUFZV zJ|nsz3G>9{m-#w|mss%%ES6wl`>2XA#++=^X4 zg;&|tO{BgTN%9h{Q?6E}*=se59iI7XVevQqa2=wn?W{9eT}Qhhay`UL9-#Hp{4v>T zed1Tx!?AhFAU#`GpHh|msMFPMt&TAH>&UP9LyF>`x6hNehr3GQo8q{Y=ZBBzu58rH zI*8Uv(Q}_U)TBZVA+2r-0o-qJX>PZH3O$$9h1{3bp^wBgkee;?rGWPP@PDTJS2t1~ zn#If!(tO=u-FIxOK5;qpAl*1!?aYl%q;K}A)7MtquB9)iy%+B-qC@?Bu{`nOT6>eZ z#MQQ44o|E1_y6L5dqBV+3UCd1NjTMnhqlC+ytR`}rUX45sUgNB%Ip+tFYP-}vt};e zUA9k2&9Lt(&Ze6*fv`(PSt4Qu3>)P|z#p%`pOH@KLAYN~32m%OAYL~6%}pn0=$3T>K=TYT)?&zt zYu7BxMBMO=z8JFr__W)ljwv>EwG^_xc~tTIc(mu|*W>Y>zx(fPA3wEsAIaTlZ(qOO z3obzI2DiL@eZ|-NU+%yA2l|NTnISz7+38(0nFWHmXM_a}8x;mT*x{f#mp!=$m?vkG zfd_qYsM++AOtm7JgiArLM7=2%aK#b!qm;moDNhstG;@n45I@B20r|V~Uek(qg`kO5i5ub(U;Dd(2`NO+kgq1$FkZLE1%?IE5v$MvV9{!uBDw;`m!_>yQ4K3 zdrHcQ3@?&Iu}kSX8^97{N)#KGwlG?0(&II2AlN8id#8Kd5K6x|!X;HT#n(rsV^@zU zu7NjPevVMD!#GHhN*iO#*pt9x5qmmvCN4uDN1>XN3&Fig|Envwd`&N){ZC?XPrI2vtu<}5T}PBtRxHMj8-?jTeXY2t`l1Te-!Qh{;TsQKgeQrwKujT z_m+A8$=i((&3JzoaxedaxSe_b;59H=H_5{7j=E2BN{^A(6~D+lasOtsbn^bguAH02 zzI7yADf-0~vPp5dAJyo=|6()CIB8^N{FQ&|pMCUlZNe7UrlChx1dO~$`55P}R>_N& z)`lF{1|Su$o$B-|g;HpDYge{lmbV2<$?}8X+!U7lh+3JPX=Pk!mvie&yTA@79IvPr zQKs8jGa6mdE}b)tJ~zZelX!ft%2j0lvvYZc<1>{8T7_`nhK!1aCvw@f%%*1ab1l1R z*Y7SJ7#!nL1X|rOczOn6I75PFcTiqoElc8dOi@TG(NS$3?`@C7b{gjZfUdOlNUIUM zGwBY;pINLS!rY>4n0KUUUbsdw6ABHOv3;VkqiYb%Ql#;zvSof z?d#Wn?Hm9>HE*l`um0+v`OL2#@$}xS{^i%1&PQrEfBl&A>@oqxJPjI{E=x?>a6zuQ zgpAr`oiIMhEuoZv<*Jk9OSSH*-b?)o!}z|+znz@$P>R;gMP-d>rB+)+PnIo#FA9AK zFVb`opG@;%XZYE=H%rWB0wn7ly#q}tS$A;Au!NjvxYg{Jt(bw!R@p5H9kwB$ayGcM1Jt*M}>vD?wFC=j>d-ivted&u|>>qwG-+6bu32@(V z-dh>n{MW9wT}`3VEuK9q&&9KNYYN+axff#5%wWFis#P91{U)mL^)I;Za=f__7_Lc1 z70Rvnu(qu6SdHyYZLmdv;fG#U(9tK>hL!c?7L*!q@aFIHh-(1yNu7b1&mQB6EH`Uj zfD*5uV%$aj!pm*>f1k1Vjn<_RsWfXL{?&pN(%x^Ur8w{M=Dzpxw@Jbq^M@NN$(8{% z8nMvXKXoUVRUhKPMKq5EuJ7r$M&^@^&DA6}=X(bnpz6NKc|>Z0{vooF%*I!n_`KkB@tmLh4CFD z6ga1$hzKw68YL9zLUmyu7E=0uiHXJY+Z&|OyR&V2?@lK@fA$f zfjXWN<84L{T>0rR2m6hl1}4hHRr5DSn=RK0ArdTYIbse4pHaf$bJDR%XN7L_8N97~ zdl)bVmxJE=cxcb(XFvPd^N1Ip{!DX-)7#gt|BAO7fUn~fFJ8QC?csNR|Cj%lzx)y| zHAGaADSoQD0J*+!5z-+q=0WJ8E~hxK!qaBJoVrrt4*Q@vT`dFe)edYneaK3O;Z@r( zw9P^Ag?Ip~--ruZAq8K4WD)Qc<^sdC-i{`OYt6)y=}DoZ0k`wp@(|Z!0gP6WY9fy? z{Ik=!L!f?&uSw2R&wdill2D4lA#$ojF(GCqL`7{&x6wjm_X>`vUzqhab<=ndJdMKu+bhPdvE->B&tHA8I!i0_YUmcuJ^}3z&b~}=) z&~MGd#U;AH>f7Jun>f0uMcJ?0<9 z=}P@Fha0uJF{`>IkHNM7bsI(AS{2E=JX%7{`nXZvzxca<&v&)<;?>BQo>Z#jo4Uf+>X7bZ|7oG(sGJ!Ch^l6 zDd{{fRc_6F$Y5ueZ(2~ND@M*kp50}_OINf;_7O!D9V3OvS*?n)FEL@YA9RsRbxzT1 zEf%~)&zCzDJ_s;nQb8*+eZT zn5>S>@Fl7e4_=&L>(+QzcIOOdFvN~zX!s5eb(!8)Y&_I4kEgB>oH4@;oy4-*YfATPu20lV@9H3dA%PTT?3XQ8jlwG$tmGeXK9*19n`V6dP;?MeEPXt6ss zelaMQ->Z&+dA}H6&^cm1$+FGipkZCBf>I!(iW>k=dxhh0pxKVFqe5p^Ec}aB((zfD zOjv=sAtR+HYKu~IQ_>>=l{*-a{{7i*vL#40(Y6u&C_^Y|cb6P<>iXOiUDfzeUfphZ z;>PWE7!n`J3d!lAtlnIwS|LYwvCQX^&DaUrH<2F&>JjW@iE1ilF{unTpCWu@bGf!v zh`psC?B&>-u|MdoJuWG~TgkfohwbumWB z>YAtux@fP3cI`Nrk;<>Y^`R-BVnCx9A^OLf=4iYA(s`TF%af6h5dpI^1X32_$|FMc z(?=(Y$ChMonkSy4N^~M`3Z4|B_mYSTJkFfwPTe51qEDIhU>_Cz57T zK0;AjKDRNX&ZvOgeXzn|-9_+}FP5ZnGd0@K?B@5*K7_YtnUpPb`hAq+r%5rQ>s{{u zS=_zpOtBlcewQ9+AlXXvALG9Je)FJ|cfQ-MiSzRYrweN#Y}2gd-}ij~%k&%FvV|I=%>#1N(vv3`o36}1x5=A`OG;XjU4mf8V{cQcGUp~yIt;zZLqf=cM zp7cfM$+kSCA@Om__^UCaYlb$LW__8-=uj3hA(E~!*e8@>CMJZp%qwtn_QNn2B`{@ zZk+S4?c+K+)qtC5w38vRo8eowZVmM_^D$1?Mi zAS(Ur8RsN_I6;o`ZxqtVNAM)!yuv1>H3s%07-nM-SYyZ-*aXL2M8d2VM7^?kDI*hP*(_#;d8!hO&1%+fG=ruZp%Z0S z!dGXC&52!s=5oXS$f8f758;XE&QzefZeL!xNfWWpWaf)l0UR^WkkbK|;;sa=UUAaY zoYmxJ?^y|VI|a66v&#htU_x0gj)jfT?NZt##db)6PA(WiM{-b(tNNlp{K{YZnJ@qO z|KU?V^7pS-$9R60nMat$ebxSFg*3GrV>{c)DR!{zT3u9C?68fp=+*SmQO!3cPf~u( zyEWy9G1AFhE}K@o(QmA9-lpCk1rgC--0};x)UN0&Bpo|&o=5|wMIX+DF3<|64y)mC zv?#vak_{X7#yXAdcYEsd&=AhnN4IQ~m72V}vnlhZBDa|(9kdhhBS!l3>P+k{!#~`i zrPBrDtb*o@OKQ%?J8=~c&;85{kTGV8H=$t*rmGV91)EHOm9n3mGO&3vw8yX?b zGAV0ze4(&sk?cf3n}H!%*xpTs%6VojdT#6 zmYHlIq-sQLm!fIfk_Kde=ep7;wMtV&E&ZOH_mmq$suZX#G}zg*ccsuMQAfUlJidkf z9L4@30tH&KKnlQvLkwG`eaiF{`(;{>!@YbKQnHv4y=xkh9J;y08MZ88W;k{ns>t=Q zc|^Ufz$rOPn%1%Zr8Gg(E$(q$qeyv)CLB~m3r;+kXN!64x0~PbUE^23__hJ~T3)$L z|K7g7p4a&N=bvAnFUI=C*1k=&2m$PZ@o{r|k+S`+vb0(WQ%B6K3gQzZZS>M~6N<8* z@$4&TVs94#TBL)E7idNZGfss;0mj@yV4y*g&Bj~Ws*OaEGS@vkC`%)0*q6E5w94iE@O%1K?FXATB6S$t$I!x38?iE7&jV{KK;N*7D_z|BwDLCuvvt=yoF=8KcQldvU<~N5qN6VQ z|1a4uE94iD+stO^o_L^m3)GFVROm7KGFZ|$Nep+lQU``I=g*fJf8j@eYo$9~s; z^dGz)FJ8cvyLvwC6^q*?b`AVe(6>nJ=B*IwI`BO>gm!p9wg4+n&78^;hDyY+S!jJ~sVHY;naN+o3nEf-%@c`%U;3~@*? z+Q}9BV@~zyi{u|GQbF-*%%dZlqT^w0Q^r9p<5?0+`0e55>ioR8t2<1b=Tr)3tPslx zAly_Pv{`{CPQqZdfKsP}{$WWpWh{#=UoA?9FmWwL0tc<>RpR&k-IEUto`j8wKkxQsUfWHWAw} z95U{KDQ*&ZIf0+#w4~#BY+1`^oF`XOqlbs*XvZ)7-~Y`QzT=_gXE&NO_e{`6sV!Y> z3c@jMKh0^m(W#xdB!8jGlrQln--zG>>w7@zPQPR^C%fftW=mG$A7?ii(|uD_a0s#wYhYxT;-pj$Yo1Gq(NEN z8Pxz4R(V)6c90vx;#P6vX4;LL`bC;xh+VWKz;I{9rUeYM74qhg*lm?ogME$)px_qn zZh+y=?TGbsuE)>6x6^Gu_xW#7Irz=~>hZP#__|+XwHLql@A>Gz`wK_3k3)mvZOW)n zKc&wCgWwXD6}Ch^cG&DV6w;*JbcI@wTt^j-@n_VjEDR-9(iEMN;!dYXKdtK1IqM|R zl?$x+M(C?KdP6vTrB*eOO+s^C$;z<$Y(euPQ<1AH6~&DPY#MjBv`Zjnkz6;@d}v`@ zWtszr9R`4P35U2hC+7$fb#ZHTkCDv?iE8UK$!J4@L%WuhpfqReB;A)skFNptgQ2U@ zG7ns;96e5qwR>4+6F&hYzpIsy7K?^|G72T3l!-Da!fcz`i?B$6P|!%s<}i5h)UW2i zu10g!U_fW+xHTV2rP9NfZJScGazn68yD7k7tr1JQzGeli9IIr>K){A-X5DkGUsiN1 zS8^3wTpNv%;)iIjGd~R^>aPG-K&Zd{*+2KQfA&B9-1q;^-}mQ#I==1G?RdmA2H;Nz zxSr4W07KSE#qZUmpj$a1yCU#*@Vuq1?HZ$ea54wm!HJSI%4gBHezWzyqd;406|;qk z(|(zw*-el9e(=6}qx%Qn=a8hg1K}&H+>Nr+rMvnDIZLt17{KZe+y6EFu6zO%x&5)rxD}k(xPC z;y=Vi6jpLLUW8u0EJ1epj;cuK+cq#@Vfo|e#?YVfZJV#Suc-o>8o$<#Yg%$egRNGN z9VB0?Pj)d)^!8zvTlpY`Y-+CaX^UZ@F(F#z=tXY_{<~3s+@Guc%9nrczxpqJ_MiV_ zuYdLZcU$`wPy%A zS*EIzzey^%2sN80vlnq6pV(IWj1TOIYB=p@Ky|VOry3Jvxg0o%TMm^dshJvU8WPPl z0SOEFp5V16`%aljTMsQ=^5orqE;D#Jico^O9F3M4t+e4csm;+^jf!VJT1%v_#o5A2 zE`X^x%+UDBHu{@|i|}EZGuUxf0iTVTW#jVv(r9y;|5m-yd)&19+8% zj?4h*r@wn{PIT6`NMcRF!%e}KGB}g$0ptcm?{JSBs%}zB=f!QVRkRSzPw4z9e;-R; zNOSOhq@nH7#6`WCf|GUgD$w4Bf}FtbQt4^)lJawZ;3s;N9m3n!S9|5#3BcF?I-WoH zu0Qkd{%=3@dsYeaSychSTYCI9`3CNf2+QakU^dmAT#)S_6B;6>Jab^@iw$s8n)`l$ zm*SV0%qK2jpg!Bh+X-w&N+&Ge%3mSDhPbHnkdz%rlglfsTL3jpK^261OQH-;60!6Q zLPA;)!*(X(1``TYTo)xuW)0fGA=92ZopMwx1=EU1oXk}-?7mVy=~(Gmifciovl|(R zl2|h~We;oz`HoGrhAhrBRa@MEG|iXE%b0RVVFqM|=AAXUAFRfj%$28AgrwdA`jGTG zIZs$6kaIdNrDLteU>~gUxZS+QXhsP%k{LP&X*;11#&jP@^Ma${Ph$b0# z6E(IqXXChx5@~^5*|I@L$;p*%bM78sU&r^NziRnm%P;-apZTwU>vx>3y_4<1jH1@# zc`m@PyJtw=bK9Mp7}oBl9y!*X+~oFAKIug7JvOL4*}gStFonAY|GOq`yJA7)m(uXyKLgQJOR(V zajoJhgl!)ChMUt~zMJC@AQI(Ykf*zaoU$D34{MfH4Y(@%0e}`f`bL09D%TH8FSdRF{`)nH9v5O%9vkTrU zds~0r7%V;!zHVTzG1hLE)>n$Q1}dcC9Mm)*;AciZbHVHbN(FEe&?&4l*j$3v2(|@? zcX>iLf3|!?M8=q?03)7LwoHerIFzcS>iE8D(wXj?;yJfU6${TAD593>L1&|_B)NyX z&zru57Os28Y_ywdII%9jWRZ;#N^X>)J#^*Lj(*M)DZHbdGyAdGn=hz*ntHeg>bFn# z_AmN4|~li5^!^0x=7VMRRU$}V>#j*+Te6DeGDlPr@ivWlZ% z+)NQU3!0Q;+5qXx`3ww2-8kLz$Nj~N&;8UNkJlfySMPnJiotL0*ET4$pX1vcfUotn zo}Q2I{T^uHD64{m4l^lMg=K2j3ouEocbn2Doc)UFFp)M{8LbsEhHUhXKf(PB&i`%g zA?pOXJp$_OS(SJbTW6Q)kW*1EWJ?FmWz+0zjoi`(8kHDh0fTGylwU8_psAbyd)r|k zy2VIXu(~slR8yC2ifPCO8C^tNFg`pzLxEijYfzu|4(9TWt!MNifymJCK*@%Sq`Gx* zyPaEp)cR%QzxSQVD-mWW(*~1MOmXWsd@_Zp6T#qoA28LBTw!^mQI*vNHlh3i#gU*> zZ>BJcyU7*1x#go-c7XeycDOM;OXWWW2c}oY61Qc_5F*uX!KZKQADZwR;pf~RNsgrn zt6WI91lP&ol1g(ai;;C+vX@_m=`Tb=+ovKvwe3jr#NVDcdz^v1Q>LgEUnCk7nJ;A? zO@37?Y&wbp?tw&t?ae*f5alI}}}YCXSzy!NudxwkG|xCm}^% z$ziqtCx`IR@CM&##kh&d2YiJctWBBrddhwfVr1aoq{TTVko%yvZ8&-idOooBTJR@s z(3S7I=dlU-oY6Q1+d$<;Ab4+K{Mc$1#jT(0C=O$Cor|+A@Hh5eK6<`dEYJ3kZBlxq z*9ic018et)H)3dx6V0B3_xW-sUv60;0`+DpWtB1{;&fT8ek- z+!>%o;v-JrRz4C#wzl15lCf5~;57SK?zK?SdPNut@@aakewsNswM08h0)#3)v!vPe z<>-svtYTF>i@d1zm6Vs;shM{&Wh*7JOTZY^h7!)suK3HOw{gD&NJ9?w+CMq|A(_N3 z{7q*w_e0#2$cPY~B^p>N&jZ5rj(tf!z~_>=tS(b2$HF$U?7CMp>(yn7L4ArO zS|s?+zK*2cDTT6yRcU1KlJ`fx0rh5@h%S;5TXoFpPq4CAFrbptwB2+$cH_TjPbW(s zZB?){O4lfwC#Y6fggMn_0{R!?w&#Og0&=clO^)7V8m)p!B!-yP7!`pHszW;80bam8 zC7Z=fpgcZ${rbJny!haww}tH2_}Y0xvLt(3{eR7`{^?Jj$MJ=4{qzU#|LQAwCK9QZ z*;Y{bN4i^(bGM(MAv{QV+ht6x!WTwuiXu6+ag_+21A#O}_Dwk*2@-F@O zGeWH+gjNJm^+4=cRMj4gR_jPj0LzHX(MF9hR-o0M372+Pfgb1QL+htjZ}Vembe3XN z5pGr%0Vkxv2sG+^w?D{GwWBjm$za+6bW)y6mJYv$`nlw@7*>kr6V?}}Xwr;BXqeP+G;Qh0w~80?9D=VF@V1=!IS_9+C4V z>iDsLdOmDK3q!WhOo#B`hI89H7!^#Iyzbco{rW}@@G+A5c0iDvi@nNNH^$t)V>f4q zbNT)LFB?YJu~D;q;kz6^6l0m&!f<7K?Ck})_4xj?Nnt(2AlvVgWH=oAY&_EUWx+{f zA7_I(-mW*;6Ge$UaI5YHWbRw^g?;X~)-BuP9wBV;!K)UF`166LZr`l^1dT1h&6s1C z{I6(Bu;@3)al`%{2Z@yy-t%C}J49;VyhF+6P)Fg#vfVt+jY+v7P z-@XIwIOnkzW0AcP=`LM5b3(K6Xt}azZ88^x%8-VNpnFf4y~OB`A^#KFDJ)n#w#>&S zbB3cHdOS5RV2}=jl_f?BnCkCPd4D24kAfA-W~9i+@<&b5KJoduo%Z)x?+Blg7j(2o zl8_>fNuMu30-5i07|2Z7Eab#2X0=y+oZJvtkS``a?T3a1;5(p|KXJUfiAr>7ldvaC z>P?Wf?Aw;4%knTI@v13uoiw;s_Zr*1DVAU`a7EQ|mkfct8?EWFxQwKd!-_G&nryKS z#pI0Eb0siV>77=&w;E}Ztwb~Wy<48Byt_T|M8jlh%-A#a$1+;Ys4AA8N_okJIT**# zREwcAUP{dtG-Ftee5P$l1Z#fFwucx-DK{mDW-VI*C>TC!>lCgfKuKfg^nhO8u7uop zG@hvYcE;RlP#mXCgMpX5v5y_sIV7mFL>X{qb(qz^winQ`*QxRgm0F)oaVQcLUQbXS zOlN;Aif=K{Acr7r3vrqGr=u+t5^pIz0e$YJ2?wWXSCDsVV zrR?6DZG#441Cl<4UVr)d`MZDc2YNr^Q{VE9ssz9JUxA3C-{_iLg0f_joN{Y3t|!`iggxAs_~Pu|2)}xcei;ywsm;2F4y6YV zk=zAIdZW={EmGS!1KAO?MO=yUuM$x*txJ9#^d+Q?5<$-)kMC2C;h4*2=xliW!jUx1 z0bOtX;OlhH)VNYh!a$0wtWbleYxifpPzhMcOubg%}>}O15viL8%Y(;Thy?Ha&e)tH(J*d;qaK zCO-hG?@k^875q!~QzzcSHn6&;oqg`+hmkRad5Ubh8g=vMqU9wZWcJ;-r}3#v49>0` zJ*ikDqz*2wkvvCz*`87IWiI-AJ(kpCvMV^rN?||8o?ltCyJk}6)RFDP5{4TWUd_9R zUtF>J(fWA~LimN(EX_hXi53kuZB4Td^7dFO^+gAmr6i=ilh+rP%RHsI0UTzB6PG;mPO;{l;CdYGhOCPtu!%l#hd=-8Fz>V4q zZ|3jBWy~$BU@>Y#r^UQ7=GAZk=p>0Y$L3*$WCdw;!k*s+c|MDLv{mM}Hhcn6ezNQj z7N3j|XzFgU9!{lgkLV(=Qj3eHB+wD%`Tj$bhi*7@Zo=_p**z8C zZR)z>FgWT!)i5y?ZI1uMT|zS-?)w-(39I2Y06Je&b4g|sDPns$6t|!wvS-P}TE68p zTSHz@sKt@lPwQ&2%i{|GP>@us&TAHV&_UJH&d_{XR?1K#)rd3-XlMf~+iqNO-n?)P zl0gVAiH!sw`uO~x_*X`I3uJ#CFSr2Z*YJ&RUvIwhSHAqtAN?a=__uxv=D>5UEz~*= z0NE=A%|eo8A4Uy`ZF5%e0h28F)#yfLZy6V?43pOF>+-qW+lMg8rNCLDo{so|qF~7! zZqbc$XK&G8fA11Uv*|IL3p#x@KZ%W;*g^}qehj#+JcdqY*MOHHoSG>Cr0!%odyD0^z3j?7P*LV0GWW_#ypDt`Cu#-a&gAuAC?O^a zm7$aA=&%)Eav$nqhmfI>a)bb+@0W{t;{P=_57@$^0``I>GpJ7xp@yokSGG7LrxxQ_`pO*H+`*axoWXn`;Y zI)iLxxZVQHo*Yu>$roL2`g)!%#7O1}rNwuj#S_)llljU4f0dM~BVq2|Bo_kjV9KY^ zd5A%tQ@422{_uFW*;b*XP3uq0bKn2+aWYKrXbgw(iR4BCNM|*U_I`SrI+m;zxrxZx zHQ8V#4X5^v#=KPmL5KakqzJ%jOn)p2b;+)oRHbqo5&KR{+_O%Q!k)HrChbQ=jEej~ zIh01`n523X~eLcN=Krh zJ@6Dc)HZp7E%X++l1PW(u9XgXp*>ct1GJPuiLgZv&0cI_8>6+Nly*TgBkHONJ_v)8 zH%Mm#6V(urt~o^(UX&uB7+-rhxF77k&43$wkL7{97q2v@)uA_PY@LHy_I(s3U0fz| zv3e`J;)LWsbl5zd+SkxV(ec8kd4K+sKx97vO*+$37*cT0RlJVk6E(+CB1pSN{5;M> zn4j8K%)xe8%)9Tr96$P_@ugpG$N+x(`dVJG;cEQptp?!hdc`=#x4-jn^!LwruRY7F z>a@nT>^)&xQr4J`W>lh1)BaXTRW!|6_A)`uiA8(PuoHNIpd4~x?)LBF`Y8O~v_QpN z(aN!jb6DlKs%UcMdozqJLrEF+I9rI$D^1qYCbURf*m)=joFAk)RkUS#45*!=ac4EL-^xq&R|6H*3gz=y!yv}|M?t-*j$<(jo&>o#BErBKew9Ya?`UMuBrhn%>tL<5zomsty3 zT=$+KD)Zvpg}hV(*tqgbHqu6G^+Lbry6GTib+M91?5{`5(`k9b=N|L^ExnJF!Ee+pP#h!`PCGIZ^I>5g(o zgdzgrP_iUz*UZI3zAmY}Z{BjPsm$L}jC4oag%bXjS=l|D0ve)Uun=Af1h4E<{Ao1z z=)nrRnUkehK$})lWGL1KZqTkF9k^A4)WM8OOCd)L4|(s^ADh6Gi#Y~jh5 zbC_D0%`ohRMmaSM;yvNSS2-wM{6|$QWV!E^sbx4F*`Y0Dg|GBzL{X9vG}K``+SBGk zrCu=7YO)W^;CMDQyyenD%>ir^Pya; z>KVe~u+|jD2f`q@LfvT#5(I-U$be?}4R=vRv)K(nS%unxwcxgk0IE^$(yh=sG)|L~ zKyYl^i7D;_G&_=7fHX*IUQ?u~JsP66P~Ha%zLyvz$XQw@L|2%N1lEd~*TdU2#}hwS zQ(W6-w0^;OvI-0lIr#{NG+dqb{91=Ocaf_GI|f>sHi4I-XQ3EL*{hnRv@{D!cJ7U7 zFu1npJqLzb%^`VOp2pZvW`hoJPsr9>pZS*g;?w=<%YWO8zu!c!&G$5r__q50I$rV4 zyC1ha-hK7{7vJw4BXZ@F)6rHAKTaW%IocG$Ag&EfE5w$RHxRW0=}cL#pY39#4|4wa z8=)1Xy~3a+3@RI%CDUU%Z!4-?1WfzE^GVaq6wyu-1rqBzp^;^i!qrqo>dE!Uf*PRh z9mmw4ER+Eo3d4z1p+VK8Xc3)@4l&k%X;N6>Np)y>psnU8A0Qh`!BtCHww5W&0aJed z2*V5JePX3#+%T?FY7tFid{Ab%8r#U zuKFZ%=)A2^felGzaATsr48*5EWa|osu9;8*D<bQ866$EG`0@2Cry2(YRHU5$f+o6k01+v@9QA`J^n$sl(BtvTLz)J~g~B z^_@(Fo+;ZExK`{@4IA!C;6;;TL%$cSn`zYTR1Z1*Y6LUMPjJFx?)zesz zl@`uU_{}@~#1Ce&*{26|sExIDmrr4n4vJ>Zyby9~Zai&T&j9goAEZ=w(DgnvU+h;Z z0S`MZWH?i#E?^$~r3TOVX|4g+(i(?p;pW0flSK-frVunbBgtL9)vf6B-KGv9`kqJL zsh)sjRO}S`FQj8<=ixJ=ULqBx3rx$Mp z0AJ55paFQx0s6XMF~*Ch=kNH5AOEF4{qH^7ZeSTBRuZ5yj+T_JM$!oHn52&POJ*7_ zdAD7Vkh#)Qxv4D_EL~7S_=f$GT;N=H&i%X?E4aM>9cle3N$R|y0-J) z>1xoNW+`j43VHNzUJ4*}3L{z*iQvd=g`ZN&ms-1EmZg#>qhQr?Aznf|N5o0qic)n$ znK7E))0L7mapyu=w5_?l(x3Db=0&J^+}}IXsZhz#IcmVg%vMO0lAT;lt|sO<3X$n8 z&)IFx}3z}c}$x3z#c9J%Q@8PJ5ScA%`1Thsoe$1dR(h|^2{ z#TtSDk_IP`3F%?!C|VY4RfDcOvM}aBEhi050Ee=MjIuD_@E~JjN%ijzoB~lE9EGa#;Me>SY*GWjp%W6;Z|- zJ!C)J%muJVP8Q#XI1>g~x;Plc)_6&olFPSS7fzpiUP4KKophKe^J3`oy{)Ev6|i1S zHv+vHJom+&f+xJ0R&!%(^g@y-7%U{laq!osC1RJeBwCZC(K6Yuy(T~qUyRg162$t9}pRUkvS+=Lv&ttmr#$xO?pEXT=J|K z)GD_t`y|aWT-S6f7Ly|HrBu5Rw6*Nn#m_cN38zuSx%x+=eb1l#H{1NU!D!c8*jrZ1 zS9`7P0`wbw5Z|1y`0#^o|H(i8sXz1YPkT6IiwD_jb|+40^z6Zz!6uX$S&4zkiqP%6 zqb?S$7&swtN|GxVAl**Fp2G`@8P^&nf+kXEH<}Nd3Hh) zcDH6eYI8zlQ=vrf@M-5y!CC74n|q1PV)9w^hP{NhtL8UY71UKi&6Pf)UOEZ#IeM4x zh#W5)X_Pj$=0_8QfORbGVyZPUWVwu^bTOs4q=gf{Y&g&y{|uLl*~P*LhYg@+VdBe0 zhYuSi2(#yuK{8cgxkpZ4YJlvkb zX{${Ak!5X}5i&8s$_m9*=-(ZD3?4$iskF=dwWBbSeIpFZIdSWi&&p)1buvbnq0d51 z)!Rtm!;`sjwvd1uO6~>VO+zxpD9dA#jnQmTS$kf48WktqJbhO88{DOU&k=L&3hgBR zd#zqu1~X|ZvXkucCuy#G0QvAA7m%;#ewwUN8xb0NO2=$8ODZh!D{wR4Lc6 zWu;>-J>rzbGFKZlFN-&J)MHOUnv9)$Jq;Px@>BSC7X#;(y;b0e5D4Yr!DWmw!6XgP z1>lO3DxgTcb31dYJK z`enY4HUJVJ7@lZfwxY4ORbF%`M_8Jhr7U-E&k4+fPubE3!-kkDOTn~iXtPX`b`pYG zNpldQv`jaVV0EP6>XiL{fCjN0YU5g+EC#tJ1yB}fZAWbtF8m19`lQJE zVp7nzBxuRjwHp&c7hTNhZB$#_9L$wN2@3fxHzpfVW)n#lBJfE{)bz|2`A8>4*peeK zlR;x>ZHhB(mvarc=wW?^2I#$)JHLe676giYgMDJUM4$&&Dq1G>cU@lFO&u-q`W0?6 zF3eO9L2ta>s&)}jt(nI~|JJn4&Zgh z;~cOHBMNm&m-!x>!%MeO z#r%plM$?|M7&GX}>}G_d~m09`*PqA42u(&_zc^YJu6|GW=FCHMsj&UVIHVu5s-%LYiuw8SSK- z!v+wlDO6IQW>g@rAmEVhXUcb=?m=;IWQ8W7>0Kn?AYcy|98zcq*`u~B+bwiI$7HZT zqsh`zUF$U3E_&6>nvn8bqVM&XC|V&HZB{fiIYxV7r?O+wiPxb$T7IPB=B9v?Itv&i zjus3GgJv9;z2~JT>D{DBoBZwUc7uGjzsf6eG;GtU(K00dloXcTo?6&4d((B8B^A_^ zcGX8Ik(%sOc@L2`r(iyUTYXtN2720Vyml;Kj&O6(x0@M-{G+EbJ=K&-JlQN$)GzxGl`tTAO9A>@d5zD0_9@nT-}k*=`l~++#?9U* zSVN4GA$d0?lT*xck}x=7wrft8vr1bP3EpU1phq+Xg~|1}OppUU_7k&QdmG=dO*-gU zYDeCvn4SH~{WThbK|K|DIL576<=nFg$Hh;~X19SZ%ET=kRrpQ1INWc#Jx_M`&-#;z zjV879Uxi@Z##jWtTvM~w1lZFZ2> z{;mKRwHe61+|A8Fv*oP%#!}q0OJ^vq<)#G)<~Ri`&C@&L5if+0;X@>+4xL5Oyi5 zB#tJ3YjRq*?pp4;Msb@@h3bChgL1#^%B@md=aMoX+$kAG)|hUUfr(U)I7P@DV>}jB zp{Ndv#7C16%yCc{l3+l!V|H`EmxZcbanw)@T_%eJ)H@%0&Wx6Uc0=Z*ZJ;7u6QT~1 z{ACS_!W*qeMPZ6Gpn`0fq z64UJ{o;EEg7fbU#WDlkF#aQ61T%^pan-hKwf)qWax_#DNPc(Kd>R;@Xj|!t}9HwE| zW*i)y_GPqjQ&GoOVM3HtRZyqRt>je=dVjPLDAUHKf)HwUOX510`NYl6&FEvum1bxH zTZE}%Ov%7ehVcg2QzafX4^0{{D>RGh1fo?zQwm@pgui@7X{v;hO+$#H;MiQ!9!jD! zG2A&-f1e@n+tboPD>D1zQ4T~6FdGxD3~N9vSEr`C)0A+^$%HzNvMaCxpj8FysX%%+ zf;pykO-9dm!cy!)u&*uk-t-D0NlM$3)ws%SBzQ9#c`Dj-7o8xQC9ayxD7HaFT#vX} z&qBvyVamE}*zCMyX;3I30f_u)k_3uJtN|t-u1m*)HL#19a|uDvbuj!bmE>vS+Jyor zaT9GRR958fY#d_fWMX3X575~=zIRyPyVGp z^3OfaxufdWGlZH(MX?=%MGgG9G`3jSk0!E9vnvY0_Fnu41kuKt(x7Hjy^0w!tn_5K zOAb-kFbqd$kd{$EnE&F-Jv}BMm_^dUWH!14ycPCzEc)+)DKv$io+t%@X(yF|*1fJm zaIh?}Trp_ZNeWIF9cWX?u#+)zU=JpM&~_n=Qx7NHWU3T)V8LRHKm&^wX-T9xM%!EV zB2(uOu))!}EIgJV=-`jH9o~C(SH`0M?>&3Wxt5nYB7ndyxS0v$4Gmi0Zn)$P8W#az z2_0HTlEvHBv7#N;Pc2 zV-z6>GkpG)EWsUXuwV-_Xm2t@rb}{5<1PiKAhVfD1xAxey8scKVm>y@L(4mPZ3!xJ z&qq__Tsooc60?El&Ju-gJS3Egrc|+*M2pE~wRJhVL~3f1Hb@eoEyWeUO4D&ls{T2X z?rEAW_RKS7h;p&IQ}o&9%<7cU=?o1mS~n~Pw|+(5uyT}qhqLY}S1wc?Qovrf3@o9&}=@JQB&`orCL^x%6uL-ng z_gdzbruq^Qyezknd8xs02DXZfp5hF95o@&0tpa;M{~;CtFK$@bLQ*kXM`~;d;Y+<5 zR&j5S_5s`5F6j-Dx_QELts4wqK4R(#o5ybSLvX39iNb~{R?6XV<&Xz)(jSL5>r3W-` zbBrDcF`7!~(e&3lTjUhA(?be&7Mehn@eiFVsY4GB2FuF_>h=|J zP%Xt?Y>HpPYB<%1i=GQGtEmXL%8XhUdiMzvII$$JwMy{H!F`vBlWy9HVqddp-E~o- zWa+4q<{pW9@-Vl_sYqD+ry^OQwF~yqKSy!t_h&!81mYxhyulWcrz+rf0c0 zXgxHN*}Kr>fIY-kgxR)OSXjhZo@{46XGr8e*UOp(l?YeHr2N)``+4$gEtODRMpipv z12@9A_Ws^K`D61-f1`cjyS~9i;5X^3$Wc4=M%tgZudo00@ZnSZ!GHQ&|L`9@TYuQ$ zG!L6Hu`~BTHN?Vj@*^0%WL*dPUM=a~@o0g6J-rWIoCw zAw+@Z*eM4*+M{qBTl1xXGtVq>RGl?EsZ2&homX(-qFAYP) z1Un9<1VeE-wS~r&pvjJOhPbJ*ESy-DvUVHRQ71k7MX#qL4FL*ZBLL3&PFM9DVcnAE zDGFsqI;uDXRdFQSl>G>|o5gyLS|<)1bQ))v6RWKf2gb?9K5dQCM|fk z*=Um>-6>1g*uoU(KTg?Db#t!icu{LtFV~S((l6N?sutwDi=ta-$1#`Q-DArCUR-W5 z>>0Q9|FHKyKf7-CdDr^!?6c1~+m0REv6I?y<0e2+0jY=y1B4VL1XU{n3hIbT6%5J% zAt4pDq7oy@ptMjxv?@O)RaHtuD@GMV#0ZK00YHV47TUN;9Vd?Mv-iH&T4-I@=UVq` zW;y5BR!`n1Rpa=a{qE;|p8H<+_s4a8t_8j*4s`Ti*gdnd*y$0@8V-!AHY_qwFX19W z>QnKF`y&Qp;BGZ|*+M}kMwocJ%l@IAEl};t zQ>A*x9;lGF6QVfkxp)t#cSHaz<#l9u)Li!(X54W>1~XxjRf*kP2^DI())FbGh2`)` zIB;p|x8CZ(i9pd~5vOK2owQ)&Trq;6`Ll_n1&_OjoE7%r6Q_cE@_Un1PhOEmBq~PM zk(w=c4{Zk-#5!~m*N-Pu)7tLjZYyYd7%Dh$JeSAAW3Mln5lQC~@>4^B)WBq2ZBH%- zy+uJnW95kk_pE*j-@ZO`6E}l?+7of(JKS$-@KP{%MYIzb=_;p!pJ#7uB(A~`vx|&i z>js1+Rwv>|-(MBjU_yNX8-qroWnahEq!9|6CaYZ>Hc3<>3Lr zIwzBNsi^qWNv|^?o56;PnV@U5drfs z_rGudX*m&oOb_RA8RN>5djDX}piC_6`kAYfOOUZ})F<-fYTFpHo4`bf3VUIXtq-DG zT2s%n3si&34{iM@MOYgra!jGVv*i3KaWXDbo5#wJR6&K%c$I-W!O`xBMb-?KLW&>P zJ;E;xL_Qt|uVBohZZM0(POYlw$!UhCkj#l{$hh-pMhL~UP8bkt)Bz%?- z(fwsfmb{V&cGz_-uGX1}sYAa^igra(60x&O>OJ!vN8Da8V%mP1bQq-^>{3esLNySW zNS~2EX)try!B>bTUO2oU%-wZ~%j>I*j=OSUiOz!*ae>kCu9RiWKosWHf|~^dI6W!3 zN=)4ojTs+c4OY}L{8I89JLpZx`5n{$l{(*-owIu3Vw_|ZGv}UYRp`yK{=k>(I zf}ypZl>WPY#vS54l?5J7f>XD#>J^XeIs;j6aXtFRSAGK+RG+qkSD-r`@o$887Kyx7 zb&W9Kg@Dkjr{>9odtNRr07+=4PnsYX;sL#wQHFeKx8ke5J;5|qb07vxHm&aE>dUa2 z`kI-o$m=DpZ<}t$`}5? z&;8;r{Poh`+4X`~gD0qpG>!s?4_I|5(ulU(qK%#l?`jGB+~vbcBaOUbQpTy+*E4E3 zg~XNLOpGZL2LK9@7o)Xkq=GMGKRFxyZ0OWYJzRu_4^RTtyPaFt!U02 zh(bZ=66xn0(@KefDiPXzuLwma)34r@l#gdGW@fR9A=JORk6wG8U)UDKP;q2NW0x zWyhZe*t;%xQPyQwdT~5_oq?)*ayF*+Gsx)I0nQ)%tcZr*=G$uNe$sG2SJukc^lWRN zQJ!KwcDJyh=DJAZ_7t~W~S!(0^7*^2ix)w}kIV;k-u(s%@JQpkHQzO#9@ zrDHCXTqnqjQpS3WKo8G-Y-tn7N9`RCme5Xxq);G}k*2V3^Sw{n-CsNFISqVC#DKrY z8d3Lns;*&wf*QoiEagJg;Zn5#;s;RUD7Veprv)>4%-`-}*)%ifl-&Y1be(bAHY>Of z%qP804Y`0Lt>e~d8Q(G&mQI_p_ogh3rd{Q^Iy`gK1X2+Hdl~mjXYHGq{ zJJ??9Ro4tnl^)koC%Wrf)CZd1nVRY+6!}8)&K56mqZh9P_m?|!h21*AGdk3V!i%}xW{ve&Zv0HDfr}hN)uJtIM2g4Dl~Mwye|?l|wQ<$gZGGj>{pa(W-zuMdP5}6= zzqY*Yc?IyHUOS$*_jf+{%`g9%KlOk7wg2he>oSwA;Mdv^j}crw1zXs1cDd!0w>P%5 zv*JpU_*snC$oS$A)_n^VeHU5Xs*^JxB6%hF|B|_XIscn{Pd%4ER%VX})LZiBe`7x70Mq?X(CB2#gEg0<@wvq*P9TsHhJP_c^o=?Ny4iUA<|Kt4EKL z9xk}I)C9M*?3_~p4-hox&+TuDA#q{21zCauj4wk5$NgcBluy$*niYI0G$p^sXtmEC z*&FTU5+TO27+q@agVFsK{e4QLq^e_D154#Y;Fw)D$G}=@=s41XIV_LQ&XyYp@$3T1 zNsB-M6LEX2bC~R$Jmc9Gqin1@YM` zMwm52g`@=F+jXZtlh&svu|+g?e_-JoH8tqO@$XsUaN2S5I=8^x0=ENBov9_NB^7c8 z`22CYlFEPmUbC%Z9!+hYO^>*m8vr%Bd=&S%fp~0hy#kO>(Mj zSC|xQ=rg4bIN3{`UwZ-h-sfJPs}qn#xyKvUdD9_V+Eix%ifh1I8MY5)G3J%b5T?O{tsb`jMVh?#RVmSz|tR@i~I5P`bSdteHeu-v<6 ziH5D&)mpU=i^k*2H^N*6azBBxb_TSQQFzlicaaR2Q;UqwmT-}BFi8nphH_`UD7V}d z1T*7fKX&YiG=W_P{Ydv^Yi+wjogBpqMy;2kB_@rsp` z>}4Z^)JD+i)v>Ag*5)AYHe#wxJ?b@c+E)S-m?%`yXY_as4Jgi!2{iZ7x$=r6b{oxY=A>(^*&u!?(1no zZqLxRXwJWVjhvSRfz?Dw)tZXlMQ3%osPBzN|CxP{5yCESw5_z9#^X+V2Q08Z5f)J^ zd7N<*9-CQO3CBuATY*z_u!?*sxe5{V-wfIYYQ5vsZmWlWWVzHjVJj71G7u~lsp)Hx zT9VXMAix@*DVZ7f+wz*&Yl(?@<;)8v-+Ox!Rnk|Mt64ilB1)scGs4of<0_aXI`4`T z)foVBhACG*#{Nsm6x-?G1;;GsR4f+Buo7s{V9JRPT#?0B1F!eS#nE5^NsnsEeQ$)< zTa;G$9u5Q57ZGZF?=$(H!EQLJm$tk+cd<@~Iwo&96Ks9M-CGjpb`cjT|6g0zv{omD zEEmY`#JhufErj$?O1JQ8OxMj1@CE4e#5`hr8~*DrTbzk1v>|ve=q7-U)($DzMmXpd zMZFMLqb~{vc%xf(5YIZC>)l88NypQ(#j~2#4+3$g!ydIYZ`TEzL_xokv7N^vV=sB} zAXnn)YF6Xf=L9gWs$xHWuHGJVy!Vwa%{kxwU0?fQlz^Xv*CRmN=htuXWe&kleeK(& zed=pJ@%I1vJN?})^lnVJBb~Lgc77c*i_*vGyy|4Cx~rOT}LXh$3!L&=}fpPsk!wK(yc6F z>)CMT7c6Xkk`5i29`0DfD+F+%#%q@0ENC5ta3spnOr!lUf(q`!KnF-6!qN}3WgF;a zk))^i6KrWX#{eoz_?js+&dirY+1|o%NlPJ;2b_QXzY!!pGI>9G{5UZv5|{~J7~o0| z{-Of&x*R$msP=mDRIRTkI5!~IxQuzm>;NE{7KQ8R_fsgg%X&nh4AZrL^Itq z3WO*Iu2MrtoF`{=nWN!|rC~+7;0$b8!g8V_9&?2w3Cn}Xn*F4k&C}{Q2Bb=vY^+9< zwNb7nMF?VeK|$seEJ>0kS9V!(y&nO>AzdD8Nrq{v1iSY=Qc}6aXm`bfB@d@7IXD_; z_NZqIg_r&#)2<||raOXSP0dQpkos(@vM0Tuw4+T*8Ezqmi6SnEa=SSlsXAvlL4>tF zvRdG7aFH`&?9;8imjvA*4tQ)mNPUvd+0g53L5!CPHflHGvQQKG8&@BP!f4fGJ1lme zyImyV%D%l4`1u6tctVYeMR&~|Sve`{_Oi_M%~`y7M%k6oZWC6G}PX@KUOeO+`< z>-Tzb@O4W>cI2PBUT!pt)r4tps=L8*b`1qW{*Cp&_pU2S zPdi>}6k-sB=?V*QSK@Bi5}Q688nSx)@KA%s9}1B2d)nSAuF3AT|AbTXI$7D`%Pw*wHY2h`)qg!>)O^T;YVPKW` zQ%V3$OhkQHF47^RUSlaES)-n|Z(qFlNB^Tg{oV&3l=ol#;0nJ_&`aj^XA8hbcx@WQ z>koeVKm7}T^Y{PDpPut^4EDS18ZE;iZ>DX2nps5K0%gowmzNP=sLgdj|))_iB=1DLN^td22atIdY!4kMP-KjHay&O?3fQmTwtzyi^pM!kaEXdgg ze_S&ng@FSuQ2FmSd!`?L1I&$74(KzHa(NFypb}){Tavo7IPpjqnk$~;zzHU!K=|{8 z0?2vE%O*?b1j~+Ad{*flFc>!{Ti&k*veI>DI6UV2nagI1+C0bwD_<@v91{Db?nV{L zI&uWsCTrZ+!su0RDURXn6+Sq_Y*13VGB$QLsm&M)wfx0BR(whAkA)gdv6Kb4g~1_> zJl7WEB{mNPzL{M+!riN#qhc$htV(g@Rq!O#zyl@<1kb?sZ?Lz}J9%)nrvyorVp^Nn zh~Ud<&yo7b^D{q?gt_cR#L0#!`d6&!T#T_*mtd|pEHFi zX%OHOxTp;rGjLhC*KrwGYZG5&8YWA!#pK=lkER}l&ujmxc1qwbDc)*O6(?azvw@Ow zc1W;(v|GMks?8fE0b(`_)dqs9V!5oDUWet3fc)H0wMAH&oLHz%>qzUl8!Qs)?iGqZ z#}1bX$EaQN({5b>no~bh7H^x+zT$RG8sP`YQ~Ug$cDMi~i$rK8+dQJU6$f+4KHJ

    6|LK-?4+$6oP~Ta8g^1R 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

    #;TiW2=U=p<-_^94&{<)M~wO&J?-#Wmcw~ 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

    E<93KLh-skXA5O$ zivrC5H_abvPU?to`^OX!{R*c4@yn6Y`7N;uexEdx2#QgDYs#=r$u!1En*JVArg7P# z7M$xv2>khFc*-1IQO1+?Nbz{seh$dk>t7uME^$T0=&SDG-3sh12i;o zq4ZJLr}pf+Zsw2vXMcA5k$-3bG<+@6E?E-(3^Rh7-5nf@8Dj;`{Pi;~dO$EP%1fkF&DMdOs8 zV>9_`J=Eb6hNTkzK&{m!qfgptyTnZ)vbY9$8mKq=1y_s||JTlVQ-Y6(p~bmT876 zG6`5L3DYQbxhB;ytpW>(QXr=yHb~QWRP=_dBO8YBRGTe582g1;!dgX)Y_3Z?lLe>> zVG0;cB~Bz0y;Rmtevl&B>;2L}(i}Ij*A<;;M)G|I?a&O0J<-|?@T&rKIcD!b+4RuR zxJeKPp}Hc~(y0kXVx1T&jpSo1j5;&C4yJKK)Wsm=&MT5pkMdDn?cU zw)HoVXc0|&w+cLNBm!VfozV`JufAQ(3f8c}jw?6k=&g+QlK5lEatE)K8yglt`ned!k@EyDH z@C=fS1q5_T5eUp)CBm_uhDX-ymb_~Ht;r^y*{ISuCqC#tTswyhVaJ+xj;t0Rc(i!s;*+BZLo*fHC7WL1!Z}1&J9Q=0WqT5VDUf+ zI`{S=4HO649O$xoXB}D0oi!_y!{v!T3a?stZs|^7V6aMuC^a{wSOg^+2%DZI7z}5h zsS$NaiJ*e3nWryc2{l@d8~`3|N?jt)0#qF-K99Y?&7@NXwgq{M)lq*olwr<*wv_;B z)3{D(8z_m|Y4%_#*$~~8?Oca*4gS!TtP`bDg4q|QpK!5h+2Xc8R|7oUoUEsg{ovI#g74Rxd8j3 z*-p)%A+w)0%ZIi5Xs36}g6lb`DQmj15tY2!g>L>4-cXlGx*7IA%wAm%*RFkF-!Z~k z;mziu0lLc&hpNjV%>|y`H?sxBzrsI}z$nyogc5_9T$ilidEXBS)kxAs9%1)8FjCZa ze?!t7`~2o1Lff|$S8XA*6#K#;2lSzJm>2~MV$AEAFKC56G>2T13~)O2P03YIGJ3>0 zgDj|l=50jJb1^qyyJtv^3lGc(5_y#N6zKA9IuSyu(kejT#j$h zqibr}AARCYH(&V7dq45($G`QjeCp5t*KM{V=T#pMPPctU13-L|d$CURHFVG@PHc<} z&Y-1>T?HPo8Ny;Hs8j_G4QkZhbPnleZu==8>FE-ri<8m(gl-Iq#n8=?+%kzA58V^S zu#^deSoBasldMsU+R30}lS&F??S?##A(*}?^OLSi3}-{d-TLu!KoX730;5FtaKE;k zzbPX~_GnB^ALe>N>D&fbx#2V6DPNlAPQRHwL0MmZT5E{_{}j%Qipe- z*Wo9LmDsAN->wuXX2793OvzLbuZHs}W)IHts^*u3O#|w+u>!e8^Lgp;F>p?)%#ew8 zqT^)a;AN-mM3O2Jt(AKqE{l{S+xE63RdZrbrJh6(M?_gciKL)1r4le`ni`x&B|E(j z+#wKj6>26Y-K&t+tiM1{iH7#F+9W1_DWn#aIH`J#0^x8`wtN zl6w^vTN^8cJ_#c(U6J1T#f#>SurHJ@5Hiwl^JDkBojg-LBxxyW{p|LhDk4Yjjj583%O^GuP~JDNK8p z*RTumu_|Md`jmlbZXrY?%x+3q?20n>0a6WWMN#0pjL4ySx~Hfn0x^<#uIDw2`ar!s z31-(o|J2P*r1-bXWl6Ip28iAeh*t<>BC3k6NY64aUY>+)0qhbcNF2pMw+5orrG(Z3 zN*V6XYUR*>ma-5SABLi{%nx0A42TLsOn9C^<>@ksip7oi{ge=8F)@kF04I|vyTb|> zTatHG%74%1-wa2^LB)Gf=wE&2UI6i?c>87Ax=F;;6p2* zB6v#jkzk*|I*;(xk}6}NXUe3++Vn_A$*p4AA-&DvO07(s(M8FtH;C?+5{$XAWmyv| za#gfWAVajR2H%@lL&@6=`G#fCEqiRyz9HpdeMFN%vUK|r%GlL?6+?U#)k}U=4556W zfmt7!+BP_K+G^2ynT4t8yVNo`I&BVGOdt(*sF$U%sJgU0a>XnTsRQqf4;8Gx+!fg5 zyKUS2*qq2mfT%;%&;aFWSp?*|-)X?w>cAThU>G}x(g>j00z~@`1`ru(a+4TR+J_;E z0N(_Yp90e58nOu2zqpd_u5B?70^{JQ~2~%BSZVx(bV{|VPJ(E zGRSL#?Wfa8!Y>*w8V_m$efe%dT^PR1TY<49;$rcy5j;TfDqqqG8!W1WX3neCi!<3^ zJhxU~`NK~=H69=HQ@`H6_5CmXljU+;j#t{T^mH%xYq%VjM8uTXJShDjcwU7M?Y}rP82=BzIynH1vHp7ynl2WNX0_D~pjYk~cu79P z9RlOIEs8?BP#&}N-z+4Q8q~ybx0NC!S#GsCO6wm|6cPN131pxGa><3^CV?Ya1~F5n z50y3uo2t5$DerK;m3u@1w^0;4?87d2>^DJMjLdFXwfFINGj(A zkK%ewtuz2pgM3TP%E{}E5;j#mg*?7{Ft-`BseHHtL-iysDMrctQ~Zv})VX4!#Y6W9 z0>Btc%wF13tW&iZBXUx5*O^JJ4FRI58=V%x+;G5%n?s^uVdYtY)ZuaQ5EGCKO*VB=R8hk@>Ms$l10zKDj5J z{h>Gl&R9=PSdV3=ZCyqI=zb?DJrLYXh-Bwp@pmNwOLh&ZM40z)8s!o;vk1+ZUgc9A zB8_$@69gw{hVp-)d}^FYw&^Z~O7XrO2%Tn2m!~mEjycmP@q@+1cQ$F*X<@lFAs{TP zFl&~ox?KOJqqUT*;HcSEVGNbJluCoBUUSM@I_S6@5cTuzt~Z+;n|GfkrpO^o3?FYS z=((B`IyO>P)75`Q>z6L=_sNS53A2>8s9Ll71G# zuwY~5(4D4Kf99>X`~3@5y2vCN}a7Md{OeVi$PPfmBr{H=gI>S zG%wIH(d0ysFey{c2fJubC}r6%1XfcF0noe|7j!bK8xr}naAZM^ib^5M$idM?bz5FP zb>(lhe*Tae7giz>6+Zm~R4+`?hA_cbzi?JbBngvRHq*HglWRFGtXkOTW2mh%83s=Z zwTgzJg6+y(CqAWAz}NM<! zIn=fc`f^;3%dw9;-}Sxu{Bx)8`=KBF;?uwS!EbrtYhQmX;)nx9#wt+{%{7Tn2~jb+ zkQg!}HjVnDb*s^ff0G^n6$}t)bQya)_&>EtG8#9BD<`ScXDRTgmquqoXwqnBT8!g_ zyD@oUV@uQFiFK(EtTW7okMoF}xvGdY!G?oayhpikF%_h;LiCev&`zbZw3_33J^DW< zEOU?uU+RuJ-lOl>)&ZuJrld6}^>Jpk`d36%a6f|P=EP6}aFQOfI?ITOSC^Xd+f>jY zuAsU&n0;pf-rs&V_=&IGquxKWoC|a4i{sm zs4kl*>PdsAe#pM;UAR->BlHWqt2DYZEnnZvSgsF%Ou6cHo9F23ZWRaT@}};u2652H zS>WaaUP`w>Sp$L&7De+Ud$GdA$&mu~;M||%d(lu*p(eVEFUqF6-tpUPOH4LOXQe$v zo-slPU85^sOslbPC@PTJE#*TokZZ-goCCd>!>}uOrYTI>)0Y~ItlBuB)#L5mq@0oo zUoAe$c=~*mv|Y}dV^fZ|D=PnBjEFfA0h_TIU%DnCk@fw$xw?qkKS)$aYI7tlKxOQ9n4CeJ|*{XfpgWtfoT{kLhx`ZMH_qEJtxpK+nS3m{rLt{tk}gb8vSr z0wn?Y6dh6fPO#sqi~^(3b0iW&3doscQHOZdNrANt!4&@pBB~k?YXF)cLwI);C|w~& z+ljhV#j9+QU>y}dp3g}_JnKn9Lsx}7OLBhWV6q;<0aBg6>W1YJh3Yv)10nXLM1%jceA z$Ba7`-DVqV1dw6v4CEQOt`Fbk{V@o>veq^(762<_}jp1!t?c z-su~H_|pfIcI7ZWLhnTzoU{apdcQ8%jerBt+7pVC4D($Qt2K@)%(mkpQ}fcxfTFq}cLPUf042<;ldpu)v3T z6}UkPG1~GZmv~#{lx2T^G@l8vOhdTb#65Q4JFT0t+g`|gKH@`v=wEu{pZ^Q(nP=`i z@x<@?Q{-}7j#uGPISF308g20i|Mc3<)KC+|GC|Kwl(AD?V@Kl7pYKl{nwT1tz@ z?mTku=IZW<$sCy>FYo@LEz9EE0|0vI8DNj5$q2`6lyJ)H@K@nSW*iy2`+%6AjF zviVmNqE57oRO!szNL<4d=6h z$6{!Z%ex>S5g+razLFS~lClFFnDz6bc0k;eEr30R0)-D0gZ%fXrUKRpMp?lf+pLjb z)E8A@2MLKK<2H~fwtMa?uy#&u4?>Vczu|;_y^_ci(h_I|Nw&GDz=rrQIOs`xab&IW9g-Gdw`i~6@KG)W?AXo`v#SF8O zrf9Y;ZC~r2My*+4k#GcSay7DCLp8eFPY}atm!oYOX8^#>c3-vlTIgKbDN>=dw}O@@ zGs98d=>3L`#Ao9(K3V<^ww_1#iJ}M!uaHf%a!1xyf;$}<$dwD`LA@>A`{L%ii$3K@ zU&f(>xX+aXof6scr8RxKa+P=7y_5HD?mTjRViHN^sgJAM?01i=tK%R2$VZO1z3Z5> zU#kDhaXJ1Uj)-vy0=pcS)!M4{pF9m_2>Wd&;8_2-Me>x<}q)3+4Z5Dac*w^SJXwm_}51sVxp-^45+i;0f zwDT$iHkF?&pk`TV4z)D+APJc`W{4U`2Rx|!YpAziq+I8avLkg#V3|}G`##unEG3AP z0zDj#)~PF4WyYN5Y}Np6JRJucTY{qV5Ds1qvJy2cg`2psTGWYBg~v!;3At4j&b{*p z7P2KWD9AJn8g3h%-W*A6zw~;wGgkM;5)fiETs6pyYt0#Gou_OlX8>|7%v8HrkbE`x z?;M^>YoV?*RcgUL%1;&7Er7N((bnD^QGE1&viByyx@Bj1-nZ7;|2g-ZJNDd~T0Lk& zXvDT85Oxq?%ErVACSVj(MR2A{Y*KNOiYt@LNma@=aj+f76<2JBA_Ek*V;pb@Q_6%X zAP9qnkc1_qZne~Eb>CLs@eKc7>q~v_`+obsq=+Rz+^d%Maux1YpL@>#@4f$Xzu|qK z7s8aCd9zYm(>(3&2!dN$O10n7Ey16F6e?xq5$_rOMqGpeQWL9mqjNg`Wfogi0l16T zVDPCYdw0gYu9%cFHKSNd$G#9sOHvg_%;?r~afX+<;mU$Qr1(iwd}=6S$Ml^czq{_q z7_WwpS$sRN?J1v&cQe7e&rUk5L_>5cT6!{lLMheR+0r#p7{Se?tcL3?cLudd>0us< zR}g$hioJY3%aYT^rfBgk5T6w~{zyG0o`bm#;rB-c! zvhC@J$~z;vIKCcoUHZrrCDceD(hSsIgHvv|MYci#trXD9E+69Y9+O-fiNs_as8sU$ zvn7`O(F0(_JDky*iK8(pXt`{!DL$YM+nC3T8i`~^j4zFlo#p!rd(#xwTi}1_plwp& zf|_iGR}=+nrGX(f8%uJkFMp?}1Sv+eJ*nW(FtpU81c0x;Ff)i4$Cd&K zW?QK%z#W*#R#K1@)4S9#sKoIM7vs;D3j)m??p$vfmn$n}Ms5wsze-u0*+sh)R`HBf zP&TVP20JdiL`u}NK_gRovVhq3MSs<}o2mp#E}mCHo=BlWIXlv;s&9@oHyU7Z5tpb~ ztKc=2WZVulT>6WN@EprXYR`PxqNY&f`e-_%=pCxNQFNw61_dSc^(pVFCXlD9($w1n z@JqQFS4q|hsAVN?Ieur^>`F|72Azb{U4|_`Xln5@PcIZl@dKrrLoYq_Okydd`;W`p zGSGk#!HEv&dMP3NYpSf-6K4>)rM8~WVPBMrq7W#jEAvFSJwVG{@*~B!Ru=zEk-=II z$^_4kC-q2X@2Y)EMb1MdYippym-6+ZdlKHUTCL=t4X`Ml>)S$^?d3x-5b&I zCwAkt*RDPB`@iD)PyV=@okrE|ty%A06ZL6J4jAx+%0|WCu8P?zTFUnr%vOs3ImYV@ zxN^n{v1le0CbSl#D1#LJM5m8Xk-``jR*ADc>D@*d_7W64JU05tnjds^*5r;G@ZqQh zFl3dXS&amh6hQl7$l68RM{yG3Z@@cQmo+bKh&`w{Uy(-*uoBiwiva-*#ZuwvpAwHq z{0k@99n*4350-kA4UYz~%*bUgQ4+C)TB57=}rMvw9wpR7gNNu(b%4jj6PrnaL)vYkqpWO z`tKRZOL{(M$fJphDKUkn*I!v~JX%C^SDQyX+g-2Z5xhiJP z*vra^BdPp?v69v$9{_b`Xzo&l1-CylkJ;h5mTcLt;i`AFm(0`!7t8qh9VTdO{)4BH z0N=mUN`ZSO&JFxLT`_nX(UW#$N(H8$LCJXuF=e7z*TYYPZ)GlE6*@nog)Q2<%Jq>k ziGfdX(H4dah+G~hI-ohwJEO}#qwM98A19?TBUdjtTI{HY*s_TAaz!ueUgaK;mq77! z3^^~E9K4G+=S>>@bQ_<^wz+U}`bnS9-+%8TPd-!pG>k46&)%WG9M-d*7t(PHtD&tF zp!KZhw{-T;-qkOE;+~)QzaDt}*$=$#;gh3dkT6i9OKeb*1LFG2PJc_+R!Xv2NV8G$ zC55v9ckpjh(fg{(i;?1dBzrO?3-wJ=ZYRo_+7QE&VFmFcnrwGPf8$c@uk=+h4R_=a z|7XonO&JNUTwjS5mHj{2W zEgIbwLe*4uI!(ROiaJQcQWbIsNazCvi2zj({tbqTp&ROQ@gXUJKis{0!s> zoc&7mB{MqzuW8(s8c9c)HcXkA5UUuPM|&_96}+4x`R>xYOIDCpKoCY{;zm)~tw;?n zDQFDhhJfMN3@R_kkmizv2K4;pQ)l)|CEF0sePNpWrB_s5Ad{N431ahS>g}KiES3x- zIZsCR00~bs{tCrpguN#AJI&jfv-8c9Pq;t&AO4wxzxeIr>5uO}_~32-t6)9rd7+-L zl=+$iu%7jN+6Myl7>%}j?mu)Ncb|FX$3OnTulTBu{rtP!$6X<0h3o>u@z~UN8bevg zRxPqiT1urh(BwADtzEcNmnzxu7kR30b4WJQu&0dDP!~WeL$N!!Eo4(#^VVzM@ge~= zA@zq8!X%JZ5sRF-e_gRNO8b7h@y!9ToVOI z^FbvWg#Q}_@vy9xz98pS?G=t8)A}4U*jAcqag9n#my1@$WhgvYlxXnplzn8~I0*Z9 zPlyghS@Du8x#Xy5!}FP0Rz?FStL;MMNi=Fms3OF5R^}1Ahn-&9$^v5BsckBg2IfJ5 z58kn`L7Csm>K9g25^i!r%0c#$&k&OLZVJz0#~9amz#uw$YRm|WB)myOSngk1N!UBp zA}qagg;E48)y?Desmc%@vWy#1``lf`UWHB)Hlo~&F#|4D?TlrRh%QwpV(S+s(2m5n zR^)GEiP3QV^%5Dc#oj`3(>2HZ#PHXp8IjXMsa9GSM7}_PlFDLzkut@7vCrzSO*xM% zmv@$)``il2FoE2IUD)zaO|B>eJe!mcRldrR7U{%r>WZ zjHp@AcU3MJ*{d)P8L44dC@!ill5~}CS4x@C?03dx5Yf|jYm>BlC;U~QR)vp`DqDC> zCM=ak*aC+1-xgI8yJamo^n0hKwTP0dXxjFIMO&V}d33M!x1C%)+B=*+@yuqe{@1gf z-^$q~0k75nde-yl9Gd3!e@kiS&)Jpdzu;$n`qArG9)IY?k6%4G=;HvsyOBAuY5=f* zpE+BF8kUK+RZ@_wuH!G^94#iMMol{Aj5Ho*ZdFB@WrXXn(2*>pNchV!TO_7psZccb zOFm_7Alfhg0wDs_{DOW^_m8T2DRNT?T-wlI>bum~^axURGF<7PK=u^Nlv(T=(p8xj z#gR0cDHuU2mD#`^^G@9lIlXS3M`zcgZh&1OG!*8 zJ|^A;1Daq8=#~mGm1>1jA__@N7F}1vL3F%Az~pkx*{mxWBIQ_;Uw7hQGoL|w3f7}S z$S(;OFdb9JE|IxuAE9jCqWCQNu?g8UK9nX2zHGcI#kK1}65Sxn70+%Z;GbF-3g5

    >X5#ZNLMLJRyZ1#fKRwPK)dMWVS36X@7Ov8`=O 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 literal 153634 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 z z+_M%#a=@<2xK)kM$;FoSK-Dcjt3T+UxCFR&*`>Rw;C$gvAGWHh zdo;U^dr?9JrlFycP>@MFbd740US?A@1g8i!+Z>S)%osfC zb`^s!jR)H>GBGcCIb`r2s8P1vnn56SYqFTU7#fM2K>FCf2aUsks0)ODdM2 zYy%5wvuh{EUSHlI>Zc)OUgkX|(`D-8zc-d}7!x_ve}}%6m6^$qqWHQ(Zn9sDA%IN4 zcKzQn7sg(AXEKM9Pu*(WQu@Ku@WJr#!Oh&$_|0%ea1uXCMTMdP^Tb-yl#H!Gyg?GD zdLi6LExqCh7RLIsLT~3FoB7;!-1ASg^kcd974Ed|;)Y zvFMB}TySQTmV3WSi_kGN@*PYQANgzXgj1W<97#3hJiwY;NRVh5Lh8`KrSW!$zkY^&h> zke}@yrTYwTTU^X=quch;pz2BH^qE+d+1&qq^^pAi>NdvGd!By@KXJtc5Q4dgun;;W zhiqB_(WJ6wo~gN|2?$;;FD)G&Wc&G_{?1za5qVqTc(4pEHse{W*JrCp`l-%XCap(X z|51rwzT5KHec)@UjWy2Bmiic$cI|q~jp2(Br-E#7zs%YBC zgw+1H^0b!r616&25i;QqZ4{nwcYnV5UN63~`#qoMyc}Cc4PRWoKQ^G?PkWhR7wt;% z>g6XqHLQKKcd!%peA%7q_p)!$VpZ51idQj!U;I-jk2N&zJ@QE_H}A4_<)6eWih}v4 zez`&kYZ_Oqb?hlRoVtxr;=M(Ryhj0JSv%vVbIFVK`x$mG8L77B>`Xh_>!SAja@wNC z7FA;2^XVyTM{WFxzc=(b-8JRqm-Mj5bf=dzv%HY324MQq`R2yr7dvL|>uYZAYrb=L z(|?+jGJ|I_snA`N%1 z_};p$F^R5QB8ahi>!CLiqmp+vR*9=s-vt%&qdI@|@0_lrHdH7rXs)n<`lZ5%$#l!ahuX^7-{}P#o)Y{hOSoP?e0C zztKN_pk}o2k4cvPv`33kCQ=z`U_~_(K~&67Qv6>8Wkfd+IVchh)5xLR*EGwouaHJY z-9^d9komv<&2sE+?*Mq zwJ@9J=F6JxUbJi{_IiNY@j5a%s6%jYv*CQmk0loW2v4PE{DJN_#=LzU+2i{Se3%o&v*YU9&)Ou!c-f5MpZQxQuV)$mftRL{w1|Cl0tb@UAi@(p_4ZE+Kx;@$=SgA zy{lIm)03#VW@Z7csuZVWe7@s!3Sq0q>+rn9vFCPsaBPoWmCXGnH2Nl+04PNEfEWjf z-+FV-?(I~@U-tL&1ISF!>TT@iWj={2jUjGKp-$vWda*X2|2*G6TdX^Gb*f)B*{lW@ zrZ|J1&vT8sY8d-^_~%q4qXtqDZSG2|lp5b$(j+=<0|bs`vv5BQeg=w{mzRw?^)+#9 z-g9L}bBx-a?itRKPf#g0I9xW?H@~s4*)6#n&=xUZr>R?cSGG>Tv}s{{99ZpKZ6b8G z911=}1fw`swP5GtwtE{k=MQoYdr=NPD}~yU+qj;IAbWSc5FRztYL<6|4M*Ce=xkwM z>qSxB6zYyBJ2|@h0}Z7(BglIh#LP8#I$M6v$A8_YeZbdu^ChZ6iU9)tCVmLwz(;l7 z{XD<|<tDi87VM3Met4PY z-k^-3p*2}mY;9h?pF#(^D?1qew0TPAf7Uz-wm4CWY58^97nqoeR>!Zi76UK4eSHol zS8wrEas&iVSEPpWFh#SE27DZkLN@LA9!|Us)`Yz@;^YHX(v09jJi{l-wgTA0Zss@( z+M4Prxt~!It~iZ_{>nrdSB~Q2l;IeMO6kaARFNATeh?u^bW}Ww3_2}4vT!@W=<`(i z8@yppRIDAVm~c`zl#=ldMmNS^xG_j!!-)(wt7DK~AvAfEh(8k6JKBY;^5gKs0!}n% zy|@~5^;t1FMD5ovt1pgzw|7%Dms>AS0dwUH`j(wMoEq7jv>P-b!A+qRNtjz)jPYS` z+|zzDp^S*C*Y9}&Rk2Qb8vXa0@^;cu-C=@tEPc!v>w1l!usZ@-Fh}*WcUB6EO$lg= zL_U{R*HnvSM1`UBR8vG0y z_ED_OEQ|&>7_QvIo2SiB$y~EqDV>TL)1=kaQU3C?^Bc4Fw7VSdlE3`6PDsEmQV*Xq zEbN1(c!nU6UWVOO&NAEB2Js20&9#c<2cnq6Z1HSwzxRt<1os?Awq^QJ7RJ(g^;lfJ z5?20k@!B2feR}?GYNmM%QwkS5T0+LSji^Xv`hFq{>Q#L#eYR==tOj?*sS0JDBheGPtAp|UUv=rr(ES@M1PqDdjBZ69 zD+<$iMA}&Sk(g9V4gtm=MVRv4zyclJ%#yOQ=KUCmi_G^vM63LuOa40h`m7#it5S__ zI+cpjF6CS*X4b4mx8vK9$ew?9{N#QvcLOoiGR>6JJ46Hk*MHlCWr&$p<^Pr0IWB5# z*|K!$y`JN5y}iCa*D#}WK+gFh^ZCDf@gKuk2#c%dlSw}*3E}9P?^1lUz6x04>_dtB zdXRec(n{n(250PdLyE@fW)?635|00BJgq~>$`eedq30>bNap!i$g z{=P+-X8hMd+BtL2uaCP)4W|uVe1n|tH%qUjyrM^EtwZ~tWz}l~4ZxFyM=z#+ePQ*T&jMV!!W;@Ky189;aFs zPxfWWjepERm6$3;a~=7{3c*pJNNOBIbtQ4t-$`_CRGrZV1Tk2+y861>zd}~jxBMTD zj@NgWh&BGO&uB(S7k#A#H}>mgM)qT}Uqf^GXL3=g4z4f<_aGXp2nZ^yP*p3%xnPUo zWrT%rtIDEPkp|TuIw)DDjnmwYZ5A<$Fc=TLr-MJDKmHag)t8)_8x}dtOL;7zyozGj! zRE9BRT*oL2OS)9mEv+(xDe}tmx#=lyoe!rpL+9+KKJH@DoFMb#)- zz;}@wT%VdC3uuh9%f$C5Ccz!$32G|4!7?}W#bPbDpEm8rCy$Ymke;#V*Ta$iY;l*H z_x1VarQt7oPp4Luil2#Nf(v31)m_+bkM0B)n!C?Pl&X(W-j_Zq1At@a<&3|d9-q{A zvq`=QB@~uci?~T8=lAg8bJXe-E0wEVkA&V1j^o<&-y?y7rhYelh2xQtmR|}kI1GD%qp8LjZTNwJ61Oa7t-Z{Q@to{$#3B=SXZItM9@FF4`|BWGfHSw$gBegL4 z;F!oBO8QJr*BfLE?}t;+9enO`^;5H$rpJ-vaLuG&48p~bY^jww{yfoXV~NRpD*2sy zkx$j(uio_P?gI0}?7HOTG~)DwhyE=(c6Ym; zfWv3}9-VK_pFg^7&H$((E{uREOglvwZD3%5tk#En>n5&OgRv(vQJKRgK%+j&)=$yepQgu9IR7BXElO+JA%z^s?!GU8OX=}pit}2>=ae>?My=7#f zf^`C~UK~14LmB@TOSP!aBe+WOaD;xC))A$-bq+y7{2-*f{I9yFkB?8e{$g1<`B6j@ znQru8t&7n_DLhfVh^)%}fGKQC1T0c;4?4nc6o)Yu27Dv-&M?;OAnuFElU@33d!6Fm zp5$E2P>0>;&Q_+`*b6M(iv(kgdv!odn|Ubw&wby#Yz@A@qw9|!9foX46SO1jQa9}{ zML)P63t;O%{)`kWfn<;+f_f%ul2Ye5F1K=?Gv2S=RWH~@+j>Ma#5gs?Y}BU;+ifi2 zzeBsM2_LOV$&A3`A}nLx=WJ8ukxSGfa3EO}xVfSlNWs{Qymxae`Y*&tra7)~zs8>< zl6So0N^_=L6|5TS8~TE;jvpUaAPAwBxUQ+@qnjFTQX&)f-rl^%;s#8WwCn1({4+aI zdIEjZ0dani6bee|1NniCOz?hmy|gO{8~NxnCW>!-g9OcqXB2h3+QvQG59KH52|t$^ z`z201rZVhz{ZS2!GoM+jWVq$lXH)Nv$kOkUtV!-I%}cgxj(FNF&CS+U#UsN^ba(dy z4#rGCxCyE&WRDKg$pdECsUY}kyGcS$Msd>P?b}A1_XC;l-P)S!CHuK!+Q_g9&fj=R z1D>$Qk^pC(zQUP{93sCnzx=#bj~rbcP|BTg1fmKjp3itDr7jFhbWbj30|PFqQC)Cq z2+A*BGprW31>8#urm+xKXndl(*S|?gU0z>&EdLz&>1PznTjZCHFMuCcQMhY}3~U|m znZ6atNl~hHXU?!;QSewTGak6K_@|XjqOH5(9(G@hlTuz8)kPsj$vX^&l2TCaq?5WT z2}I9|V$65)sWN`Yy<|aBxw%X`+Cjc+HuhIMrLF%9&TC))7Wa23>iOZI+Q|2CrOxJ5 zG2xG})OHFq2&z~4Ig<(SNCW9|2?%(pTaFCNg~=;x@Lz6tgO}eQwz@M7eE)g4TAdA^ zJt8SP9)}!c((uvCDBuuk1!FEsNboaSKaqbvOs9Uhzx{+dN)Nta1%gJ1L0 zX{{|j_9sU7(z&v6c9WQfJm2|bMX;Bzzon(6qhpP47ks}dg8rk>NVutGfU^i0oaHyG zv$J4xh$Pa7B|kHb*PnTdq<#$IviubTa(My|ETZP9nrSb|?B1^#;@;B*BSuH0{H7@$ zjw$}91m=Eheha$ed*RI#qRKwcX6j#q8azdQ$q-W2O%Bf=wTgskRVLsox zKONO^luI^TT)%t}KyQ?O=d1ggP(a|m+`-#^WQ-b5CI+A1G`TQ)&fW25m+Zr(*i*~a zx}RW+n_7a^unJyMd~u7?yv47VJaSi=IjVp`Eadua$I0K#V{uOL0-<5sbUZi48u{@y<5G-FMP5~RPk$jxQAQ1`>Ss|aay0mA%?S1M zD$%M+nL@7Le9We3gqof}a@mWUDBO|r#KFPCIkRnI7;flN-Bu$`Ji6h_VnG*m+fs41 z;q?EmWz>mXmnM&{Q0@CBRf}iKuJ2C9mCX=((u(sGf;m0StP9?b`fizZHh;Tht+WT6 zzibct(2d9oi6tXJ0};_R*}eO}PW)@TgCx4<&FLX*fA!Ls z&xj{ZBc&qgXRn=qq8!cN2zw+EUZ+=OY3`wrZ2z7|%R6k}>wkz4gnb|t04J!|f9QZU zXc(FN$-D0`|AU!Q$EHp-mxaQDI4=&0Se^1;Yczwe0)xsfhPr`;0Xx4uPd5s%T$R#R^lD~A*T1}87gwK_ z=VM6Aw-Nxe*g-#VAc;X%jt_-!I-PFZGrBip>+1~&=-EE69m4Df+6KZF#os#_Qe3)h z)CVH9!sP^^nN9XF%;k%IdLReHWwvRk5xK&V7WeH6a=I=9KJp&XplBQfM1Zs!}q zTcT;HObo?^Hmpo_j4>-kGntIttm;*@>-3>%?))uO?4f0&AfV9rP}m``!70QJ}AFH zM{#*P)rGagBLf0lvgzN(@X7POb^>;#`+rwsAwsw{e%sZFx#;xcY!NaL6f_VlBV^t9 z>e=j1H%@70w66h{tFCl>cNx*8mPRs4-9@6_|DkhTBo$#ffk+w?!D0V1a<3Eny6HnT zw!ZYId~cWI@|=xPeO$(|cB`Z3r~}D@qVp7mp;iSeTso_l$7^$J?7hS3oYYLVbnp1) zlCg+NhI)?__RpVY+;I8Pxa; z>&NulD;Sm>&X`@M#LCwyKfQ%9!He18Pqd0EZ^Nc!eIh2dBcOW|KQoo|i9Z&sP>j(44%;4;LWhRe)qf7TcmEJ z9m7fJ&1>&LS)-6jGg*{f=$ATXv(O#ji1>bwtE`OSdz+z<`}G2S&X)}T#_R94zDn5) zO6tYh^>*p6IEShFY0-ducoP*BN(>~+X@ttFaWtN+i2ND zmBv~c&7ODPt|Pa6?lxK;$TxiduD$U#$d_7%s?_(;>R%HYR47(Z{Evq+k%nx%3suESE8SMCOdEREn`l9Th>$Xiop~6PN zj47g}S)|62+2ipvPu^|3*6n+_*WGfYce+MX%grM-hS6 zH})7^J8o5;&ZL-NMY#V-~RSrSCxr@!L+0WYN*f2kjxXD^aA6 zP|)LdUAtjd9Gq!Yr7?>5i-I#uO`|Po7ld!XY+e-)t!P19rg+8c$a|-S+=oKZ9aZQ4 z7d9)Gp0*j?rz+^?{>yWLr@%ixVc0ZkMp5s3@L|ro$?@XBfVXNA-m3Ul0Wl0)gKrKR z9J^oAOzJ+wp!wPTp1qEB7TSHp6poM^H1Ew~Z?(MAG4%R;h}w@so@JWtraYh#MXqM* zAHbj0_1Gyl6y$!ZFZpk8bJt%|(Oe-Kto3Md%7`tmO{-;V)6t~gunKm-^Tq{oRsZ8w z9WZ)+?VWBjWp7LP8x>X6CacNqm9W7ph!cUtOO8|=6df6c=GFn%krFY)|(OslS-u)GyZHkRQ+WDrkBIsp=9CBOPO^ZyU zbcCsn7V`Ij8o%f74z52ZapdLWQOAS2BZCl)z?9C1Zr^Dxh?$V^P!P|W&YUkCB^Ue_ zp4g;t9{)=eu+siP%bH2dovv0=FtjbDy(3C)8CFS~4{S@huu&?@A1%~vg}7?*XLiVZ z;qsu{AS0njevv_lS*vsp4@q=zl=?1&#&TV7k}=PDh}me@Yse476SdVq-60|$w;5*zDqKmUyyYAbhpogsSR*^l_YbG!1Vfg&~&&DPB`v!YALn9sCKH-pl zuysBBdzfX0G|Mc)Gsu-M(D2r`e~czfT&|n_eE1+eu_TlCm-$AgPh^wX>p;Ac`dI>MGqtGm;e2Ql^|0g;HN!DezbcC6Qi|DKA$rwX0OGPDHkp zo^BHyUfoYs*Uusm_urX}dD|Gd^LqU^@YfnWMM1rdM$5uB>T6%3QXC6|6H*iBQ7Gz_ zq#E%df7n00(*?4NnUJvbl^t|zung%bDbSfkON-*QV#c8gL1ra6=jNlc}a)t(-IH}pKO z`5XByQ9N4~8L}j!q?er*%M(2F->&>K@07ZDpF^Sf@L|S*NPlYVKz|>ujbcW%aUpDj z-%6{Lyh(XrnNE|3Bej`-Od;-KhiHHxwXJAqS}5YHYk0#`f9?Vc-okFGI$Kl{GOm{3 z)0#lnd}?b4g@Mw4TdFG{+oR|;xcB^Tm*1TZ-@b&aR5VgBOKUM66}_VsWl9-juEdqc9%aZ7&fj0r}G=&?Wu~+t!$} z$W9lNSV=|+Sv7I%O9RX86vT0p z$jJYTrmtXY^Le5T1&Wp8P@uRLiWP@KD8;?FySqcN;M(Hu?oM%QaVb#T3GVI?lHC0M z_ul8p2iSLaGka#voHLVb3z1W|8rEU{)@%5En#}4rwVqM;NXHsuK8=kUp%t^5YO8fr z$?`;XYmd-Cq(d}md!W8h+JHTY&qHQhcQNF#^PqK2x`NztaR4iGw%;77$+%Eea2YA$x?``6yJ zIiXmp(c(6=y`z(VNw8SXmzrIo%E}f2T@Cy_HE&SoQRKgsOx=47Hz&99h_>Mt7Ixbn zsIFv20Jz7!DfrXq3%8=$FJy~Cb+!s3uUTe0jle&pWvBL+nC^A=y=KW*ZzRSr@(zyy zSHPF6{?;O+InS>gE^9+Z{aGhbo7I=Gzgx(LlTkwj`Yi6?RwFZ{S|f7p7mzy1etl1Nzd)u)KHrv3$e(JEseT_Jm0 zBEHd1I@XKOskavj3T<>fr^-(t3s$P=Vnv0YIlbO3LcFAFT-R8vo|+QEbix9*l{;wZ z85uqY>*Me(AZ+XOYWctoYl@2F)PdsEp-#4xHlwoHTw61Wh~M-~XDfULx0cz-rVa8t z z-r6D;fco zoJ#Nq1lB)9>DrlzA)ql~(o4&nSWv3Dza4!^>+Lp}t5h4*iAoomcj*5_E>D48svzXr zCjr1HDPpeOl>F+89;O@xDQwcRR$#o2KV)NO?c(^NUw}8A$=Ob^6I?2u<{3=4oxULY zTl1Alp|a9XH_YGGn-HXOS*uvZDN3N{%j4+<^s)#9O#@e0oQ?Ktv1Zx*(n$WLszZ^6 zwG&;!!90n}biY5J2)zV9rTQwUpMY{+I1!RTtipTwmP zY7Sm=PqeKfN?kf%yL^}6O%LBW&oD~WW@mm6_Hc;4iH&79|V48k5i#%D9}-mXez${qs7hBEH*S=!hN8m-+g_5 zdisMk4*w`pkKe+&7EcTR*9)M;)y1dd`3OfeJ-4>!#e8e9DQteP2Ju_3fv%s07pQ$r zbMMC|&B0ENB6*U`5gF>b_IB&#m}{*4upN0JaoxEx%5Z!xj_X0r=}XWC=ERxzsQNY( zaF%>>I?Af|%}au@QXDh%@&r&AQkw(KdhLY^-1n9i_im96XQT-ZI!Tr?i!r{C&6p}E zBvsDbL2_4k-C;xd{+Fj6giQ}=BpuOS6ZfxeVvJlM=|7zsipyE7Ic%`64!$>j5SMlr zF3uXQntVoWyU0T7G6Jzw`9qT6%h`YlGw7$X{@YrB95J>BK37*}pxLVG!^$I&vzWYv z?{1v;{9|UP3Ft>&)G&1z5UVISk<-ad|Cl4_yL~+GHMW%fRcx%E!?B@7xdMcKRI+i1h%?r-E|tJ?J8Xko!d^K-ntgN@1Z zylnhLO0x)rtnw)OZo@@6pQ(|lV->SRfg$OW6~0%Qr6>9$C9;%b>PNOAb0R>i=p4*n z12a*VJys){rN~vn5}DtlEs}~wR<&C55JE}sC=;Ie;@M&6!6Xcb_ZAs^=yje9cD7k~ zy_?vLJLBNTR|YA62^p4qvuh6Lp=N>i=-N zV>gG?6NWJ>cJw;&u;=Esd!M~L#W0QUB^EMk!tyA!;Y|@`H@LvsQr#Q@5KN&#z0Dc+ z_qZ&}t||-dF2u6Cy~)46Y2E&misx-+GFhq3vl0rpgNmI`yI5WaRm_zLu#7#{dS~WE zFVQU$)O8UC;9_*~t!b=dSvn3akya75mHo#2jaf%`N!M_#Fj?hTBMI}h9PS^&iZ74o zJ0OA|w}*f@x9P#yR;98yuiu?mKXd%&yogrdTxXx#G9BOZWOdY{mCPHI>!vpZ8W*GL?-nVONrunq;jl9m3jLS!pE+dv*%_(eKh8 zt-1?d&D0jHG_RHxuNE)c%;}jQsWmDU3bKtHHw440;_nyJP6fi-R6gniD zH(&XhC4!pI-I(uZQI`2$r}_rH{?g~E3e?%m(_28c)2Qkk*VudVZ6|YSjrf2ozdEdg zj=X0xwz?!$if5i zi6<%=`c^M;;V%(D0pI-}X^r7O9)Fl}+dg;dApZC4X%;%{Y2zg`OQ%;l@-)_b*z#k1 zkvWTe%ru;wkTAS^+zWbF{(+m%xY^f-bv8IHBbe-#O;<^qJw0f@!9TL(9xf)=d-+>C zdMvHOZEZ+H8xEwiog);3sJ=7IUgCKXN*!RX&a@0NQ5L~KW>yl+pJW^Rw&>TLy_nMQ zza9c2XWBVk2^$zFXqC}khn$aAAyk@mGFKe<1P6%SI6C2Q>i*trz&S*ud#ezU8%YqW zherxU*@F~Gj@Uy{QY4Kk@*`osJolB?efGm^?ZHzBpjb#Q34>u40CP&C_8g{ zWwO{v{wuY#^;bJn9HmH>9$29M(-li%bq6apy;3WB|MDa$clTy-TLtqI*s~$FR6f%A zCF10F?v@PHu{vunqk$0MOC$rbMOPh1?>cMzH{eJVSad9Y^sl6^xJeT*ux0V-7k%0K z3PK45Io_KYFB?bWZC54JGN0$XOXm?BZGqJPeXsZ#zuNiDfL|XmJ_;%4@OK7UKOww% z`Rw(zDl6l*I39L&rqYFkVA}I&YoN-$#21=r!VhzGT}++J?FZOuw$mZuzaXP2t-z;g zVXeAey~aYg1%ITxO7|^SIY|l0pNqr1>Y5Hc5m(NolwaGhni2SZP&4W9Lo3x<``zZy zA`VI3;*Snh)$xUBD_fxhd3~zH$Dpi3WnnT?GZDp?cdO7dD$KNRS^|4>h&i}9GGx{oU(f%bOR*FPTbWu+;nF{SJzmFzIiD^{Wf zt7kVfj7yV_rL!~3-G(unF=2>P2~~bYOOQ?^T=>}6Z26TpbW!p>Lx6-NlZSZ@b-?FN ziSBn^Cm_X&Wolt31Hl_B5DcM;;z(v?5Jr7#kxO{lg>(;EhcYlDRG#ck-GnbW3Qo|2 z1jtI2fWqLXYdv3=(}nvU*!6-kye`kF&UUrRr&+&7a|qi`vWMn-fwaC$0(RpL+rw6l zPX-))%`efp&9{~qX6~sRSS|?+=)Vk&Gx0kD!|hoCwT38SUhblCai4Z(uWZld*{&-A z5=Rj&XxN|NZ_Y@WHqw1q@h}+VoiuwoU94^zt>D|ud4ei`{OMEK zR?S?KS~~yWw9#eJ6?=xcj z9A~bZd5({c)Srec4&L7onjZ&5e&7Wcb#VV9@c;U+nQn1)odqC$mgatMCuD~z_VI7L zK|qu1$^QD@pob}8BukQ`!pT-6icpY~;g2N}x;+);2jf(;Pg`O?4i(p@WS`t*vW>Se zzMbj5dnE1Km+#A_33H?idn-|0Zl5i#?P=0eq&Z0?$%k#4SzN(y`@B-ZO7*e_f{sEK z>kNAQrbj`_YheYXCY!t#lAwzzcaJoJKkTc2fV%!5FRP3FRxi-~tkIn2&vjn6M*WOh zg~QU?td45yxXt%&M)NF|> z_o6GAI|{OD@yVjY&EUrp7I6*GVgK=SWg7ji#23Ni6Zy8_oFiIAVfT#Ip-!)iy2~aM zv4MSy@jBz=mQoGH~1H?dNTM$K|s)a@mP=33iU@8Rj^#nMMWoe){#y zXRY3`*kc`>D`z+ahZt##i<>s*k8K6+Qtva7)qS+~HjXoIemB+OpjT-!w3Ma|(VP2YlRIxjR`@Shco4!nhu>fKCy> z*x#p~_0F%Xu6KUFnVbrEzFA>eHz=8REzl)(B1NzgEtO2IV6V6b7eP2)1V-4r4aiZ_ z^Uqt~_vMFe>F6or^}9gMZ81nq>i8M3|gk_q127G73cc!224Z9ysIVM()!?f@7btpk!d*|{jkJeZul;V z$ub$IPQUwQBV#Jy_757BzOc)7n;GPRFaK4>Kr58MbQy+_l6di7_*o4?fz>sLV;yz< z_ANQJAcOIakEBS|bs$Uc*8|lCi0QN9EmuIQn&UgQ>8;pRssPFO&6sq^jV?OI+gWOk zO6Wr0FMzQzq6D)Z^l)=|6~M&L$A{<&XX9|7q+5h66An>`o)Uknd2t^rb;_g>N-Fjn-RQAT3ApY&U)&<+`S?z^sfZ zd%0yrn6gU88iwz*XO4u)CpAf=i9;mf{?Da!a~@8*)TGr4>knO8 z`p>;zXIYQ0sP#qCEmac`2`wjjJ^;XFx+Cc-#(RiUAfgf_!BeyR+1k<3k)wNgsV=Ed zH`QXWn9)or2J-Ffc39JzUiq2O&b(Nk?z6pHrv(oGn|>aT5I$^M{6YFp8iYC@#tciH zOW$l`vHy779(`08g(-Cfyumf0C+L%T2y%8B7wUOMt>7aL4X&sO*BBn#*-097Y3D3e zP>jg`A_x%w#M+*uZ4%?5`VQ24?9A6m`1X-S!rh|pWj_bKuNAc^M0-Sp#7k>i z5+IZ$G}(wSH;PpFQ-D23*FCsm@CG#>w0k&DOmc($8p8~Ak*CHGyt=le6VUW+u8P4U z8h_lAGM%h_nj|)f3Kik7~tqa6r^DI88w6z75iG1VpIqD{HB&I|7VPsotU4 zCR9r5suHyq>u&LW`yQnQ$oB7{|InEIM+2ascWQiZSYpU0)n}t&xUDXYL>;6Y!j&!r z&y2;^){LyyR94Ov5f*WC_1oWle7YfF*Kc!vnh6_E<0waMR$&$(N$;6>Hv{^7bdjkt zNyT&yw}L~{nu+|qQexAv2vS^x!M*#3J~SXbh%x+9&}2&Ig_j=RLZVO>@Z#nzx$Kmi zA08};wAM&@(&Ivo0?CXk>s2$-%kN>FdS-Ex4bXdijYJrjoUj{5;UXoHKQo$lCh^DK z(H^1M_i^yhvy($LwaEEZXo+7J>%BMFx|xb}`Q>u!aPyL8zlrnHpLME5xg_Neyx1#+ z*b{TnL>BgPqW-6kbEl6D%f}7N6{EHmjk+#wVG$0Tq3r}oERxkb0t}ISiF>>h2S9pl z4lxwPdvU6AqA{lm_F+rLIEt#&;h2;w@n#{78cnOxvbkWnNc#vbJgpmyJ4>EjWq zb;1ZK4KI_f@VQF7-aB{2;aQTK_wEQ=-hW))Id3pHd^Q@s=%VrQd*zB|7#XckXX3Nr zNv1H&?v|Xl8NKYjGvAtcauCPx%J?@h8g=T3^yOXe$MJB-uxBc3NT-j3r>*HJ0(n+3 zZFG8W&6LEXu^VKIe9IBx+6&|U27YFDrk8LWT|OlsTd?H3A@L2)JTRb%ZXT`Etxz8t zVwsM~u?NP+^(#JObQF^qEMz&hTISg37A?d=z^hdtui2FoFRSHh9YN5T(j?XTT(-ex zAKfR*aJ(y~1xNM)<-GoNrk08qLK}{00?V0Ci;}9FLLQN8FTyV{NH+;r~vfaAO8l@;5f4eC;b0SMOj>y}6FT_bUET2!wd>K$p4 zW{+A%2~GM!QmLjAy!rUC=Mt~DypGEagfhS=;Nc}IiJM7zLP1$sQCV4INZ!n>q<Z&&jknC9>Pa671o)+62{y_{$hO~lIwxS|Z`Pr7|GucnXx9OTW8SxR}4^YrABX!ad zUasydTpg&q{laRS%RG_V0=8#CRb;bE+W=kQz;|ckfKQuA%D|7rSc9eotF~`Rm}Exp z{-Rv>QapWCO+Q29E*D;E0~stnkpI+cJ%^r_0m0wR=29m{egiqC~NY0ITH+uaq}f#p4k=yfj{}LiNf-=$yix?hqFt zPJ18r<>QJoNT4RHShF~;;6#u7Zt;fPx7qT`2W`BAIVEn{r$EvVlLI6eoTYtK-={Bl z^@@KNB6?R^q2rkw_V4cc1TsW4yx}{ni@^4mjg;1n&gX@SS*Dmlgb;&CEkO6xzHom6 z1j7V5G~A#}G|9h7E8RNAulFsD#3FXT^+u0Be8KC%(eKF_@>2;XI>}5@!^Ivxmzj26 z9GPb=+vw{3@OGbe;acexSLX6=W_Ou&ON7His1dJN$oPOT@g*$gek%KV{FPr>s1+Os z&f#9S_J-x3(e(ov*=rTRt8n3X+$ZEjm(#KETD#1KW}6RyyG%{>=*AL&M3ViG^m~>4 zkK*4IgA@-bu-mPgVg{r!+`a)8P^0OqivMvQH;1f@s_hJe$>1SC=q3le6@H5HB4G9G za$|@Q+=g;MZdAB6i93nekU4hHQWLv=(j$IZFK-Q^uUeuNk!zrhH+x<1dVk)R>$W?`(@ z)Vj=2J&;F8D8_L9W-$uax6nJ)g*3bz4);tIV>K!*wSzndxFqHZ3O^MAUoIcuhean; z`Wd;oEJQJ-CO*XOOpc!q*VmZ=~5(Y z8feKAu88oKF#15KtI($j9Adyg9S0doJLSOJ4-TesRlJ$I2v<;J?>EnEmhW_%ntOW@ zpSP;fJQ}RpkYuNFJWh0e;kYz8G_>hj@g+DuH*$h~MLFDUS>i}NxkRRV&-MuqOwnpl%b>G3qF!uGY8-oi`9ED&n@!sJ$%-v zx?4yav|g<#r)H+sa@H%k1Z7z9l6%RH&Xx^M|J?T;V=>+NptaNKFz2`Z6OA(;x+X~* zudFVDAs2D2#+g&2M=x`FBYBMWL<6cTFhSU`1^(JOi?oYcs!7!Z+gYQrnW|*qXE3X~ z(gteBWK(aaOW`zt!vDg8>#gr)8dGN3CRb1vdGw^z*hy2kj*_NoU#8*LM-fy8tc3qD zsNo*DAIJUuQX-1No*#>lIyD!rc3>95=SGWJtxoHm4y&+5BZ_y}7M1#J%&1m%;J1m( zH*~?zEJBbP=Zl)qcBb0aUAg@qER-lC4GrIa9OZ^P(RHAe;4#pw^&Dm~j(#xJND7?_ zVg$I#kAX<85q%&{R!D~wJz3e-nH%L7c8WjWB`;wH+CbOHY191Qgf<pO2;%jrjSAGv{4BI#eApGKn6PQG#q`mto&$g?eq%LVGSXw{YQVhi~aw++t{y zAiPcA~(3gJYN*p>oew5>Q2xL#NW0)6y3I(7HY_!TRYi2sif|>hC+%WUhGMWX3u?#y9=i|b z#hAt%+)>LE4Keuo?4Y(hT*q6tXdpeEJXdB3bXMRcC72M(ZZO}xEBmC zra3Mn7-++b=oY-WKSM+0c1G2`qS{8z+pwyRjT!8TTsBvUmAIiP0(SfC20qDMr4U;0){V6aH zwS3w3?EH*^M~@ME0P}(#(o4aBjiDOXxr!#C`ZoM5&OQMH3#~k9IN~t8z~=eU+@{j! zI>(Dczx(;T!E9Jz_9x_GnXCoaxwx;OaA z63QXU1EZF9L7WTZp{=3@pYI9Y`E%S`Y3W$eHjV(g_V^p)s z!+05X0iT}=Xb?g;C3PE7WMz_7*>>!o-pOZw*4ijFQm5aS({D=j949z#=6MzY^20&* z8!te|-Ora&M1eit?l-C4a&t8W=cK;$Kg+KY%=syWM;R&MQFV1x8$WlTUCUnlPNu$R zq{H`bD)i{0IwWPgvL-|U>fL#LI;e!1>*h(PJ5N3zJ&RljF;O?$S>G=1P^W`;cwc>I z6q9jCIK*Jy|Ird<6P-@ayxoKr7>oM)HxgpLz(1Q`xvCdSf8T!(QAAM~OU~So&sH^Z zkF2Q)GToTCrl!%ovzt4ldL9d=j~6Fw5|?lPlb}{s_B!Huou#;k4jJ&4P!9Uk49x_3 z^}?Rd)8GdSt5#Y2jOU7X$J*Q!t8k^azmGw>~+DbyT-?h;B&U2i5N2E zv?+q+6ukp!Z6jCv3KH>qQrQ5B*fOp|{)>V@!V24v$E9*-wXPy(H|9AN6(Vcwl}quK ztq&Loi}z3)f>o)kY$=rE*EDp4SpbE|x3R01ozy0<6gGL4AFDIt&>Qe>GQKHZs79i~ z?4PZTqS>AH9z$TB^Az~u%x695_0}T9s<78Wm+0iA?qcN*hUnBXG`@q)>KG`d515k$ z7bj1};+*>9TFyqNL%Xx^9Gqz4u*9QRUGzhh%vAx79?{}dAx1@G67`Oc^>YO9Zk_Rp z)#tOy*GPbREyNPt$!eJ1(Ov*agx``1OYyM#b6Tp&>Nn78J|@Y%jvVJowj`1H8y0&P zrxJr(J#8*$g8924s;8&A&j#R;%?IEi>)inMjZ|uvsD3{`=>$TK>NZ4JyFd-|S?3d$ zjS5`#3Z1$lsbkAqWFoE?%X|%2Cd1@j$<9PH53xx$M_09-o4C^Ic57A~0h{4Y+$?|^yFR=1ROA|D4Z_BsC!gO%P77?w9Kq6E$g2@* zZ%=E~Z-HM%2uSqn`D-(!H*ve@xO34gI!Q)8~5 zuQ}Q@SFx%eT=9gi+y+FF3DzZy)eO2k{hm^i8~H_PLgB2wy5CtR<0dMMbr z0Th=SWJ%MRp2}O{1#JLZ9pFdRHe{(bjY695lG3$3NnOG`+8_zDqc;EAteY=#;$63kX2UZhDJjy@X$tUVC*M^EI#dta=nQr zAxb(-0^@|H`%XoL;c~I{H}3cJK1WC?x*4vomTUjSKfDbi$#d)hwWKufz_7p)>IVt9 zBb-L~VvFsR8#)DnXP=1wKIQ=JxR4CJtUW_WF0&I2LZW$JI9Yz>^boRp(9` z4{z+kr2tOh2Wc^i`F}7+5J}jppZZ@rvep#Pc`@$X&MVwNkncz@O1oC4zPMFJLB zK-DpStTa9W7ocm@0t4b%58^1}*Qrd?9?NC#*Vsdfrb15ar~&9JVJOVpB|u zfxS=La`Mr(BlBF2QB46!rM~W)x}9gl^fXg1l>mjpt5slwOo?hnUMHj}4{GaTa&tB- z?$p7Qb!2iAh*!1&Og$~o{rE$T0qDnZ+BmvBX--Rk$#GqE(PZv z<^u=Sp4we$wNTz=ixpYZTgROm%iv$l3l8- zeL6eLpRjkIPR99vO7VQF>xO;sXmi2^ynUkr$jo`}Z`aEv1{OSL^+Jj71jfJ4U}3^> z4JRcprRj1hu&iW+B6ZQ%aYkm<(nEsr!#)5868d&gV}zpK0-?x(bq~r4rteaop8gAy zz+S^8eLvlik|sf>bMPnoJhEDvYH8O+^xkVBkKJHjeq{wwF$wkknissM&#GXOZ$ILr zn;UgLl7;2EYgO`Ve9$JERb?Lfi*``?=$9+j>?YyImH$rAu#qjL_FU0ijLv_FX9l>I z4|(P8rZ)Ws6R^|)$k#M|k5n7RUOo{g4*U@8!L5mfexXPC!~x`y%nlc0=2bM+3B|X? z(sJBamP8U5i7sB@#=l7K{yl+2=Xn~IcgJ$N2<%#HeNhR z&YS`^3Vx?8;k91U-WAb2YxujKW2Vo49AqfcW=VUF=wy@{l75RF_nxwczt`CbW+SIq zroLV{pyV2#6FrB9_ZNo8GuS=q#<$L0msTfxuSN0eh>V05Sd}FC>lrG?UJ2HJlS7rAEgg@nmyH{6*s&J5|k0X_5 z*jmMSA8iqHz}!8`dfy{S0t60OUIsOF`0oN0Xds2fw~tBr=;bm@XbX5DB_pPAJQ}7sKy! z4$4fF*}YNt(1GXR7AU#nL|z{3c%pBAyH9iBC!{XDICxFAYJH0|MItORpn-CquV3)A z9O2JedC3bk)4ED?mhvO2=%{o^=1+|oXNr9<`rY&Pn27{*S#$wC8utY~??7D#&98ga z3gkDE+r;x4-_sb*VzQC+M%-plGfrbrijSnhvZ@KK)xLFWFU(O&>a5%sYDdE?F=Q^9jeJq^6vCpKoI|$D zANR*gYDN7omzJ8zN$REyKfB$x6*8wF&sM6sZ)f6xx60{6<4U*ZL{cO(oH zREoOP857=Ubck*n-L+VUzt^kQe+FN0A(=V%F6U8_6nn6rgWY#vI^A%7!?O^JQmKD26k9L0c!Zj8p z&P&}qw@j{0E?FvN`^w87_r^~Qpix^exKsB31Oi^NdQkNrU5{T9PVxdCAK;f-jv|Wu$PwCe7@n9Hyx9)8il5@y(|A}vA-l#;8H17qNOV)f zbH()2E(RO!V^ZyT{^cU7AiwB&--)y}E*C}_>SN1#(c%onoif={Cfg7fnmdu)=Zgyx zn|1YjD()!}lilrBjZj z`aNk)^8mh4><^u2W@#vpt&}8VhS2(GmC=tW<96%N(XYdCh)sWbo)|AvqPjE9N6)&$ z`rwJZfmx!-JKpW*9@dEWG8@Ty!6CxI5`e2@&!HB)?U-(`CgY6r>I~~Y1Q6YZ+D$Z| zx825U21icm>D*lyz9b9Q;DFUkMBJ+GhT#&3Q$Rom9gjiXVOb}OpQ6+*;8sBBMGRKh zU|5a*5MrMZFMM(Nq{^<-+qYg_XeE++c&@AF{W9g-fOsCd#z<}wvrt~m8!P{kHuuBF z+hwd-e$nphqF#6pxqN@+xe$f`rpCvZcggst^J`mQ&ra|yL`0bJKkbTq=~E8h?CQ&X z&2rKFwg!1F>R?Uu*XaDL*dS^kx}v8tx~hA;G>OE_5U&pBfn-2_umIg6;Q+-TbVTrd zIfv!^ikITTve?azZ;JkEuiA|jYy**zbhoK+YER@CR>L&wTj# zJWiV$aB+YA%4qk&_@#R%Vo8|XWx=z+#IPIQs417t46K z5CW2dg`djFdK3XddBXXTnIW_G6;xtdmVo&C+;~%59-<|Zm91~9n{L(-?8}0iNPxi7 zf)(x&U$jotzx}<1Bbk^bUC4o1v+h}(R#7#|EeJz>B5(RNz9;T?Uc3E7OWfHrts_IG zyr3~RH!sln!pjG9?)GW|1m=Pa7Z!J$p&WckksQl+(*cwA3LS3^U;M}Cb%2BCeMiclXSX-&!Q1l92HXrO06d_@@`~V}|hGiUqGa=8DYikCU5KyCy{r1K$f`=)4xCx%xr#E(j zNE{qP)8!`uvylk~_;Li~w7YALBTZ1JWOedo0=clP6cuktjK*Krx z+d(N-7eGJ!2SnOZTDp&=fQpE)eQ|)VzA%q$fq%@dYOrMb&klE5>_ospKcWZ5fcwDm`&2G^{bUp1n1v5 z1mci1)5r?jETOy}L#s1p=^7f;r7SRzyk`?JSHKUd4q40o8m1ak|9R7r6=h|Yr&sbg zU-vMM4tNf7L_DmEUOn|Yu!-QziCddW+m+F}fL*ztH8nyKt!$CwvQ2n;-ua@BcK@g& z4SS4)J#v>}%lf?~*lyik%pzRw+lWw;_t#L=M5DO`EIqCCR7yT?6Na| zth6EMOM*XUl=vSeZ*f44Bwb!G7`^Q^M4TGxw73<#mC!NsDrH63 zqVF@NvQ6|W3@Lpe`bG2CgpBVAkCI|lRRD;fwQ(R{D)da5>l~bO;+3!rYi-QXXP>pw zX6R>u&~e&(<4n2eK~cP+WP{;%@@!xiVQGYkq~;=vwK0UBUo&Q$;Op=d$opl;tM+BH z>Ee<5M6g0EF_d~(u}}ar@Pt52&b-H9;7&RIfIO|6we54TCCk<=YCv8>H?@`xM&2pR zjT7fp#UGUNgmn*%A0+in5IAC{#eSBuMaC4Mf^+vB{I)gZy^u*ovN<}?6 zL|NcPC~*RRnYOEEx5|ha>`>MgOHGR9Rn&@)F)0~g$l-ATe*b13)1DOHB*OwJcx%+6b0^5tl& z|GPt_f^?v4{Ee%L?Ghx*gCE*LW_*&t{DDSf&xX?6PvOr*NLjVgS*iOM6;LOdy=@qq zxc(|!8UA!8zO~**oORO5s>j6|uHz|{&jh`}-iHF@mg*SrQ#N+~-hE-2xaYRInE@#% z`d$2vJ?k~CsUuEf3|G=`^V=SpUC?pcWkpG?tgE`hGc-cNqnJPJ)C^HfzUP?zcnC@y%I;=2E1l4tgF4^-rPq+qbi*! zM!WV($I(BH-=NXbcsmvxI7Si?ART>LyG;+Ge;IJpKOKbDrSbcq&66`; zW6Hu;zlOM7`MK~EQ-pO!YaV@;)mPcXUs`Y!FHtUa;6~Kvm%hH0LJC|Isy{dlh@bC? z5TX3%R~=_HpQJn4r3-g??MDcuv9H0>`@oQ2o(2Y|ItLLi-RS*>zCBIP-&a<-fE#Um zUe?whvEugE;ahYnG1VY+@_BQNePSJpiOHct&oAaq(M~5u%R(2H7Kw`0X6|2Sjk70V z_Cq}fvEn+yv|+TkoL;}vq%1AieMH^@{sWawhx1LlP@tQ(4p4oa2#osj7tm$IFqwzf zic4cr7Ki4Y@BaU9$1*bD*E{2flufeJW6s3UBL5OrO*ro(N!b0Uo~&S1!J~K@V(>E( z=SmfRETna0Z7rw0T^NBG@3WY`7X`Xi@5dQj%e`M%V6X7{ zkvr8x@+*E@`?g(vHgB!#HiXKbi5|LW48hSI^2N$| zWnkhYxh6Z@4yQ+p%OY3Y|G6v7dHGufMF>IsqnuSE?2A^ZdrZkK`I4r-5=t{W3y8k& z%fbj$mGd%0MYrFjz$nSR%N&FfjMLuSRByl$!nS4vKH+oWGn=}zd))$;8jI7AGPvb5 z4eW9{1zV1|Ir0iKqM3!Bwg>Pxemxp3*g?Q<0|e~e9W82JffdPz3dePDV}+8R1XS&a z#+dUsOW%6ZB5J5Dz<(bCkpPzn#?+cjY%*yx6PoS4<)B5>NZQH`64C%z;K36}#rjQt zHUtD z)Dlt_ntpTh;5Y&Pzoo0)j5FYbJ-k$dCb{iHZ&x@eo=pE1lc}3sl*t3*TFo6wDDpt{ zE_`q)7Q!#j(6l6+Oi5*G0z{xz)5RAWLq30r!n$sRg$}j5ZUA@paG*DCRFKhU0k7Oo zd!oPog4_SSkpV1Gtz5~z=0X3DPGLys`AkPM+;heCth8bINmWwR&34y%E8T8DR-n_j zyY&I9s(Z?@jFaMbtY&MZMdm`ylP?gyTxTev3u=m=Ds@8;<)*sfXOzE#tiMjbMa_BK ze6Vdo*l#HfXc3!{Jczg&ZpJx0OKYp$$$fYDIS&B_oR2k});grN0-@6_(zbO9wUI)FPe?x67LY zVa(TU0fdn{NFz}Z#r5_4KQUb%x&9h^?k=>Pp|8G##8qN?S;T_OORPIDvgGA>h9vpn6rqvUYc);APmj=LFT!pDKQ~Tg6+V zM`8!URts+%2V~uCCuhc;W;<9pL({KshU2#e^8``AwJnikw`K(x zvc13?e4W4>rU~}TZrH`aWKqhG|Tu|Zr!M=?XP~b5Z^Vh!|@mPmV*F6 z$2wmjt%jK!w6=yYE&Mg(RCZpMsP9n(=s^UmrU~i>eW<-r>`0Rl`uevWW%&&cV>3<1 zPGlm@cTE-8zj9r?e8%@R02Lf;vOZsTCZ4ia|7>ju0q@_}4k~|1Y;BKOgMH8;{0UBx z(27X)nU`xb<4$<10G~g4jL5bt^yHBP--953E@86@H4BZpcn+?s;p(GWF)s0UHWp3U{5Surpo}Uz8b0mr@2OdpLS>-g zf^0TFGk>^`k62xCB-XO(8D&NWp$t=hW(u?{ouHbXr~tULp9zlLr)fsNTvcrBmQxs% zw_S_^N3bk$`{E2RWb5O6)(NpOY70stu^RCkUm=s%fE1phnm18jnV)Vboc-N7QFyc% zhQi02AQyQ+{bPCT+Y+=lF%x%ob-@}-kivKd{Yx?l1Jp*5OQE6I?GbkS1?gzuNY44n)Q zp+L7%yHP)R#H;GARLnEX*tP1o2up{>Kd-uH`VjOeKrv1m+|N-%m-mf(h>w&=w}r^8 zG6D_a&WAK{9H#$JHf{Rzh zt_Z7Pu-LC4i<8ha6%+sOfB(iZHF-XaZNqdX^19j`S7A)G;I5a^vNWYUQDSRa?3AM5 z7vG1f$215r-{AOlp(ItoUwK@euNy2}ae-2&I39oH-kwr9IHF#dXR09uy1WJ;sm|uo zL5s?x6xaUgWf+NtWdl$pQ%CLx^mG&KuD=F>zvz<(?eBFe(<$+!y+>kltnX2M2z0&GVk&)7$^$(;6tJjb_ZNRfG>1MJe#he@Z$z`V;gojG+5IL z3(`GMQHh^Fhjcn(1VG9EYe=CM{~a}m>X7zY=56BK$H3YP&T#XA%~z0oj06IvEWwO$>J9hhg18=j#TeF*nwTuOQ;9u_Qz$(r=U5%%Y@n90}Hq|)d zT&PSlQPLW3N<4YEbLH0;)-&b>te6UG@sP$BJ|GSl=t2y2-PuZ9T;WhSKHuMBDid3_ z28Ja-jRT{ z7T5*?x>p|d>0!Po-;x;@@c<%0e@|VRi_aB|6#`tz3hRm{Z3Agg#b%&|^ zUabx#Ox0IH5&^G4pyx>*VvtV>N_WrZIL67$j?@&F+}kbv%xR?`Swk@SPI&ie5GQeO z7=hf&Ty;&tBCejq)(I?PHqgbGz2)7>mL{aqT;BC71Xwq{uqN#L^;;YCXTgy0;k~Eb zZMc@T#S+0|4Lh#@H7M-l@0!eewpb6*o;<7kgU9%62UGcl%E!7IBa>HeL;|l?`r|af zH(PKR>YileGg&>OB2r24IX-5}*8|ho2j0y<7ojgaKQvLrCcuZ7m(j_rFsmlLxU;WH ziN=mY-Hr91*F_yh=}`}YBKOpgf}}FRIE?ZIShd7 zj7KVm5P2Wtlw?)=Qm5K-&O}ufz2E$kuP*o+NzFPSUOi6JV9tBr<SeiT-V@>Q-WDD9$ZY>09AmkrC6K@TzDtY4?&+rIu;yc3>f6Vg zTGR8c5&EW&{&5*DGLoKq`g{9GFZR$C{#~%0i&BVHtkCv4zmt_@62s)MrBs<91l{G# z`Iel#Q=u#e2?fw1OT~nIkN#fC_H&`iRM(gtXY%X5qADGQFBzk2h*G;St)Uzn)| zBSO=t4Q1Nd&z0=%P}8oW=wC$Ul~)^Cla_aE5T5 zL7-13MGy;j7}ouNkga+mzB$Uw1oB4g)fFSdIS;PN=C4-z?t6y(3&y;ZVumV8>u0o} z4p4Xs@dfAvm2X|qfm+Q7&_wELYdgNk+gw{CD^oBOpuc3!UpR=ouq=}+f-wI>6S`p4 z4QO&VUOe|2D{CYAp?r)YyK1_s`eax9P9}*WIT>9WmhW}(seQg+wMkNNDrYf2?Evz8 zhtjr&c)kk%F?w@YcGeGL>}PJ#G1rRKpU1P8tAjQBGVu_0p%MzQ5!ZYe#(Z%Jl*_nM|<;3WvQ%$ zog=3M#G*BVOu|2UlKbJaj-8$m&oR14@+4CevIKmnDKvoo0vs9KP+6v4R#mlify zuWI=0=X44=TZm)_sqU%RIicmUmOB1i>V1(YcTqVgxgx}k+O{R4`Y1SjYK)h5ir9Px zRJ5K1U;tt_um%65!-rd3?{%3euY0+djGF;vEFc|r^d20kCSVGQ5ziGo=LO%A-#Uwz zRW~C-fz;|qx$!6pP~$#XyO9HV80vDxSm&piuMtKrNTU`;X}#UJ`yBy!IGvxQ z;Ypr%FmKHnfEkm>aP`dao^bF?F-7X$$6c&E$o*(^y_C$`UI5%&WK@E zm@;;y;LDh-SHg;Cn$dAFJdQV+E%^=KfYJ^z*tz_6UX*-gU?%1TVYZ+NfR-I`Vec9A z8ovvvXTlSV@|mPY^TkqDM42p~D`Bpp_W^myaGHL|6-j?ef0JJa({OI2{21YeB59;7 zPcl%3kEXL$YnCW!{`oAneXFHoP+!3tSyVy{*{ZQP&(JTO9aQQu^8VN&^LZ9;aVGVP z^J1G$i8{YBrA*`pasVEHTwWtCw=#-S<5S!ZJ3Cdo49?d}BWXYD80N&)Jw$xtM1{{= zYJEFInItvq+e>1Iu92K~_O&W%ej_RNkmZ>?-hyk`j z=D6e>`_>QvLz$90s1X}2Rs`(9-u{?O9lSnj_En%q;xArzCo-1Q^}in!Hbj53VYV5Z zm__MjHviIsdjR59_aMWfA=hDRx~8x)%yFZE;H>y{#z$&C@6LDpEK!BRZfyQfH#Zv= zIrGrQRtl-4?$iFgCuVed;GLYu*Pmg|`#F$0>m3K$nCB+I75&QgBl6}4IaCSuGm9%ls5~u!E}w)tlZ!E z68iI*#24$8w@jpQ*GS?Ig|}gd&(}V?Pv9@?zrc7wd_5lo3CNVtL7&h{K;3lb%+O_@QnxOg-z#gdU{U!6M9OFKc1UcmKsr5C0D=p@BPHk-j9!1 zOQnj8=8VQj6%}bE)IJ$uB%hWWp%6Q~&1YxkWz&`6ni0DNK$MQ_rkBFRSq#ZV=i93{q(q{RajQ#=U&*5LY z=xM`J9i;fRJ-KV%PXK*VSXd*9)&E(^yd&8BS6=<+{T@A9LWh(Lb_6YS=om!pzwC7q)kMJUi_-)6P`|%&KP^n5_A!Rg zj%EJgU4{7E>nTqqJyZD=g;oA& z<;(B|XL?g1!i-5kk$gBwfyt2K2sCo8pqjYp&54~Ty_UwoVL6D1e!o_+lh|SJm>C5( za5jT(gd~!;m50@zQTRjb3{<>gET7YY`mLi+ulF_(Yxg45ht0YTakDYSeKD|yD~ zkMJtDC;rQ+?9KW;(E33JEqw)p2}3e>!Rzni-!%3Cy-{2ooP~2=Bkz|&f3+9L(&C@1 z#>UqlA14EEuUz4?+h5FEo4`N{sF>(JewF>$sc_Ek{Y6W2VLI{XK-nlB;WtPW6?Z!c zVTx9mWd+Mjzb$iDYlDRF+b=se7Y!L?5TJdq#mNGkWc{wI&#=`mfqb7pfrE3nsJR$I zjJ4q{o778@$VH@d*LQa+{e|6-|NAJv9uU7(hi~oqzZNp~2U%zwaG~W6)Ypk%R4N4I z=JMd39-o5)w;pDuA|hCylD{_Uv021cmvL0~b9eSTT=3)LH%q#QX+H=*$}>#m%QQ-+ zGW7KuTO|&GJN*K`Sn9r52r4%rYZF2{H?VV;$(G@=By=X3o=(wO(1(-P^sXPw6NFBej70Wr0 zPP7U!a5iZUy#62ZFKI*B?Z@7(l1z=f}sR zYSh$}SqJ96A1W%Gn2CmyQY`C^9y=?{tI43$Xs_0C3JezJp#i%1n& zBPz|>1o&MS96mKjo_)Uy3=_FKxofY2wghrpQjoa+SL2L0gg`pJLprJ*=Apx{Qa%vM zUOK`<$B(9n$rS^3!=9?`Kw*V`OvW_G1HWn4WqUp(`0La(L-dxp_U9Y*S%%PAHE_+^ zTsMcnaO2rQ%&@I(`0*($%k+0{)>?}Lg*tx=MGJd3o2J!Y5la!bH`&@0M|w=o=1w^} z!=gKHITj!%iNy}3)=LJUrIU%zRdq;?c>|SVY@qH52O3JaS!1E^gtjZruNiKx*8yLy z+Sa?CcAd{Ud_6Vf-z!hgU{`w@?1izlC6 zs6XbGm#K00Z}@U$mU6#p+zh_4!oKJ0&bnLK^U%dhhF@dB6vtrAL0Wor@d87RzRShGFA}v1%cf5DSJ@BMyw1+bshYg(waPyX2#YMO4cwnd~6&oz*>MVlqSj zgr@&V71dYfB$8E}G*5dwOdO=OH3t7ETF+myu5~g<+z#>i$CyV--{cJbUl8Re;})2N zMGukG;Ww^`My!K)q$9OAl;Z6sLnK!y?|N$vdhB}q@$K7W@-!apczVGrxWsS;>Sgd; zjTzhid`vmf_F`0Gz`X4w1pa7esCW8Te9J&;sdM>`CRDfL2umTwQgn>FWgGr0^rQd4 zY0+E(TBX7WZ}JIlOC2$hUJ*Oa?X7qGH#~8yZumUbvh&jYSdgs+#&&rffZ7t-J4@0$ zR%yxj`}+?L4NaI!Tpt0w)mSO3$kvKxRgF}LZ13vazZNj)&vci_aZrE8TLv-e4gBF7 z*KW!Dv(YEpa-FIkaPCh_EB2c*KSMJ}1grK00x0HQ zPSdF?wGs*-=}fUvEsCd>5;_?hOZc4_U7|=NkZo#JwVoizKa@u;Xei>U`n*G4tCbNt0vNdb~=z zQz4M;t7>9u2h5H(R!P2vj0vV=iLSv7-3O| zq~xO0UGKnjk>w^N4btk4;8%~k*~ol18fr9g)ETT^TmF*~6`ZTYL)R1+T~iDs+iW|V z#a<`Tq#ubx9%t@5!Q~D|Je>cxAGqD_vTr7dgPgNrV8r&iGo;}HIyE9?>q0kez&{fH z-W3W?GM3B);)yq85KQjahpJ{D_?s2Ogmgr`G7c9>X?mG+%GJk#+2N?*s6-S4J6_ns z^`wyAY z!ijxs>P& zfmK9T!0pJOf=z&x`=^@r_6L#D;vYu;O6#d-?Dq?Q`^04V+k2x_=3}i>jUDBdhwCkJ zkZFyK?A5ERzj-{R6x_E}XZE1p{MK%evHz}Nh&%7I@E4ZPJlx#8yuVjEVB^25Xm(R$ zJ7;pgC6bgovCGxSc3G$8CZJtzYt~v&8pH2?<88%!CHhgRq$jUOP=24o`-uq%p?z|w z?;)FLVu$o3zsUyRm7NC>u%%7GGKN6T{U6}G*) z7P&i@t$$4#ux&6b_3W%tPR9F)*mwF1a@_7l+e}BN$fyeE{W-+_eonNhD{v-<;!uND zK&iztnII<3VB7NEv@5BI%Ms3qJoT%{>Vq@73x!UP& zSj5hOz|+b~$HwJ<<$R-EH-3&@|KU{0nl^_K{`}7rvnZ${I!sqYSV}09l(sZ*JRzLx5xs$o_ph z8B3AJ)5457Vto9p(n%oMBrw@L5T>t3SoWiOpXJ{#1B?}RY;rkmO?kGits;q52K-c> zpaeLpbZPt#~Ot4Fao!s5y$7*!m#%6`@Ms&?x_!^$a`go3oomfqKs)YZP{0oFqQ zL-#BtS>?FdYwxq9vZzKxtKw63TQpmFO#yRaY0oCSfOT*kylP~$uAD2Ut+7Cg^7ZSx z#EyrG4fXgv6xUwK5-=T88f%co3T_G}8B(2PkIzS!!uyakqP{-ZglyOxKMB1i-uQN! zlfau_R$Cekha^FFU9UlO1xJ7Ij$-`W$y7e-x^l)neWc%+A?dH2t+OUJ8092l42URxu3DA2Uxy!d*$Sjp zR`RTgm{`r(KL6#{;81KUNJ=kmx!4(SMr?zdQd|^99Sj+xZLr-IFojD3FCqw2Rud%V zGE~etOc-a|61e^bC^3n-Wf9Qnh@vO1= zqNgXUMoR${Fj(d{!?y;uZS;o7OGpM7`a9b~PA&c3dD&h%rZk83_ifu#z2M}KPYH{W zW$X|XWK~c=$5-$|(kt`$r-lj|m)a%?!u?ksq@H_-AtZAK?MmX%N!+dzt=jW*D=6sW z&E}FcHx!6AE+6<>_KTtxn{=sW^rt+Ef1-faaxW_joWX#yn&f3$e#wWVvFK8Zuet&f zive!dJJ2E`GM+4n=bk84mV)E9YM5vMo+udSxVKC^e+{b1^81_u5uIkLy;0L0sy!f=n}l=xE9mdw@xnNs7{zE$q4 ziU+Rk`9c9E8A$leTmJzZZN?YUKnsPmSbR7CJr zz5VjAvm4{hd9Ko8ZD7D*LnyM%o3AG$rl}iVfwI|>!O~AKs^=JRbG^{CwdWA^wZ2)XVSiTk^14Bop};6)F+5eFr8M7> z|IR2AXo|bg;}O&6OpUuUh2GuYQiEMprJoWQb+FgljeKtW9#@}6+HeYVc~Y7pgCoQE z5{db2)qN{a6N6i#2Kr0sta)`j3yY>M?7cPC{~q*rZ(jCnmlS`?Nq^&JO;x^d2d^8BV98LHmPh^t=)OeLIXJhi^_=TDD1>(#jXJNy@Q+P#3Uz09cd`o<-#LZXxaxY z*Zm3i;6-|%)U&fjzayLv+r}KS-o4QcOn|5}g*j|@Zr*$~JICMWV`p_^y&jjd{>vh5 zeIa=(1ifBgnQ0E*vN8ypn66)-boeDAlI^GU4@}`i^0xvW(3$?CQCgEuXwRR#yaZX< ziKz~s1Jf4@YU_RDlW>nb2(dDWI+Btl+Hx?nF7b|IRBzP>>e5#f^2cM5^alccjUMx6 zvvkq?b9!;(w{8F7h06%}p}X?|m}vi9SJV8+ZND8xn|lZ8AsSwp`*4fniH)4fBOyB0lr4%#F8t*F=hZJ?!#?^ zlaoo2(edcY?<{HTQ>33{Sre(3Y~xfH8|XcF=Hjb4CBEV9Umt?fyBFw(E?mX|6^!h3V4zkf4(?XwJ*m&?mbFvx`uNGhM8`?%1uC1{#Gn?_TCgRYOVGO2Ph zshY^GT`yOco6c##en6uF9T9_atu;g5JyGRdZqkj(SXa5jL$zC5owRJZVpcH;Apr>q zHxEC{rv;|+>%`&L5w#_x)ztSZE3#7J)vL*JKa1Q*RR(s8Zc``Mwk(F2>k(iOZG{gnY2PN<23Mw3OW}-IDNagR4uT^(npo0lvA>;oWC^Kq^eCPRH3PpEpIk4z%os zSB{i4e)o$*y+pg9Aj0rhyiLmJ3Ao%cE&R6-K6Bc?9}cD(zx=dMYfV8dom}PD1rB58 z=Nhl02M7EM($W@G@h^Y2qfnprtPkjCbNJ42=mH zY}9W2k+>F<&ndwCUfwZm5iSapvcdrK5F_}T^xhn8oX6~@XKa`jwrUQ0#Jh)IMLdVg zBx3;p&j<6P@#C?58F#l1YZ+d$b;gYnRE#tvFa3mQ5)*-#kGr#HJ^gvXRt9g=Tl{Vd zE-(A;68lRP=6b2ILBA)E*g@33^WHn}P%wgwdxv~!#qU&7Hh*W5Oj9Wv?$_N1k5o)q5M^G$oc9CU+d|(ZxU0Kfdd<=v>Yq@wD|$R$L(0J+$NV{`gah zTEtM1*KcIwS$cE#xBF(S$SM^Kyyq#S<@~Geu?M_H2SAwdVy~w?4NCIs(S2xd8*o|pUd$;h%xV2bnA${P8{02WJvo`85 z+2<{(+~t6)WiDaH#h@e=p#-Vd zQKl_gmar-Y#OOS66Xrf~e?=6rYtg~CffU_Mt-W~cK7d`uxX-74tzO~_dLwCb$)fSnTv*12W6bC-hWcNVcWK9 zDX-fH+*z=wyOEw=Xh=HPWX&z+EnaWdvH#tRyr|H%)#-r8krrU$flkM;h+nT2|ymOBb1wYvBOPZfE92T6L?f+#^zk<{QFznZCs8uRyUCPvCV)B zvtAF>!RB*1R#ut=LCalvtc1h5S69jIsa2V60Iqnte2;jDcmxN!e)Q$TRXAxE%Q1Z&NM#fXU%aIWGJzY|quL?*Szuj}| zxbv`@Nrm^^;R$h5lV{HTM~wrGD~wX;gMxM6EQWHP#TC-!!(dL!o}X7(!y`p z*5ROL&}G?EEJq1DhAn>pzbNNATW3pZB$V`U;(ES}b9bs-Pn-5igPP7m9SErCO{ArR z5PvVa$HoqwMEv(oqUL$mIs+fQ0zBP6dDeaB{j{sH`{O;&{(BpX_26z*_?UEVxw5%; zYdLH3p?XQ1V1&Z6q5_7(P{a_60t<^mUCWxaz~&?sp-velFkqMOfZG7VYKMSwu_Ei@ ziv%%?K{rf^m=%@-X`rCg%z><4s_n%LW~Fw3X0^8G7F@;nqw%qo zm82DGt%2QS001tg7k^CWDSw|&@l1>o#k#CsSJrB`zyjyURCd&@SpzcxfpYB_?M=Oun?Kf z8l=F+{@_NFkA+({pea3uH;EYe9BCEHtVb>eFGym(K zR5O)bE_%`o0Scn*>V77CtA<5v@SMVKo)z=`_{iHc_k3Wwu4V9LGAzPr{asQ&)~tNX*3naI!#$!iV^R=!Hf| zp?-y1UauoOHcns)vAuY`Ke6l%V<29DQ}Xc`d&WLD`Z=d`Zi6t^{% zYw~mUTQo3yGS;5;*q}?#QBLhwrNI|_i;#@uArrM(*R61L%-3A3|Abhq*=~uqUKH5iIUYAFWMcjiJfKYt=K3?B%peJLuiFaXbyElL~mNc&7Hp@ zIiv;dIM4xNB{-!v0N}JX;t~Kt~8x zFwlf;{+8~HR@B9!@s9jnn7-vk18tmJGvoVLl8SohB8t?uLzF)<0OEl_l+|*dBi8w4 zLs0D0bH3bJpdI7Ae-SmHx8sclIVwe#7MrO4LrZo|q{F6MyO3=$=8B^kmRzevAfj4e z$a5s=;ZZRk_a8&qX}Qb%oR-J+RLT$xs%Omo@7bW`kY-D%kdP4I(NEX3G?rOxKefSk z5n(r@M^H`k`unZBfViF<){#%$F^1;i3wPbwEihR3q@}RUK5^5pw|!U`4M1*_|ZYsg{g<0$}GN zC$^P*i=AA9HrCvhDB_uG%?hcdUVCblRlk7d1m8RJ$Ij?d z34-;ey@}TTpAmov+M!8c-d@tStM+2w47-SpZCp&J|xenyvI0_BF;lc0ePKpRC! zAT

    R!~u??wiEJH{Nie-Vtyr99CX+?r3Zra4R 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

    }}0zk7N8&Ke90 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 delta 654 zcmV;90&)F^2Brm&B!6v5L_t(|oPASGXcIvcev{0WO+teuLI@bFCKW4cOsNS*5CcM~ z6fvjP_TZ&Lp(!?^g@95lc(CXtqD6aB8t6rP@gg1yqKANjc-TsFG9+Ts+HMk>pZ&?m zW;45MoAw=+8TNhOd-J{b;RYc<2mk`mz6S;ZM3giF2se>HF@FSF1pBiPL})VB__X9^ z1B9OUvglXb!~w0Z(3JS{N^(^Yq#NS{n+5)1Y_TCXTt^PiJ)7w0V2ri!UgFv5SNYsu zZ?C&n6`U@|wUJAYwLIZSZ%daO+Ow%1{shs+Ic6(yH%#&pMYO z4XOyu#PpR&>wi2pJKB5pxO#s1^sUv#CYJ8KS$Oa6cG8+HG!;yr7Hs7CkB^p3CKMS9 zN8`gLCD8bEM3;`JEg($a4{GULrZ5*>jB00lgv!)QC zqavCHD?_Cw#l1W+B z7CsdAg~C2fzZ0j9!tOvS9_v#hB%jZx(`lBql*=W%-7bn^wOX}Wt%4vh3?s?%#ZU+# z#Tj(Y+JBw{a2&_2t@U`lm|=3coZ6fyinUtJuXuxilen;{qoXwT~J?{DW#Wb{ze7)D3$PTJRx o+MEwE?E#^0Si5M`v+?&o^vfDHFZ+`m00000Ne4wvM6N<$f{bcJMgRZ+ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 63168903bb6952d9b378130ef306a69c4a02a2c7..e8f79295d1133a93da4d734bee2e8d2d7c1913e2 100644 GIT binary patch delta 1757 zcmV<31|s>q5$p|+BYy_7NklaXZOALeZTMb&D-yNk8rzO5W|262yg)DM}NP8c-%enh7d(S%!7aB zx)<~iFGT_3zo6_32;K|}0a28_veK&m-C=k@S}XuSLM9VOM@dJImW~(!alBu|ec(f= z^Tv(l++0iPMYpMmJqhYkahi&|iQ#FRRl9d% zB2mAINsFagtL^xyoHY)+1fs4de9GW0icTuQH_j>}hqrcI65y{qZyF_+N@A;cAmu=VSpMAC8PD(`-S z0GJMBg)Cm|KXN2v7!fSN_1n^s-Oi6 zsy==k^3}rji{IKRE2YDSKNHhE)h%C~MkK}c$WYFG7hc5#g_?76)Q1ky13qGekfpSg z8?V=uyUiSPp@6j61StW){rw$PRYJ4o!lKB72kCO=BX+m8+V9=tX30BZT)!cvq}VV& z*?$+ZN(CTr8|&#RHsrf9>H!9ag9 zQr*@@yXF&%=y%Dekz%!4Q&QCRYpFzPwSUu4`%EeShW8pWYpRbJLMW7I=3(RsvC(AJ z>kY{%0KmX$Q*1YXV>E1nsYc!VFds1<62dE&Dcifie*ZplIHPpAl+7kmMs)n}qo7fD zdz^7v_=x=m$Mk6EOEm((keVuui-QDV)9VrYP!xnXM#DoajT;4UoO9;WP9c;?)PE;) zm{G9EphP0HOT6$OJC=tS9}wjK!t{X=gzTQC={twEqSMg zUjMa5n1kak~ZfbHjHU_->66J8nQj%Sd9)+cCwiFjzD{d%O zuSNibE?Z{G%A#!c&^OiM$ zyf7DB007pfZ>Lj*0I=kr_rBE3nd|lBoeEjJXyE$w+~%IA%Y+cB4<2+kn#}p$9#DP4-9P1)$vpJ0rL4tnlq=du79f1SK_YzlZZNz z6Y%0h<9lh|gNp&dBj~BE#7~u(5x!{?6ux=)ba#RfDwZz~PE359nc1w%qwEfPM$iU> zGOc#d-aQgVk?J?G7b2xnee9TW=gyYAQ*DKX*4uXw#nTXqHPP~+k{A2CB~hY0t`wSW*j{wRO8@F-#Rs`y+j^mPrNpURpxCuHZCNJ^&~opRVn*I0 zhi6iNuBEnBlz)PtqI@Y-Tn#XRag~rZORn_-3w6wnL8+pN((z5s$(aHU(j-qQs)ti> zmoWl_GFwo}BI78bQl_*miJ$hxvAO;NDhF)*IBx=73lKQl5)9q5Bm^+)Ic|eal*i2O z!R#JJN5+pHYP%hqrhmOY&#Kx7KcByVjVTve8Sq>LOMg)73R^Zs0aHHS``gC{8jti{ zi2^{{T<*n z)VydmJv|*~h$#ad2Vn#~%V0rAMWN|cX6p(j#$y0b^1!{}$`YmvW%x)%I{Uu2?x&Mu zx3hCUH#fs~uc;-*V3_MY}-ccPm6h(Zn}FP&CcPGHRT;2US74fTyK})Vf!7uHNN?4FMM`m zER>)5+m>CSym^`P0{|*JC&=AOjPLNb5-tFXZ-GL&EiIt8t~Xs?S^S4n`++E1nT~~c ze19f3Ih|vB-5tuyLVzFt?E8;Dxu)=o1=5JbQNNtg*GBZ7OKYUuBc z?tkug$yuc^De1z0y?^=O%kR`bze#2UgX8F-za$dLZ$17f4=7+n7&2yxKxI)T97^Z% z(~j*67e2b2oK*#d3;y`tODS_w0N|}(pWNGUq~jl#1%wQk(UGwq)&B++uBv%3n130N z*uOU3Na_S<_~%+yDp8z2kO2Tmm2_pt-o?z!EZK=q$IVo9ddZ~) zl(K7VQcvqx63CF1A8~NUkfxn-qE&zIbtybR7AlF638aI}~1>xKjS7Z%%JoW^; z5xv#%QIBQK0f5ebeqxht>KsHnAAj4w`$|_w9{>#Y4J&|>(#7`#{mM*#bWn#G--Otc^NrFm9=qpI!)YXFr$aM$Z^KY!cXGY9~g z^8(dhS&^3RL({^-vS>t(0L>DRgG;U$u3>^KuPXWT-(LpzkEkC&Rr&DpiihuafJ@+@ zRHN$wGvVjW9&kf(T}Exz&Q6>OvF_($J--mAkaAbu=68L|BfZQASvz=r<$k z(Wu7%5ru}K5M_25Stja5%zw)l>SHizl>>q)^QWHZ_5l@ zqp{4{q3hD69XocMK6T3D@$A{NXV

    yLZ1(SGT#jxq02Xbxlo8)qmC1C*FN`{nyu@ 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 IM6N<$f=mi&8UO$Q diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png index 3cb23a61e15a137fa4ea41a66f4e4b4f371a7121..314c55835c85541f4276e1545ab5784f03f41cb2 100644 GIT binary patch delta 1246 zcmV<41R?v63i1h%B!9U{L_t(|oSl|!Oj}hL$IrQK?`>~eUJDzYw1blB1RQTp2n;{4 zjwQ1nriq9;)EHh}rV-!Bz+^gIA~VtK1Jc%FwoE=anb{D(Y!gskDvWKB0b?uUWt3pc zgtoWsExkR46-s;CLgMq`-gD3M@9#d(bNZZfxs1mHAOw$X{eKo}fesW&6yQOK3n0WW zETVSncSP_Yua~6v4}T7Wc$&g}--x_kh+()wK^u+0yOsfc@BU=Tf#h$$Nvx~ehP%|(Hd|8{ zn0R7+{i?|%si`r2{E77RY3I$GF-MLpe$~A0_AqnDjsu7#)KmvnoEuntYG`P-wvJUz zOh_(Y{Mk7=D${DsXV1Fs+}Y94z{+v%_`8BwhT*#)}wcrm7mbSN$^_k%)Lw z=@=T?-G1TG`SWB>HZGU#Y-(K6>d4$2`tBrSw{Jx4nW?OL`t~i1$79#w-;NIFt=oZd zh!3i`5{Y|e#?smf0G$8uBLIM<4Z|rl3O&I_==;xDz9_B6lL%3W$Ebgap~7*?0@!w4KUg$ zpQxyCzWxK2o*FcG%w}F<;wINIGJ@Q0md-Uc?i?Oo{NhUhK6Ut7%2 zPrAm&+4*_Bl;N)!^$VL^_w+Pd6kwd_DAE4?3x7?Y?rdn_CP+MHOC+UxYRWh8*TE5X zpYo;8l}PZUq}Z}D_rr&PVYY~XvDt#Sm{;eFo8k=xg^77>?JZaL}Jf9y{PbgA@xMbE|DBvTfD^LUhu>RU5+~^_z z0Dn)q%Qvug{T7-Z#4urgeh?S(`B5s>^5rY*k31em3Xsc14H^Ih$VEdw;k)_{m$e8m z$PtMdtJTjH7UXji5`wu9N@{C-TnIp1`711QXYfdNxvlX9T{Zr-ypy?%9J z0dlbU_ufxBbqXVhmCjDv@7+E~LS3zY>wnqoY4<{EgFruq{PQ1v$A5#%KWrVE`(67X`RU1$JlK2#3Z3e zgFK$4rA3gLi4eMXurx}gGM#9|L?WmC?;VXNY}c>Hz4hil&1ZbeDA(&ChqK8I?0$%=s35_;BjQpQg)S zV<-xQSV-?cjKF1jeO%egEJv90Ek><=YRE8CS!M6*5A_C`ATvX*|6Z7v7wQUsZu0l+ zQU1|u?d&wSYHZi8d0ljHkWg4qAXllbiYqUN-0*~m=RAZkTCI*&s~LyGIWj^Ujf~BP z@dZ3tvM@J?6Bob5_rq3Pzi~)XR8%A?D%w`b<{}jNo9qADf2mm6#Osx8LI3~&07*qo IM6N<$f^0-{B>(^b delta 1275 zcmV4bhJKl-w0!tzKh#QMP%z;`Eki-!qeQDxszrt()JQ1| z@+iZdnQiVpk9)@$GMqDK_Sw(1*FKDh0Dz1?1T0u7C)Jv>|6onn%bL zAo5${CNtzrS^KG_idzwTA|XJQL7^0g$Z`jenFk15Jt^H>2$j#KXX3ItkOo8;q|^d2 zc?!u9Td7I*mK*0ki@*RxZtPiO=8EDTiom71q!18rBN`nE{Tz?S0l?#RmsM_;$+6PS z_e@>nM@B+t;mkmD4kQJx6% ztJBF+Qk|rbOECD&*o#lS>&eUfsPE+C6-QNxNnxJX4~g*|fPye7+?@UT^=s$cf<2hwc|eCXndmNHp+^76?hW#=qqIa(=&Zee&vzra8*0?%R@< zdZzo8t$&%Wt#`Ws;qVIwMB*fHII_6MOtb`&LN7NMo}4|@@Y+gbokwwRvA27mqtNeF z5M5hc&$uI`1Z>3dZyb|R8lA$G@O+U0D@!~r~u@DDTTq- z#$aosos0pYu%0#kBLLnjuz=tchYZEpdMl6}Y+Yx~`w; z>N?imJ~}!wcjHE$*So3fON)!u)zzWUV1I$Hz>||Rc=2MM*X#57ejOh_7z~mFKF(I2w(Xm6rDOe5uFu#)gKBjEv>w$lRRvaBXdWe}8dtaejXO(D1PA zP&-ZVd7->FV;UYF-cw)S*Vk8BQ86(w5eNis-kksL!iB7??A6uP=%#^dUDqR#h=0%L z1A=%grfHhRk>-wx3Co)dVKW+yCldPufzHlOhr{9b`^(BpdwZwK%gdck=E==CIShzJdHkL@lKkx27)Y2m8NzOi|hBt5Ml+=`9b2A_uYj0PT+1Ip>$I|L6cQ(Z$`Ay+_x447(S^?m@=*mPi{Yx#nZE|CO^M3d+*LEubam8@5ReE?(9=tN7K zT{MZl#h&q1#Gp`23a=J_+Mq;s6_6Bw;6|p}&$>Whe^V%b)O^DKRh(>A;ta(D!#4WV l&Ndh6KaUDb>IM}k!oSP%#JrEnQ7!-g002ovPDHLkV1oVvh=KqB diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index 2dcd41a03ee8967da73f85138e9ac0e100dfa123..f877e0de0bd0f37a712ddfc77a178df9ebce9fbe 100644 GIT binary patch delta 2961 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 Hu0mjf6P4Ol literal 3820 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 63168903bb6952d9b378130ef306a69c4a02a2c7..e8f79295d1133a93da4d734bee2e8d2d7c1913e2 100644 GIT binary patch delta 1757 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

    yLZ1(SGT#jxq02Xbxlo8)qmC1C*FN`{nyu@ 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 Ef=&BrfB*mh literal 9999 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 Ef=&BrfB*mh literal 9999 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

    }skU%{FLI#MOq| zfhO{)GhLmFxpU?quapzft7qhm-PKYGmVD|tmaeN2B<$)=u>%JwNj=qhe|tlAS5sKw zbr?&YG6jW)AwQw2EKNhWD?>*|2 zvB@%3LKez0%b1LZkfemT!S`ABw=W1ZOcs6y2#w;x84*7`Epf;Y z>*|t%&sSF$o>w-a4IbS1p@-Dqur_TnM~yaSWMud5O{Ps%QQXENYI%9@9#OY^FSMJ@XQIGJj)K#k@uhJYN(jR$53A?&eld02G zbjV-5n&jmhk~D3bCsKZ0)6y)ad>Lir1{QG2ZaV4j+K?jz0v@G-Mf&c>n!pX3X&D4&s~$MAWuFzyo98`FNwScj4ZDVya3v?V z`~Eu@?}3Z4t5vHjzyI#nK7BlU_A;UpwENlgEo;T`X4_!wSaBEn2PBBo1R21R)MWbf z!|T?eYT0aqFX3B+2oyD~%*-rO?qo95LL86_T73J#T}2vf)F2QbUTiZ_gYz0c_|tBw+I*c0fs$ zPtE4fGccp{;K70~zeFBSY|oz2-Mf2PK++X!*BNL4$L8^r-s&dqT@K zP+w6?i5@g4tZ8#(YDl=@Baa+izS6wz4>60n%1hLU;Voy*RA0-F9!(!Kh*Vb6cL!>9 zBFJ29)2(R4(Wz6yz=3LsCF>I==MPE%-bvt|v(Pbio*%O7Q) z?^0;skzC=;UVSC-d%GCGHKiP?WSaQIlljY6@p8Ro5-7L>fOw-%7qJA!tIsXpd*{~< z9UUI(d=hYNincPAFm9ZhG-J`CX5+^rjAOdrC^c_RPM##@*)%kxZ_&Kv{P)!tcR~Jd zy?T zM7t~E#*Hmmu!#2!Hj8W6FriN$HMnrm!q`roV!Cxx*z=IV`ESiK{8Ax`%VFWIR;+NU zd&Ok=*aM@`iBq&z%(e(F_o~ab;a$6`FGV|d%EymGL$DK}^P4uQ$Psf*7kABuM9I@3 zB|rXn4e~I61a-$7Unh*4OrLh-_B;I{9n2aB$KMr*yYtSFAGfI<75aiYD){u%^Yh=A zX}O~O`0@M$2T~q<5F^y|#i@rrTSgHTOpRh(TAJ!DSAOhh^}l~UzkWlE_vFd=;luOZ znxz}usH32oOqt?p+*mCx>+f$>Y}!P$tqYWp1Xmvkf-Ad3CP+OaTM<@%`lrMpZ~4A` z>a!yz#u1-@^78!ccM-&odLXh>r{K*S0BWkO7!dh~TVjW&6@9i`w#5%2Ljfxp+D}MA zLflO^F=@+x{Hc(Nuff?@UP&1}ieM?MNs|T>##4?22+N?@20G&}+`JhfT>R~~XvRwj zh4=9^Pv}PBqt+`;|AZC zuL*-DelRs~wP};^fB#qT#+#JR$hCm62zu2ly-hOFja@)?2V*HKa;~-oJW!A%DRIhE z;jP8{RRe|KoqdE5(zr>(=bt9HGP6m+@L{PDoJYb=9^5FVy?SRYTA@!WHRAZnVBaC40LwtbmiAy zE4hV-w^_0LaOZ1OT@>C!c{%Qfyjdvv22ksCHtO&|oJg00(}<~_7X*kr4IjkvpS zY_HyS4GbJ=!3f4c+`z$cV@99<=wl*coGeGs|3iUPnFmo(&Ngk-Zi2^}S7&CD@^YTu zC?=q?vdkGTwf_6=f3Ah+(3W?zE{>B6ge5= zmb2#^-m;}K{S?d^a}$fR^_bBU`u0ue+ZUN)sYa)d4jWdy`g5v8P)6b6k1L*jCY)No zP!h@xN6MHn>U;5?J*THkG0ygv5Gvifr|t3;2&0%Ax=F245zP|~^p(oWPX6UDSFHU~ zVRB(%&EKALyk{@1$$CrLfAbB~AB9_fIML%SIU^(c(@#^piyaYHUfFTyFBM0RDqGS4 z2h3UaS=II(LfYfA&zsMi8`ivquZRIdfcLHV2U2u&)A{p{_qiM1N&}WTs5XPa7uAHi z`&w|p3V6nn$CLT$D{U4mq_(;u6xHL-5byp~WzqlBPo2P|DI-+$)mNU<66HuFj1&L( zQ0_C&QkjB+O4n~F`1YFyy%d~?>(L`REv;nva@y0CZGv(ysj`KaoSyP@bhmC1>QVd{ zhqrADn^5@OcUk%(GocH$0pb-k;vN_oH+ZmZ#2}$IwG{)DT~9rGB|Z6g&KrMcct7*P zkQPrtfhYGIIP%2swjtiNPmIbmo-rxPNTmgO#8n&|D{#Qyi@Jo7B_-dls6O6Pb=ijC?Kgfbrb zQ^XHHIHMvFAx&R+{?Mvbp0aW^bIR%N$zH7&m_DrIMe1D%TkZU@JwQPwIsyK4Qec*s36Pc=#2|Qn>S{ojky6iJYT%6D02nuRr z;mr!9a97LaD}KGEGb$(&vJwPdb%{hjFH&13V>(BRu1TOe?ij?$Z~`|j2QrLQ4rCr! z4=tE#1gw9>ItEH6#WOumHS7Vk@?OF~^vKM)4JwvkovLZH1y_5jf7w<2%Px=!(raSp zFh~az#aUwJ%!q5c)RsMzFR+$XSq8$IHEXr@%VT}|pz=zqf-J}id}dja1xv;pNf5_m zR&;?Wg|WzCV^E>PFb4TsS4xY+xFYaUIh-|yJmqsxl&wk+Jdiwja-Cs@0?xY3+$((C za!a$hb5D&M9|(zJJJ9gk=B-S$qhs0|-Z>qQ=~c7QQ*CMUOA^F^R%5eEl#qRKLWF?K{mwEAr6(ZPdDHf^@o z&6rmUaa}Al_>k=pys?k^VrUtLKq^Ev?gBZsIGr|#5BlLsG$dO)*DuIMrR1d6UvG-+ z81SKyK>+bO`_wgc(m)CiZ@qfeZ@1o7wrjWGVpvGxEqWh-fHl|-1}o}u0s-Rk!SqG} z`}-JJ;f5DD;H$_#p7kRkn69y6TMcisVM9dcYtV&)3qd&ya70A5-nj92zkcPr_K2pn z5B%W$kZlebqp1j^S@5M`<3F^mfHal`G5PuwhAb$PrJSmQWa?S>5}#*Qsqy+%J> znzBaN4mD#)q*V~hB=!`-QuYK2YCt;%F!$dojsT3tgfwoHx@_4+zzpvUatdX`3jmJD zs8-9C=Un&JnP;DqJu=Thtbtg^@!1v|`y>;`H!A2Hgk>xKb*P0&Ob^8vMRdQR<*HR- z`YO)_2XYbEiUHW+NPhB3XQPHE$4@|RkN@es|1BATI0dz?f~iDYY)-t;ca&km?N-5b zo`gS?-L4fD#12a+vRBX6t3P){viGZBI3PhCQd^6FB`N-aQ6VYGC&!L=pE)Z&N6?6j zko6%awsH%*hs-a#0yM~)_AM$VWr>H($PXz>mu0!qk%W@|^5@1gUJ2rS$l8RuTe1(J z4j4!G?0waN1E(IDT(n}9$76ZlI-|q}R0hq9tY{C??byarDx#8bI)%kP2JxLh96u9O zQ%X)w{rIDpUcKscMa@sRa7Hj2P)w+CajBm!$?Mbi>|dX9=bR(K5HxEpLtq4A5#LND zDw>_>LR+o>m1FWz{6Hlf(W_U>MGHe4HTE;lx`vA>b3jm?PZJ(^Ahvh!6Jy2{Z`y1f zS3Kh((;Um8dhSu&{<{o@WTz#($2j6a{kXJcb9XqU=zjMmKKAFBTW`Ch1Wzlt6lD$}V960XU_fmD{^!5i zcxLL<%6nQZdP&Pvgz-dA5weaLFr{#*ZA?V8jSd?z!9*D~s2BS^Cp9?D5E6sYItJtc4pI z$eFb?-Qx>}5S@_dBuBpp4%P&FPq>pL9NMm3Oj=sfLw^iOPPr@u3mdrnCcTP_6ci)$6+fwxX4^`>u-i>Zp_VNJWx@q3`$887@I(TZIbYawsP{!G# zO6iHNu3e+=yd&U>T3_1A}Y?0_Z5<;Xj1KskNx zV%MRr083J6N=iuY-m%_;M-|nktgLw7-pYdqtBxG0K6AP%{iNqyPW8!C#3RcpEg{-* zT0}htRlzsnjEN0NZG{t)LR&O{AbyBH&ASRkj{3I@D8+ zda#6g%25xN@VnDi>cM}w4E#Cj;bK9(Dq9a?z}|y2FLo{J;ZlWqnWG*o0N3$Rll5>J zgLfnK#jZp>T$)f%IqJb0u#?Edqg)+@Fb3NI8P|V6UW7-y@?Qf7cnmP%Tx~3>5Bx*z z4nqm34v1-o=oDnDt(KaPJ5?R?1v;ji&7`+F==+{5tEjsT5c3#*WDXxZ!~z!Vqm6i}@_+Zdu)Bx?3n+?;f}{oS6iI?0U_wBW0nB)wf}9GTC}t2;@B~B@Iplx?BVstx z>KaHYDu@dD13{9+Riel)o8I*Q-oy^oVcw$mZ$GkcW;#@NS66+jI>iYg=#K~lA^e9F zWKwdaiTPjD=8rEk{znyLP_N&m_5@)uQ=D;mUYh>}pZ~#SlIYCAH|VkKP-#X{3gP1_ z5=uUKInWt}zyC+lj|+c<5W&%z19Nm?;^(9Yews|{Bqm~WA{1R_l<3}RStoL>D%GDs z;@@9z(ft`&t?+aKbc#Lay~?CcaHC@8JqBQtG#$}3uUcN<^m~F44qlqnDy`f=ip+S1 zswt=@k71xQKL(hCs~=0fv{m55Vvv1hB)_r<|{7i)jC1S&pWtdZ%Sb|g$-?he)0f9Vk%yTW z)GN3L3_9E=+Q^omgk4-y5mv|wEvGH2vO(kwx}ieG5sLSDSFWVl%18k%I|9T3Y+7rU z$qbSSHIt7KX^BW7o+SyX*KrMVbT%cMI4&jAym>Uwm9V~Kb=ApcQ2jC3gXRqyHL#I6CiE*J^^6cCR+WEe zgh&8d#F|N>GEs<1_38wa+>||L2m(iM4mSiI34LNtJQykT&=3~031iWJVV;z=umZ6w z=ribjO<+^%Z{r*i(i!X5P=1<5?HV{mUhg;K^FruN;OJOtcNoS0Tl<@Q=G}J z4+>raaFAm1IgpK<2{S ze*^P?Qu7%XsfdT=QUKQ3!uX?If9j%W9u1ho2o}iVV4=6+RJ<4mf=se&6Y2>ygizso zb7oXzXzKVdD@Vx2yxU-hu&f}Y!W@F2H?aq~ER02KB>TT|f%jfX!KEoJ9R3pq8HZO) zvy*6O-81zTO0yGqXXb>UBL)=7mb-oN4wf9-#lyO&+}w zKtA%jPK6+X5a%fpBnFSlFc`ZML4bYy8--3)ly68^C6gNli8g?YXbCNu(Ia!ZU?YYT z)Cx1&^>R&b-WU-pF91vxuw^B?(1gj3Nswf&DN_lEbdjV5guqYMbHrPcpqjEba9;5d zIK2e)s)=9_=upphs#B`IEA*by{FW8wxMo1xz>NC{#rFya46DfuMj_-qkW+9^Tma&!zq@CI?Db)_Jw8vr+E$pa7P>zdmfh@oJ z9MqN(i#%4G5wR`AxS4`N6LPc*3>9fJ4aQkiwzx1cEIEE}%g&&nK$j?hj*){lM%bF5B?Dr2{zHbrA3H%uLRk{3l__b!b)(w=oI^$^ z3$oRSo7(qiaA{OqjxlVOdqP5nD=;fZ0=mSlHK8#T(WH5n>~+ zmmsU$VGN877?=H4R8(~PbtAr6vJHnDw5W9tGy>ssaaXgEy<3Xbe71e|a|Ne2uKCw{ zdS88QH+~g}p@I^0tC-I33Yk2DGX~$pMRx|^AC+Yv3QP5nMkbkQ69N&OVOvsCx_Z^x zwcq@B=-_Xj{*k0S`<$~bzN~$Ab~aX1Oo>C=wja57(znaDW6Sd7IqMIQsuV|g1p_KA zMsR%R#zQ0Sn6YBnntwchUox49R9Oj`f>soA$ykiT9#T*ZXA}T8d}hcQ$eNJDhYwGm z`sOQB3W|QQlkp_B=#FAsOc+}P*|W<(Jh}0#xdqSFtXac^p$Q>B|NP5)Z+>B+tZ+jv zy|4|TfMa;lSu?{23K)~v2d{r~##yfp8Fn*<6=4QJ+4C};rAt!j?T{K0e=o&i+xBa- z=089B&ENKxR(^GxIbK9>%ac7@bW7BEst)tHteek1N&cVN;puRJjFHnw8`^^FkPv-@WY z$LQmac+LpATt+V?J42$%tS5%QH2dALaIsOE&?v4lPuUl#Da$7?n3Pa=DTUuy)13&D zQu6j9gzVkB|GI9&_xyOo!WK}D%K(F-yJmfX|nPoe8{Sj%u42f6|4IV+A_kj~wQJYCJ8O9y zXNh}fU_BU=A9SA!DhX+J?peu1()C-ok)(1LOq{GtC?r_{Dq`b|0J3 zZ>|Lhfh;?xM;HF*<2@USuw`My@1epWLL?NG)G~RuK^$*K3YFjUM8B@xFVwh7IgIG& zms3xxBO#lt`@ap3-aXmj47er5{wHZgnG(8D+f{iTPrLpM!!Km#C3DCZTsW~)f?rViu_p*4)hR&>o-2R@3ohl)$k07 z_et9BLj9-?C1l>)A3ku~WQ$}mvcWfGpz-9HHar1(d5CD>nu(gmz!Vu&E2LR{4iLsa z`dLX9R4O5;qFy}d6%`dPY zmL;uhE|Loik&W(rv`_!*yJO2@?L{8!3HV&jxpGY$zC$E`!P4OaCL=pWW6wZj`kD^Y z@2MOs(P#pGQPB!%Y9Dl{q@{Y_iXqUGyj{7lH^P1}au@*K7k z-g2ElN+4QWIAX(r*}?pMxbQ<$h6yiA!E|N320<2dV5+1lY?}}WiSnqNuYwFn z`z7!nogz1H+IHL3qkh>|6n^x0A=DbkSr}TkarIXhjJc-kaC(lG)s14yQ7>8f>cd?O z%31`Z5d^d}cQ}|W6I8k?#1CLpJwO4y9F&Nlr7;QDdl8%1gqzqf3mRt{z#HWKMa%9T zFbP-031J*cBtSqOhuDAa)L_!T9;}gDjo1}R62#idorW^c7N0}-z_ADt03XWy9BN@;u18!D zrqox^xxP>W!p%}}o=B$?WR5>W&Sni=W;_r=J}mh3-kYAs6*1rFU?G6NUc@G;et+xo z*i(aDph{nag<0R%u`p~+Y8C<1a%xEJ=P>asMN-u>BarTX-6=9qQaXQaEaNdl68!X$^I}I9~QR~#>f8A5cC=}l> z{pU6fW0ZR|AV*{L@nrJ1j}oZk~WklK{-}S;X~qHf(#+)Y&6k&R~4A7~6!< zWqH$rp2Z8SbQD{SvP>$q92sIY?llu74knTjtBA;>Oz8t?drJ#(J1iE94IX~w=(}HW znZVo7=s-d{R({um*9u}o#}#30;>!b$O0xK)6@R~BBC1FdYJP87 z%fhbAV7L5`+utQR@@OO!&J+&-rl;jq!j%yZntQPApl@aXm(HLIxgj78q7a8WMk-Yt34@<0n0g z82w?AvjXfw8j+wa8+XKFF>l#v@S2)>#R#9&pz4&DM~1V(l0r_YTW7??zmC3VCQc>N z4l!phbk^}`{LEohs^kC(e)nK1aN>p-CxgCaPtej6qypl!7ZoB%C%__qi6>${sGwr{ zn#IECqy|-A%O88%CkfU7*CULGB1OVq~91p-UeVObbklQ^I<;R(`F4n@h`Poe_=+m~C7%!i_59 z8IPrxDfXnJfkCBn(StpVF@E-?2L@d~a`nGi@TfuV?gYkdAF+ip zOC=5hS_;T+(u9J1fCh{85!NyXB~Q(A=hLbgg0=hLR{*xgg3YL{fhq05$7Pz zRjbx4|KO|L+Yg?6dW{}^J2lNaOJ+73izlO0k_3un@S+i+z>`v9G4;QCZbgyV@24hp zIWulrBQnef6w9IMT{5j(pVO+@kRvVyvz?mN} z7!?}H8Fy@ILhBcoA+U@WnJF1#zfUDd0)wL38MlaLuWaN1<-_X@!$1p68WuagM%%Xc z?>qSOFMHD)6PSEy(~}NXR#sNMdZ#3lNf90zQ4#dMfR3rCQY;}?6Va}imjy#m6)8y1 zK3DkBBSg^$c{&Iv5<Xi5ysKB{RTn5{w-B^3*n&_TrogkG&DIv*I}6Ec?NP zUDXk8fJ4-opoG!`$X|+z(ZM|>6CZeI{u`gnnEQCG+BH>&3qpECr<4?fDbpr|5YO+* z8PX#dz>ukI$S5(L4Sel&Q>p$N;<+;}f54{d>V5%)IAYfk51g<~gY>@%Zc8$Ug3@>GbWO=Wo z#^EDeS1wsmp#>Oh+X|=XLf$<-9mG0>ko)f#Uwp6v1#9Z)sZr5Pp&Z}s-|H@Ae=&trAZ?EBC>%w_I{r2h8!iBIwXEn8pyvD56C=+2>dWg>VU| z+`D(*>Q6StaaQ;?(7O&>SdLdautbQzRRB|)MX-@|2(kqP+@U z3U{b0QK`dQG_fNpC@wl7WZR~nfq^dF<4 zDr94nZ>0`z(Zn`T9O~!?4*u#+hX$XC4+qQaqc`2w(>v_ZggT6>SFd(y?>6tf_7x#P zKlyr}prXU2lH0UkDk0OIp99+b?mZx%S zf_d%{_u(6h7z_D+&(IWgHv`3S?b^A3sje8=gw(8kyt@FL_(zobf`|~|P!+Y{fXx;5 zXK7gpb`NN$P9yS?V^nt3yYb1`2To)&hBB&jC*XQP7Duu*K|vjuyP2GkwF7T%gD;qq zl)@5a_KAuNBJz`%4O~|hTMI~s{z)+L+;{$Q0feNGR`JUUP*N4Xr!8ug)PsXUtpHt_ z8S7Ad9Ti+t&L( z*{Cv=sgPXC8>x-egu10bjpNlZkb6?+I#ore%T)6jQYjbMyVMwGcRSMpS%r|K<1zHo z6K_>PSg6a8wk;lIMWtuS=UW&PttJOAI29EQ+)Pf|cvuzLi9iOy%wPbxSF?@U{}LJ% zRI_95UjqpYF9f19BCP9N=@8@Gc!H4iP7lGD=OG`2_+raIe+f0i3f;%i&4>`?>VG%q zp#Jf&Dr(NqNHf|wh55JGcSET2mzZ4P<|5xyfC;2hVEqaeMAyahw=%jcq!t!tIOtt- z(3iH8U3Z6nq(@m+w(FiPtyVH^%KWp2TG80j@$a6&C4Vy6r!jlr-n(0Lg8%ub7V zTLFkW9jk&IRAvl0jK|vl*FX9#d@1SfK(q%fEHxiQaO3M1zd0~IQd|;JXl(15Em9S= zFX*h7mg>GWb)TCXs$%h?43`gU-)8kArw_08r$holjENZ_!dy{|t?5m-_>NV?9^OUM z@Bf3fvX>4-R$vtFY z_wK?)b5_{I#*{(kM#kxBmx?nRo&sgS>Ew(Ni8xNf*1^&^0i9`i${&v>!vcPgG`~U+ z&}tHdtKlCOrBK9%GwJ?4dk9m9AyDAn#w+ED^0zZh(P^n2P`Tr>lqD zJmKgeJKWUnp9kdSmPnm@UbADlg<3r@K-nY@IFKCr*c{IRqD~@nf;RWSTp+V3EW&X! z^P2?Pgg#rx-;DrRe8Ec~SB_v#e$zMSu;MoW9nOh{XCaza1%>HT|ub&lJQ+ zl0GIX067kSlO|`MR-;CB$;boxLvIu5zXp?*%9vEEaA$%kB|s1fMuU*d0pvLHfhHH2 zmhnfXcS@s=GyFUWCMi@@d^9Jgil(A8Js1}kmlEHf!wXrc)oAfc5ZShM$Fon)Uj5nn z{l65^%9*KwZCk0NWhGH?X9CM{?s&PVXG?Aa6k&@Kh&QSuY|GG0ZweDI=Jv{J&&4+5 zJPFmn@>+(P@UORM2iL4oosdxc(8p@UNY?bp@80*wU(BcM_x`f?{kOghjWfs+?OU=&5ZB&m8yOrVZO$ zw#`dsxe+Mebl4%txdkk>XV>2RH&+xNNFjfn7^Y4L#F*4MwYJD-!E;$z`QQICq4Ws5 z0@o`wz%Y~~3a~}++viF`?7JSl=7eg;0~P0`hk$)VnSik{Xn7_9CA~%qIoZa6Q4LWX zevi5!-Xu032fOs0(;^QgQYaM<-B0cya~uU0j;&bq!{>`Oa)xbS8*r#3eaf-_F>uCv zT!O4WwQ4A(j*w56efjg&!`OlkK1Xzq1V%9Symmfd^45>E?9#v$8_-I4u4Jru3SJ3t zL_ZMCdeG#$a;YXZ3-Z{aX~l&axz$=<*z~K#Tj=Q(AIf0l-S}&>gM~i?oA`r}IW|9# z8P2EjR9Uy)7f6Up|NMT71s(G@4(~amOWz?6PA@*M<~QLfsd6R)bc#bMv2z#b`*vgLdv`W;&cp zCCvmXIZQ-^lYN-EY)LwGL74^+qT?RDx=b4V=Kfv94lwZhHw1ZgxM3o1 z4Lq?3PQ@y29@6!m2L>dQNr44{gUvW9bgde#96kSDI1`0!g+dXs|dM8X~eP!~sjy!rGW&1lLaF{9fw@Y{lEo|Agjgu9fd!0Ar!5bPhs0XqIHR}d9E1;K^`Wt$w z1+3DVD_4R=d9D5!L0Iq*Dcyhr|8{LMEAh-juUO?-{xlXw)Hy8}l68cR5LlOvf5KhW zS+7}*8E=mg4vhrJ#u(={Yn1=x3)7x|^ULMy4*H4qV8XkKC<}4#%I@S*{(^O z_AP4W)(9*^HfOH0)dbMPB?LAAp#YNL$~Kc5PL#}cyr~Lc)SV$R5;MU}9f^f+x$Ua% zy*f>J;@|UL{wzkkn+zylsyB2o3ELA>t|#iM*YwZay4g40)&0f+y>fE0&D>~d1ys9M z%?BSJL`ev4hQ&W31k*IgHFRb!Mew4K2naxbk9`oN$3AHakc42c@-(QNY-Z(Qe9}p^ z$3A!O^?&XD@I4dPt=y9x%dwpM$?3CO0$-(jOek{PnZC;vm6w;Jtg?OsyWIcK?NyGe zB4G=#89e##^$cf|DDXRmU$ZYGS*}nT47}q51H9xOYAVDv-=WOaAsF-;J*Ui0s-7(C z>_0V~_t8H${kZj;RqM8F-ffc#90~@=+u*D1oGQoVoqcA@)_=~;tqzL%Ai6*rL@V7N z5xHI%Hpc0RqO6odB5Vnr0wILYPz|YsARDWgy19UeT`uL(%v@rbCl^lksZ{ZPfR&+`IX9ZH(EM~%+Ph3I z%mEecJb zXTV5`l{*wg7oD6uYONSA<7v1pr~`jmkCg@Rpx_%F6iIA497vgHY(dXKMiEDGMLDuz z4sM_`AQx;eJuX%5wh+$iXP2*Yd6@%0p)sky@YX1K?q)zmslYtBUdH-$7Bm* z4z&V^aI&ndY>BLr1@nQDu~HPAN^)TzFpeZ~hGl}qh%bfL`jR<`E7A{x>Fy>!vrV*kcc&`piSrWf+M~Y1h~c68xl<+@vAT+ zRf=;k^jqaX1M*PK$|^FEd}CH&8B&12dddsORMwo5;l;KxC@^s_;}0wvav!|Ac{pa~ zc|o;!Q~V&1p{YkDWVqZr$GlPaIaGzqIxZ5yAzY9)p(Z`I6+Xy{wlf(f5X}#WnS%ZU z2Y|<)+|B}sXuZIf42}%OWuzdH)%+Xb1YT%2~_E z1|ui&9?0zVfaTlbste%x8@@?C;t#!iIty_2O-1*z#!-SBm?Ci#k z8ntWJ?wV_^IpKs8u)x6SOMQ0l{`bt8D?a~x?=O2X#+GF@Yu>DTw{AUq_6&9m5JKL3 zbIyhh8-f#8-10BG?6S6P+hUyN#YvMU9s2cGcU>{YD3M6y)gQp^~JtZPlt(w{G2#dZL1o$Fd-k z)u1RKRS(Zg?Vp+Iu-MZOX*+-8aUASn`qWt_ZPd|O<;K6s?aYs&0PLQy;xOmK% zu`_1QEH5iN_uO;3b-NrPw07-xixw@KH*fxnQ~vq-Yp>R-b+)uS?)|@|o{_Z`6#NQiNUS5%i$I`bK zJ6m=MA+cD@CU!+C6>rPEh;Kabx%Ex^?TWzNX)S{rks^eY&u)@aeHnW6Kc+HW@qi>6c!5 zi6GR!fB%USpA9m6?e*7(4jua4cWXzC969-g7u+H)x#W_IFTVKZn{O`o-~)nCMOpd8 ziO)7^(!^yQ%d-0R?YnN>x)-NRAq1UqM!om)^K)}^-LGxiwte@VcU!k=gooO;@+ z&rX(lZ=jG)+_2iSSTeZ4<;6RM6tYqT#*Iuhut(t6Y zOGNAxUQz`Fe(dsjDVam`63_(#x$-8M9xGvNBUDman%=f+#VS(vp+kqh{`%`yty+mH z7h_z#diD10+qZ4ocG03m@kIQLGtNk_F?K?;X3gGyYi_r0-HVPE&z}AA4L96y_St7+ zjQ8%_JAK9s8=;d{BPY3tXoU$9`o_;KT0VdHjl*RGepUr=CS ztNxj1Ty)Vz%mfO?-+lKzBBWludJE>y&&|yZ&!NHi^m?av?AT%H^5qEQzutOlhYlSA z6*|KFQz#Y8OrArsfLDucsw|6*$g`=8wRDF&F_PL<+bI4$aYNI`) zLa$|*RGY`l@!CBJ9n`hr4SJO$}6udUAieZW}v@!$y#t5M~ zZ@w9iC)&4fH+b;i7bZ_GFRxg*Xwj2TJ{gb4g}6bkG+brIbgwIVju|s1kw`3C{z++R zX)>AIv12E;(o|<>XY)6zAawL-F+#X@ty=Z!)uT&DBoZzw9DjV(u;B<GdA^9 zh(=TTP?QDp7ua^{iP57^IN^kj9Xo#f@#4b5!j&smo`3%Nm;%pSMgW3xLcKHUrTZ1* zqT-^hTemiD+&GblyN7wLSn)ZROIc~zk|j$qM&rkibMLt4s3q*V&ZVWLLxv8G#bTW< z>@;A&0O|R(!BLiy2=PQh(_qJRsv<&8tWzceb4bd_+^-%Pe1+i@ZrM) zQNMTZ-kWZ^@ye^Ntbb;Gal5fEB7G@I$k?%CH*em2;)y3d|NJCuDQfNcIQTOx2`MWt zkH_N}yhDiInWr;PkNG^8mpALHjeHpo>`m zF6tsm-C&P5_a4mq_uvdMTiJExQsRs-hB^yB*eQGQk|lO3)xCRn*XXEoa-F=UO*d@Z z_|s26ef{<7mMvS#jUQ-okdP%ymu4li5hBf-H%l9kj-5Yo;>7;_`yV>=t7YLg=FIux zi!TQbyuEMVzOD%hZGIt~|Jt@w!-fq*2;Ft(osAkbGPxBNWBkL04eQsfBaVlrsHo_L z$&*V;N>X-8(sGnf^_cWN2{Sd#j;$4cT{(DGr8{^qh;C(t=q6hcAuB##v1{k9jvYJH zty|aig8vusb??z*qhqs-8Z~O(ym=OF)CK!t!8{4sQ&{-iq)8-wz!DjL|NS0h!MMe_ z=dN10@{va#d1KBT%d&pjvHhWkAAR`YM=rno@`oOJ(Cut7H;+(4Y}+0(bm+&6mo#nK zWccvmY5$vK6wt17g3!c?6UUDq??#BlVpjT09~}7mU6srmg@nmeJ)tUmU>5|sGDhaH z6fz(jMuMDRGE0SL7a$&Od+Ee3L1@mLIk9-WsHkZ4=+Vf(TeGlmPby_w7XI|JPuHzq z-z+bWKaGimvm}Lug{f4kPMtbOj~-pRbm_=ZqkcVn*iP9G48Ol?*REkA$3gP^^Uq&* z-L<1fKe=+%s#rWm2+Du|y@C%4h7K8W|M2@QY{8Xw{vJ56A7Qj%!^Y{;rw<%BFmSGL zE#_|54*K_o>#x7yf(u;w3kwTp%$&J>`}VTZvY@F1WyWWU*++mWnU05+OJeRX&=*hy z;JR`k@OH4G*Q3b7;^LzV7cR1Gd*!OHR(bOgUU^o`LdZ%av)+E|t!9rsCMArJPd@o% z(BL}~@q}er73CGlWa8qBE*ds$Sc?`dFb?k*2$<>o^V{X;FZ%M!mCwI0si5EkY{gQx zJ#NB;($dn$9(xShMoXN{+t&DT9(Z@#Y+_`h~=+P{H2+e>INs$XKxZtX* zt_t3F>C&Zr`}XA(uY1gh@`}gm!R;_yD#*J#^ z=7zha{kgP)f`WJd^PgW2{rd9DvlEF#n>MXmw|-^Mp4}rxjQG#Ic^F$SyfFFt>#skn z!CCYn`E+gS)TuLa#E4<{-G?pfpHru{YSp?|ubzs1`i$N0$7|ZO>6R^9jyvu+-=5;7 z2T}P)q;09-H0gw>CW`w(f0`hhC0v@R+M&Z6bKXFRTzO^R=FOW^?!t7)$;tWW)Tvf1 z_S25-D_5>`rbD4I<4n}mty}k$Q~c`(gzh4Q%$@tz;5+{ox2$g6y19-u7lZyc;Y%;Q zgb<#$U_Qop(W3mj@4gF5rl~N-H{N*TE3dw~X6@QoEH-ZZxGS#cAwMjNaS356lNvQ@ z@U`IWfT#gWAHWin$+-_&wZiHz1+)Pa9Td@d_uJv$mM{M#m9jf^>Ljl3u3x`?z0>RM z*tsJSPvqz4w{6oFVZIFswRl3c@`0e2UYd##F0ZKQ+qW-AtYuku+%f3wciv7Uk_QhS z;Et$t?V~^?S(Y_$;O%$ZF&JUIZr%D-U#)7>x(!%1wWI^??11d>z&KBANGp;)0yRAt zEU>Pcv1lUJp%~hUH$Y0!!#uQ<0LcN-;~W#ZD1T8ZWjATu_`l*>oS#cOJUVxN`PEm5 zO+NVW!^aAGR8(jxiP4_ILV`$HSy}!1_4x@cM@l)juc2gCR+xi#C0n|n zpa^HJNsrpKN9^0TKc0wBn>MXYt2Qzx9buk0dxU)W;fGtcY#li0c6zOv+nhzk#bP=_ z$fJ)uR#bH4*=L^xr!%#(AK+lM%yEL!3C1VD;!g}So#eGs&r~WkWy(KeG3)ZKU3mw& zpQcx@p3`T}NF)-Qe%!Qr^=fAMPa4b?5t3dWv2o+ZbI)yoS#IE}Q=@u~pMUu!7LV`V zwcGW>(!^}sxG@%wmz9@y45m*VzAGsyan;Y3En5P*aQRx_j2; zamJJrY&+#jI(N|qH@pZTlPAA;+G(dUb4_XM+ji!9j{2{BON5Z^+qX}fHto_&FM+#- ztFRgJGl|7H!MJk=%!G_} zr=NG;dBIApg9i_OwqivZODEzB7cM;KoO3X5g);fwdFS8myzA~{BJtqE56wE|-%azH z246RC-u(FEqheO9L;DNbwQEN&^;@=VSuAaj;BUWOQ&L)zot5qK$}NAnW!CIjTeodP z7!Mgbbl$vqRj7%6Lej!){SQA7l2$|SzVl9-)~$1LauSI|JRUDEFWu2`|6 zSMOea!=#&i<;s<*RLZifRV!C+*tp^J(@*#8VuH4A-8y9G(6qOnJ%$7}9A)5ASjWnL zG#ULGMdfByW7x^%hv>Z{$~kB=I4_}5>ZS#&&g>eOU1Ib_HXXDJ3aeT)0`>sMS{ z{KQjFZr!@IbC)jXop)Ydv%FMAYQx42Uw`vWd0AQK&Yh?KYntola8zFYzh}-|zWft+ z_GItAz1Q}?_V(Lvzx?vcF~&LB+3&vdPVYXwxBawz&6+hAcD%4=&6)!S+|;jMe~j_s z#f!&2{q)9-8{J9%rOTGJYSr3`SEf?OF zl$3Pn&@txP$QQ7UPzghIhZJ#x65XsV)fuExFV>L?c>EV9ME!SOlU4DN4 zhaY{kcFo$QOP3;qvXaTZefnH=<&~W~ccxWCMR|Giv(q7%Rkv-s*oOib<5NyKrQrR7 zC!T!rgMxx1M~*ZHef!RxI$;Mp`o2=)n@H)^CnY5%OO`H8`A}y6 z{{2;}R=xEve+iZ-c+EwHUk@KHC@8Q~l;0f-KP1W>evm}ua*eAK!b>nB1~+9a9)I}Z zhk2?vh3(i2ef#w7+ovxWv#%4ltTEQ?o5L7qXJ_~6)2DZzKI|2t>@si1HtyN0XV0EJ z!Ayc5xw*OH$BiTZc*f1e@@H9l^ytyOdv|SvJo3mRn>TL`pm(QEowP~DJT+$9wk@h2 zP<+a?>mX}Ix@^c~@=FycuOe&hgoR)>8cP&`KS|;OY>hE{?=Tmfmlimm4n%fW4HIq! zA?Bq$JVDs7VZ&hRM{bITXG|rNiAIeYXV}R?`GG1?cOYP`__G|MF)CQBm`Nyt9H~Vc z9<-=FsDe$Pt`Vy+Y0HXumkaw?+dvp<*giONA7NO$^7xH&7pdvz()yM69@Gcxsqzh` zVAy}8358n|6m?P-&c#=OQz`a^S)Bet*T}?D55ELz6|?W5>L6}wg@k@0o-|}oVI`Hi zFEneL9%zK=K8iGxqw$c6!ayBIU$EHd3VM~<8B|iUazK?WIIvh_9do=!y98zQM5sKJ zUfiuEPzMGPznYX>`DKFYKzM!?8$A-e!QwrzES?oAaojo>M0v=PtSe2ZJQ4j$`trqc z>AW-nc0<7-vs)9)gE1k7(NybImG|2Gk-?k@R%u4a6-Z&A|06BflHQu&`w`>-F={86 z2-C=iP-tfvjy>qnjmnrIr@_ngbhSmix4QGvW!c~>4 zfuWp{8jLbXT?FheMKH3@shlOuVFC>y6$ql~P+%zY%(b^k@q%cwRE|m@fpBjHNP}Fo^Smg(~VCIJjMaI1gR+Jy3 zQV9>2;^`#CHUsBr5SqSM}p~+u;>~#g?=V0X)4Y4#Wp>m5blSkf5 z*}3=nAZbH2S4nQq7zQ{ByARLumCA|;~NH;Zt{eHYBF zxN1lxx4=@Qd?Z9S&?j0;i)jgYRCr35sE&Qczbg z{P~@^YB6c>{IYLYT%bV&Tkt(T$Ajyh@5ll-eCTUv1Y;x{# zNheeM69@X#tXHK?$|^HcEG<){-U1G>zl><&Mjb_zSuOp3VTJ=sfuQr;pR6_%)r3@k zutBn+fJD5TfXToIt8~VI&?3sKLqj^uze+~9-Z>~k1MdEPQ8=3hZeUZKOJKhWlo(T; z=gfNNbfXop#Fq%JnrC<|zx96?@nF|&!6<7;Lk+Bnz&97guna^8)sy)h)K)rK!8FW$D6qZHTQW}GVTT4 zCI>UxP6;fUI1XDUlOW#4WHJ;uLWLGlrN-b~7TxWPY}JZ7?h8OUtsH3{;2l(qB;)-c z!5`mUA~`TZUU4phM%V}xnR8(vhT}m@nG6tfWUDJ`Ld?gMQz?u%s66120N5({q+CP* zR#Q@rifI9w0ooW!{0|WZj~GmCBR&mZKdEG<{4;Un-~MaDl8hV_>M6=l=uRh5qRT5R zjCzTT!;;@X?qW6N(j{Uq1Ts`^EJ64yT2Q2u4kcboN^BN^>^P{eO@#;7)1pw&FNcUW zj6mB)6S&Aq9Tqiz0#1I2CNq(898j7FSp!>-$Q%Gc&YV5!WkC0FAlP|(M#z*t6HJH( zH4`H|m`EJWLPVG|zyLO_&qkDe5osiGWPr#e%pY+^G+cm*i&RagmNNnX6a23t2$sdd z`1D4$W)Q@A0_iqW@CZ;lv8i=IYJhTC2~!BLb^%9%PGw2QAi+8lS-K0$_qB(JiutJA zy`^0tClsaBnQR=Rz6qlX9#SBi=)De=1Oz4P!e$3yCpg6H_z#)tcAr6lEJe8Q0SsP# zgs1)p!4-aLX)04ka1xX1iM%APFa@In?sHJ48@90^)PUhlF&oG_0HafSJ^TcUYu(xa zK$$4`*OS4#;9?4f*J)5hh6M>zxY{9S*6gZmSj&rQSY6iM)&z-y(h#C-Q~4Py`sx}q zh%j2i#G2;!TZiLc!p?GWB1;ZEqV+By>*Se;uvA)>iUipx6>}3Rjs71yc< diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png index 92dc66819c67a3e6a5b53314b4639393ef6cf9dc..60b9e564d0d15ad92a35410d07728d2d1a752e5f 100644 GIT binary patch literal 3797 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 LNkvXXu0mjf;5%r@ literal 5105 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 literal 12394 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 clnVL(0PF#vAME&(b^rhX07*qoM6N<$g2#* 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 Eg1=o=!TCFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Apskel Owner + Enaklo Owner CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -45,5 +45,11 @@ UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + fetch + remote-notification + diff --git a/lib/common/di/di_firebase.dart b/lib/common/di/di_firebase.dart new file mode 100644 index 0000000..8ab3f0d --- /dev/null +++ b/lib/common/di/di_firebase.dart @@ -0,0 +1,8 @@ +import 'package:firebase_core/firebase_core.dart'; +import 'package:injectable/injectable.dart'; + +@module +abstract class FirebaseDi { + @preResolve + Future get firebaseApp => Firebase.initializeApp(); +} diff --git a/lib/common/utils/fcm_service.dart b/lib/common/utils/fcm_service.dart new file mode 100644 index 0000000..2a1a17e --- /dev/null +++ b/lib/common/utils/fcm_service.dart @@ -0,0 +1,150 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:injectable/injectable.dart'; + +/// Background message handler โ€” must be a top-level function. +@pragma('vm:entry-point') +Future firebaseMessagingBackgroundHandler(RemoteMessage message) async { + debugPrint('[FCM] Background message: ${message.messageId}'); +} + +@lazySingleton +class FcmService { + final FirebaseMessaging _messaging = FirebaseMessaging.instance; + + final FlutterLocalNotificationsPlugin _localNotifications = + FlutterLocalNotificationsPlugin(); + + static const _androidChannel = AndroidNotificationChannel( + 'high_importance_channel', + 'High Importance Notifications', + description: 'This channel is used for important notifications.', + importance: Importance.high, + ); + + /// Call this once during app startup (after Firebase.initializeApp). + Future initialize({ + void Function(RemoteMessage message)? onMessageTap, + }) async { + // 1. Request permission (iOS + Android 13+) + await _requestPermission(); + + // 2. Setup local notifications (needed to show heads-up on Android) + await _setupLocalNotifications(); + + // 3. Register background handler + FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler); + + // 4. Foreground message handler + FirebaseMessaging.onMessage.listen((message) { + debugPrint('[FCM] Foreground message: ${message.messageId}'); + _showLocalNotification(message); + }); + + // 5. App opened from notification (background โ†’ foreground) + FirebaseMessaging.onMessageOpenedApp.listen((message) { + debugPrint('[FCM] Notification tapped (background): ${message.messageId}'); + onMessageTap?.call(message); + }); + + // 6. App launched from terminated state via notification + final initialMessage = await _messaging.getInitialMessage(); + if (initialMessage != null) { + debugPrint('[FCM] App launched from notification: ${initialMessage.messageId}'); + onMessageTap?.call(initialMessage); + } + + // 7. Print FCM token for debugging + final token = await getToken(); + debugPrint('[FCM] Token: $token'); + } + + Future _requestPermission() async { + final settings = await _messaging.requestPermission( + alert: true, + badge: true, + sound: true, + ); + debugPrint('[FCM] Permission status: ${settings.authorizationStatus}'); + } + + Future _setupLocalNotifications() async { + // Android init + const androidInit = AndroidInitializationSettings('@mipmap/launcher_icon'); + + // iOS init + const iosInit = DarwinInitializationSettings( + requestAlertPermission: false, + requestBadgePermission: false, + requestSoundPermission: false, + ); + + const initSettings = InitializationSettings( + android: androidInit, + iOS: iosInit, + ); + + await _localNotifications.initialize( + initSettings, + onDidReceiveNotificationResponse: (details) { + debugPrint('[FCM] Local notification tapped: ${details.payload}'); + }, + ); + + // Create Android notification channel + if (Platform.isAndroid) { + await _localNotifications + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.createNotificationChannel(_androidChannel); + } + + // iOS: show notification even when app is in foreground + await _messaging.setForegroundNotificationPresentationOptions( + alert: true, + badge: true, + sound: true, + ); + } + + void _showLocalNotification(RemoteMessage message) { + final notification = message.notification; + if (notification == null) return; + + _localNotifications.show( + notification.hashCode, + notification.title, + notification.body, + NotificationDetails( + android: AndroidNotificationDetails( + _androidChannel.id, + _androidChannel.name, + channelDescription: _androidChannel.description, + icon: '@mipmap/launcher_icon', + importance: Importance.high, + priority: Priority.high, + ), + iOS: const DarwinNotificationDetails(), + ), + payload: jsonEncode(message.data), + ); + } + + /// Returns the FCM registration token for this device. + Future getToken() => _messaging.getToken(); + + /// Subscribe to a topic (e.g. 'all', 'promo'). + Future subscribeToTopic(String topic) => + _messaging.subscribeToTopic(topic); + + /// Unsubscribe from a topic. + Future unsubscribeFromTopic(String topic) => + _messaging.unsubscribeFromTopic(topic); + + /// Listen for token refresh. + Stream get onTokenRefresh => _messaging.onTokenRefresh; +} diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 046ae07..40b1d03 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -53,11 +53,13 @@ import 'package:apskel_owner_flutter/common/api/api_client.dart' as _i115; import 'package:apskel_owner_flutter/common/di/di_auto_route.dart' as _i311; import 'package:apskel_owner_flutter/common/di/di_connectivity.dart' as _i586; import 'package:apskel_owner_flutter/common/di/di_dio.dart' as _i103; +import 'package:apskel_owner_flutter/common/di/di_firebase.dart' as _i73; import 'package:apskel_owner_flutter/common/di/di_package_info.dart' as _i227; import 'package:apskel_owner_flutter/common/di/di_shared_preferences.dart' as _i402; import 'package:apskel_owner_flutter/common/network/network_client.dart' as _i543; +import 'package:apskel_owner_flutter/common/utils/fcm_service.dart' as _i179; import 'package:apskel_owner_flutter/domain/analytic/repositories/i_analytic_repository.dart' as _i477; import 'package:apskel_owner_flutter/domain/auth/auth.dart' as _i49; @@ -106,6 +108,7 @@ import 'package:apskel_owner_flutter/presentation/router/app_router.dart' as _i258; import 'package:connectivity_plus/connectivity_plus.dart' as _i895; import 'package:dio/dio.dart' as _i361; +import 'package:firebase_core/firebase_core.dart' as _i982; import 'package:get_it/get_it.dart' as _i174; import 'package:injectable/injectable.dart' as _i526; import 'package:package_info_plus/package_info_plus.dart' as _i655; @@ -121,22 +124,28 @@ extension GetItInjectableX on _i174.GetIt { _i526.EnvironmentFilter? environmentFilter, }) async { final gh = _i526.GetItHelper(this, environment, environmentFilter); + final firebaseDi = _$FirebaseDi(); final sharedPreferencesDi = _$SharedPreferencesDi(); - final dioDi = _$DioDi(); final autoRouteDi = _$AutoRouteDi(); final connectivityDi = _$ConnectivityDi(); + final dioDi = _$DioDi(); final packageInfoDi = _$PackageInfoDi(); + await gh.factoryAsync<_i982.FirebaseApp>( + () => firebaseDi.firebaseApp, + preResolve: true, + ); await gh.factoryAsync<_i460.SharedPreferences>( () => sharedPreferencesDi.prefs, preResolve: true, ); - gh.lazySingleton<_i361.Dio>(() => dioDi.dio); gh.lazySingleton<_i258.AppRouter>(() => autoRouteDi.appRouter); gh.lazySingleton<_i895.Connectivity>(() => connectivityDi.connectivity); + gh.lazySingleton<_i361.Dio>(() => dioDi.dio); await gh.lazySingletonAsync<_i655.PackageInfo>( () => packageInfoDi.packageInfo, preResolve: true, ); + gh.lazySingleton<_i179.FcmService>(() => _i179.FcmService()); gh.lazySingleton<_i543.NetworkClient>( () => _i543.NetworkClient(gh<_i895.Connectivity>()), ); @@ -151,29 +160,29 @@ extension GetItInjectableX on _i174.GetIt { () => _i115.ApiClient(gh<_i361.Dio>(), gh<_i6.Env>()), ); gh.factory<_i6.Env>(() => _i6.ProdEnv(), registerFor: {_prod}); - gh.factory<_i130.OrderRemoteDataProvider>( - () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), - ); - gh.factory<_i333.CategoryRemoteDataProvider>( - () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i866.AnalyticRemoteDataProvider>( + () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i17.AuthRemoteDataProvider>( () => _i17.AuthRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i785.UserRemoteDataProvider>( - () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i333.CategoryRemoteDataProvider>( + () => _i333.CategoryRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i823.ProductRemoteDataProvider>( - () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i1006.CustomerRemoteDataProvider>( + () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), + ); + gh.factory<_i130.OrderRemoteDataProvider>( + () => _i130.OrderRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i27.OutletRemoteDataProvider>( () => _i27.OutletRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i866.AnalyticRemoteDataProvider>( - () => _i866.AnalyticRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i823.ProductRemoteDataProvider>( + () => _i823.ProductRemoteDataProvider(gh<_i115.ApiClient>()), ); - gh.factory<_i1006.CustomerRemoteDataProvider>( - () => _i1006.CustomerRemoteDataProvider(gh<_i115.ApiClient>()), + gh.factory<_i785.UserRemoteDataProvider>( + () => _i785.UserRemoteDataProvider(gh<_i115.ApiClient>()), ); gh.factory<_i48.ICustomerRepository>( () => _i550.CustomerRepository(gh<_i1006.CustomerRemoteDataProvider>()), @@ -220,17 +229,20 @@ extension GetItInjectableX on _i174.GetIt { gh.factory<_i183.CategoryLoaderBloc>( () => _i183.CategoryLoaderBloc(gh<_i1020.ICategoryRepository>()), ); - gh.factory<_i473.HomeBloc>( - () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), - ); gh.factory<_i889.SalesLoaderBloc>( () => _i889.SalesLoaderBloc(gh<_i477.IAnalyticRepository>()), ); + gh.factory<_i473.HomeBloc>( + () => _i473.HomeBloc(gh<_i477.IAnalyticRepository>()), + ); gh.factory<_i337.CurrentOutletLoaderBloc>( () => _i337.CurrentOutletLoaderBloc(gh<_i197.IOutletRepository>()), ); - gh.factory<_i221.ProductAnalyticLoaderBloc>( - () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i1038.CategoryAnalyticLoaderBloc>( + () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + ); + gh.factory<_i516.DashboardAnalyticLoaderBloc>( + () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i785.InventoryAnalyticLoaderBloc>( () => _i785.InventoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), @@ -240,41 +252,38 @@ extension GetItInjectableX on _i174.GetIt { gh<_i477.IAnalyticRepository>(), ), ); - gh.factory<_i1038.CategoryAnalyticLoaderBloc>( - () => _i1038.CategoryAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i221.ProductAnalyticLoaderBloc>( + () => _i221.ProductAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), ); gh.factory<_i11.ProfitLossLoaderBloc>( () => _i11.ProfitLossLoaderBloc(gh<_i477.IAnalyticRepository>()), ); - gh.factory<_i516.DashboardAnalyticLoaderBloc>( - () => _i516.DashboardAnalyticLoaderBloc(gh<_i477.IAnalyticRepository>()), + gh.factory<_i945.AuthBloc>( + () => _i945.AuthBloc(gh<_i49.IAuthRepository>()), ); gh.factory<_i775.LoginFormBloc>( () => _i775.LoginFormBloc(gh<_i49.IAuthRepository>()), ); - gh.factory<_i945.AuthBloc>( - () => _i945.AuthBloc(gh<_i49.IAuthRepository>()), - ); gh.factory<_i574.LogoutFormBloc>( () => _i574.LogoutFormBloc(gh<_i49.IAuthRepository>()), ); gh.factory<_i1058.OrderLoaderBloc>( () => _i1058.OrderLoaderBloc(gh<_i219.IOrderRepository>()), ); - gh.factory<_i147.UserEditFormBloc>( - () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), - ); gh.factory<_i1030.ChangePasswordFormBloc>( () => _i1030.ChangePasswordFormBloc(gh<_i635.IUserRepository>()), ); - gh.factory<_i605.TransactionReportBloc>( - () => _i605.TransactionReportBloc( + gh.factory<_i147.UserEditFormBloc>( + () => _i147.UserEditFormBloc(gh<_i635.IUserRepository>()), + ); + gh.factory<_i346.InventoryReportBloc>( + () => _i346.InventoryReportBloc( gh<_i477.IAnalyticRepository>(), gh<_i197.IOutletRepository>(), ), ); - gh.factory<_i346.InventoryReportBloc>( - () => _i346.InventoryReportBloc( + gh.factory<_i605.TransactionReportBloc>( + () => _i605.TransactionReportBloc( gh<_i477.IAnalyticRepository>(), gh<_i197.IOutletRepository>(), ), @@ -283,12 +292,14 @@ extension GetItInjectableX on _i174.GetIt { } } -class _$SharedPreferencesDi extends _i402.SharedPreferencesDi {} +class _$FirebaseDi extends _i73.FirebaseDi {} -class _$DioDi extends _i103.DioDi {} +class _$SharedPreferencesDi extends _i402.SharedPreferencesDi {} class _$AutoRouteDi extends _i311.AutoRouteDi {} class _$ConnectivityDi extends _i586.ConnectivityDi {} +class _$DioDi extends _i103.DioDi {} + class _$PackageInfoDi extends _i227.PackageInfoDi {} diff --git a/lib/main.dart b/lib/main.dart index 826ecd4..c9b2e97 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:injectable/injectable.dart'; +import 'common/utils/fcm_service.dart'; import 'injection.dart'; import 'presentation/app_widget.dart'; @@ -24,5 +25,13 @@ void main() async { kReleaseMode ? Environment.prod : Environment.dev, ); + // Initialize FCM after dependencies are ready + await getIt().initialize( + onMessageTap: (message) { + // TODO: handle navigation when notification is tapped + debugPrint('[FCM] Navigate based on: ${message.data}'); + }, + ); + runApp(const AppWidget()); } diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 3779ef0..5643091 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -7,7 +7,7 @@ project(runner LANGUAGES CXX) set(BINARY_NAME "apskel_owner_flutter") # The unique GTK application identifier for this application. See: # https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.apskel.apskel_owner") +set(APPLICATION_ID "com.apskel.enaklo_owner") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 00f5060..476a6ba 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,6 +8,9 @@ import Foundation import connectivity_plus import device_info_plus import file_selector_macos +import firebase_core +import firebase_messaging +import flutter_local_notifications import open_file_mac import package_info_plus import path_provider_foundation @@ -19,6 +22,9 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) + FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) OpenFilePlugin.register(with: registry.registrar(forPlugin: "OpenFilePlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/pubspec.lock b/pubspec.lock index daee97a..7a22179 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -9,6 +9,14 @@ packages: url: "https://pub.dev" source: hosted version: "85.0.0" + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 + url: "https://pub.dev" + source: hosted + version: "1.3.59" analyzer: dependency: transitive description: @@ -205,10 +213,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" checked_yaml: dependency: transitive description: @@ -449,6 +457,54 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.3+4" + firebase_core: + dependency: "direct main" + description: + name: firebase_core + sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" + url: "https://pub.dev" + source: hosted + version: "3.15.2" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + sha256: "0ecda14c1bfc9ed8cac303dd0f8d04a320811b479362a9a4efb14fd331a473ce" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" + url: "https://pub.dev" + source: hosted + version: "2.24.1" + firebase_messaging: + dependency: "direct main" + description: + name: firebase_messaging + sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" + url: "https://pub.dev" + source: hosted + version: "15.2.10" + firebase_messaging_platform_interface: + dependency: transitive + description: + name: firebase_messaging_platform_interface + sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" + url: "https://pub.dev" + source: hosted + version: "4.6.10" + firebase_messaging_web: + dependency: transitive + description: + name: firebase_messaging_web + sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" + url: "https://pub.dev" + source: hosted + version: "3.10.10" fixnum: dependency: transitive description: @@ -518,6 +574,30 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 + url: "https://pub.dev" + source: hosted + version: "18.0.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" + url: "https://pub.dev" + source: hosted + version: "8.0.0" flutter_localizations: dependency: "direct main" description: flutter @@ -777,26 +857,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" line_icons: dependency: "direct main" description: @@ -833,26 +913,26 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mime: dependency: transitive description: @@ -1422,10 +1502,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.10" time: dependency: transitive description: @@ -1434,6 +1514,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.5" + timezone: + dependency: transitive + description: + name: timezone + sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 + url: "https://pub.dev" + source: hosted + version: "0.10.1" timing: dependency: transitive description: @@ -1550,10 +1638,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: @@ -1635,5 +1723,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.8.1 <4.0.0" + dart: ">=3.9.0-0 <4.0.0" flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 3bf55bd..ad8712e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -48,6 +48,9 @@ dependencies: pdf: ^3.11.3 open_file: ^3.5.10 permission_handler: ^12.0.1 + firebase_core: ^3.13.1 + firebase_messaging: ^15.2.5 + flutter_local_notifications: ^18.0.1 dev_dependencies: flutter_test: diff --git a/web/favicon.png b/web/favicon.png index 91b113ebc68811aec9282560c352c83a27ebbc23..c477ce0522cc88ebbe4e44064dbae8688865fe90 100644 GIT binary patch delta 813 zcmV+|1JeA51j7c9BYy)5Nkl;0Rf&)@3Bn}k^kopHyq?h(kIQ7&MQY9z}!8i`F<2bwV zde{4Vr`ios2@>CF=Dqp8_ulu0o&WHC>RY>9qXhL*33EmTvwv@m!>EixmSli)_`ZiN z(?Vmrhi5w$HijO0X$n$Oz;?Pl9@{oAPzouEpbG?Q5YD9!AARWz+;<7UNvZg+KBnE% zhr<=gvfvFIm~o1@SOAma7#io8VFFG_l2%*WxaGDwUxD+Ci#-s4lI!)!iC?&(eLJ9Z zFi0cVaSS$9E`MQ6AUIVllxu4n4-(5>$SB%p=fJ}-=MpBu{{0ViA zT&F9^gw0h(P#ub>x4J*>lf{WDjpnKJmB#%Yy4!C76Ol#$z+?w%qOP0Y78x>4! zr_*VxbKzybD4jWj-Q{Jx3gz@^^zZG(c&l?^c6RETIDe`?XXCnx!fIp5O;ch2v7qZH z96btgY6>6(VY3NA*Zx;aQ>ylzFWx>feUlZlRXN_VSF1(sHk|tpP`!F3_rbh#7uu(v z9Oy`Jy<96Sv}L8{d`Ao<;EVDT*ggf*mptceZjL#A+2hO>%L1xc2iC*IjQ! zF=0=7CQQ$RtSgu6#>lD7OP3elG;~fjM*nJ7)PIW)w@tJ~iL-TQh#l7j_k)1fjdPP_ z<$BWE`X(FafMb*N?GTb}Xz6eYC;BGXbew!XOA>h9RCuF);KIh+?}wrr)mU8U#vV rJ0>n#8PW5x9>wSj6kL)}RLkT)771Y2!onIB00000NkvXXu0mjf^gD=g delta 494 zcmVKWGzS7{-6sB+XrV$+ebBNsUboF@FXTMG*-o z=+ePz9aIp9B2H2e1d)nMN5RQKsyOPRAl-z5OL1ujE2KxPn6pD|BFH7z)KCfcNzT&b znpR4Ew(ohr@Ap0L<98e(K(JT&|L5@rpdkqtBuO9ytCcmD3V$mcO2zn5w3wOxNM|s> z@YOQ}<-m4;jTA!QI1bm&jiVnP;MUy{x>SX^4+hgyv#8+^Lzho)2WV=2{WpP5KTlrW zbI+gV7Fou0%r{|ZCL$2R?!&)zXQc7dZOlm7+` z4EFK#(Hj=#3-tDNV}4oY=EVsP>iwj5li=8?G%uzeQeFMUfx&*1P>}b=r1#QJCDv*+ zY}>|OD-%+?D3-qC^Z5`$P%f8|Wtn6$xuwJwT0Wo0G-pjBkqE_7iEd4!TCI}JW-$zd zSS diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png index 483f22eaa55d27a8a2db1d4bbb71dfa2b2585414..ac5b619718259ba9b127bde6a160aa9dc2848f3c 100644 GIT binary patch literal 37459 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 d3+Zq77WrTmn!C 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 SF=Su>0000- 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 Hu0mjf$#cQ& literal 74653 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�xAOntzb1Pg#eL2 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 d3+Zq77WrTmn!C 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 SF=Su>0000- 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 Hu0mjf$#cQ& literal 74653 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�xAOntzb1Pg#eL2 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 #include +#include #include #include @@ -16,6 +17,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); PermissionHandlerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index c22844a..11c0100 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST connectivity_plus file_selector_windows + firebase_core permission_handler_windows url_launcher_windows ) diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico index eba7b0f58898bbecfa363b87f81da37d0fc8298b..53ae5ae67668fcf088ec468d11c3f33f7207eca6 100644 GIT binary patch literal 4299 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 From 61dd2bbb2c6012f78f2ee9073aebf2652c361b2d Mon Sep 17 00:00:00 2001 From: Efril Date: Tue, 12 May 2026 00:55:15 +0700 Subject: [PATCH 093/108] update api --- lib/env.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/env.dart b/lib/env.dart index 5a347a5..ddc3051 100644 --- a/lib/env.dart +++ b/lib/env.dart @@ -9,12 +9,12 @@ abstract class Env { @dev class DevEnv implements Env { @override - String get baseUrl => 'https://enaklo-pos-be.altru.id'; // example value + String get baseUrl => 'https://api-pos.apskel.id'; // example value } @Injectable(as: Env) @prod class ProdEnv implements Env { @override - String get baseUrl => 'https://enaklo-pos-be.altru.id'; + String get baseUrl => 'https://api-pos.apskel.id'; } From 3985611a0ef48095ed70bdeb1e9e543819ea8ff8 Mon Sep 17 00:00:00 2001 From: Efril Date: Tue, 12 May 2026 00:59:56 +0700 Subject: [PATCH 094/108] update ios --- ios/Runner.xcodeproj/project.pbxproj | 12 +++++------ ios/Runner/GoogleService-Info.plist | 30 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 ios/Runner/GoogleService-Info.plist diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index e17b8a2..8f8b914 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -368,7 +368,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.apskelOwnerFlutter; + PRODUCT_BUNDLE_IDENTIFIER = com.apskel.enaklo; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -384,7 +384,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.apskelOwnerFlutter.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.apskel.enaklo.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -401,7 +401,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.apskelOwnerFlutter.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.apskel.enaklo.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; @@ -416,7 +416,7 @@ CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.apskelOwnerFlutter.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = com.apskel.enaklo.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; @@ -547,7 +547,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.apskelOwnerFlutter; + PRODUCT_BUNDLE_IDENTIFIER = com.apskel.enaklo; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -569,7 +569,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.apskelOwnerFlutter; + PRODUCT_BUNDLE_IDENTIFIER = com.apskel.enaklo; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist new file mode 100644 index 0000000..bf0e33d --- /dev/null +++ b/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,30 @@ + + + + + API_KEY + AIzaSyCb6teTjGKytZmAZc2aMJrpaW484tm93jY + GCM_SENDER_ID + 765730035527 + PLIST_VERSION + 1 + BUNDLE_ID + com.apskel.enaklo + PROJECT_ID + apskel-pos-v2 + STORAGE_BUCKET + apskel-pos-v2.firebasestorage.app + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:765730035527:ios:c87f91e28b33766e241e62 + + \ No newline at end of file From 9b6e9c591d3ea37b905a64e2b2c91942f5dcc637 Mon Sep 17 00:00:00 2001 From: Efril Date: Tue, 12 May 2026 01:54:24 +0700 Subject: [PATCH 095/108] update notification --- android/app/build.gradle.kts | 8 +- android/app/src/main/AndroidManifest.xml | 20 +++- .../src/main/res/drawable/ic_notification.png | Bin 0 -> 1455069 bytes android/app/src/main/res/values/colors.xml | 2 + android/settings.gradle.kts | 1 + assets/images/ic_notification.png | Bin 0 -> 1455069 bytes ios/Runner/AppDelegate.swift | 22 +++++ lib/common/constant/app_constant.dart | 2 +- lib/common/theme/app_color.dart | 11 +-- lib/common/utils/fcm_service.dart | 58 ++++++++++- .../pages/home/widgets/feature.dart | 60 ++++++------ .../pages/profile/profile_page.dart | 91 +++++++++++++++++- pubspec.yaml | 4 +- 13 files changed, 232 insertions(+), 47 deletions(-) create mode 100644 android/app/src/main/res/drawable/ic_notification.png create mode 100644 assets/images/ic_notification.png diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index a9884f6..4928c43 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -3,6 +3,7 @@ plugins { id("kotlin-android") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") + id("com.google.gms.google-services") } android { @@ -11,6 +12,7 @@ android { ndkVersion = "27.0.12077973" compileOptions { + isCoreLibraryDesugaringEnabled = true sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } @@ -24,7 +26,7 @@ android { applicationId = "com.apskel.enaklo_owner" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion + minSdk = 21 targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName @@ -42,3 +44,7 @@ android { flutter { source = "../.." } + +dependencies { + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 7a2c596..80f9dd1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -7,6 +7,10 @@ + + + + + android:resource="@drawable/ic_notification" /> + + + + + + + + + + *D- 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%0DBwQlHC(7_8mi|7+3R3 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

    fwVE%V9 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͐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

    ZvnJEVWw#2O@-0n@5T6 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

    it- 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 z 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

    ^e4ku&nu)q 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%0D-gJfa=9c-18 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 z

    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