Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
36bc9e0f9e | ||
|
|
ac991431c8 | ||
|
|
587caa44c5 | ||
|
|
2e4c77888e | ||
|
|
f9bfb69254 | ||
|
|
d02d3b5fbd | ||
|
|
7661319b4f | ||
|
|
75415cc6ff | ||
|
|
843c11b200 | ||
|
|
0917c5132b | ||
|
|
b07af60778 | ||
|
|
8d801e52d9 | ||
|
|
7137cd2335 | ||
|
|
b98462ee8c | ||
|
|
83f4e065ed | ||
|
|
e236d811ce | ||
|
|
0b70194d8e | ||
|
|
c1cefb122b | ||
|
|
ded5516bb1 | ||
|
|
77651e2e95 | ||
|
|
0ae599d8f8 | ||
|
|
36ecf95ef2 | ||
|
|
9dbc092313 | ||
|
|
ad11a9e43f | ||
|
|
20a9c65229 | ||
|
|
c03cfdfa80 | ||
|
|
c69a84569b | ||
|
|
d99dae0ca9 | ||
|
|
5a0f37fd3c | ||
|
|
e5c92b26c5 | ||
|
|
7955ebb7d1 | ||
|
|
508b72a52e | ||
|
|
8d982c468f | ||
|
|
6ebfae9d5b | ||
|
|
926e45170d | ||
|
|
f9cbd16b28 | ||
|
|
3ae2e93531 | ||
|
|
a182a3504c | ||
|
|
88972b28b5 | ||
|
|
2c8e9a3fb4 | ||
|
|
086c17a217 | ||
|
|
9a7681680d | ||
|
|
823e009121 | ||
|
|
602647ff26 | ||
|
|
d9a553708b | ||
|
|
aaa8eba31b | ||
|
|
31a82e14cb | ||
|
|
e88eff28f0 | ||
|
|
720c63b6c6 | ||
|
|
ca2cc8bf6b | ||
|
|
d56c3f89db | ||
|
|
f7f5682924 | ||
|
|
b51749a01b | ||
|
|
5fd870c507 | ||
|
|
0c8ca3c51b | ||
|
|
d8d8fd9d16 |
@@ -0,0 +1,171 @@
|
|||||||
|
name: Build & Deploy iOS to TestFlight
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-deploy:
|
||||||
|
runs-on: macos-26
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Flutter
|
||||||
|
uses: subosito/flutter-action@v2
|
||||||
|
with:
|
||||||
|
channel: "stable"
|
||||||
|
# Dipin biar CI nggak ikut naik versi diam-diam.
|
||||||
|
# Flutter 3.47 mensyaratkan iOS deployment target minimal 15.0.
|
||||||
|
flutter-version: "3.47.0"
|
||||||
|
cache: true
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: flutter pub get
|
||||||
|
|
||||||
|
# ── Code Signing Setup ──────────────────────────────────────────────────
|
||||||
|
|
||||||
|
- name: Install Apple Certificate
|
||||||
|
env:
|
||||||
|
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
||||||
|
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
|
||||||
|
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
|
||||||
|
run: |
|
||||||
|
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
|
||||||
|
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
|
||||||
|
|
||||||
|
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
|
||||||
|
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
|
||||||
|
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
|
||||||
|
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
|
||||||
|
|
||||||
|
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A \
|
||||||
|
-t cert -f pkcs12 -k $KEYCHAIN_PATH
|
||||||
|
security set-key-partition-list -S apple-tool:,apple: \
|
||||||
|
-s -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
|
||||||
|
security list-keychain -d user -s $KEYCHAIN_PATH
|
||||||
|
|
||||||
|
- name: Install Provisioning Profile
|
||||||
|
env:
|
||||||
|
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
|
||||||
|
run: |
|
||||||
|
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
|
||||||
|
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
|
||||||
|
|
||||||
|
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
|
||||||
|
|
||||||
|
# Xcode requires the filename to be the profile's UUID
|
||||||
|
UUID=$(security cms -D -i $PP_PATH | plutil -extract UUID raw -)
|
||||||
|
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles/$UUID.mobileprovision
|
||||||
|
echo "Installed provisioning profile UUID: $UUID"
|
||||||
|
|
||||||
|
# ── Disable SPM ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
- name: Disable Swift Package Manager
|
||||||
|
run: flutter config --no-enable-swift-package-manager
|
||||||
|
|
||||||
|
# ── CocoaPods ───────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
- name: Install CocoaPods Dependencies
|
||||||
|
run: |
|
||||||
|
cd ios
|
||||||
|
rm -rf Pods Podfile.lock
|
||||||
|
pod install --repo-update
|
||||||
|
|
||||||
|
# ── Build & Archive ─────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
- name: Build iOS (no codesign)
|
||||||
|
run: flutter build ios --release --no-codesign
|
||||||
|
|
||||||
|
- name: Re-run pod install to apply Podfile signing settings
|
||||||
|
run: |
|
||||||
|
cd ios
|
||||||
|
pod install
|
||||||
|
|
||||||
|
- name: Archive with Xcode
|
||||||
|
env:
|
||||||
|
TEAM_ID: ${{ secrets.TEAM_ID }}
|
||||||
|
run: |
|
||||||
|
cat > $RUNNER_TEMP/signing.xcconfig << 'XCCONFIG'
|
||||||
|
CODE_SIGN_STYLE = Manual
|
||||||
|
CODE_SIGN_IDENTITY = iPhone Distribution
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = Enaklo Owner App Store
|
||||||
|
CODE_SIGNING_REQUIRED = YES
|
||||||
|
XCCONFIG
|
||||||
|
|
||||||
|
xcodebuild archive \
|
||||||
|
-workspace ios/Runner.xcworkspace \
|
||||||
|
-scheme Runner \
|
||||||
|
-configuration Release \
|
||||||
|
-archivePath $RUNNER_TEMP/Runner.xcarchive \
|
||||||
|
-destination "generic/platform=iOS" \
|
||||||
|
-xcconfig $RUNNER_TEMP/signing.xcconfig \
|
||||||
|
DEVELOPMENT_TEAM="$TEAM_ID"
|
||||||
|
|
||||||
|
- name: Export IPA
|
||||||
|
run: |
|
||||||
|
xcodebuild -exportArchive \
|
||||||
|
-archivePath $RUNNER_TEMP/Runner.xcarchive \
|
||||||
|
-exportPath $RUNNER_TEMP/export \
|
||||||
|
-exportOptionsPlist ios/ExportOptions.plist
|
||||||
|
|
||||||
|
mkdir -p build/ios/ipa
|
||||||
|
cp $RUNNER_TEMP/export/*.ipa build/ios/ipa/
|
||||||
|
|
||||||
|
- name: Upload dSYMs to Crashlytics
|
||||||
|
env:
|
||||||
|
GOOGLE_SERVICE_INFO_PLIST: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST }}
|
||||||
|
run: |
|
||||||
|
# Find the Crashlytics upload-symbols binary from Pods
|
||||||
|
UPLOAD_SYMBOLS=$(find ios/Pods -name "upload-symbols" -type f | head -1)
|
||||||
|
|
||||||
|
if [ -z "$UPLOAD_SYMBOLS" ]; then
|
||||||
|
echo "upload-symbols binary not found, skipping dSYM upload"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Write GoogleService-Info.plist from secret
|
||||||
|
echo -n "$GOOGLE_SERVICE_INFO_PLIST" | base64 --decode > $RUNNER_TEMP/GoogleService-Info.plist
|
||||||
|
|
||||||
|
# Upload dSYMs from the xcarchive
|
||||||
|
"$UPLOAD_SYMBOLS" \
|
||||||
|
-gsp $RUNNER_TEMP/GoogleService-Info.plist \
|
||||||
|
-p ios \
|
||||||
|
$RUNNER_TEMP/Runner.xcarchive/dSYMs
|
||||||
|
|
||||||
|
# ── Upload to TestFlight ────────────────────────────────────────────────
|
||||||
|
|
||||||
|
- name: Upload to TestFlight via Transporter
|
||||||
|
env:
|
||||||
|
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||||
|
APP_SPECIFIC_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }}
|
||||||
|
run: |
|
||||||
|
IPA_PATH=$(find build/ios/ipa -name "*.ipa" | head -1)
|
||||||
|
echo "Uploading: $IPA_PATH"
|
||||||
|
xcrun altool --upload-app \
|
||||||
|
--type ios \
|
||||||
|
--file "$IPA_PATH" \
|
||||||
|
--username "$APPLE_ID" \
|
||||||
|
--password "$APP_SPECIFIC_PASSWORD" \
|
||||||
|
--verbose
|
||||||
|
|
||||||
|
# ── Cleanup ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
- name: Clean Up Keychain and Provisioning Profile
|
||||||
|
if: ${{ always() }}
|
||||||
|
run: |
|
||||||
|
security delete-keychain $RUNNER_TEMP/app-signing.keychain-db || true
|
||||||
|
rm -rf ~/Library/MobileDevice/Provisioning\ Profiles/*.mobileprovision || true
|
||||||
|
|
||||||
|
# ── Artifact ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
- name: Upload IPA as Artifact
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ios-ipa
|
||||||
|
path: build/ios/ipa/*.ipa
|
||||||
|
retention-days: 7
|
||||||
@@ -12,7 +12,7 @@ A POS (Point of Sale) application for business owners, built with Flutter. The p
|
|||||||
- Architecture Overview
|
- Architecture Overview
|
||||||
- Project Structure
|
- Project Structure
|
||||||
- Key Dependencies & Purpose
|
- Key Dependencies & Purpose
|
||||||
- Code Generation
|
- Code Generation (see docs/codegen.md)
|
||||||
- Internationalization (i18n)
|
- Internationalization (i18n)
|
||||||
- Theming & Assets
|
- Theming & Assets
|
||||||
- Environment Configuration (`env.dart`)
|
- Environment Configuration (`env.dart`)
|
||||||
@@ -40,6 +40,7 @@ A POS (Point of Sale) application for business owners, built with Flutter. The p
|
|||||||
|
|
||||||
- Flutter SDK installed as per the official guide (`https://flutter.dev/docs/get-started/install`)
|
- Flutter SDK installed as per the official guide (`https://flutter.dev/docs/get-started/install`)
|
||||||
- Dart version per constraint: ^3.8.1
|
- Dart version per constraint: ^3.8.1
|
||||||
|
- For code generation only: FVM + Flutter 3.41.9 (`dart pub global activate fvm && fvm install 3.41.9`) — see [docs/codegen.md](docs/codegen.md)
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
@@ -51,8 +52,16 @@ flutter pub get
|
|||||||
|
|
||||||
### Code generation (required after clone or when annotations change)
|
### Code generation (required after clone or when annotations change)
|
||||||
|
|
||||||
```bash
|
> **Do not run codegen with Flutter 3.47 / Dart 3.13** — every builder crashes with
|
||||||
flutter pub run build_runner build --delete-conflicting-outputs
|
> `Missing implementation of visitDotShorthandPropertyAccess`. Codegen must run on Flutter 3.41.9
|
||||||
|
> (Dart 3.11.5) via FVM. Full setup, commands, and troubleshooting: **[docs/codegen.md](docs/codegen.md)**.
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||||
|
|
||||||
|
& "$FVM\flutter.bat" pub get
|
||||||
|
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
|
flutter pub get # restore lockfile resolution for the global SDK
|
||||||
```
|
```
|
||||||
|
|
||||||
> Re-run whenever you change files using `@RoutePage()`, `@injectable`, `@freezed`, or `@JsonSerializable`.
|
> Re-run whenever you change files using `@RoutePage()`, `@injectable`, `@freezed`, or `@JsonSerializable`.
|
||||||
@@ -179,14 +188,27 @@ Refer to `pubspec.yaml` for full version constraints.
|
|||||||
|
|
||||||
## Code Generation
|
## Code Generation
|
||||||
|
|
||||||
|
**Full guide: [docs/codegen.md](docs/codegen.md)** — read it before your first codegen run.
|
||||||
|
|
||||||
|
Codegen runs on a pinned SDK (Flutter 3.41.9 / Dart 3.11.5 via FVM), not on the global Flutter 3.47:
|
||||||
|
`freezed 2.5.8` caps `analyzer` below 8.0.0, and analyzer 7.7.1 crashes on the dot-shorthand syntax
|
||||||
|
used by Dart 3.13 sources. The app itself still runs and builds with the global SDK.
|
||||||
|
|
||||||
Common commands:
|
Common commands:
|
||||||
|
|
||||||
```bash
|
```powershell
|
||||||
flutter pub run build_runner build --delete-conflicting-outputs
|
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||||
|
|
||||||
|
& "$FVM\flutter.bat" pub get
|
||||||
|
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
# or watch
|
# or watch
|
||||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
& "$FVM\dart.bat" run build_runner watch --delete-conflicting-outputs
|
||||||
|
flutter pub get # restore lockfile resolution for the global SDK
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> `--delete-conflicting-outputs` wipes every generated file first. If you cancel the build midway,
|
||||||
|
> restore them with `git checkout` — see the troubleshooting table in [docs/codegen.md](docs/codegen.md).
|
||||||
|
|
||||||
### Asset generation (flutter_gen_runner)
|
### 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`:
|
`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`:
|
||||||
@@ -255,15 +277,20 @@ flutter pub get
|
|||||||
flutter format .
|
flutter format .
|
||||||
flutter analyze
|
flutter analyze
|
||||||
|
|
||||||
# Code generation (single run / watch)
|
# Localization (safe on the global SDK)
|
||||||
flutter pub run build_runner build --delete-conflicting-outputs
|
flutter gen-l10n
|
||||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
|
||||||
|
|
||||||
# Run by device
|
# Run by device
|
||||||
flutter devices
|
flutter devices
|
||||||
flutter run -d <device-id>
|
flutter run -d <device-id>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Code generation uses the pinned FVM SDK — see [docs/codegen.md](docs/codegen.md):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
& "$env:USERPROFILE\fvm\versions\3.41.9\bin\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Additional Notes
|
## Additional Notes
|
||||||
@@ -316,7 +343,7 @@ Aplikasi Point of Sale (POS) untuk pemilik usaha, dibangun dengan Flutter. Proye
|
|||||||
- Arsitektur & Alur
|
- Arsitektur & Alur
|
||||||
- Struktur Proyek
|
- Struktur Proyek
|
||||||
- Dependensi Utama & Fungsinya
|
- Dependensi Utama & Fungsinya
|
||||||
- Code Generation
|
- Code Generation (lihat docs/codegen.md)
|
||||||
- Internationalization (i18n)
|
- Internationalization (i18n)
|
||||||
- Theming & Assets
|
- Theming & Assets
|
||||||
- Konfigurasi Lingkungan (`env.dart`)
|
- Konfigurasi Lingkungan (`env.dart`)
|
||||||
@@ -344,6 +371,7 @@ Aplikasi Point of Sale (POS) untuk pemilik usaha, dibangun dengan Flutter. Proye
|
|||||||
|
|
||||||
- Flutter SDK terpasang sesuai panduan resmi (`https://flutter.dev/docs/get-started/install`)
|
- Flutter SDK terpasang sesuai panduan resmi (`https://flutter.dev/docs/get-started/install`)
|
||||||
- Versi Dart sesuai constraint: ^3.8.1
|
- Versi Dart sesuai constraint: ^3.8.1
|
||||||
|
- Khusus untuk code generation: FVM + Flutter 3.41.9 (`dart pub global activate fvm && fvm install 3.41.9`) — lihat [docs/codegen.md](docs/codegen.md)
|
||||||
|
|
||||||
### Instalasi
|
### Instalasi
|
||||||
|
|
||||||
@@ -355,8 +383,16 @@ flutter pub get
|
|||||||
|
|
||||||
### Generate kode (wajib setelah clone atau mengubah anotasi)
|
### Generate kode (wajib setelah clone atau mengubah anotasi)
|
||||||
|
|
||||||
```bash
|
> **Jangan jalankan codegen dengan Flutter 3.47 / Dart 3.13** — semua builder crash dengan
|
||||||
flutter pub run build_runner build --delete-conflicting-outputs
|
> `Missing implementation of visitDotShorthandPropertyAccess`. Codegen harus memakai Flutter 3.41.9
|
||||||
|
> (Dart 3.11.5) via FVM. Setup, perintah, dan troubleshooting lengkap: **[docs/codegen.md](docs/codegen.md)**.
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||||
|
|
||||||
|
& "$FVM\flutter.bat" pub get
|
||||||
|
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
|
flutter pub get # kembalikan resolusi lockfile ke SDK global
|
||||||
```
|
```
|
||||||
|
|
||||||
> Jalankan ulang perintah di atas setiap kali Anda mengubah file yang menggunakan anotasi `@RoutePage()`, `@injectable`, `@freezed`, atau `@JsonSerializable`.
|
> Jalankan ulang perintah di atas setiap kali Anda mengubah file yang menggunakan anotasi `@RoutePage()`, `@injectable`, `@freezed`, atau `@JsonSerializable`.
|
||||||
@@ -472,14 +508,27 @@ Catatan versi lengkap tersedia di `pubspec.yaml`.
|
|||||||
|
|
||||||
## Code Generation
|
## Code Generation
|
||||||
|
|
||||||
|
**Panduan lengkap: [docs/codegen.md](docs/codegen.md)** — baca dulu sebelum codegen pertama kali.
|
||||||
|
|
||||||
|
Codegen dijalankan dengan SDK terpisah (Flutter 3.41.9 / Dart 3.11.5 via FVM), bukan Flutter global 3.47:
|
||||||
|
`freezed 2.5.8` mengunci `analyzer` di bawah 8.0.0, dan analyzer 7.7.1 crash pada sintaks *dot-shorthand*
|
||||||
|
milik Dart 3.13. Aplikasinya sendiri tetap di-`run`/`build` dengan SDK global.
|
||||||
|
|
||||||
Perintah umum:
|
Perintah umum:
|
||||||
|
|
||||||
```bash
|
```powershell
|
||||||
flutter pub run build_runner build --delete-conflicting-outputs
|
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||||
|
|
||||||
|
& "$FVM\flutter.bat" pub get
|
||||||
|
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
# atau untuk watch
|
# atau untuk watch
|
||||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
& "$FVM\dart.bat" run build_runner watch --delete-conflicting-outputs
|
||||||
|
flutter pub get # kembalikan resolusi lockfile ke SDK global
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> `--delete-conflicting-outputs` menghapus semua file generated lebih dulu. Kalau build dibatalkan di
|
||||||
|
> tengah jalan, pulihkan dengan `git checkout` — lihat tabel troubleshooting di [docs/codegen.md](docs/codegen.md).
|
||||||
|
|
||||||
Generator yang digunakan:
|
Generator yang digunakan:
|
||||||
|
|
||||||
- AutoRoute: menghasilkan deklarasi router & route.
|
- AutoRoute: menghasilkan deklarasi router & route.
|
||||||
@@ -533,15 +582,20 @@ flutter pub get
|
|||||||
flutter format .
|
flutter format .
|
||||||
flutter analyze
|
flutter analyze
|
||||||
|
|
||||||
# Code generation (sekali jalan / watch)
|
# Localization (aman dengan SDK global)
|
||||||
flutter pub run build_runner build --delete-conflicting-outputs
|
flutter gen-l10n
|
||||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
|
||||||
|
|
||||||
# Run by device
|
# Run by device
|
||||||
flutter devices
|
flutter devices
|
||||||
flutter run -d <device-id>
|
flutter run -d <device-id>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Code generation memakai SDK FVM yang di-pin — lihat [docs/codegen.md](docs/codegen.md):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
& "$env:USERPROFILE\fvm\versions\3.41.9\bin\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Catatan Tambahan
|
## Catatan Tambahan
|
||||||
|
|||||||
@@ -19,3 +19,10 @@ analyzer:
|
|||||||
- test/generated/**
|
- test/generated/**
|
||||||
- "**/**.g.dart"
|
- "**/**.g.dart"
|
||||||
- "**/**.freezed.dart"
|
- "**/**.freezed.dart"
|
||||||
|
- build/**
|
||||||
|
- android/**
|
||||||
|
- ios/**
|
||||||
|
- web/**
|
||||||
|
- windows/**
|
||||||
|
- macos/**
|
||||||
|
- linux/**
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:label="Enaklo Owner"
|
android:label="Grow Food"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/launcher_icon">
|
android:icon="@mipmap/launcher_icon">
|
||||||
<activity
|
<activity
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 27 KiB |
@@ -1,3 +1,7 @@
|
|||||||
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
|
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
# This builtInKotlin flag was added automatically by Flutter migrator
|
||||||
|
android.builtInKotlin=false
|
||||||
|
# This newDsl flag was added automatically by Flutter migrator
|
||||||
|
android.newDsl=false
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ pluginManagement {
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
|
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
|
||||||
id("com.android.application") version "8.7.3" apply false
|
id("com.android.application") version "8.11.1" apply false
|
||||||
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
|
id("org.jetbrains.kotlin.android") version "2.2.20" apply false
|
||||||
id("com.google.gms.google-services") version "4.4.2" apply false
|
id("com.google.gms.google-services") version "4.4.2" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 498 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 952 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 2.0 MiB |
@@ -0,0 +1,163 @@
|
|||||||
|
# Code Generation (build_runner)
|
||||||
|
|
||||||
|
> **PENTING:** `build_runner` di proyek ini **tidak bisa** dijalankan dengan Flutter 3.47 / Dart 3.13.
|
||||||
|
> Gunakan SDK Flutter 3.41.9 (Dart 3.11.5) lewat FVM. Aplikasinya sendiri tetap di-`run`/`build`
|
||||||
|
> dengan Flutter versi global (3.47).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## TL;DR
|
||||||
|
|
||||||
|
PowerShell (Windows):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||||
|
|
||||||
|
& "$FVM\flutter.bat" pub get # 1. resolve paket dgn Dart 3.11.5
|
||||||
|
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs # 2. generate
|
||||||
|
flutter pub get # 3. balik ke SDK global 3.47
|
||||||
|
```
|
||||||
|
|
||||||
|
Git Bash:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
FVM=~/fvm/versions/3.41.9/bin
|
||||||
|
|
||||||
|
"$FVM/flutter.bat" pub get
|
||||||
|
"$FVM/dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
|
flutter pub get
|
||||||
|
```
|
||||||
|
|
||||||
|
Durasi normal: **±90–120 detik** untuk full build (146 output).
|
||||||
|
|
||||||
|
Setelah itu jalankan `flutter analyze` untuk memastikan hasil generate bersih.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kenapa harus SDK terpisah?
|
||||||
|
|
||||||
|
Kalau codegen dijalankan dengan Flutter global (3.47 / Dart 3.13), semua builder gagal dengan:
|
||||||
|
|
||||||
|
```
|
||||||
|
W SDK language version 3.13.0 is newer than `analyzer` language version 3.9.0.
|
||||||
|
E freezed on lib/application/.../category_analytic_loader_bloc.dart:
|
||||||
|
Exception: Missing implementation of visitDotShorthandPropertyAccess
|
||||||
|
```
|
||||||
|
|
||||||
|
Rantai penyebabnya:
|
||||||
|
|
||||||
|
1. `freezed 2.5.8` membatasi `analyzer <8.0.0`, jadi pub me-resolve ke **analyzer 7.7.1** (language version 3.9).
|
||||||
|
2. Dart 3.13 memakai sintaks *dot-shorthand* (`.value`) di sumber SDK/framework.
|
||||||
|
3. Analyzer 7.7.1 bisa mem-*parse*-nya tapi belum bisa menuliskannya ke summary → crash saat resolve.
|
||||||
|
4. Semua generator (`freezed`, `json_serializable`, `injectable_generator`, `auto_route_generator`) berbagi analyzer yang sama, jadi semuanya ikut mati — termasuk saat men-generate file lama yang tidak diubah.
|
||||||
|
|
||||||
|
Dart 3.11.5 (Flutter 3.41.9) adalah versi tertinggi yang **masih cocok dengan analyzer 7.7.1** sekaligus memenuhi batas `pubspec.lock` (`dart >=3.11.0-0`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Setup sekali di mesin baru
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
dart pub global activate fvm
|
||||||
|
```
|
||||||
|
|
||||||
|
Tambahkan folder binari pub ke PATH agar perintah `fvm` dikenali:
|
||||||
|
`%LOCALAPPDATA%\Pub\Cache\bin`
|
||||||
|
|
||||||
|
Lalu unduh SDK-nya (±1 GB, sekali saja):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
fvm install 3.41.9
|
||||||
|
fvm list # verifikasi
|
||||||
|
```
|
||||||
|
|
||||||
|
SDK tersimpan di `%USERPROFILE%\fvm\versions\3.41.9` dan **tidak** mengubah Flutter global.
|
||||||
|
|
||||||
|
> Kita sengaja **tidak** menjalankan `fvm use`, supaya repo tidak punya `.fvmrc`/`.fvm/`
|
||||||
|
> dan IDE tetap memakai Flutter 3.47 untuk menjalankan aplikasi.
|
||||||
|
> Kalau lebih suka pin per-project, jalankan `fvm use 3.41.9` lalu pakai `fvm dart run build_runner ...`,
|
||||||
|
> dan tambahkan `.fvm/` ke `.gitignore`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Perintah harian
|
||||||
|
|
||||||
|
Semua contoh memakai variabel `$FVM` dari bagian TL;DR.
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# build sekali (paling sering dipakai)
|
||||||
|
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||||
|
|
||||||
|
# mode watch saat banyak mengubah anotasi
|
||||||
|
& "$FVM\dart.bat" run build_runner watch --delete-conflicting-outputs
|
||||||
|
|
||||||
|
# hanya membersihkan output generated
|
||||||
|
& "$FVM\dart.bat" run build_runner clean
|
||||||
|
```
|
||||||
|
|
||||||
|
Wajib generate ulang setiap kali mengubah/menambah file dengan anotasi:
|
||||||
|
|
||||||
|
| Anotasi | Generator | Output |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `@freezed` | freezed | `*.freezed.dart` |
|
||||||
|
| `@JsonSerializable` / `fromJson` di DTO | json_serializable | `*.g.dart` |
|
||||||
|
| `@injectable`, `@LazySingleton` | injectable_generator | `lib/injection.config.dart` |
|
||||||
|
| `@RoutePage()` | auto_route_generator | `lib/presentation/router/app_router.gr.dart` |
|
||||||
|
| asset baru di `assets/` | flutter_gen_runner | `lib/presentation/components/assets/assets.gen.dart` |
|
||||||
|
|
||||||
|
### Localization (i18n) — tidak lewat build_runner
|
||||||
|
|
||||||
|
`flutter gen-l10n` memakai tooling Flutter, bukan analyzer, jadi **aman dijalankan dengan Flutter 3.47**:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
flutter gen-l10n
|
||||||
|
```
|
||||||
|
|
||||||
|
Jalankan setiap kali `lib/l10n/app_id.arb` / `app_en.arb` berubah. Hasilnya: `lib/l10n/app_localizations*.dart`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Aturan penting soal `--delete-conflicting-outputs`
|
||||||
|
|
||||||
|
Flag ini **menghapus dulu** semua file generated (±55 file `*.freezed.dart` / `*.g.dart`) sebelum membuat ulang.
|
||||||
|
Kalau proses dibatalkan di tengah jalan, project akan penuh error karena file-nya sudah hilang.
|
||||||
|
|
||||||
|
Pemulihan (semua file generated ikut ter-commit di git):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git status --porcelain | grep -E "^ D" | sed 's/^ D //' | while read -r f; do git checkout -- "$f"; done
|
||||||
|
```
|
||||||
|
|
||||||
|
Tips: jangan pipe output build ke `tail`/`head` — outputnya jadi ter-buffer sampai proses selesai,
|
||||||
|
sehingga terlihat seperti *hang* padahal sedang jalan.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
| Gejala | Penyebab | Solusi |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `Missing implementation of visitDotShorthandPropertyAccess` | codegen dijalankan dengan Flutter global 3.47 | pakai SDK FVM 3.41.9 |
|
||||||
|
| `Failed to update packages` + dump stack VM | `flutter pub run build_runner` / `fvm spawn ... pub run` | pakai `dart.bat run build_runner`, jangan `flutter pub run` |
|
||||||
|
| Ratusan error “isn't defined” di IDE, file `*.freezed.dart` hilang | build dibatalkan setelah `--delete-conflicting-outputs` | restore lewat `git checkout` (lihat di atas) |
|
||||||
|
| `pub get` gagal / versi paket bergeser | `pubspec.lock` di-resolve oleh SDK berbeda | jalankan `flutter pub get` dengan SDK global setelah codegen selesai |
|
||||||
|
| Build terasa lama di run pertama | asset graph baru dibuat dari nol | wajar, ±90–120 detik; run berikutnya inkremental |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Rencana jangka panjang
|
||||||
|
|
||||||
|
Perbaikan permanen = upgrade toolchain codegen supaya jalan native di Dart 3.13:
|
||||||
|
|
||||||
|
- `freezed` 2.5.8 → 3.x, `freezed_annotation` 2.4.x → 3.x
|
||||||
|
- `injectable` 2.x → 3.x, `injectable_generator` 2.7 → 3.x
|
||||||
|
- `auto_route` 9.x → 11.x, `auto_route_generator` 9.x → 10.x
|
||||||
|
- `build_runner` → 2.16.x, `json_serializable` → 6.14.x (analyzer ikut naik ke 13.x)
|
||||||
|
|
||||||
|
Konsekuensinya breaking dan cukup besar, jadi perlu dijadwalkan sendiri:
|
||||||
|
|
||||||
|
- freezed 3 **menghapus** `.map()` / `.when()` / `.maybeWhen()` / `.maybeMap()` → ±49 pemakaian (mayoritas di handler event BLoC) harus diganti pattern matching Dart 3 (`switch`).
|
||||||
|
- ±98 file dengan `@freezed` harus dideklarasikan `abstract class` atau `sealed class`.
|
||||||
|
- Migrasi konfigurasi router (auto_route 11) dan DI (injectable 3).
|
||||||
|
|
||||||
|
Selama migrasi itu belum dikerjakan, gunakan alur FVM di dokumen ini.
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<!-- Ganti "app-store-connect" jika perlu: ad-hoc, enterprise, development -->
|
||||||
|
<key>method</key>
|
||||||
|
<string>app-store-connect</string>
|
||||||
|
|
||||||
|
<!-- Team ID dari Apple Developer account -->
|
||||||
|
<key>teamID</key>
|
||||||
|
<string>5TRC3M8UZG</string>
|
||||||
|
|
||||||
|
<!-- Signing style: manual (pakai provisioning profile eksplisit) -->
|
||||||
|
<key>signingStyle</key>
|
||||||
|
<string>manual</string>
|
||||||
|
|
||||||
|
<!-- Provisioning profiles: key = bundle ID, value = nama profile -->
|
||||||
|
<key>provisioningProfiles</key>
|
||||||
|
<dict>
|
||||||
|
<key>com.apskel.enaklo</key>
|
||||||
|
<string>Enaklo Owner App Store</string>
|
||||||
|
</dict>
|
||||||
|
|
||||||
|
<key>stripSwiftSymbols</key>
|
||||||
|
<true/>
|
||||||
|
|
||||||
|
<key>uploadBitcode</key>
|
||||||
|
<false/>
|
||||||
|
|
||||||
|
<key>uploadSymbols</key>
|
||||||
|
<true/>
|
||||||
|
|
||||||
|
<key>compileBitcode</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -21,6 +21,6 @@
|
|||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.0</string>
|
<string>1.0</string>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>12.0</string>
|
<string>15.0</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Uncomment this line to define a global platform for your project
|
# Uncomment this line to define a global platform for your project
|
||||||
platform :ios, '14.0'
|
platform :ios, '15.0'
|
||||||
|
|
||||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||||
@@ -39,5 +39,13 @@ end
|
|||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
installer.pods_project.targets.each do |target|
|
installer.pods_project.targets.each do |target|
|
||||||
flutter_additional_ios_build_settings(target)
|
flutter_additional_ios_build_settings(target)
|
||||||
|
target.build_configurations.each do |config|
|
||||||
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
|
||||||
|
config.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
|
||||||
|
# Disable code signing for all Pod targets — only Runner needs signing
|
||||||
|
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
|
||||||
|
config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO'
|
||||||
|
config.build_settings['CODE_SIGN_IDENTITY'] = ''
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,12 +5,19 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- Firebase/CoreOnly (10.25.0):
|
- Firebase/CoreOnly (10.25.0):
|
||||||
- FirebaseCore (= 10.25.0)
|
- FirebaseCore (= 10.25.0)
|
||||||
|
- Firebase/Crashlytics (10.25.0):
|
||||||
|
- Firebase/CoreOnly
|
||||||
|
- FirebaseCrashlytics (~> 10.25.0)
|
||||||
- Firebase/Messaging (10.25.0):
|
- Firebase/Messaging (10.25.0):
|
||||||
- Firebase/CoreOnly
|
- Firebase/CoreOnly
|
||||||
- FirebaseMessaging (~> 10.25.0)
|
- FirebaseMessaging (~> 10.25.0)
|
||||||
- firebase_core (2.32.0):
|
- firebase_core (2.32.0):
|
||||||
- Firebase/CoreOnly (= 10.25.0)
|
- Firebase/CoreOnly (= 10.25.0)
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- firebase_crashlytics (3.5.7):
|
||||||
|
- Firebase/Crashlytics (= 10.25.0)
|
||||||
|
- firebase_core
|
||||||
|
- Flutter
|
||||||
- firebase_messaging (14.7.10):
|
- firebase_messaging (14.7.10):
|
||||||
- Firebase/Messaging (= 10.25.0)
|
- Firebase/Messaging (= 10.25.0)
|
||||||
- firebase_core
|
- firebase_core
|
||||||
@@ -19,8 +26,19 @@ PODS:
|
|||||||
- FirebaseCoreInternal (~> 10.0)
|
- FirebaseCoreInternal (~> 10.0)
|
||||||
- GoogleUtilities/Environment (~> 7.12)
|
- GoogleUtilities/Environment (~> 7.12)
|
||||||
- GoogleUtilities/Logger (~> 7.12)
|
- GoogleUtilities/Logger (~> 7.12)
|
||||||
|
- FirebaseCoreExtension (10.29.0):
|
||||||
|
- FirebaseCore (~> 10.0)
|
||||||
- FirebaseCoreInternal (10.29.0):
|
- FirebaseCoreInternal (10.29.0):
|
||||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||||
|
- FirebaseCrashlytics (10.25.0):
|
||||||
|
- FirebaseCore (~> 10.5)
|
||||||
|
- FirebaseInstallations (~> 10.0)
|
||||||
|
- FirebaseRemoteConfigInterop (~> 10.23)
|
||||||
|
- FirebaseSessions (~> 10.5)
|
||||||
|
- GoogleDataTransport (~> 9.2)
|
||||||
|
- GoogleUtilities/Environment (~> 7.8)
|
||||||
|
- nanopb (< 2.30911.0, >= 2.30908.0)
|
||||||
|
- PromisesObjC (~> 2.1)
|
||||||
- FirebaseInstallations (10.29.0):
|
- FirebaseInstallations (10.29.0):
|
||||||
- FirebaseCore (~> 10.0)
|
- FirebaseCore (~> 10.0)
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
- GoogleUtilities/Environment (~> 7.8)
|
||||||
@@ -35,6 +53,16 @@ PODS:
|
|||||||
- GoogleUtilities/Reachability (~> 7.8)
|
- GoogleUtilities/Reachability (~> 7.8)
|
||||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
- GoogleUtilities/UserDefaults (~> 7.8)
|
||||||
- nanopb (< 2.30911.0, >= 2.30908.0)
|
- nanopb (< 2.30911.0, >= 2.30908.0)
|
||||||
|
- FirebaseRemoteConfigInterop (10.29.0)
|
||||||
|
- FirebaseSessions (10.29.0):
|
||||||
|
- FirebaseCore (~> 10.5)
|
||||||
|
- FirebaseCoreExtension (~> 10.0)
|
||||||
|
- FirebaseInstallations (~> 10.0)
|
||||||
|
- GoogleDataTransport (~> 9.2)
|
||||||
|
- GoogleUtilities/Environment (~> 7.13)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 7.13)
|
||||||
|
- nanopb (< 2.30911.0, >= 2.30908.0)
|
||||||
|
- PromisesSwift (~> 2.1)
|
||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
- flutter_local_notifications (0.0.1):
|
- flutter_local_notifications (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
@@ -84,6 +112,8 @@ PODS:
|
|||||||
- permission_handler_apple (9.3.0):
|
- permission_handler_apple (9.3.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- PromisesObjC (2.4.0)
|
- PromisesObjC (2.4.0)
|
||||||
|
- PromisesSwift (2.4.0):
|
||||||
|
- PromisesObjC (= 2.4.0)
|
||||||
- shared_preferences_foundation (0.0.1):
|
- shared_preferences_foundation (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
@@ -97,6 +127,7 @@ DEPENDENCIES:
|
|||||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
||||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||||
|
- firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`)
|
||||||
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
|
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
|
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
|
||||||
@@ -113,13 +144,18 @@ SPEC REPOS:
|
|||||||
trunk:
|
trunk:
|
||||||
- Firebase
|
- Firebase
|
||||||
- FirebaseCore
|
- FirebaseCore
|
||||||
|
- FirebaseCoreExtension
|
||||||
- FirebaseCoreInternal
|
- FirebaseCoreInternal
|
||||||
|
- FirebaseCrashlytics
|
||||||
- FirebaseInstallations
|
- FirebaseInstallations
|
||||||
- FirebaseMessaging
|
- FirebaseMessaging
|
||||||
|
- FirebaseRemoteConfigInterop
|
||||||
|
- FirebaseSessions
|
||||||
- GoogleDataTransport
|
- GoogleDataTransport
|
||||||
- GoogleUtilities
|
- GoogleUtilities
|
||||||
- nanopb
|
- nanopb
|
||||||
- PromisesObjC
|
- PromisesObjC
|
||||||
|
- PromisesSwift
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
connectivity_plus:
|
connectivity_plus:
|
||||||
@@ -128,6 +164,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/device_info_plus/ios"
|
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||||
firebase_core:
|
firebase_core:
|
||||||
:path: ".symlinks/plugins/firebase_core/ios"
|
:path: ".symlinks/plugins/firebase_core/ios"
|
||||||
|
firebase_crashlytics:
|
||||||
|
:path: ".symlinks/plugins/firebase_crashlytics/ios"
|
||||||
firebase_messaging:
|
firebase_messaging:
|
||||||
:path: ".symlinks/plugins/firebase_messaging/ios"
|
:path: ".symlinks/plugins/firebase_messaging/ios"
|
||||||
Flutter:
|
Flutter:
|
||||||
@@ -156,11 +194,16 @@ SPEC CHECKSUMS:
|
|||||||
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342
|
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342
|
||||||
Firebase: 0312a2352584f782ea56f66d91606891d4607f06
|
Firebase: 0312a2352584f782ea56f66d91606891d4607f06
|
||||||
firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197
|
firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197
|
||||||
|
firebase_crashlytics: 17e856fabec68d993662abaf2f6fe2413f0abece
|
||||||
firebase_messaging: 1541105e2a2a6ef8bd869bcc44157d31e82f3a50
|
firebase_messaging: 1541105e2a2a6ef8bd869bcc44157d31e82f3a50
|
||||||
FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483
|
FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483
|
||||||
|
FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f
|
||||||
FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934
|
FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934
|
||||||
|
FirebaseCrashlytics: 4b96efb0ce73b38b2a85e8b8bd1bd8f63f09d015
|
||||||
FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd
|
FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd
|
||||||
FirebaseMessaging: 88950ba9485052891ebe26f6c43a52bb62248952
|
FirebaseMessaging: 88950ba9485052891ebe26f6c43a52bb62248952
|
||||||
|
FirebaseRemoteConfigInterop: 6efda51fb5e2f15b16585197e26eaa09574e8a4d
|
||||||
|
FirebaseSessions: dbd14adac65ce996228652c1fc3a3f576bdf3ecc
|
||||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||||
flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9
|
flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9
|
||||||
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
||||||
@@ -172,10 +215,11 @@ SPEC CHECKSUMS:
|
|||||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||||
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
|
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
|
||||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||||
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
|
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
|
||||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||||
|
|
||||||
PODFILE CHECKSUM: e30f02f9d1c72c47bb6344a0a748c9d268180865
|
PODFILE CHECKSUM: 5f0fa675e57bf6c9b78950d2f469725f8fefc4a3
|
||||||
|
|
||||||
COCOAPODS: 1.16.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
@@ -476,7 +476,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
@@ -495,7 +495,7 @@
|
|||||||
DEVELOPMENT_TEAM = 5TRC3M8UZG;
|
DEVELOPMENT_TEAM = 5TRC3M8UZG;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -607,7 +607,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
@@ -658,7 +658,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
@@ -679,7 +679,7 @@
|
|||||||
DEVELOPMENT_TEAM = 5TRC3M8UZG;
|
DEVELOPMENT_TEAM = 5TRC3M8UZG;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -703,7 +703,7 @@
|
|||||||
DEVELOPMENT_TEAM = 5TRC3M8UZG;
|
DEVELOPMENT_TEAM = 5TRC3M8UZG;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Flutter
|
import Flutter
|
||||||
import UIKit
|
import UIKit
|
||||||
import UserNotifications
|
import UserNotifications
|
||||||
|
import Firebase
|
||||||
|
|
||||||
@main
|
@main
|
||||||
@objc class AppDelegate: FlutterAppDelegate {
|
@objc class AppDelegate: FlutterAppDelegate {
|
||||||
@@ -8,11 +9,18 @@ import UserNotifications
|
|||||||
_ application: UIApplication,
|
_ application: UIApplication,
|
||||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
|
|
||||||
|
FirebaseApp.configure()
|
||||||
|
|
||||||
// Set notification delegate so notifications show in foreground & background
|
// Set notification delegate so notifications show in foreground & background
|
||||||
UNUserNotificationCenter.current().delegate = self
|
UNUserNotificationCenter.current().delegate = self
|
||||||
|
|
||||||
GeneratedPluginRegistrant.register(with: self)
|
GeneratedPluginRegistrant.register(with: self)
|
||||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
|
||||||
|
return super.application(
|
||||||
|
application,
|
||||||
|
didFinishLaunchingWithOptions: launchOptions
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when a notification is delivered while app is in foreground
|
// Called when a notification is delivered while app is in foreground
|
||||||
@@ -24,7 +32,7 @@ import UserNotifications
|
|||||||
completionHandler([.banner, .badge, .sound])
|
completionHandler([.banner, .badge, .sound])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when user taps a notification (foreground or background)
|
// Called when user taps a notification
|
||||||
override func userNotificationCenter(
|
override func userNotificationCenter(
|
||||||
_ center: UNUserNotificationCenter,
|
_ center: UNUserNotificationCenter,
|
||||||
didReceive response: UNNotificationResponse,
|
didReceive response: UNNotificationResponse,
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 654 KiB After Width: | Height: | Size: 652 KiB |
|
Before Width: | Height: | Size: 775 B After Width: | Height: | Size: 622 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 20 KiB |
@@ -5,7 +5,7 @@
|
|||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>Enaklo Owner</string>
|
<string>Grow Food</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>aps-environment</key>
|
||||||
|
<string>development</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
2edd7a931624573eff7b4280d22a7f4e
|
||||||
@@ -3,15 +3,15 @@
|
|||||||
flutter_launcher_icons:
|
flutter_launcher_icons:
|
||||||
android: "launcher_icon"
|
android: "launcher_icon"
|
||||||
ios: true
|
ios: true
|
||||||
image_path: "assets/images/logo.png"
|
image_path: "assets/images/ic_launcher.png"
|
||||||
remove_alpha_ios: true
|
remove_alpha_ios: true
|
||||||
min_sdk_android: 21 # android min sdk min:16, default 21
|
min_sdk_android: 21 # android min sdk min:16, default 21
|
||||||
adaptive_icon_background: "#ffffff"
|
adaptive_icon_background: "#ffffff"
|
||||||
adaptive_icon_foreground: "assets/images/logo.png"
|
adaptive_icon_foreground: "assets/images/ic_launcher.png"
|
||||||
web:
|
web:
|
||||||
generate: true
|
generate: true
|
||||||
image_path: "assets/images/logo.png"
|
image_path: "assets/images/ic_launcher.png"
|
||||||
windows:
|
windows:
|
||||||
generate: true
|
generate: true
|
||||||
image_path: "assets/images/logo.png"
|
image_path: "assets/images/ic_launcher.png"
|
||||||
icon_size: 48
|
icon_size: 48
|
||||||
|
|||||||
@@ -25,6 +25,9 @@ class CategoryAnalyticLoaderBloc
|
|||||||
Emitter<CategoryAnalyticLoaderState> emit,
|
Emitter<CategoryAnalyticLoaderState> emit,
|
||||||
) {
|
) {
|
||||||
return event.map(
|
return event.map(
|
||||||
|
rangeDateChanged: (e) async {
|
||||||
|
emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo));
|
||||||
|
},
|
||||||
fetched: (e) async {
|
fetched: (e) async {
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
@@ -34,8 +37,8 @@ class CategoryAnalyticLoaderBloc
|
|||||||
);
|
);
|
||||||
|
|
||||||
final result = await _repository.getCategory(
|
final result = await _repository.getCategory(
|
||||||
dateFrom: DateTime.now().subtract(const Duration(days: 30)),
|
dateFrom: state.dateFrom,
|
||||||
dateTo: DateTime.now(),
|
dateTo: state.dateTo,
|
||||||
);
|
);
|
||||||
|
|
||||||
var data = result.fold(
|
var data = result.fold(
|
||||||
|
|||||||
@@ -19,27 +19,34 @@ final _privateConstructorUsedError = UnsupportedError(
|
|||||||
mixin _$CategoryAnalyticLoaderEvent {
|
mixin _$CategoryAnalyticLoaderEvent {
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult when<TResult extends Object?>({
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
required TResult Function() fetched,
|
required TResult Function() fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? whenOrNull<TResult extends Object?>({
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
TResult? Function()? fetched,
|
TResult? Function()? fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeWhen<TResult extends Object?>({
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
TResult Function()? fetched,
|
TResult Function()? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult map<TResult extends Object?>({
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
required TResult Function(_Fetched value) fetched,
|
required TResult Function(_Fetched value) fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? mapOrNull<TResult extends Object?>({
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult? Function(_Fetched value)? fetched,
|
TResult? Function(_Fetched value)? fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeMap<TResult extends Object?>({
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult Function(_Fetched value)? fetched,
|
TResult Function(_Fetched value)? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@@ -74,6 +81,165 @@ class _$CategoryAnalyticLoaderEventCopyWithImpl<
|
|||||||
/// with the given fields replaced by the non-null parameter values.
|
/// 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
|
||||||
|
_$CategoryAnalyticLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl>
|
||||||
|
implements _$$RangeDateChangedImplCopyWith<$Res> {
|
||||||
|
__$$RangeDateChangedImplCopyWithImpl(
|
||||||
|
_$RangeDateChangedImpl _value,
|
||||||
|
$Res Function(_$RangeDateChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of CategoryAnalyticLoaderEvent
|
||||||
|
/// 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 'CategoryAnalyticLoaderEvent.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 CategoryAnalyticLoaderEvent
|
||||||
|
/// 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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
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<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
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 CategoryAnalyticLoaderEvent {
|
||||||
|
const factory _RangeDateChanged(
|
||||||
|
final DateTime dateFrom,
|
||||||
|
final DateTime dateTo,
|
||||||
|
) = _$RangeDateChangedImpl;
|
||||||
|
|
||||||
|
DateTime get dateFrom;
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of CategoryAnalyticLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
abstract class _$$FetchedImplCopyWith<$Res> {
|
abstract class _$$FetchedImplCopyWith<$Res> {
|
||||||
factory _$$FetchedImplCopyWith(
|
factory _$$FetchedImplCopyWith(
|
||||||
@@ -116,19 +282,27 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult when<TResult extends Object?>({required TResult Function() fetched}) {
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
return fetched();
|
return fetched();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? whenOrNull<TResult extends Object?>({TResult? Function()? fetched}) {
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
return fetched?.call();
|
return fetched?.call();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeWhen<TResult extends Object?>({
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
TResult Function()? fetched,
|
TResult Function()? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) {
|
}) {
|
||||||
@@ -141,6 +315,7 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult map<TResult extends Object?>({
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
required TResult Function(_Fetched value) fetched,
|
required TResult Function(_Fetched value) fetched,
|
||||||
}) {
|
}) {
|
||||||
return fetched(this);
|
return fetched(this);
|
||||||
@@ -149,6 +324,7 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? mapOrNull<TResult extends Object?>({
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult? Function(_Fetched value)? fetched,
|
TResult? Function(_Fetched value)? fetched,
|
||||||
}) {
|
}) {
|
||||||
return fetched?.call(this);
|
return fetched?.call(this);
|
||||||
@@ -157,6 +333,7 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeMap<TResult extends Object?>({
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult Function(_Fetched value)? fetched,
|
TResult Function(_Fetched value)? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) {
|
}) {
|
||||||
@@ -177,6 +354,8 @@ mixin _$CategoryAnalyticLoaderState {
|
|||||||
Option<AnalyticFailure> get failureOptionCategoryAnalytic =>
|
Option<AnalyticFailure> get failureOptionCategoryAnalytic =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
bool get isFetching => throw _privateConstructorUsedError;
|
bool get isFetching => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateFrom => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateTo => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
/// Create a copy of CategoryAnalyticLoaderState
|
/// Create a copy of CategoryAnalyticLoaderState
|
||||||
/// with the given fields replaced by the non-null parameter values.
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@@ -200,6 +379,8 @@ abstract class $CategoryAnalyticLoaderStateCopyWith<$Res> {
|
|||||||
CategoryAnalytic categoryAnalytic,
|
CategoryAnalytic categoryAnalytic,
|
||||||
Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
||||||
bool isFetching,
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
});
|
});
|
||||||
|
|
||||||
$CategoryAnalyticCopyWith<$Res> get categoryAnalytic;
|
$CategoryAnalyticCopyWith<$Res> get categoryAnalytic;
|
||||||
@@ -226,6 +407,8 @@ class _$CategoryAnalyticLoaderStateCopyWithImpl<
|
|||||||
Object? categoryAnalytic = null,
|
Object? categoryAnalytic = null,
|
||||||
Object? failureOptionCategoryAnalytic = null,
|
Object? failureOptionCategoryAnalytic = null,
|
||||||
Object? isFetching = null,
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
}) {
|
}) {
|
||||||
return _then(
|
return _then(
|
||||||
_value.copyWith(
|
_value.copyWith(
|
||||||
@@ -241,6 +424,14 @@ class _$CategoryAnalyticLoaderStateCopyWithImpl<
|
|||||||
? _value.isFetching
|
? _value.isFetching
|
||||||
: isFetching // ignore: cast_nullable_to_non_nullable
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
as bool,
|
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,
|
as $Val,
|
||||||
);
|
);
|
||||||
@@ -270,6 +461,8 @@ abstract class _$$CategoryAnalyticLoaderStateImplCopyWith<$Res>
|
|||||||
CategoryAnalytic categoryAnalytic,
|
CategoryAnalytic categoryAnalytic,
|
||||||
Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
||||||
bool isFetching,
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -297,6 +490,8 @@ class __$$CategoryAnalyticLoaderStateImplCopyWithImpl<$Res>
|
|||||||
Object? categoryAnalytic = null,
|
Object? categoryAnalytic = null,
|
||||||
Object? failureOptionCategoryAnalytic = null,
|
Object? failureOptionCategoryAnalytic = null,
|
||||||
Object? isFetching = null,
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
}) {
|
}) {
|
||||||
return _then(
|
return _then(
|
||||||
_$CategoryAnalyticLoaderStateImpl(
|
_$CategoryAnalyticLoaderStateImpl(
|
||||||
@@ -312,6 +507,14 @@ class __$$CategoryAnalyticLoaderStateImplCopyWithImpl<$Res>
|
|||||||
? _value.isFetching
|
? _value.isFetching
|
||||||
: isFetching // ignore: cast_nullable_to_non_nullable
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
as bool,
|
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,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -325,6 +528,8 @@ class _$CategoryAnalyticLoaderStateImpl
|
|||||||
required this.categoryAnalytic,
|
required this.categoryAnalytic,
|
||||||
required this.failureOptionCategoryAnalytic,
|
required this.failureOptionCategoryAnalytic,
|
||||||
this.isFetching = false,
|
this.isFetching = false,
|
||||||
|
required this.dateFrom,
|
||||||
|
required this.dateTo,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -334,10 +539,14 @@ class _$CategoryAnalyticLoaderStateImpl
|
|||||||
@override
|
@override
|
||||||
@JsonKey()
|
@JsonKey()
|
||||||
final bool isFetching;
|
final bool isFetching;
|
||||||
|
@override
|
||||||
|
final DateTime dateFrom;
|
||||||
|
@override
|
||||||
|
final DateTime dateTo;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'CategoryAnalyticLoaderState(categoryAnalytic: $categoryAnalytic, failureOptionCategoryAnalytic: $failureOptionCategoryAnalytic, isFetching: $isFetching)';
|
return 'CategoryAnalyticLoaderState(categoryAnalytic: $categoryAnalytic, failureOptionCategoryAnalytic: $failureOptionCategoryAnalytic, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -354,7 +563,10 @@ class _$CategoryAnalyticLoaderStateImpl
|
|||||||
other.failureOptionCategoryAnalytic ==
|
other.failureOptionCategoryAnalytic ==
|
||||||
failureOptionCategoryAnalytic) &&
|
failureOptionCategoryAnalytic) &&
|
||||||
(identical(other.isFetching, isFetching) ||
|
(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
|
@override
|
||||||
@@ -363,6 +575,8 @@ class _$CategoryAnalyticLoaderStateImpl
|
|||||||
categoryAnalytic,
|
categoryAnalytic,
|
||||||
failureOptionCategoryAnalytic,
|
failureOptionCategoryAnalytic,
|
||||||
isFetching,
|
isFetching,
|
||||||
|
dateFrom,
|
||||||
|
dateTo,
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Create a copy of CategoryAnalyticLoaderState
|
/// Create a copy of CategoryAnalyticLoaderState
|
||||||
@@ -383,6 +597,8 @@ abstract class _CategoryAnalyticLoaderState
|
|||||||
required final CategoryAnalytic categoryAnalytic,
|
required final CategoryAnalytic categoryAnalytic,
|
||||||
required final Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
required final Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
||||||
final bool isFetching,
|
final bool isFetching,
|
||||||
|
required final DateTime dateFrom,
|
||||||
|
required final DateTime dateTo,
|
||||||
}) = _$CategoryAnalyticLoaderStateImpl;
|
}) = _$CategoryAnalyticLoaderStateImpl;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -391,6 +607,10 @@ abstract class _CategoryAnalyticLoaderState
|
|||||||
Option<AnalyticFailure> get failureOptionCategoryAnalytic;
|
Option<AnalyticFailure> get failureOptionCategoryAnalytic;
|
||||||
@override
|
@override
|
||||||
bool get isFetching;
|
bool get isFetching;
|
||||||
|
@override
|
||||||
|
DateTime get dateFrom;
|
||||||
|
@override
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
/// Create a copy of CategoryAnalyticLoaderState
|
/// Create a copy of CategoryAnalyticLoaderState
|
||||||
/// with the given fields replaced by the non-null parameter values.
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
|||||||
@@ -2,5 +2,9 @@ part of 'category_analytic_loader_bloc.dart';
|
|||||||
|
|
||||||
@freezed
|
@freezed
|
||||||
class CategoryAnalyticLoaderEvent with _$CategoryAnalyticLoaderEvent {
|
class CategoryAnalyticLoaderEvent with _$CategoryAnalyticLoaderEvent {
|
||||||
|
const factory CategoryAnalyticLoaderEvent.rangeDateChanged(
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
) = _RangeDateChanged;
|
||||||
const factory CategoryAnalyticLoaderEvent.fetched() = _Fetched;
|
const factory CategoryAnalyticLoaderEvent.fetched() = _Fetched;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,14 @@ class CategoryAnalyticLoaderState with _$CategoryAnalyticLoaderState {
|
|||||||
required CategoryAnalytic categoryAnalytic,
|
required CategoryAnalytic categoryAnalytic,
|
||||||
required Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
required Option<AnalyticFailure> failureOptionCategoryAnalytic,
|
||||||
@Default(false) bool isFetching,
|
@Default(false) bool isFetching,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
}) = _CategoryAnalyticLoaderState;
|
}) = _CategoryAnalyticLoaderState;
|
||||||
|
|
||||||
factory CategoryAnalyticLoaderState.initial() => CategoryAnalyticLoaderState(
|
factory CategoryAnalyticLoaderState.initial() => CategoryAnalyticLoaderState(
|
||||||
categoryAnalytic: CategoryAnalytic.empty(),
|
categoryAnalytic: CategoryAnalytic.empty(),
|
||||||
failureOptionCategoryAnalytic: none(),
|
failureOptionCategoryAnalytic: none(),
|
||||||
|
dateFrom: DateTime.now(),
|
||||||
|
dateTo: DateTime.now(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
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 'exclusive_summary_loader_event.dart';
|
||||||
|
part 'exclusive_summary_loader_state.dart';
|
||||||
|
part 'exclusive_summary_loader_bloc.freezed.dart';
|
||||||
|
|
||||||
|
@injectable
|
||||||
|
class ExclusiveSummaryLoaderBloc
|
||||||
|
extends Bloc<ExclusiveSummaryLoaderEvent, ExclusiveSummaryLoaderState> {
|
||||||
|
final IAnalyticRepository _repository;
|
||||||
|
|
||||||
|
ExclusiveSummaryLoaderBloc(this._repository)
|
||||||
|
: super(ExclusiveSummaryLoaderState.initial()) {
|
||||||
|
on<ExclusiveSummaryLoaderEvent>(_onEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onEvent(
|
||||||
|
ExclusiveSummaryLoaderEvent event,
|
||||||
|
Emitter<ExclusiveSummaryLoaderState> emit,
|
||||||
|
) {
|
||||||
|
return event.map(
|
||||||
|
rangeDateChanged: (e) async {
|
||||||
|
emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo));
|
||||||
|
},
|
||||||
|
fetched: (e) async {
|
||||||
|
emit(
|
||||||
|
state.copyWith(
|
||||||
|
isFetching: true,
|
||||||
|
failureOption: none(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
final result = await _repository.getExclusiveSummary(
|
||||||
|
dateFrom: state.dateFrom,
|
||||||
|
dateTo: state.dateTo,
|
||||||
|
);
|
||||||
|
|
||||||
|
final data = result.fold(
|
||||||
|
(f) => state.copyWith(failureOption: optionOf(f)),
|
||||||
|
(summary) => state.copyWith(exclusiveSummary: summary),
|
||||||
|
);
|
||||||
|
|
||||||
|
emit(data.copyWith(isFetching: false));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,617 @@
|
|||||||
|
// 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 'exclusive_summary_loader_bloc.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// FreezedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
T _$identity<T>(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 _$ExclusiveSummaryLoaderEvent {
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $ExclusiveSummaryLoaderEventCopyWith<$Res> {
|
||||||
|
factory $ExclusiveSummaryLoaderEventCopyWith(
|
||||||
|
ExclusiveSummaryLoaderEvent value,
|
||||||
|
$Res Function(ExclusiveSummaryLoaderEvent) then,
|
||||||
|
) =
|
||||||
|
_$ExclusiveSummaryLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
ExclusiveSummaryLoaderEvent
|
||||||
|
>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$ExclusiveSummaryLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends ExclusiveSummaryLoaderEvent
|
||||||
|
>
|
||||||
|
implements $ExclusiveSummaryLoaderEventCopyWith<$Res> {
|
||||||
|
_$ExclusiveSummaryLoaderEventCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderEvent
|
||||||
|
/// 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
|
||||||
|
_$ExclusiveSummaryLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl>
|
||||||
|
implements _$$RangeDateChangedImplCopyWith<$Res> {
|
||||||
|
__$$RangeDateChangedImplCopyWithImpl(
|
||||||
|
_$RangeDateChangedImpl _value,
|
||||||
|
$Res Function(_$RangeDateChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderEvent
|
||||||
|
/// 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 'ExclusiveSummaryLoaderEvent.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 ExclusiveSummaryLoaderEvent
|
||||||
|
/// 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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
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<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
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 ExclusiveSummaryLoaderEvent {
|
||||||
|
const factory _RangeDateChanged(
|
||||||
|
final DateTime dateFrom,
|
||||||
|
final DateTime dateTo,
|
||||||
|
) = _$RangeDateChangedImpl;
|
||||||
|
|
||||||
|
DateTime get dateFrom;
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderEvent
|
||||||
|
/// 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(
|
||||||
|
_$FetchedImpl value,
|
||||||
|
$Res Function(_$FetchedImpl) then,
|
||||||
|
) = __$$FetchedImplCopyWithImpl<$Res>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$FetchedImplCopyWithImpl<$Res>
|
||||||
|
extends _$ExclusiveSummaryLoaderEventCopyWithImpl<$Res, _$FetchedImpl>
|
||||||
|
implements _$$FetchedImplCopyWith<$Res> {
|
||||||
|
__$$FetchedImplCopyWithImpl(
|
||||||
|
_$FetchedImpl _value,
|
||||||
|
$Res Function(_$FetchedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$FetchedImpl implements _Fetched {
|
||||||
|
const _$FetchedImpl();
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ExclusiveSummaryLoaderEvent.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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return fetched();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return fetched?.call();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched();
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return fetched?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _Fetched implements ExclusiveSummaryLoaderEvent {
|
||||||
|
const factory _Fetched() = _$FetchedImpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
mixin _$ExclusiveSummaryLoaderState {
|
||||||
|
ExclusiveSummary get exclusiveSummary => throw _privateConstructorUsedError;
|
||||||
|
Option<AnalyticFailure> get failureOption =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
bool get isFetching => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateFrom => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateTo => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
$ExclusiveSummaryLoaderStateCopyWith<ExclusiveSummaryLoaderState>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $ExclusiveSummaryLoaderStateCopyWith<$Res> {
|
||||||
|
factory $ExclusiveSummaryLoaderStateCopyWith(
|
||||||
|
ExclusiveSummaryLoaderState value,
|
||||||
|
$Res Function(ExclusiveSummaryLoaderState) then,
|
||||||
|
) =
|
||||||
|
_$ExclusiveSummaryLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
ExclusiveSummaryLoaderState
|
||||||
|
>;
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
ExclusiveSummary exclusiveSummary,
|
||||||
|
Option<AnalyticFailure> failureOption,
|
||||||
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
$ExclusiveSummaryCopyWith<$Res> get exclusiveSummary;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$ExclusiveSummaryLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends ExclusiveSummaryLoaderState
|
||||||
|
>
|
||||||
|
implements $ExclusiveSummaryLoaderStateCopyWith<$Res> {
|
||||||
|
_$ExclusiveSummaryLoaderStateCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? exclusiveSummary = null,
|
||||||
|
Object? failureOption = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_value.copyWith(
|
||||||
|
exclusiveSummary: null == exclusiveSummary
|
||||||
|
? _value.exclusiveSummary
|
||||||
|
: exclusiveSummary // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ExclusiveSummary,
|
||||||
|
failureOption: null == failureOption
|
||||||
|
? _value.failureOption
|
||||||
|
: failureOption // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _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,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
$ExclusiveSummaryCopyWith<$Res> get exclusiveSummary {
|
||||||
|
return $ExclusiveSummaryCopyWith<$Res>(_value.exclusiveSummary, (value) {
|
||||||
|
return _then(_value.copyWith(exclusiveSummary: value) as $Val);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class _$$ExclusiveSummaryLoaderStateImplCopyWith<$Res>
|
||||||
|
implements $ExclusiveSummaryLoaderStateCopyWith<$Res> {
|
||||||
|
factory _$$ExclusiveSummaryLoaderStateImplCopyWith(
|
||||||
|
_$ExclusiveSummaryLoaderStateImpl value,
|
||||||
|
$Res Function(_$ExclusiveSummaryLoaderStateImpl) then,
|
||||||
|
) = __$$ExclusiveSummaryLoaderStateImplCopyWithImpl<$Res>;
|
||||||
|
@override
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
ExclusiveSummary exclusiveSummary,
|
||||||
|
Option<AnalyticFailure> failureOption,
|
||||||
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
$ExclusiveSummaryCopyWith<$Res> get exclusiveSummary;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$ExclusiveSummaryLoaderStateImplCopyWithImpl<$Res>
|
||||||
|
extends
|
||||||
|
_$ExclusiveSummaryLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
_$ExclusiveSummaryLoaderStateImpl
|
||||||
|
>
|
||||||
|
implements _$$ExclusiveSummaryLoaderStateImplCopyWith<$Res> {
|
||||||
|
__$$ExclusiveSummaryLoaderStateImplCopyWithImpl(
|
||||||
|
_$ExclusiveSummaryLoaderStateImpl _value,
|
||||||
|
$Res Function(_$ExclusiveSummaryLoaderStateImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? exclusiveSummary = null,
|
||||||
|
Object? failureOption = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_$ExclusiveSummaryLoaderStateImpl(
|
||||||
|
exclusiveSummary: null == exclusiveSummary
|
||||||
|
? _value.exclusiveSummary
|
||||||
|
: exclusiveSummary // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ExclusiveSummary,
|
||||||
|
failureOption: null == failureOption
|
||||||
|
? _value.failureOption
|
||||||
|
: failureOption // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _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,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$ExclusiveSummaryLoaderStateImpl
|
||||||
|
implements _ExclusiveSummaryLoaderState {
|
||||||
|
const _$ExclusiveSummaryLoaderStateImpl({
|
||||||
|
required this.exclusiveSummary,
|
||||||
|
required this.failureOption,
|
||||||
|
this.isFetching = false,
|
||||||
|
required this.dateFrom,
|
||||||
|
required this.dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
final ExclusiveSummary exclusiveSummary;
|
||||||
|
@override
|
||||||
|
final Option<AnalyticFailure> failureOption;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final bool isFetching;
|
||||||
|
@override
|
||||||
|
final DateTime dateFrom;
|
||||||
|
@override
|
||||||
|
final DateTime dateTo;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ExclusiveSummaryLoaderState(exclusiveSummary: $exclusiveSummary, failureOption: $failureOption, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType &&
|
||||||
|
other is _$ExclusiveSummaryLoaderStateImpl &&
|
||||||
|
(identical(other.exclusiveSummary, exclusiveSummary) ||
|
||||||
|
other.exclusiveSummary == exclusiveSummary) &&
|
||||||
|
(identical(other.failureOption, failureOption) ||
|
||||||
|
other.failureOption == failureOption) &&
|
||||||
|
(identical(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,
|
||||||
|
exclusiveSummary,
|
||||||
|
failureOption,
|
||||||
|
isFetching,
|
||||||
|
dateFrom,
|
||||||
|
dateTo,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
_$$ExclusiveSummaryLoaderStateImplCopyWith<_$ExclusiveSummaryLoaderStateImpl>
|
||||||
|
get copyWith =>
|
||||||
|
__$$ExclusiveSummaryLoaderStateImplCopyWithImpl<
|
||||||
|
_$ExclusiveSummaryLoaderStateImpl
|
||||||
|
>(this, _$identity);
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _ExclusiveSummaryLoaderState
|
||||||
|
implements ExclusiveSummaryLoaderState {
|
||||||
|
const factory _ExclusiveSummaryLoaderState({
|
||||||
|
required final ExclusiveSummary exclusiveSummary,
|
||||||
|
required final Option<AnalyticFailure> failureOption,
|
||||||
|
final bool isFetching,
|
||||||
|
required final DateTime dateFrom,
|
||||||
|
required final DateTime dateTo,
|
||||||
|
}) = _$ExclusiveSummaryLoaderStateImpl;
|
||||||
|
|
||||||
|
@override
|
||||||
|
ExclusiveSummary get exclusiveSummary;
|
||||||
|
@override
|
||||||
|
Option<AnalyticFailure> get failureOption;
|
||||||
|
@override
|
||||||
|
bool get isFetching;
|
||||||
|
@override
|
||||||
|
DateTime get dateFrom;
|
||||||
|
@override
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of ExclusiveSummaryLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$ExclusiveSummaryLoaderStateImplCopyWith<_$ExclusiveSummaryLoaderStateImpl>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
part of 'exclusive_summary_loader_bloc.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummaryLoaderEvent with _$ExclusiveSummaryLoaderEvent {
|
||||||
|
const factory ExclusiveSummaryLoaderEvent.rangeDateChanged(
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
) = _RangeDateChanged;
|
||||||
|
|
||||||
|
const factory ExclusiveSummaryLoaderEvent.fetched() = _Fetched;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
part of 'exclusive_summary_loader_bloc.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummaryLoaderState with _$ExclusiveSummaryLoaderState {
|
||||||
|
const factory ExclusiveSummaryLoaderState({
|
||||||
|
required ExclusiveSummary exclusiveSummary,
|
||||||
|
required Option<AnalyticFailure> failureOption,
|
||||||
|
@Default(false) bool isFetching,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
}) = _ExclusiveSummaryLoaderState;
|
||||||
|
|
||||||
|
factory ExclusiveSummaryLoaderState.initial() {
|
||||||
|
final now = DateTime.now();
|
||||||
|
return ExclusiveSummaryLoaderState(
|
||||||
|
exclusiveSummary: ExclusiveSummary.empty(),
|
||||||
|
failureOption: none(),
|
||||||
|
dateFrom: DateTime(now.year, now.month, 1),
|
||||||
|
dateTo: DateTime(now.year, now.month + 1, 0),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,6 +28,9 @@ class PaymentMethodAnalyticLoaderBloc
|
|||||||
Emitter<PaymentMethodAnalyticLoaderState> emit,
|
Emitter<PaymentMethodAnalyticLoaderState> emit,
|
||||||
) {
|
) {
|
||||||
return event.map(
|
return event.map(
|
||||||
|
rangeDateChanged: (e) async {
|
||||||
|
emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo));
|
||||||
|
},
|
||||||
fetched: (e) async {
|
fetched: (e) async {
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
@@ -37,8 +40,8 @@ class PaymentMethodAnalyticLoaderBloc
|
|||||||
);
|
);
|
||||||
|
|
||||||
final result = await _repository.getPaymentMethod(
|
final result = await _repository.getPaymentMethod(
|
||||||
dateFrom: DateTime.now().subtract(const Duration(days: 30)),
|
dateFrom: state.dateFrom,
|
||||||
dateTo: DateTime.now(),
|
dateTo: state.dateTo,
|
||||||
);
|
);
|
||||||
|
|
||||||
var data = result.fold(
|
var data = result.fold(
|
||||||
|
|||||||
@@ -19,27 +19,34 @@ final _privateConstructorUsedError = UnsupportedError(
|
|||||||
mixin _$PaymentMethodAnalyticLoaderEvent {
|
mixin _$PaymentMethodAnalyticLoaderEvent {
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult when<TResult extends Object?>({
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
required TResult Function() fetched,
|
required TResult Function() fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? whenOrNull<TResult extends Object?>({
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
TResult? Function()? fetched,
|
TResult? Function()? fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeWhen<TResult extends Object?>({
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
TResult Function()? fetched,
|
TResult Function()? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult map<TResult extends Object?>({
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
required TResult Function(_Fetched value) fetched,
|
required TResult Function(_Fetched value) fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? mapOrNull<TResult extends Object?>({
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult? Function(_Fetched value)? fetched,
|
TResult? Function(_Fetched value)? fetched,
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeMap<TResult extends Object?>({
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult Function(_Fetched value)? fetched,
|
TResult Function(_Fetched value)? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) => throw _privateConstructorUsedError;
|
}) => throw _privateConstructorUsedError;
|
||||||
@@ -74,6 +81,168 @@ class _$PaymentMethodAnalyticLoaderEventCopyWithImpl<
|
|||||||
/// with the given fields replaced by the non-null parameter values.
|
/// 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
|
||||||
|
_$PaymentMethodAnalyticLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
_$RangeDateChangedImpl
|
||||||
|
>
|
||||||
|
implements _$$RangeDateChangedImplCopyWith<$Res> {
|
||||||
|
__$$RangeDateChangedImplCopyWithImpl(
|
||||||
|
_$RangeDateChangedImpl _value,
|
||||||
|
$Res Function(_$RangeDateChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of PaymentMethodAnalyticLoaderEvent
|
||||||
|
/// 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 'PaymentMethodAnalyticLoaderEvent.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 PaymentMethodAnalyticLoaderEvent
|
||||||
|
/// 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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
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<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
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 PaymentMethodAnalyticLoaderEvent {
|
||||||
|
const factory _RangeDateChanged(
|
||||||
|
final DateTime dateFrom,
|
||||||
|
final DateTime dateTo,
|
||||||
|
) = _$RangeDateChangedImpl;
|
||||||
|
|
||||||
|
DateTime get dateFrom;
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of PaymentMethodAnalyticLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$RangeDateChangedImplCopyWith<_$RangeDateChangedImpl> get copyWith =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
abstract class _$$FetchedImplCopyWith<$Res> {
|
abstract class _$$FetchedImplCopyWith<$Res> {
|
||||||
factory _$$FetchedImplCopyWith(
|
factory _$$FetchedImplCopyWith(
|
||||||
@@ -116,19 +285,27 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult when<TResult extends Object?>({required TResult Function() fetched}) {
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
return fetched();
|
return fetched();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? whenOrNull<TResult extends Object?>({TResult? Function()? fetched}) {
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
return fetched?.call();
|
return fetched?.call();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeWhen<TResult extends Object?>({
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
TResult Function()? fetched,
|
TResult Function()? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) {
|
}) {
|
||||||
@@ -141,6 +318,7 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult map<TResult extends Object?>({
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
required TResult Function(_Fetched value) fetched,
|
required TResult Function(_Fetched value) fetched,
|
||||||
}) {
|
}) {
|
||||||
return fetched(this);
|
return fetched(this);
|
||||||
@@ -149,6 +327,7 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult? mapOrNull<TResult extends Object?>({
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult? Function(_Fetched value)? fetched,
|
TResult? Function(_Fetched value)? fetched,
|
||||||
}) {
|
}) {
|
||||||
return fetched?.call(this);
|
return fetched?.call(this);
|
||||||
@@ -157,6 +336,7 @@ class _$FetchedImpl implements _Fetched {
|
|||||||
@override
|
@override
|
||||||
@optionalTypeArgs
|
@optionalTypeArgs
|
||||||
TResult maybeMap<TResult extends Object?>({
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
TResult Function(_Fetched value)? fetched,
|
TResult Function(_Fetched value)? fetched,
|
||||||
required TResult orElse(),
|
required TResult orElse(),
|
||||||
}) {
|
}) {
|
||||||
@@ -178,6 +358,8 @@ mixin _$PaymentMethodAnalyticLoaderState {
|
|||||||
Option<AnalyticFailure> get failureOptionPaymentMethodAnalytic =>
|
Option<AnalyticFailure> get failureOptionPaymentMethodAnalytic =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
bool get isFetching => throw _privateConstructorUsedError;
|
bool get isFetching => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateFrom => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateTo => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
/// Create a copy of PaymentMethodAnalyticLoaderState
|
/// Create a copy of PaymentMethodAnalyticLoaderState
|
||||||
/// with the given fields replaced by the non-null parameter values.
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@@ -201,6 +383,8 @@ abstract class $PaymentMethodAnalyticLoaderStateCopyWith<$Res> {
|
|||||||
PaymentMethodAnalytic paymentMethodAnalytic,
|
PaymentMethodAnalytic paymentMethodAnalytic,
|
||||||
Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
||||||
bool isFetching,
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
});
|
});
|
||||||
|
|
||||||
$PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic;
|
$PaymentMethodAnalyticCopyWith<$Res> get paymentMethodAnalytic;
|
||||||
@@ -227,6 +411,8 @@ class _$PaymentMethodAnalyticLoaderStateCopyWithImpl<
|
|||||||
Object? paymentMethodAnalytic = null,
|
Object? paymentMethodAnalytic = null,
|
||||||
Object? failureOptionPaymentMethodAnalytic = null,
|
Object? failureOptionPaymentMethodAnalytic = null,
|
||||||
Object? isFetching = null,
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
}) {
|
}) {
|
||||||
return _then(
|
return _then(
|
||||||
_value.copyWith(
|
_value.copyWith(
|
||||||
@@ -243,6 +429,14 @@ class _$PaymentMethodAnalyticLoaderStateCopyWithImpl<
|
|||||||
? _value.isFetching
|
? _value.isFetching
|
||||||
: isFetching // ignore: cast_nullable_to_non_nullable
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
as bool,
|
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,
|
as $Val,
|
||||||
);
|
);
|
||||||
@@ -274,6 +468,8 @@ abstract class _$$PaymentMethodAnalyticLoaderStateImplCopyWith<$Res>
|
|||||||
PaymentMethodAnalytic paymentMethodAnalytic,
|
PaymentMethodAnalytic paymentMethodAnalytic,
|
||||||
Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
||||||
bool isFetching,
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -301,6 +497,8 @@ class __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl<$Res>
|
|||||||
Object? paymentMethodAnalytic = null,
|
Object? paymentMethodAnalytic = null,
|
||||||
Object? failureOptionPaymentMethodAnalytic = null,
|
Object? failureOptionPaymentMethodAnalytic = null,
|
||||||
Object? isFetching = null,
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
}) {
|
}) {
|
||||||
return _then(
|
return _then(
|
||||||
_$PaymentMethodAnalyticLoaderStateImpl(
|
_$PaymentMethodAnalyticLoaderStateImpl(
|
||||||
@@ -317,6 +515,14 @@ class __$$PaymentMethodAnalyticLoaderStateImplCopyWithImpl<$Res>
|
|||||||
? _value.isFetching
|
? _value.isFetching
|
||||||
: isFetching // ignore: cast_nullable_to_non_nullable
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
as bool,
|
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,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -330,6 +536,8 @@ class _$PaymentMethodAnalyticLoaderStateImpl
|
|||||||
required this.paymentMethodAnalytic,
|
required this.paymentMethodAnalytic,
|
||||||
required this.failureOptionPaymentMethodAnalytic,
|
required this.failureOptionPaymentMethodAnalytic,
|
||||||
this.isFetching = false,
|
this.isFetching = false,
|
||||||
|
required this.dateFrom,
|
||||||
|
required this.dateTo,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -339,10 +547,14 @@ class _$PaymentMethodAnalyticLoaderStateImpl
|
|||||||
@override
|
@override
|
||||||
@JsonKey()
|
@JsonKey()
|
||||||
final bool isFetching;
|
final bool isFetching;
|
||||||
|
@override
|
||||||
|
final DateTime dateFrom;
|
||||||
|
@override
|
||||||
|
final DateTime dateTo;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'PaymentMethodAnalyticLoaderState(paymentMethodAnalytic: $paymentMethodAnalytic, failureOptionPaymentMethodAnalytic: $failureOptionPaymentMethodAnalytic, isFetching: $isFetching)';
|
return 'PaymentMethodAnalyticLoaderState(paymentMethodAnalytic: $paymentMethodAnalytic, failureOptionPaymentMethodAnalytic: $failureOptionPaymentMethodAnalytic, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -359,7 +571,10 @@ class _$PaymentMethodAnalyticLoaderStateImpl
|
|||||||
other.failureOptionPaymentMethodAnalytic ==
|
other.failureOptionPaymentMethodAnalytic ==
|
||||||
failureOptionPaymentMethodAnalytic) &&
|
failureOptionPaymentMethodAnalytic) &&
|
||||||
(identical(other.isFetching, isFetching) ||
|
(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
|
@override
|
||||||
@@ -368,6 +583,8 @@ class _$PaymentMethodAnalyticLoaderStateImpl
|
|||||||
paymentMethodAnalytic,
|
paymentMethodAnalytic,
|
||||||
failureOptionPaymentMethodAnalytic,
|
failureOptionPaymentMethodAnalytic,
|
||||||
isFetching,
|
isFetching,
|
||||||
|
dateFrom,
|
||||||
|
dateTo,
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Create a copy of PaymentMethodAnalyticLoaderState
|
/// Create a copy of PaymentMethodAnalyticLoaderState
|
||||||
@@ -390,6 +607,8 @@ abstract class _PaymentMethodAnalyticLoaderState
|
|||||||
required final PaymentMethodAnalytic paymentMethodAnalytic,
|
required final PaymentMethodAnalytic paymentMethodAnalytic,
|
||||||
required final Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
required final Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
||||||
final bool isFetching,
|
final bool isFetching,
|
||||||
|
required final DateTime dateFrom,
|
||||||
|
required final DateTime dateTo,
|
||||||
}) = _$PaymentMethodAnalyticLoaderStateImpl;
|
}) = _$PaymentMethodAnalyticLoaderStateImpl;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -398,6 +617,10 @@ abstract class _PaymentMethodAnalyticLoaderState
|
|||||||
Option<AnalyticFailure> get failureOptionPaymentMethodAnalytic;
|
Option<AnalyticFailure> get failureOptionPaymentMethodAnalytic;
|
||||||
@override
|
@override
|
||||||
bool get isFetching;
|
bool get isFetching;
|
||||||
|
@override
|
||||||
|
DateTime get dateFrom;
|
||||||
|
@override
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
/// Create a copy of PaymentMethodAnalyticLoaderState
|
/// Create a copy of PaymentMethodAnalyticLoaderState
|
||||||
/// with the given fields replaced by the non-null parameter values.
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
|||||||
@@ -2,5 +2,9 @@ part of 'payment_method_analytic_loader_bloc.dart';
|
|||||||
|
|
||||||
@freezed
|
@freezed
|
||||||
class PaymentMethodAnalyticLoaderEvent with _$PaymentMethodAnalyticLoaderEvent {
|
class PaymentMethodAnalyticLoaderEvent with _$PaymentMethodAnalyticLoaderEvent {
|
||||||
|
const factory PaymentMethodAnalyticLoaderEvent.rangeDateChanged(
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
) = _RangeDateChanged;
|
||||||
const factory PaymentMethodAnalyticLoaderEvent.fetched() = _Fetched;
|
const factory PaymentMethodAnalyticLoaderEvent.fetched() = _Fetched;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,15 @@ class PaymentMethodAnalyticLoaderState with _$PaymentMethodAnalyticLoaderState {
|
|||||||
required PaymentMethodAnalytic paymentMethodAnalytic,
|
required PaymentMethodAnalytic paymentMethodAnalytic,
|
||||||
required Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
required Option<AnalyticFailure> failureOptionPaymentMethodAnalytic,
|
||||||
@Default(false) bool isFetching,
|
@Default(false) bool isFetching,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
}) = _PaymentMethodAnalyticLoaderState;
|
}) = _PaymentMethodAnalyticLoaderState;
|
||||||
|
|
||||||
factory PaymentMethodAnalyticLoaderState.initial() =>
|
factory PaymentMethodAnalyticLoaderState.initial() =>
|
||||||
PaymentMethodAnalyticLoaderState(
|
PaymentMethodAnalyticLoaderState(
|
||||||
paymentMethodAnalytic: PaymentMethodAnalytic.empty(),
|
paymentMethodAnalytic: PaymentMethodAnalytic.empty(),
|
||||||
failureOptionPaymentMethodAnalytic: none(),
|
failureOptionPaymentMethodAnalytic: none(),
|
||||||
|
dateFrom: DateTime.now(),
|
||||||
|
dateTo: DateTime.now(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class ProductAnalyticLoaderState with _$ProductAnalyticLoaderState {
|
|||||||
factory ProductAnalyticLoaderState.initial() => ProductAnalyticLoaderState(
|
factory ProductAnalyticLoaderState.initial() => ProductAnalyticLoaderState(
|
||||||
productAnalytic: ProductAnalytic.empty(),
|
productAnalytic: ProductAnalytic.empty(),
|
||||||
failureOptionProductAnalytic: none(),
|
failureOptionProductAnalytic: none(),
|
||||||
dateFrom: DateTime.now().subtract(const Duration(days: 30)),
|
dateFrom: DateTime.now(),
|
||||||
dateTo: DateTime.now(),
|
dateTo: DateTime.now(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
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_sharing_detail_loader_event.dart';
|
||||||
|
part 'profit_sharing_detail_loader_state.dart';
|
||||||
|
part 'profit_sharing_detail_loader_bloc.freezed.dart';
|
||||||
|
|
||||||
|
@injectable
|
||||||
|
class ProfitSharingDetailLoaderBloc
|
||||||
|
extends
|
||||||
|
Bloc<ProfitSharingDetailLoaderEvent, ProfitSharingDetailLoaderState> {
|
||||||
|
final IAnalyticRepository _repository;
|
||||||
|
|
||||||
|
ProfitSharingDetailLoaderBloc(this._repository)
|
||||||
|
: super(ProfitSharingDetailLoaderState.initial()) {
|
||||||
|
on<ProfitSharingDetailLoaderEvent>(_onProfitSharingDetailLoaderEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onProfitSharingDetailLoaderEvent(
|
||||||
|
ProfitSharingDetailLoaderEvent event,
|
||||||
|
Emitter<ProfitSharingDetailLoaderState> emit,
|
||||||
|
) {
|
||||||
|
return event.map(
|
||||||
|
expandedCategoryChanged: (e) async {
|
||||||
|
final isSame = state.expandedCategoryId == e.categoryId;
|
||||||
|
emit(state.copyWith(expandedCategoryId: isSame ? '' : e.categoryId));
|
||||||
|
},
|
||||||
|
fetched: (e) async {
|
||||||
|
emit(
|
||||||
|
state.copyWith(
|
||||||
|
isFetching: true,
|
||||||
|
failureOption: none(),
|
||||||
|
parentCategoryId: e.parentCategoryId,
|
||||||
|
dateFrom: e.dateFrom,
|
||||||
|
dateTo: e.dateTo,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
final result = await _repository.getProfitSharingDetail(
|
||||||
|
parentCategoryId: e.parentCategoryId,
|
||||||
|
dateFrom: e.dateFrom,
|
||||||
|
dateTo: e.dateTo,
|
||||||
|
);
|
||||||
|
|
||||||
|
final newState = result.fold(
|
||||||
|
(f) => state.copyWith(failureOption: optionOf(f)),
|
||||||
|
(detail) => state.copyWith(
|
||||||
|
detail: detail,
|
||||||
|
// Sub kategori pertama langsung terbuka supaya produknya kelihatan.
|
||||||
|
expandedCategoryId: detail.categories.isEmpty
|
||||||
|
? ''
|
||||||
|
: detail.categories.first.categoryId,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
emit(newState.copyWith(isFetching: false));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,772 @@
|
|||||||
|
// 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_sharing_detail_loader_bloc.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// FreezedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
T _$identity<T>(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 _$ProfitSharingDetailLoaderEvent {
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)
|
||||||
|
fetched,
|
||||||
|
required TResult Function(String categoryId) expandedCategoryChanged,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)?
|
||||||
|
fetched,
|
||||||
|
TResult? Function(String categoryId)? expandedCategoryChanged,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)?
|
||||||
|
fetched,
|
||||||
|
TResult Function(String categoryId)? expandedCategoryChanged,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
required TResult Function(_ExpandedCategoryChanged value)
|
||||||
|
expandedCategoryChanged,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
TResult? Function(_ExpandedCategoryChanged value)? expandedCategoryChanged,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
TResult Function(_ExpandedCategoryChanged value)? expandedCategoryChanged,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $ProfitSharingDetailLoaderEventCopyWith<$Res> {
|
||||||
|
factory $ProfitSharingDetailLoaderEventCopyWith(
|
||||||
|
ProfitSharingDetailLoaderEvent value,
|
||||||
|
$Res Function(ProfitSharingDetailLoaderEvent) then,
|
||||||
|
) =
|
||||||
|
_$ProfitSharingDetailLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
ProfitSharingDetailLoaderEvent
|
||||||
|
>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$ProfitSharingDetailLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends ProfitSharingDetailLoaderEvent
|
||||||
|
>
|
||||||
|
implements $ProfitSharingDetailLoaderEventCopyWith<$Res> {
|
||||||
|
_$ProfitSharingDetailLoaderEventCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderEvent
|
||||||
|
/// 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>;
|
||||||
|
@useResult
|
||||||
|
$Res call({String parentCategoryId, DateTime dateFrom, DateTime dateTo});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$FetchedImplCopyWithImpl<$Res>
|
||||||
|
extends _$ProfitSharingDetailLoaderEventCopyWithImpl<$Res, _$FetchedImpl>
|
||||||
|
implements _$$FetchedImplCopyWith<$Res> {
|
||||||
|
__$$FetchedImplCopyWithImpl(
|
||||||
|
_$FetchedImpl _value,
|
||||||
|
$Res Function(_$FetchedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? parentCategoryId = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_$FetchedImpl(
|
||||||
|
parentCategoryId: null == parentCategoryId
|
||||||
|
? _value.parentCategoryId
|
||||||
|
: parentCategoryId // 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,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$FetchedImpl implements _Fetched {
|
||||||
|
const _$FetchedImpl({
|
||||||
|
required this.parentCategoryId,
|
||||||
|
required this.dateFrom,
|
||||||
|
required this.dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
final String parentCategoryId;
|
||||||
|
@override
|
||||||
|
final DateTime dateFrom;
|
||||||
|
@override
|
||||||
|
final DateTime dateTo;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ProfitSharingDetailLoaderEvent.fetched(parentCategoryId: $parentCategoryId, dateFrom: $dateFrom, dateTo: $dateTo)';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType &&
|
||||||
|
other is _$FetchedImpl &&
|
||||||
|
(identical(other.parentCategoryId, parentCategoryId) ||
|
||||||
|
other.parentCategoryId == parentCategoryId) &&
|
||||||
|
(identical(other.dateFrom, dateFrom) ||
|
||||||
|
other.dateFrom == dateFrom) &&
|
||||||
|
(identical(other.dateTo, dateTo) || other.dateTo == dateTo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode =>
|
||||||
|
Object.hash(runtimeType, parentCategoryId, dateFrom, dateTo);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderEvent
|
||||||
|
/// 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<TResult extends Object?>({
|
||||||
|
required TResult Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)
|
||||||
|
fetched,
|
||||||
|
required TResult Function(String categoryId) expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return fetched(parentCategoryId, dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)?
|
||||||
|
fetched,
|
||||||
|
TResult? Function(String categoryId)? expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return fetched?.call(parentCategoryId, dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)?
|
||||||
|
fetched,
|
||||||
|
TResult Function(String categoryId)? expandedCategoryChanged,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched(parentCategoryId, dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
required TResult Function(_ExpandedCategoryChanged value)
|
||||||
|
expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
TResult? Function(_ExpandedCategoryChanged value)? expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return fetched?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
TResult Function(_ExpandedCategoryChanged value)? expandedCategoryChanged,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _Fetched implements ProfitSharingDetailLoaderEvent {
|
||||||
|
const factory _Fetched({
|
||||||
|
required final String parentCategoryId,
|
||||||
|
required final DateTime dateFrom,
|
||||||
|
required final DateTime dateTo,
|
||||||
|
}) = _$FetchedImpl;
|
||||||
|
|
||||||
|
String get parentCategoryId;
|
||||||
|
DateTime get dateFrom;
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$FetchedImplCopyWith<_$FetchedImpl> get copyWith =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class _$$ExpandedCategoryChangedImplCopyWith<$Res> {
|
||||||
|
factory _$$ExpandedCategoryChangedImplCopyWith(
|
||||||
|
_$ExpandedCategoryChangedImpl value,
|
||||||
|
$Res Function(_$ExpandedCategoryChangedImpl) then,
|
||||||
|
) = __$$ExpandedCategoryChangedImplCopyWithImpl<$Res>;
|
||||||
|
@useResult
|
||||||
|
$Res call({String categoryId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$ExpandedCategoryChangedImplCopyWithImpl<$Res>
|
||||||
|
extends
|
||||||
|
_$ProfitSharingDetailLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
_$ExpandedCategoryChangedImpl
|
||||||
|
>
|
||||||
|
implements _$$ExpandedCategoryChangedImplCopyWith<$Res> {
|
||||||
|
__$$ExpandedCategoryChangedImplCopyWithImpl(
|
||||||
|
_$ExpandedCategoryChangedImpl _value,
|
||||||
|
$Res Function(_$ExpandedCategoryChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({Object? categoryId = null}) {
|
||||||
|
return _then(
|
||||||
|
_$ExpandedCategoryChangedImpl(
|
||||||
|
null == categoryId
|
||||||
|
? _value.categoryId
|
||||||
|
: categoryId // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$ExpandedCategoryChangedImpl implements _ExpandedCategoryChanged {
|
||||||
|
const _$ExpandedCategoryChangedImpl(this.categoryId);
|
||||||
|
|
||||||
|
@override
|
||||||
|
final String categoryId;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ProfitSharingDetailLoaderEvent.expandedCategoryChanged(categoryId: $categoryId)';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType &&
|
||||||
|
other is _$ExpandedCategoryChangedImpl &&
|
||||||
|
(identical(other.categoryId, categoryId) ||
|
||||||
|
other.categoryId == categoryId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(runtimeType, categoryId);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
_$$ExpandedCategoryChangedImplCopyWith<_$ExpandedCategoryChangedImpl>
|
||||||
|
get copyWith =>
|
||||||
|
__$$ExpandedCategoryChangedImplCopyWithImpl<
|
||||||
|
_$ExpandedCategoryChangedImpl
|
||||||
|
>(this, _$identity);
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)
|
||||||
|
fetched,
|
||||||
|
required TResult Function(String categoryId) expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return expandedCategoryChanged(categoryId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)?
|
||||||
|
fetched,
|
||||||
|
TResult? Function(String categoryId)? expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return expandedCategoryChanged?.call(categoryId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(
|
||||||
|
String parentCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
)?
|
||||||
|
fetched,
|
||||||
|
TResult Function(String categoryId)? expandedCategoryChanged,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (expandedCategoryChanged != null) {
|
||||||
|
return expandedCategoryChanged(categoryId);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
required TResult Function(_ExpandedCategoryChanged value)
|
||||||
|
expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return expandedCategoryChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
TResult? Function(_ExpandedCategoryChanged value)? expandedCategoryChanged,
|
||||||
|
}) {
|
||||||
|
return expandedCategoryChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
TResult Function(_ExpandedCategoryChanged value)? expandedCategoryChanged,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (expandedCategoryChanged != null) {
|
||||||
|
return expandedCategoryChanged(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _ExpandedCategoryChanged
|
||||||
|
implements ProfitSharingDetailLoaderEvent {
|
||||||
|
const factory _ExpandedCategoryChanged(final String categoryId) =
|
||||||
|
_$ExpandedCategoryChangedImpl;
|
||||||
|
|
||||||
|
String get categoryId;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$ExpandedCategoryChangedImplCopyWith<_$ExpandedCategoryChangedImpl>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
mixin _$ProfitSharingDetailLoaderState {
|
||||||
|
ProfitSharingDetail get detail => throw _privateConstructorUsedError;
|
||||||
|
Option<AnalyticFailure> get failureOption =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
bool get isFetching => throw _privateConstructorUsedError;
|
||||||
|
String get parentCategoryId => throw _privateConstructorUsedError;
|
||||||
|
String get expandedCategoryId => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateFrom => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateTo => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
$ProfitSharingDetailLoaderStateCopyWith<ProfitSharingDetailLoaderState>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $ProfitSharingDetailLoaderStateCopyWith<$Res> {
|
||||||
|
factory $ProfitSharingDetailLoaderStateCopyWith(
|
||||||
|
ProfitSharingDetailLoaderState value,
|
||||||
|
$Res Function(ProfitSharingDetailLoaderState) then,
|
||||||
|
) =
|
||||||
|
_$ProfitSharingDetailLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
ProfitSharingDetailLoaderState
|
||||||
|
>;
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
ProfitSharingDetail detail,
|
||||||
|
Option<AnalyticFailure> failureOption,
|
||||||
|
bool isFetching,
|
||||||
|
String parentCategoryId,
|
||||||
|
String expandedCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
$ProfitSharingDetailCopyWith<$Res> get detail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$ProfitSharingDetailLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends ProfitSharingDetailLoaderState
|
||||||
|
>
|
||||||
|
implements $ProfitSharingDetailLoaderStateCopyWith<$Res> {
|
||||||
|
_$ProfitSharingDetailLoaderStateCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? detail = null,
|
||||||
|
Object? failureOption = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? parentCategoryId = null,
|
||||||
|
Object? expandedCategoryId = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_value.copyWith(
|
||||||
|
detail: null == detail
|
||||||
|
? _value.detail
|
||||||
|
: detail // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ProfitSharingDetail,
|
||||||
|
failureOption: null == failureOption
|
||||||
|
? _value.failureOption
|
||||||
|
: failureOption // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _value.isFetching
|
||||||
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
|
as bool,
|
||||||
|
parentCategoryId: null == parentCategoryId
|
||||||
|
? _value.parentCategoryId
|
||||||
|
: parentCategoryId // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,
|
||||||
|
expandedCategoryId: null == expandedCategoryId
|
||||||
|
? _value.expandedCategoryId
|
||||||
|
: expandedCategoryId // 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,
|
||||||
|
)
|
||||||
|
as $Val,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
$ProfitSharingDetailCopyWith<$Res> get detail {
|
||||||
|
return $ProfitSharingDetailCopyWith<$Res>(_value.detail, (value) {
|
||||||
|
return _then(_value.copyWith(detail: value) as $Val);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class _$$ProfitSharingDetailLoaderStateImplCopyWith<$Res>
|
||||||
|
implements $ProfitSharingDetailLoaderStateCopyWith<$Res> {
|
||||||
|
factory _$$ProfitSharingDetailLoaderStateImplCopyWith(
|
||||||
|
_$ProfitSharingDetailLoaderStateImpl value,
|
||||||
|
$Res Function(_$ProfitSharingDetailLoaderStateImpl) then,
|
||||||
|
) = __$$ProfitSharingDetailLoaderStateImplCopyWithImpl<$Res>;
|
||||||
|
@override
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
ProfitSharingDetail detail,
|
||||||
|
Option<AnalyticFailure> failureOption,
|
||||||
|
bool isFetching,
|
||||||
|
String parentCategoryId,
|
||||||
|
String expandedCategoryId,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
$ProfitSharingDetailCopyWith<$Res> get detail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$ProfitSharingDetailLoaderStateImplCopyWithImpl<$Res>
|
||||||
|
extends
|
||||||
|
_$ProfitSharingDetailLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
_$ProfitSharingDetailLoaderStateImpl
|
||||||
|
>
|
||||||
|
implements _$$ProfitSharingDetailLoaderStateImplCopyWith<$Res> {
|
||||||
|
__$$ProfitSharingDetailLoaderStateImplCopyWithImpl(
|
||||||
|
_$ProfitSharingDetailLoaderStateImpl _value,
|
||||||
|
$Res Function(_$ProfitSharingDetailLoaderStateImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? detail = null,
|
||||||
|
Object? failureOption = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? parentCategoryId = null,
|
||||||
|
Object? expandedCategoryId = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_$ProfitSharingDetailLoaderStateImpl(
|
||||||
|
detail: null == detail
|
||||||
|
? _value.detail
|
||||||
|
: detail // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ProfitSharingDetail,
|
||||||
|
failureOption: null == failureOption
|
||||||
|
? _value.failureOption
|
||||||
|
: failureOption // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _value.isFetching
|
||||||
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
|
as bool,
|
||||||
|
parentCategoryId: null == parentCategoryId
|
||||||
|
? _value.parentCategoryId
|
||||||
|
: parentCategoryId // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,
|
||||||
|
expandedCategoryId: null == expandedCategoryId
|
||||||
|
? _value.expandedCategoryId
|
||||||
|
: expandedCategoryId // 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,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$ProfitSharingDetailLoaderStateImpl
|
||||||
|
extends _ProfitSharingDetailLoaderState {
|
||||||
|
const _$ProfitSharingDetailLoaderStateImpl({
|
||||||
|
required this.detail,
|
||||||
|
required this.failureOption,
|
||||||
|
this.isFetching = false,
|
||||||
|
this.parentCategoryId = '',
|
||||||
|
this.expandedCategoryId = '',
|
||||||
|
required this.dateFrom,
|
||||||
|
required this.dateTo,
|
||||||
|
}) : super._();
|
||||||
|
|
||||||
|
@override
|
||||||
|
final ProfitSharingDetail detail;
|
||||||
|
@override
|
||||||
|
final Option<AnalyticFailure> failureOption;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final bool isFetching;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final String parentCategoryId;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final String expandedCategoryId;
|
||||||
|
@override
|
||||||
|
final DateTime dateFrom;
|
||||||
|
@override
|
||||||
|
final DateTime dateTo;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ProfitSharingDetailLoaderState(detail: $detail, failureOption: $failureOption, isFetching: $isFetching, parentCategoryId: $parentCategoryId, expandedCategoryId: $expandedCategoryId, dateFrom: $dateFrom, dateTo: $dateTo)';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType &&
|
||||||
|
other is _$ProfitSharingDetailLoaderStateImpl &&
|
||||||
|
(identical(other.detail, detail) || other.detail == detail) &&
|
||||||
|
(identical(other.failureOption, failureOption) ||
|
||||||
|
other.failureOption == failureOption) &&
|
||||||
|
(identical(other.isFetching, isFetching) ||
|
||||||
|
other.isFetching == isFetching) &&
|
||||||
|
(identical(other.parentCategoryId, parentCategoryId) ||
|
||||||
|
other.parentCategoryId == parentCategoryId) &&
|
||||||
|
(identical(other.expandedCategoryId, expandedCategoryId) ||
|
||||||
|
other.expandedCategoryId == expandedCategoryId) &&
|
||||||
|
(identical(other.dateFrom, dateFrom) ||
|
||||||
|
other.dateFrom == dateFrom) &&
|
||||||
|
(identical(other.dateTo, dateTo) || other.dateTo == dateTo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(
|
||||||
|
runtimeType,
|
||||||
|
detail,
|
||||||
|
failureOption,
|
||||||
|
isFetching,
|
||||||
|
parentCategoryId,
|
||||||
|
expandedCategoryId,
|
||||||
|
dateFrom,
|
||||||
|
dateTo,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
_$$ProfitSharingDetailLoaderStateImplCopyWith<
|
||||||
|
_$ProfitSharingDetailLoaderStateImpl
|
||||||
|
>
|
||||||
|
get copyWith =>
|
||||||
|
__$$ProfitSharingDetailLoaderStateImplCopyWithImpl<
|
||||||
|
_$ProfitSharingDetailLoaderStateImpl
|
||||||
|
>(this, _$identity);
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _ProfitSharingDetailLoaderState
|
||||||
|
extends ProfitSharingDetailLoaderState {
|
||||||
|
const factory _ProfitSharingDetailLoaderState({
|
||||||
|
required final ProfitSharingDetail detail,
|
||||||
|
required final Option<AnalyticFailure> failureOption,
|
||||||
|
final bool isFetching,
|
||||||
|
final String parentCategoryId,
|
||||||
|
final String expandedCategoryId,
|
||||||
|
required final DateTime dateFrom,
|
||||||
|
required final DateTime dateTo,
|
||||||
|
}) = _$ProfitSharingDetailLoaderStateImpl;
|
||||||
|
const _ProfitSharingDetailLoaderState._() : super._();
|
||||||
|
|
||||||
|
@override
|
||||||
|
ProfitSharingDetail get detail;
|
||||||
|
@override
|
||||||
|
Option<AnalyticFailure> get failureOption;
|
||||||
|
@override
|
||||||
|
bool get isFetching;
|
||||||
|
@override
|
||||||
|
String get parentCategoryId;
|
||||||
|
@override
|
||||||
|
String get expandedCategoryId;
|
||||||
|
@override
|
||||||
|
DateTime get dateFrom;
|
||||||
|
@override
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingDetailLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$ProfitSharingDetailLoaderStateImplCopyWith<
|
||||||
|
_$ProfitSharingDetailLoaderStateImpl
|
||||||
|
>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
part of 'profit_sharing_detail_loader_bloc.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingDetailLoaderEvent with _$ProfitSharingDetailLoaderEvent {
|
||||||
|
const factory ProfitSharingDetailLoaderEvent.fetched({
|
||||||
|
required String parentCategoryId,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
}) = _Fetched;
|
||||||
|
|
||||||
|
/// Buka/tutup daftar produk pada satu sub kategori.
|
||||||
|
const factory ProfitSharingDetailLoaderEvent.expandedCategoryChanged(
|
||||||
|
String categoryId,
|
||||||
|
) = _ExpandedCategoryChanged;
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
part of 'profit_sharing_detail_loader_bloc.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingDetailLoaderState with _$ProfitSharingDetailLoaderState {
|
||||||
|
const ProfitSharingDetailLoaderState._();
|
||||||
|
|
||||||
|
const factory ProfitSharingDetailLoaderState({
|
||||||
|
required ProfitSharingDetail detail,
|
||||||
|
required Option<AnalyticFailure> failureOption,
|
||||||
|
@Default(false) bool isFetching,
|
||||||
|
@Default('') String parentCategoryId,
|
||||||
|
@Default('') String expandedCategoryId,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
}) = _ProfitSharingDetailLoaderState;
|
||||||
|
|
||||||
|
factory ProfitSharingDetailLoaderState.initial() {
|
||||||
|
final now = DateTime.now();
|
||||||
|
return ProfitSharingDetailLoaderState(
|
||||||
|
detail: ProfitSharingDetail.empty(),
|
||||||
|
failureOption: none(),
|
||||||
|
dateFrom: DateTime(now.year, now.month, 1),
|
||||||
|
dateTo: DateTime(now.year, now.month + 1, 0),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isExpanded(String categoryId) => expandedCategoryId == categoryId;
|
||||||
|
}
|
||||||
@@ -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 'profit_sharing_loader_event.dart';
|
||||||
|
part 'profit_sharing_loader_state.dart';
|
||||||
|
part 'profit_sharing_loader_bloc.freezed.dart';
|
||||||
|
|
||||||
|
@injectable
|
||||||
|
class ProfitSharingLoaderBloc
|
||||||
|
extends Bloc<ProfitSharingLoaderEvent, ProfitSharingLoaderState> {
|
||||||
|
final IAnalyticRepository _repository;
|
||||||
|
|
||||||
|
ProfitSharingLoaderBloc(this._repository)
|
||||||
|
: super(ProfitSharingLoaderState.initial()) {
|
||||||
|
on<ProfitSharingLoaderEvent>(_onProfitSharingLoaderEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onProfitSharingLoaderEvent(
|
||||||
|
ProfitSharingLoaderEvent event,
|
||||||
|
Emitter<ProfitSharingLoaderState> emit,
|
||||||
|
) {
|
||||||
|
return event.map(
|
||||||
|
rangeDateChanged: (e) async {
|
||||||
|
emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo));
|
||||||
|
},
|
||||||
|
periodTypeChanged: (e) async {
|
||||||
|
emit(state.copyWith(periodType: e.periodType));
|
||||||
|
},
|
||||||
|
fetched: (e) async {
|
||||||
|
emit(state.copyWith(isFetching: true, failureOption: none()));
|
||||||
|
|
||||||
|
final result = await _repository.getProfitSharing(
|
||||||
|
dateFrom: state.dateFrom,
|
||||||
|
dateTo: state.dateTo,
|
||||||
|
);
|
||||||
|
|
||||||
|
final newState = result.fold(
|
||||||
|
(f) => state.copyWith(failureOption: optionOf(f)),
|
||||||
|
(profitSharing) => state.copyWith(profitSharing: profitSharing),
|
||||||
|
);
|
||||||
|
|
||||||
|
emit(newState.copyWith(isFetching: false));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,807 @@
|
|||||||
|
// 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_sharing_loader_bloc.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// FreezedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
T _$identity<T>(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 _$ProfitSharingLoaderEvent {
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(ProfitSharingPeriodType periodType)
|
||||||
|
periodTypeChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_PeriodTypeChanged value) periodTypeChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $ProfitSharingLoaderEventCopyWith<$Res> {
|
||||||
|
factory $ProfitSharingLoaderEventCopyWith(
|
||||||
|
ProfitSharingLoaderEvent value,
|
||||||
|
$Res Function(ProfitSharingLoaderEvent) then,
|
||||||
|
) = _$ProfitSharingLoaderEventCopyWithImpl<$Res, ProfitSharingLoaderEvent>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$ProfitSharingLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends ProfitSharingLoaderEvent
|
||||||
|
>
|
||||||
|
implements $ProfitSharingLoaderEventCopyWith<$Res> {
|
||||||
|
_$ProfitSharingLoaderEventCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderEvent
|
||||||
|
/// 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 _$ProfitSharingLoaderEventCopyWithImpl<$Res, _$RangeDateChangedImpl>
|
||||||
|
implements _$$RangeDateChangedImplCopyWith<$Res> {
|
||||||
|
__$$RangeDateChangedImplCopyWithImpl(
|
||||||
|
_$RangeDateChangedImpl _value,
|
||||||
|
$Res Function(_$RangeDateChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderEvent
|
||||||
|
/// 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 'ProfitSharingLoaderEvent.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 ProfitSharingLoaderEvent
|
||||||
|
/// 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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(ProfitSharingPeriodType periodType)
|
||||||
|
periodTypeChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (rangeDateChanged != null) {
|
||||||
|
return rangeDateChanged(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_PeriodTypeChanged value) periodTypeChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (rangeDateChanged != null) {
|
||||||
|
return rangeDateChanged(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _RangeDateChanged implements ProfitSharingLoaderEvent {
|
||||||
|
const factory _RangeDateChanged(
|
||||||
|
final DateTime dateFrom,
|
||||||
|
final DateTime dateTo,
|
||||||
|
) = _$RangeDateChangedImpl;
|
||||||
|
|
||||||
|
DateTime get dateFrom;
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderEvent
|
||||||
|
/// 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 _$$PeriodTypeChangedImplCopyWith<$Res> {
|
||||||
|
factory _$$PeriodTypeChangedImplCopyWith(
|
||||||
|
_$PeriodTypeChangedImpl value,
|
||||||
|
$Res Function(_$PeriodTypeChangedImpl) then,
|
||||||
|
) = __$$PeriodTypeChangedImplCopyWithImpl<$Res>;
|
||||||
|
@useResult
|
||||||
|
$Res call({ProfitSharingPeriodType periodType});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$PeriodTypeChangedImplCopyWithImpl<$Res>
|
||||||
|
extends
|
||||||
|
_$ProfitSharingLoaderEventCopyWithImpl<$Res, _$PeriodTypeChangedImpl>
|
||||||
|
implements _$$PeriodTypeChangedImplCopyWith<$Res> {
|
||||||
|
__$$PeriodTypeChangedImplCopyWithImpl(
|
||||||
|
_$PeriodTypeChangedImpl _value,
|
||||||
|
$Res Function(_$PeriodTypeChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({Object? periodType = null}) {
|
||||||
|
return _then(
|
||||||
|
_$PeriodTypeChangedImpl(
|
||||||
|
null == periodType
|
||||||
|
? _value.periodType
|
||||||
|
: periodType // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ProfitSharingPeriodType,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$PeriodTypeChangedImpl implements _PeriodTypeChanged {
|
||||||
|
const _$PeriodTypeChangedImpl(this.periodType);
|
||||||
|
|
||||||
|
@override
|
||||||
|
final ProfitSharingPeriodType periodType;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ProfitSharingLoaderEvent.periodTypeChanged(periodType: $periodType)';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType &&
|
||||||
|
other is _$PeriodTypeChangedImpl &&
|
||||||
|
(identical(other.periodType, periodType) ||
|
||||||
|
other.periodType == periodType));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(runtimeType, periodType);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
_$$PeriodTypeChangedImplCopyWith<_$PeriodTypeChangedImpl> get copyWith =>
|
||||||
|
__$$PeriodTypeChangedImplCopyWithImpl<_$PeriodTypeChangedImpl>(
|
||||||
|
this,
|
||||||
|
_$identity,
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(ProfitSharingPeriodType periodType)
|
||||||
|
periodTypeChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return periodTypeChanged(periodType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return periodTypeChanged?.call(periodType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (periodTypeChanged != null) {
|
||||||
|
return periodTypeChanged(periodType);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_PeriodTypeChanged value) periodTypeChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return periodTypeChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return periodTypeChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (periodTypeChanged != null) {
|
||||||
|
return periodTypeChanged(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _PeriodTypeChanged implements ProfitSharingLoaderEvent {
|
||||||
|
const factory _PeriodTypeChanged(final ProfitSharingPeriodType periodType) =
|
||||||
|
_$PeriodTypeChangedImpl;
|
||||||
|
|
||||||
|
ProfitSharingPeriodType get periodType;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$PeriodTypeChangedImplCopyWith<_$PeriodTypeChangedImpl> get copyWith =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class _$$FetchedImplCopyWith<$Res> {
|
||||||
|
factory _$$FetchedImplCopyWith(
|
||||||
|
_$FetchedImpl value,
|
||||||
|
$Res Function(_$FetchedImpl) then,
|
||||||
|
) = __$$FetchedImplCopyWithImpl<$Res>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$FetchedImplCopyWithImpl<$Res>
|
||||||
|
extends _$ProfitSharingLoaderEventCopyWithImpl<$Res, _$FetchedImpl>
|
||||||
|
implements _$$FetchedImplCopyWith<$Res> {
|
||||||
|
__$$FetchedImplCopyWithImpl(
|
||||||
|
_$FetchedImpl _value,
|
||||||
|
$Res Function(_$FetchedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$FetchedImpl implements _Fetched {
|
||||||
|
const _$FetchedImpl();
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ProfitSharingLoaderEvent.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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(ProfitSharingPeriodType periodType)
|
||||||
|
periodTypeChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return fetched();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return fetched?.call();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(ProfitSharingPeriodType periodType)? periodTypeChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched();
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_PeriodTypeChanged value) periodTypeChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return fetched?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_PeriodTypeChanged value)? periodTypeChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _Fetched implements ProfitSharingLoaderEvent {
|
||||||
|
const factory _Fetched() = _$FetchedImpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
mixin _$ProfitSharingLoaderState {
|
||||||
|
ProfitSharing get profitSharing => throw _privateConstructorUsedError;
|
||||||
|
Option<AnalyticFailure> get failureOption =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
bool get isFetching => throw _privateConstructorUsedError;
|
||||||
|
ProfitSharingPeriodType get periodType => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateFrom => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateTo => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
$ProfitSharingLoaderStateCopyWith<ProfitSharingLoaderState> get copyWith =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $ProfitSharingLoaderStateCopyWith<$Res> {
|
||||||
|
factory $ProfitSharingLoaderStateCopyWith(
|
||||||
|
ProfitSharingLoaderState value,
|
||||||
|
$Res Function(ProfitSharingLoaderState) then,
|
||||||
|
) = _$ProfitSharingLoaderStateCopyWithImpl<$Res, ProfitSharingLoaderState>;
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
ProfitSharing profitSharing,
|
||||||
|
Option<AnalyticFailure> failureOption,
|
||||||
|
bool isFetching,
|
||||||
|
ProfitSharingPeriodType periodType,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
$ProfitSharingCopyWith<$Res> get profitSharing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$ProfitSharingLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends ProfitSharingLoaderState
|
||||||
|
>
|
||||||
|
implements $ProfitSharingLoaderStateCopyWith<$Res> {
|
||||||
|
_$ProfitSharingLoaderStateCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? profitSharing = null,
|
||||||
|
Object? failureOption = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? periodType = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_value.copyWith(
|
||||||
|
profitSharing: null == profitSharing
|
||||||
|
? _value.profitSharing
|
||||||
|
: profitSharing // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ProfitSharing,
|
||||||
|
failureOption: null == failureOption
|
||||||
|
? _value.failureOption
|
||||||
|
: failureOption // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _value.isFetching
|
||||||
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
|
as bool,
|
||||||
|
periodType: null == periodType
|
||||||
|
? _value.periodType
|
||||||
|
: periodType // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ProfitSharingPeriodType,
|
||||||
|
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,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
$ProfitSharingCopyWith<$Res> get profitSharing {
|
||||||
|
return $ProfitSharingCopyWith<$Res>(_value.profitSharing, (value) {
|
||||||
|
return _then(_value.copyWith(profitSharing: value) as $Val);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class _$$ProfitSharingLoaderStateImplCopyWith<$Res>
|
||||||
|
implements $ProfitSharingLoaderStateCopyWith<$Res> {
|
||||||
|
factory _$$ProfitSharingLoaderStateImplCopyWith(
|
||||||
|
_$ProfitSharingLoaderStateImpl value,
|
||||||
|
$Res Function(_$ProfitSharingLoaderStateImpl) then,
|
||||||
|
) = __$$ProfitSharingLoaderStateImplCopyWithImpl<$Res>;
|
||||||
|
@override
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
ProfitSharing profitSharing,
|
||||||
|
Option<AnalyticFailure> failureOption,
|
||||||
|
bool isFetching,
|
||||||
|
ProfitSharingPeriodType periodType,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
$ProfitSharingCopyWith<$Res> get profitSharing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$ProfitSharingLoaderStateImplCopyWithImpl<$Res>
|
||||||
|
extends
|
||||||
|
_$ProfitSharingLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
_$ProfitSharingLoaderStateImpl
|
||||||
|
>
|
||||||
|
implements _$$ProfitSharingLoaderStateImplCopyWith<$Res> {
|
||||||
|
__$$ProfitSharingLoaderStateImplCopyWithImpl(
|
||||||
|
_$ProfitSharingLoaderStateImpl _value,
|
||||||
|
$Res Function(_$ProfitSharingLoaderStateImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? profitSharing = null,
|
||||||
|
Object? failureOption = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? periodType = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_$ProfitSharingLoaderStateImpl(
|
||||||
|
profitSharing: null == profitSharing
|
||||||
|
? _value.profitSharing
|
||||||
|
: profitSharing // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ProfitSharing,
|
||||||
|
failureOption: null == failureOption
|
||||||
|
? _value.failureOption
|
||||||
|
: failureOption // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _value.isFetching
|
||||||
|
: isFetching // ignore: cast_nullable_to_non_nullable
|
||||||
|
as bool,
|
||||||
|
periodType: null == periodType
|
||||||
|
? _value.periodType
|
||||||
|
: periodType // ignore: cast_nullable_to_non_nullable
|
||||||
|
as ProfitSharingPeriodType,
|
||||||
|
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,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$ProfitSharingLoaderStateImpl extends _ProfitSharingLoaderState {
|
||||||
|
const _$ProfitSharingLoaderStateImpl({
|
||||||
|
required this.profitSharing,
|
||||||
|
required this.failureOption,
|
||||||
|
this.isFetching = false,
|
||||||
|
this.periodType = ProfitSharingPeriodType.weekly,
|
||||||
|
required this.dateFrom,
|
||||||
|
required this.dateTo,
|
||||||
|
}) : super._();
|
||||||
|
|
||||||
|
@override
|
||||||
|
final ProfitSharing profitSharing;
|
||||||
|
@override
|
||||||
|
final Option<AnalyticFailure> failureOption;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final bool isFetching;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final ProfitSharingPeriodType periodType;
|
||||||
|
@override
|
||||||
|
final DateTime dateFrom;
|
||||||
|
@override
|
||||||
|
final DateTime dateTo;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ProfitSharingLoaderState(profitSharing: $profitSharing, failureOption: $failureOption, isFetching: $isFetching, periodType: $periodType, dateFrom: $dateFrom, dateTo: $dateTo)';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType &&
|
||||||
|
other is _$ProfitSharingLoaderStateImpl &&
|
||||||
|
(identical(other.profitSharing, profitSharing) ||
|
||||||
|
other.profitSharing == profitSharing) &&
|
||||||
|
(identical(other.failureOption, failureOption) ||
|
||||||
|
other.failureOption == failureOption) &&
|
||||||
|
(identical(other.isFetching, isFetching) ||
|
||||||
|
other.isFetching == isFetching) &&
|
||||||
|
(identical(other.periodType, periodType) ||
|
||||||
|
other.periodType == periodType) &&
|
||||||
|
(identical(other.dateFrom, dateFrom) ||
|
||||||
|
other.dateFrom == dateFrom) &&
|
||||||
|
(identical(other.dateTo, dateTo) || other.dateTo == dateTo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(
|
||||||
|
runtimeType,
|
||||||
|
profitSharing,
|
||||||
|
failureOption,
|
||||||
|
isFetching,
|
||||||
|
periodType,
|
||||||
|
dateFrom,
|
||||||
|
dateTo,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
_$$ProfitSharingLoaderStateImplCopyWith<_$ProfitSharingLoaderStateImpl>
|
||||||
|
get copyWith =>
|
||||||
|
__$$ProfitSharingLoaderStateImplCopyWithImpl<
|
||||||
|
_$ProfitSharingLoaderStateImpl
|
||||||
|
>(this, _$identity);
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _ProfitSharingLoaderState extends ProfitSharingLoaderState {
|
||||||
|
const factory _ProfitSharingLoaderState({
|
||||||
|
required final ProfitSharing profitSharing,
|
||||||
|
required final Option<AnalyticFailure> failureOption,
|
||||||
|
final bool isFetching,
|
||||||
|
final ProfitSharingPeriodType periodType,
|
||||||
|
required final DateTime dateFrom,
|
||||||
|
required final DateTime dateTo,
|
||||||
|
}) = _$ProfitSharingLoaderStateImpl;
|
||||||
|
const _ProfitSharingLoaderState._() : super._();
|
||||||
|
|
||||||
|
@override
|
||||||
|
ProfitSharing get profitSharing;
|
||||||
|
@override
|
||||||
|
Option<AnalyticFailure> get failureOption;
|
||||||
|
@override
|
||||||
|
bool get isFetching;
|
||||||
|
@override
|
||||||
|
ProfitSharingPeriodType get periodType;
|
||||||
|
@override
|
||||||
|
DateTime get dateFrom;
|
||||||
|
@override
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of ProfitSharingLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$ProfitSharingLoaderStateImplCopyWith<_$ProfitSharingLoaderStateImpl>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
part of 'profit_sharing_loader_bloc.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingLoaderEvent with _$ProfitSharingLoaderEvent {
|
||||||
|
const factory ProfitSharingLoaderEvent.rangeDateChanged(
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
) = _RangeDateChanged;
|
||||||
|
const factory ProfitSharingLoaderEvent.periodTypeChanged(
|
||||||
|
ProfitSharingPeriodType periodType,
|
||||||
|
) = _PeriodTypeChanged;
|
||||||
|
const factory ProfitSharingLoaderEvent.fetched() = _Fetched;
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
part of 'profit_sharing_loader_bloc.dart';
|
||||||
|
|
||||||
|
/// Tampilan rincian bagi hasil: per minggu atau per bulan.
|
||||||
|
enum ProfitSharingPeriodType { weekly, monthly }
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingLoaderState with _$ProfitSharingLoaderState {
|
||||||
|
const ProfitSharingLoaderState._();
|
||||||
|
|
||||||
|
const factory ProfitSharingLoaderState({
|
||||||
|
required ProfitSharing profitSharing,
|
||||||
|
required Option<AnalyticFailure> failureOption,
|
||||||
|
@Default(false) bool isFetching,
|
||||||
|
@Default(ProfitSharingPeriodType.weekly) ProfitSharingPeriodType periodType,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
}) = _ProfitSharingLoaderState;
|
||||||
|
|
||||||
|
factory ProfitSharingLoaderState.initial() {
|
||||||
|
final now = DateTime.now();
|
||||||
|
return ProfitSharingLoaderState(
|
||||||
|
profitSharing: ProfitSharing.empty(),
|
||||||
|
failureOption: none(),
|
||||||
|
dateFrom: DateTime(now.year, now.month, 1),
|
||||||
|
dateTo: DateTime(now.year, now.month + 1, 0),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Baris periode sesuai tab yang dipilih, periode kosong disembunyikan.
|
||||||
|
List<ProfitSharingPeriod> get periods {
|
||||||
|
final budget = profitSharing.budget;
|
||||||
|
final list = periodType == ProfitSharingPeriodType.weekly
|
||||||
|
? budget.weekly
|
||||||
|
: budget.monthly;
|
||||||
|
return list.where((e) => e.hasRevenue).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
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 'purchasing_analytic_loader_event.dart';
|
||||||
|
part 'purchasing_analytic_loader_state.dart';
|
||||||
|
part 'purchasing_analytic_loader_bloc.freezed.dart';
|
||||||
|
|
||||||
|
@injectable
|
||||||
|
class PurchasingAnalyticLoaderBloc
|
||||||
|
extends Bloc<PurchasingAnalyticLoaderEvent, PurchasingAnalyticLoaderState> {
|
||||||
|
final IAnalyticRepository _analyticRepository;
|
||||||
|
|
||||||
|
PurchasingAnalyticLoaderBloc(this._analyticRepository)
|
||||||
|
: super(PurchasingAnalyticLoaderState.initial()) {
|
||||||
|
on<PurchasingAnalyticLoaderEvent>(_onEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onEvent(
|
||||||
|
PurchasingAnalyticLoaderEvent event,
|
||||||
|
Emitter<PurchasingAnalyticLoaderState> emit,
|
||||||
|
) {
|
||||||
|
return event.map(
|
||||||
|
rangeDateChanged: (e) async {
|
||||||
|
emit(state.copyWith(dateFrom: e.dateFrom, dateTo: e.dateTo));
|
||||||
|
},
|
||||||
|
outletChanged: (e) async {
|
||||||
|
emit(state.copyWith(outletId: e.outletId));
|
||||||
|
},
|
||||||
|
fetched: (e) async {
|
||||||
|
emit(state.copyWith(
|
||||||
|
isFetching: true,
|
||||||
|
failureOptionPurchasing: none(),
|
||||||
|
));
|
||||||
|
|
||||||
|
final result = await _analyticRepository.getPurchasing(
|
||||||
|
dateFrom: state.dateFrom,
|
||||||
|
dateTo: state.dateTo,
|
||||||
|
outletId: state.outletId,
|
||||||
|
groupBy: state.groupBy,
|
||||||
|
);
|
||||||
|
|
||||||
|
final newState = result.fold(
|
||||||
|
(f) => state.copyWith(failureOptionPurchasing: optionOf(f)),
|
||||||
|
(purchasing) => state.copyWith(purchasing: purchasing),
|
||||||
|
);
|
||||||
|
|
||||||
|
emit(newState.copyWith(isFetching: false));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,840 @@
|
|||||||
|
// 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 'purchasing_analytic_loader_bloc.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// FreezedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
T _$identity<T>(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 _$PurchasingAnalyticLoaderEvent {
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult when<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(String? outletId) outletChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(String? outletId)? outletChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(String? outletId)? outletChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_OutletChanged value) outletChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_OutletChanged value)? outletChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_OutletChanged value)? outletChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $PurchasingAnalyticLoaderEventCopyWith<$Res> {
|
||||||
|
factory $PurchasingAnalyticLoaderEventCopyWith(
|
||||||
|
PurchasingAnalyticLoaderEvent value,
|
||||||
|
$Res Function(PurchasingAnalyticLoaderEvent) then,
|
||||||
|
) =
|
||||||
|
_$PurchasingAnalyticLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
PurchasingAnalyticLoaderEvent
|
||||||
|
>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$PurchasingAnalyticLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends PurchasingAnalyticLoaderEvent
|
||||||
|
>
|
||||||
|
implements $PurchasingAnalyticLoaderEventCopyWith<$Res> {
|
||||||
|
_$PurchasingAnalyticLoaderEventCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderEvent
|
||||||
|
/// 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
|
||||||
|
_$PurchasingAnalyticLoaderEventCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
_$RangeDateChangedImpl
|
||||||
|
>
|
||||||
|
implements _$$RangeDateChangedImplCopyWith<$Res> {
|
||||||
|
__$$RangeDateChangedImplCopyWithImpl(
|
||||||
|
_$RangeDateChangedImpl _value,
|
||||||
|
$Res Function(_$RangeDateChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderEvent
|
||||||
|
/// 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 'PurchasingAnalyticLoaderEvent.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 PurchasingAnalyticLoaderEvent
|
||||||
|
/// 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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(String? outletId) outletChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(String? outletId)? outletChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(String? outletId)? outletChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (rangeDateChanged != null) {
|
||||||
|
return rangeDateChanged(dateFrom, dateTo);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_OutletChanged value) outletChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_OutletChanged value)? outletChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return rangeDateChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_OutletChanged value)? outletChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (rangeDateChanged != null) {
|
||||||
|
return rangeDateChanged(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _RangeDateChanged implements PurchasingAnalyticLoaderEvent {
|
||||||
|
const factory _RangeDateChanged(
|
||||||
|
final DateTime dateFrom,
|
||||||
|
final DateTime dateTo,
|
||||||
|
) = _$RangeDateChangedImpl;
|
||||||
|
|
||||||
|
DateTime get dateFrom;
|
||||||
|
DateTime get dateTo;
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderEvent
|
||||||
|
/// 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 _$$OutletChangedImplCopyWith<$Res> {
|
||||||
|
factory _$$OutletChangedImplCopyWith(
|
||||||
|
_$OutletChangedImpl value,
|
||||||
|
$Res Function(_$OutletChangedImpl) then,
|
||||||
|
) = __$$OutletChangedImplCopyWithImpl<$Res>;
|
||||||
|
@useResult
|
||||||
|
$Res call({String? outletId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$OutletChangedImplCopyWithImpl<$Res>
|
||||||
|
extends
|
||||||
|
_$PurchasingAnalyticLoaderEventCopyWithImpl<$Res, _$OutletChangedImpl>
|
||||||
|
implements _$$OutletChangedImplCopyWith<$Res> {
|
||||||
|
__$$OutletChangedImplCopyWithImpl(
|
||||||
|
_$OutletChangedImpl _value,
|
||||||
|
$Res Function(_$OutletChangedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderEvent
|
||||||
|
/// 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 'PurchasingAnalyticLoaderEvent.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 PurchasingAnalyticLoaderEvent
|
||||||
|
/// 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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(String? outletId) outletChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return outletChanged(outletId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(String? outletId)? outletChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return outletChanged?.call(outletId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(String? outletId)? outletChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (outletChanged != null) {
|
||||||
|
return outletChanged(outletId);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_OutletChanged value) outletChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return outletChanged(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_OutletChanged value)? outletChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return outletChanged?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
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 PurchasingAnalyticLoaderEvent {
|
||||||
|
const factory _OutletChanged(final String? outletId) = _$OutletChangedImpl;
|
||||||
|
|
||||||
|
String? get outletId;
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderEvent
|
||||||
|
/// 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(
|
||||||
|
_$FetchedImpl value,
|
||||||
|
$Res Function(_$FetchedImpl) then,
|
||||||
|
) = __$$FetchedImplCopyWithImpl<$Res>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$FetchedImplCopyWithImpl<$Res>
|
||||||
|
extends _$PurchasingAnalyticLoaderEventCopyWithImpl<$Res, _$FetchedImpl>
|
||||||
|
implements _$$FetchedImplCopyWith<$Res> {
|
||||||
|
__$$FetchedImplCopyWithImpl(
|
||||||
|
_$FetchedImpl _value,
|
||||||
|
$Res Function(_$FetchedImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderEvent
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$FetchedImpl implements _Fetched {
|
||||||
|
const _$FetchedImpl();
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'PurchasingAnalyticLoaderEvent.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<TResult extends Object?>({
|
||||||
|
required TResult Function(DateTime dateFrom, DateTime dateTo)
|
||||||
|
rangeDateChanged,
|
||||||
|
required TResult Function(String? outletId) outletChanged,
|
||||||
|
required TResult Function() fetched,
|
||||||
|
}) {
|
||||||
|
return fetched();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? whenOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult? Function(String? outletId)? outletChanged,
|
||||||
|
TResult? Function()? fetched,
|
||||||
|
}) {
|
||||||
|
return fetched?.call();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeWhen<TResult extends Object?>({
|
||||||
|
TResult Function(DateTime dateFrom, DateTime dateTo)? rangeDateChanged,
|
||||||
|
TResult Function(String? outletId)? outletChanged,
|
||||||
|
TResult Function()? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched();
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult map<TResult extends Object?>({
|
||||||
|
required TResult Function(_RangeDateChanged value) rangeDateChanged,
|
||||||
|
required TResult Function(_OutletChanged value) outletChanged,
|
||||||
|
required TResult Function(_Fetched value) fetched,
|
||||||
|
}) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult? mapOrNull<TResult extends Object?>({
|
||||||
|
TResult? Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult? Function(_OutletChanged value)? outletChanged,
|
||||||
|
TResult? Function(_Fetched value)? fetched,
|
||||||
|
}) {
|
||||||
|
return fetched?.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
@optionalTypeArgs
|
||||||
|
TResult maybeMap<TResult extends Object?>({
|
||||||
|
TResult Function(_RangeDateChanged value)? rangeDateChanged,
|
||||||
|
TResult Function(_OutletChanged value)? outletChanged,
|
||||||
|
TResult Function(_Fetched value)? fetched,
|
||||||
|
required TResult orElse(),
|
||||||
|
}) {
|
||||||
|
if (fetched != null) {
|
||||||
|
return fetched(this);
|
||||||
|
}
|
||||||
|
return orElse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _Fetched implements PurchasingAnalyticLoaderEvent {
|
||||||
|
const factory _Fetched() = _$FetchedImpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
mixin _$PurchasingAnalyticLoaderState {
|
||||||
|
PurchasingAnalytic get purchasing => throw _privateConstructorUsedError;
|
||||||
|
Option<AnalyticFailure> get failureOptionPurchasing =>
|
||||||
|
throw _privateConstructorUsedError;
|
||||||
|
bool get isFetching => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateFrom => throw _privateConstructorUsedError;
|
||||||
|
DateTime get dateTo => throw _privateConstructorUsedError;
|
||||||
|
String? get outletId => throw _privateConstructorUsedError;
|
||||||
|
String get groupBy => throw _privateConstructorUsedError;
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
$PurchasingAnalyticLoaderStateCopyWith<PurchasingAnalyticLoaderState>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class $PurchasingAnalyticLoaderStateCopyWith<$Res> {
|
||||||
|
factory $PurchasingAnalyticLoaderStateCopyWith(
|
||||||
|
PurchasingAnalyticLoaderState value,
|
||||||
|
$Res Function(PurchasingAnalyticLoaderState) then,
|
||||||
|
) =
|
||||||
|
_$PurchasingAnalyticLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
PurchasingAnalyticLoaderState
|
||||||
|
>;
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
PurchasingAnalytic purchasing,
|
||||||
|
Option<AnalyticFailure> failureOptionPurchasing,
|
||||||
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
String? outletId,
|
||||||
|
String groupBy,
|
||||||
|
});
|
||||||
|
|
||||||
|
$PurchasingAnalyticCopyWith<$Res> get purchasing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class _$PurchasingAnalyticLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
$Val extends PurchasingAnalyticLoaderState
|
||||||
|
>
|
||||||
|
implements $PurchasingAnalyticLoaderStateCopyWith<$Res> {
|
||||||
|
_$PurchasingAnalyticLoaderStateCopyWithImpl(this._value, this._then);
|
||||||
|
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Val _value;
|
||||||
|
// ignore: unused_field
|
||||||
|
final $Res Function($Val) _then;
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? purchasing = null,
|
||||||
|
Object? failureOptionPurchasing = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
Object? outletId = freezed,
|
||||||
|
Object? groupBy = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_value.copyWith(
|
||||||
|
purchasing: null == purchasing
|
||||||
|
? _value.purchasing
|
||||||
|
: purchasing // ignore: cast_nullable_to_non_nullable
|
||||||
|
as PurchasingAnalytic,
|
||||||
|
failureOptionPurchasing: null == failureOptionPurchasing
|
||||||
|
? _value.failureOptionPurchasing
|
||||||
|
: failureOptionPurchasing // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _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,
|
||||||
|
outletId: freezed == outletId
|
||||||
|
? _value.outletId
|
||||||
|
: outletId // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String?,
|
||||||
|
groupBy: null == groupBy
|
||||||
|
? _value.groupBy
|
||||||
|
: groupBy // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,
|
||||||
|
)
|
||||||
|
as $Val,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
$PurchasingAnalyticCopyWith<$Res> get purchasing {
|
||||||
|
return $PurchasingAnalyticCopyWith<$Res>(_value.purchasing, (value) {
|
||||||
|
return _then(_value.copyWith(purchasing: value) as $Val);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract class _$$PurchasingAnalyticLoaderStateImplCopyWith<$Res>
|
||||||
|
implements $PurchasingAnalyticLoaderStateCopyWith<$Res> {
|
||||||
|
factory _$$PurchasingAnalyticLoaderStateImplCopyWith(
|
||||||
|
_$PurchasingAnalyticLoaderStateImpl value,
|
||||||
|
$Res Function(_$PurchasingAnalyticLoaderStateImpl) then,
|
||||||
|
) = __$$PurchasingAnalyticLoaderStateImplCopyWithImpl<$Res>;
|
||||||
|
@override
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
PurchasingAnalytic purchasing,
|
||||||
|
Option<AnalyticFailure> failureOptionPurchasing,
|
||||||
|
bool isFetching,
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
String? outletId,
|
||||||
|
String groupBy,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
$PurchasingAnalyticCopyWith<$Res> get purchasing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
class __$$PurchasingAnalyticLoaderStateImplCopyWithImpl<$Res>
|
||||||
|
extends
|
||||||
|
_$PurchasingAnalyticLoaderStateCopyWithImpl<
|
||||||
|
$Res,
|
||||||
|
_$PurchasingAnalyticLoaderStateImpl
|
||||||
|
>
|
||||||
|
implements _$$PurchasingAnalyticLoaderStateImplCopyWith<$Res> {
|
||||||
|
__$$PurchasingAnalyticLoaderStateImplCopyWithImpl(
|
||||||
|
_$PurchasingAnalyticLoaderStateImpl _value,
|
||||||
|
$Res Function(_$PurchasingAnalyticLoaderStateImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
@override
|
||||||
|
$Res call({
|
||||||
|
Object? purchasing = null,
|
||||||
|
Object? failureOptionPurchasing = null,
|
||||||
|
Object? isFetching = null,
|
||||||
|
Object? dateFrom = null,
|
||||||
|
Object? dateTo = null,
|
||||||
|
Object? outletId = freezed,
|
||||||
|
Object? groupBy = null,
|
||||||
|
}) {
|
||||||
|
return _then(
|
||||||
|
_$PurchasingAnalyticLoaderStateImpl(
|
||||||
|
purchasing: null == purchasing
|
||||||
|
? _value.purchasing
|
||||||
|
: purchasing // ignore: cast_nullable_to_non_nullable
|
||||||
|
as PurchasingAnalytic,
|
||||||
|
failureOptionPurchasing: null == failureOptionPurchasing
|
||||||
|
? _value.failureOptionPurchasing
|
||||||
|
: failureOptionPurchasing // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Option<AnalyticFailure>,
|
||||||
|
isFetching: null == isFetching
|
||||||
|
? _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,
|
||||||
|
outletId: freezed == outletId
|
||||||
|
? _value.outletId
|
||||||
|
: outletId // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String?,
|
||||||
|
groupBy: null == groupBy
|
||||||
|
? _value.groupBy
|
||||||
|
: groupBy // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
class _$PurchasingAnalyticLoaderStateImpl
|
||||||
|
implements _PurchasingAnalyticLoaderState {
|
||||||
|
const _$PurchasingAnalyticLoaderStateImpl({
|
||||||
|
required this.purchasing,
|
||||||
|
required this.failureOptionPurchasing,
|
||||||
|
this.isFetching = false,
|
||||||
|
required this.dateFrom,
|
||||||
|
required this.dateTo,
|
||||||
|
this.outletId,
|
||||||
|
this.groupBy = 'day',
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
final PurchasingAnalytic purchasing;
|
||||||
|
@override
|
||||||
|
final Option<AnalyticFailure> failureOptionPurchasing;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final bool isFetching;
|
||||||
|
@override
|
||||||
|
final DateTime dateFrom;
|
||||||
|
@override
|
||||||
|
final DateTime dateTo;
|
||||||
|
@override
|
||||||
|
final String? outletId;
|
||||||
|
@override
|
||||||
|
@JsonKey()
|
||||||
|
final String groupBy;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'PurchasingAnalyticLoaderState(purchasing: $purchasing, failureOptionPurchasing: $failureOptionPurchasing, isFetching: $isFetching, dateFrom: $dateFrom, dateTo: $dateTo, outletId: $outletId, groupBy: $groupBy)';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType &&
|
||||||
|
other is _$PurchasingAnalyticLoaderStateImpl &&
|
||||||
|
(identical(other.purchasing, purchasing) ||
|
||||||
|
other.purchasing == purchasing) &&
|
||||||
|
(identical(
|
||||||
|
other.failureOptionPurchasing,
|
||||||
|
failureOptionPurchasing,
|
||||||
|
) ||
|
||||||
|
other.failureOptionPurchasing == failureOptionPurchasing) &&
|
||||||
|
(identical(other.isFetching, isFetching) ||
|
||||||
|
other.isFetching == isFetching) &&
|
||||||
|
(identical(other.dateFrom, dateFrom) ||
|
||||||
|
other.dateFrom == dateFrom) &&
|
||||||
|
(identical(other.dateTo, dateTo) || other.dateTo == dateTo) &&
|
||||||
|
(identical(other.outletId, outletId) ||
|
||||||
|
other.outletId == outletId) &&
|
||||||
|
(identical(other.groupBy, groupBy) || other.groupBy == groupBy));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(
|
||||||
|
runtimeType,
|
||||||
|
purchasing,
|
||||||
|
failureOptionPurchasing,
|
||||||
|
isFetching,
|
||||||
|
dateFrom,
|
||||||
|
dateTo,
|
||||||
|
outletId,
|
||||||
|
groupBy,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@override
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
_$$PurchasingAnalyticLoaderStateImplCopyWith<
|
||||||
|
_$PurchasingAnalyticLoaderStateImpl
|
||||||
|
>
|
||||||
|
get copyWith =>
|
||||||
|
__$$PurchasingAnalyticLoaderStateImplCopyWithImpl<
|
||||||
|
_$PurchasingAnalyticLoaderStateImpl
|
||||||
|
>(this, _$identity);
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class _PurchasingAnalyticLoaderState
|
||||||
|
implements PurchasingAnalyticLoaderState {
|
||||||
|
const factory _PurchasingAnalyticLoaderState({
|
||||||
|
required final PurchasingAnalytic purchasing,
|
||||||
|
required final Option<AnalyticFailure> failureOptionPurchasing,
|
||||||
|
final bool isFetching,
|
||||||
|
required final DateTime dateFrom,
|
||||||
|
required final DateTime dateTo,
|
||||||
|
final String? outletId,
|
||||||
|
final String groupBy,
|
||||||
|
}) = _$PurchasingAnalyticLoaderStateImpl;
|
||||||
|
|
||||||
|
@override
|
||||||
|
PurchasingAnalytic get purchasing;
|
||||||
|
@override
|
||||||
|
Option<AnalyticFailure> get failureOptionPurchasing;
|
||||||
|
@override
|
||||||
|
bool get isFetching;
|
||||||
|
@override
|
||||||
|
DateTime get dateFrom;
|
||||||
|
@override
|
||||||
|
DateTime get dateTo;
|
||||||
|
@override
|
||||||
|
String? get outletId;
|
||||||
|
@override
|
||||||
|
String get groupBy;
|
||||||
|
|
||||||
|
/// Create a copy of PurchasingAnalyticLoaderState
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
_$$PurchasingAnalyticLoaderStateImplCopyWith<
|
||||||
|
_$PurchasingAnalyticLoaderStateImpl
|
||||||
|
>
|
||||||
|
get copyWith => throw _privateConstructorUsedError;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
part of 'purchasing_analytic_loader_bloc.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class PurchasingAnalyticLoaderEvent with _$PurchasingAnalyticLoaderEvent {
|
||||||
|
const factory PurchasingAnalyticLoaderEvent.rangeDateChanged(
|
||||||
|
DateTime dateFrom,
|
||||||
|
DateTime dateTo,
|
||||||
|
) = _RangeDateChanged;
|
||||||
|
|
||||||
|
const factory PurchasingAnalyticLoaderEvent.outletChanged(
|
||||||
|
String? outletId,
|
||||||
|
) = _OutletChanged;
|
||||||
|
|
||||||
|
const factory PurchasingAnalyticLoaderEvent.fetched() = _Fetched;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
part of 'purchasing_analytic_loader_bloc.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class PurchasingAnalyticLoaderState with _$PurchasingAnalyticLoaderState {
|
||||||
|
const factory PurchasingAnalyticLoaderState({
|
||||||
|
required PurchasingAnalytic purchasing,
|
||||||
|
required Option<AnalyticFailure> failureOptionPurchasing,
|
||||||
|
@Default(false) bool isFetching,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
String? outletId,
|
||||||
|
@Default('day') String groupBy,
|
||||||
|
}) = _PurchasingAnalyticLoaderState;
|
||||||
|
|
||||||
|
factory PurchasingAnalyticLoaderState.initial() =>
|
||||||
|
PurchasingAnalyticLoaderState(
|
||||||
|
purchasing: PurchasingAnalytic.empty(),
|
||||||
|
failureOptionPurchasing: none(),
|
||||||
|
dateFrom: DateTime.now().subtract(const Duration(days: 30)),
|
||||||
|
dateTo: DateTime.now(),
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ class SalesLoaderState with _$SalesLoaderState {
|
|||||||
factory SalesLoaderState.initial() => SalesLoaderState(
|
factory SalesLoaderState.initial() => SalesLoaderState(
|
||||||
sales: SalesAnalytic.empty(),
|
sales: SalesAnalytic.empty(),
|
||||||
failureOptionSales: none(),
|
failureOptionSales: none(),
|
||||||
dateFrom: DateTime.now().subtract(const Duration(days: 30)),
|
dateFrom: DateTime.now(),
|
||||||
dateTo: DateTime.now(),
|
dateTo: DateTime.now(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,13 +43,8 @@ class LoginFormBloc extends Bloc<LoginFormEvent, LoginFormState> {
|
|||||||
|
|
||||||
if (emailValid && passwordValid) {
|
if (emailValid && passwordValid) {
|
||||||
// Ambil device info dan FCM token secara paralel
|
// Ambil device info dan FCM token secara paralel
|
||||||
final results = await Future.wait([
|
final deviceInfo = await _deviceInfoService.getDeviceInfo();
|
||||||
_deviceInfoService.getDeviceInfo(),
|
final fcmToken = await _fcmService.getToken();
|
||||||
_fcmService.getToken(),
|
|
||||||
]);
|
|
||||||
|
|
||||||
final deviceInfo = results[0] as DeviceInfo;
|
|
||||||
final fcmToken = results[1] as String?;
|
|
||||||
|
|
||||||
failureOrAuth = await _repository.login(
|
failureOrAuth = await _repository.login(
|
||||||
email: state.email,
|
email: state.email,
|
||||||
|
|||||||
@@ -20,6 +20,6 @@ class OrderLoaderState with _$OrderLoaderState {
|
|||||||
failureOptionOrder: none(),
|
failureOptionOrder: none(),
|
||||||
dateFrom: DateTime.now(),
|
dateFrom: DateTime.now(),
|
||||||
dateTo: DateTime.now(),
|
dateTo: DateTime.now(),
|
||||||
status: 'all',
|
status: 'pending',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,25 @@ class SelectedOutletBloc
|
|||||||
return event.map(
|
return event.map(
|
||||||
loaded: (e) async {
|
loaded: (e) async {
|
||||||
final savedId = _localDataProvider.getSelectedOutletId();
|
final savedId = _localDataProvider.getSelectedOutletId();
|
||||||
|
final savedName = _localDataProvider.getSelectedOutletName();
|
||||||
|
|
||||||
|
if (savedId != null && savedName != null) {
|
||||||
|
emit(
|
||||||
|
state.copyWith(
|
||||||
|
selectedOutletId: savedId,
|
||||||
|
selectedOutlet: Outlet.empty().copyWith(
|
||||||
|
id: savedId,
|
||||||
|
name: savedName,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
emit(state.copyWith(selectedOutletId: savedId));
|
emit(state.copyWith(selectedOutletId: savedId));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
selected: (e) async {
|
selected: (e) async {
|
||||||
await _localDataProvider.saveSelectedOutletId(e.outlet.id);
|
await _localDataProvider.saveSelectedOutletId(e.outlet.id);
|
||||||
|
await _localDataProvider.saveSelectedOutletName(e.outlet.name);
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
selectedOutlet: e.outlet,
|
selectedOutlet: e.outlet,
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ class LocalStorageKey {
|
|||||||
static const String token = 'token';
|
static const String token = 'token';
|
||||||
static const String user = 'user';
|
static const String user = 'user';
|
||||||
static const String selectedOutletId = 'selected_outlet_id';
|
static const String selectedOutletId = 'selected_outlet_id';
|
||||||
|
static const String selectedOutletName = 'selected_outlet_name';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,4 +6,7 @@ extension IntegerExt on int {
|
|||||||
symbol: 'Rp. ',
|
symbol: 'Rp. ',
|
||||||
decimalDigits: 0,
|
decimalDigits: 0,
|
||||||
).format(this);
|
).format(this);
|
||||||
|
|
||||||
|
/// Format ribuan tanpa simbol mata uang, contoh: 1.639
|
||||||
|
String get thousandFormat => NumberFormat.decimalPattern('id').format(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,11 @@ part 'app_value.dart';
|
|||||||
class ThemeApp {
|
class ThemeApp {
|
||||||
static ThemeData get theme => ThemeData(
|
static ThemeData get theme => ThemeData(
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
|
colorScheme: ColorScheme.fromSeed(
|
||||||
|
seedColor: AppColor.primary,
|
||||||
|
primary: AppColor.primary,
|
||||||
|
brightness: Brightness.light,
|
||||||
|
),
|
||||||
scaffoldBackgroundColor: AppColor.background,
|
scaffoldBackgroundColor: AppColor.background,
|
||||||
fontFamily: FontFamily.quicksand,
|
fontFamily: FontFamily.quicksand,
|
||||||
inputDecorationTheme: InputDecorationTheme(
|
inputDecorationTheme: InputDecorationTheme(
|
||||||
@@ -65,5 +70,9 @@ class ThemeApp {
|
|||||||
),
|
),
|
||||||
iconTheme: const IconThemeData(color: AppColor.white),
|
iconTheme: const IconThemeData(color: AppColor.white),
|
||||||
),
|
),
|
||||||
|
bottomSheetTheme: BottomSheetThemeData(
|
||||||
|
backgroundColor: AppColor.white,
|
||||||
|
surfaceTintColor: Colors.transparent,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,12 @@ class ApiPath {
|
|||||||
static const String dashboardAnalytic = '/api/v1/analytics/dashboard';
|
static const String dashboardAnalytic = '/api/v1/analytics/dashboard';
|
||||||
static const String productAnalytic = '/api/v1/analytics/products';
|
static const String productAnalytic = '/api/v1/analytics/products';
|
||||||
static const String paymentMethodAnalytic =
|
static const String paymentMethodAnalytic =
|
||||||
'/api/v1/analytics/paymentMethods';
|
'/api/v1/analytics/payment-methods';
|
||||||
|
static const String purchasingAnalytic = '/api/v1/analytics/purchasing';
|
||||||
|
static const String exclusiveSummaryAnalytic =
|
||||||
|
'/api/v1/analytics/exclusive-summary/period';
|
||||||
|
static const String parentCategoryAnalytic =
|
||||||
|
'/api/v1/analytics/parent-categories';
|
||||||
|
|
||||||
// Inventory
|
// Inventory
|
||||||
static const String inventoryReportDetail =
|
static const String inventoryReportDetail =
|
||||||
|
|||||||
@@ -101,17 +101,26 @@ class FcmService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 7. Print FCM token for debugging
|
// 7. Print FCM token for debugging
|
||||||
|
try {
|
||||||
final token = await getToken();
|
final token = await getToken();
|
||||||
debugPrint('[FCM] Token: $token');
|
debugPrint('[FCM] Token: $token');
|
||||||
|
} catch (e) {
|
||||||
|
// Simulator atau APNs belum dikonfigurasi — skip token fetch
|
||||||
|
debugPrint('[FCM] Token unavailable: $e');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _requestPermission() async {
|
Future<void> _requestPermission() async {
|
||||||
|
try {
|
||||||
final settings = await _messaging.requestPermission(
|
final settings = await _messaging.requestPermission(
|
||||||
alert: true,
|
alert: true,
|
||||||
badge: true,
|
badge: true,
|
||||||
sound: true,
|
sound: true,
|
||||||
);
|
);
|
||||||
debugPrint('[FCM] Permission status: ${settings.authorizationStatus}');
|
debugPrint('[FCM] Permission status: ${settings.authorizationStatus}');
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('[FCM] Permission request failed: $e');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _setupLocalNotifications() async {
|
Future<void> _setupLocalNotifications() async {
|
||||||
@@ -185,7 +194,15 @@ class FcmService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the FCM registration token for this device.
|
/// Returns the FCM registration token for this device.
|
||||||
Future<String?> getToken() => _messaging.getToken();
|
/// Returns null if token is unavailable (e.g. simulator, APNs not ready).
|
||||||
|
Future<String?> getToken() async {
|
||||||
|
try {
|
||||||
|
return await _messaging.getToken();
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('[FCM] getToken failed: $e');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Subscribe to a topic (e.g. 'all', 'promo').
|
/// Subscribe to a topic (e.g. 'all', 'promo').
|
||||||
Future<void> subscribeToTopic(String topic) =>
|
Future<void> subscribeToTopic(String topic) =>
|
||||||
|
|||||||
@@ -11,4 +11,7 @@ part 'entities/inventory_analytic_entity.dart';
|
|||||||
part 'entities/dashboard_analytic_entity.dart';
|
part 'entities/dashboard_analytic_entity.dart';
|
||||||
part 'entities/product_analytic_entity.dart';
|
part 'entities/product_analytic_entity.dart';
|
||||||
part 'entities/payment_method_analytic_entity.dart';
|
part 'entities/payment_method_analytic_entity.dart';
|
||||||
|
part 'entities/purchasing_analytic_entity.dart';
|
||||||
|
part 'entities/exclusive_summary_entity.dart';
|
||||||
|
part 'entities/profit_sharing_entity.dart';
|
||||||
part 'failures/analytic_failure.dart';
|
part 'failures/analytic_failure.dart';
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ class CategoryAnalytic with _$CategoryAnalytic {
|
|||||||
const factory CategoryAnalytic({
|
const factory CategoryAnalytic({
|
||||||
required String organizationId,
|
required String organizationId,
|
||||||
required String outletId,
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
required String dateFrom,
|
required String dateFrom,
|
||||||
required String dateTo,
|
required String dateTo,
|
||||||
required List<CategoryAnalyticItem> data,
|
required List<CategoryAnalyticItem> data,
|
||||||
@@ -13,6 +14,7 @@ class CategoryAnalytic with _$CategoryAnalytic {
|
|||||||
factory CategoryAnalytic.empty() => const CategoryAnalytic(
|
factory CategoryAnalytic.empty() => const CategoryAnalytic(
|
||||||
organizationId: "",
|
organizationId: "",
|
||||||
outletId: "",
|
outletId: "",
|
||||||
|
outletName: "",
|
||||||
dateFrom: "",
|
dateFrom: "",
|
||||||
dateTo: "",
|
dateTo: "",
|
||||||
data: [],
|
data: [],
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ class DashboardAnalytic with _$DashboardAnalytic {
|
|||||||
const factory DashboardAnalytic({
|
const factory DashboardAnalytic({
|
||||||
required String organizationId,
|
required String organizationId,
|
||||||
required String outletId,
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
required String dateFrom,
|
required String dateFrom,
|
||||||
required String dateTo,
|
required String dateTo,
|
||||||
required DashboardOverview overview,
|
required DashboardOverview overview,
|
||||||
@@ -16,6 +17,7 @@ class DashboardAnalytic with _$DashboardAnalytic {
|
|||||||
factory DashboardAnalytic.empty() => DashboardAnalytic(
|
factory DashboardAnalytic.empty() => DashboardAnalytic(
|
||||||
organizationId: '',
|
organizationId: '',
|
||||||
outletId: '',
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
dateFrom: '',
|
dateFrom: '',
|
||||||
dateTo: '',
|
dateTo: '',
|
||||||
overview: DashboardOverview.empty(),
|
overview: DashboardOverview.empty(),
|
||||||
@@ -34,6 +36,9 @@ class DashboardOverview with _$DashboardOverview {
|
|||||||
required int totalCustomers,
|
required int totalCustomers,
|
||||||
required int voidedOrders,
|
required int voidedOrders,
|
||||||
required int refundedOrders,
|
required int refundedOrders,
|
||||||
|
required int totalItemSold,
|
||||||
|
required int totalLowStock,
|
||||||
|
required int totalProductActive,
|
||||||
}) = _DashboardOverview;
|
}) = _DashboardOverview;
|
||||||
|
|
||||||
factory DashboardOverview.empty() => const DashboardOverview(
|
factory DashboardOverview.empty() => const DashboardOverview(
|
||||||
@@ -43,6 +48,9 @@ class DashboardOverview with _$DashboardOverview {
|
|||||||
totalCustomers: 0,
|
totalCustomers: 0,
|
||||||
voidedOrders: 0,
|
voidedOrders: 0,
|
||||||
refundedOrders: 0,
|
refundedOrders: 0,
|
||||||
|
totalItemSold: 0,
|
||||||
|
totalLowStock: 0,
|
||||||
|
totalProductActive: 0,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,120 @@
|
|||||||
|
part of '../analytic.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummary with _$ExclusiveSummary {
|
||||||
|
const factory ExclusiveSummary({
|
||||||
|
required String organizationId,
|
||||||
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
|
required ExclusiveSummaryPeriod period,
|
||||||
|
required ExclusiveSummarySummary summary,
|
||||||
|
required ExclusiveSummaryReimburse reimburse,
|
||||||
|
required List<ExclusiveSummaryBreakdown> hppBreakdown,
|
||||||
|
required List<ExclusiveSummaryBreakdown> operationalExpenseBreakdown,
|
||||||
|
required List<ExclusiveSummaryDaily> dailySummary,
|
||||||
|
required List<ExclusiveSummaryTransaction> dailyTransactions,
|
||||||
|
}) = _ExclusiveSummary;
|
||||||
|
|
||||||
|
factory ExclusiveSummary.empty() => ExclusiveSummary(
|
||||||
|
organizationId: '',
|
||||||
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
|
period: ExclusiveSummaryPeriod.empty(),
|
||||||
|
summary: ExclusiveSummarySummary.empty(),
|
||||||
|
reimburse: ExclusiveSummaryReimburse.empty(),
|
||||||
|
hppBreakdown: [],
|
||||||
|
operationalExpenseBreakdown: [],
|
||||||
|
dailySummary: [],
|
||||||
|
dailyTransactions: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummaryPeriod with _$ExclusiveSummaryPeriod {
|
||||||
|
const factory ExclusiveSummaryPeriod({
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
}) = _ExclusiveSummaryPeriod;
|
||||||
|
|
||||||
|
factory ExclusiveSummaryPeriod.empty() => ExclusiveSummaryPeriod(
|
||||||
|
dateFrom: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
dateTo: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummarySummary with _$ExclusiveSummarySummary {
|
||||||
|
const factory ExclusiveSummarySummary({
|
||||||
|
required int sales,
|
||||||
|
required int hpp,
|
||||||
|
required int grossProfit,
|
||||||
|
required int salaryTotal,
|
||||||
|
required int salaryDw,
|
||||||
|
required int salaryStaff,
|
||||||
|
required int salaryOther,
|
||||||
|
required int otherOperationalExpenses,
|
||||||
|
required int operationalExpensesTotal,
|
||||||
|
required int totalCost,
|
||||||
|
required int netProfit,
|
||||||
|
}) = _ExclusiveSummarySummary;
|
||||||
|
|
||||||
|
factory ExclusiveSummarySummary.empty() => const ExclusiveSummarySummary(
|
||||||
|
sales: 0,
|
||||||
|
hpp: 0,
|
||||||
|
grossProfit: 0,
|
||||||
|
salaryTotal: 0,
|
||||||
|
salaryDw: 0,
|
||||||
|
salaryStaff: 0,
|
||||||
|
salaryOther: 0,
|
||||||
|
otherOperationalExpenses: 0,
|
||||||
|
operationalExpensesTotal: 0,
|
||||||
|
totalCost: 0,
|
||||||
|
netProfit: 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummaryReimburse with _$ExclusiveSummaryReimburse {
|
||||||
|
const factory ExclusiveSummaryReimburse({
|
||||||
|
required int totalCost,
|
||||||
|
required int excludedSalaryStaff,
|
||||||
|
required int totalReimburse,
|
||||||
|
}) = _ExclusiveSummaryReimburse;
|
||||||
|
|
||||||
|
factory ExclusiveSummaryReimburse.empty() => const ExclusiveSummaryReimburse(
|
||||||
|
totalCost: 0,
|
||||||
|
excludedSalaryStaff: 0,
|
||||||
|
totalReimburse: 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummaryBreakdown with _$ExclusiveSummaryBreakdown {
|
||||||
|
const factory ExclusiveSummaryBreakdown({
|
||||||
|
required String categoryCode,
|
||||||
|
required String categoryName,
|
||||||
|
required int amount,
|
||||||
|
required double percentage,
|
||||||
|
}) = _ExclusiveSummaryBreakdown;
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummaryDaily with _$ExclusiveSummaryDaily {
|
||||||
|
const factory ExclusiveSummaryDaily({
|
||||||
|
required DateTime date,
|
||||||
|
required int transactionCount,
|
||||||
|
required int totalCost,
|
||||||
|
}) = _ExclusiveSummaryDaily;
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ExclusiveSummaryTransaction with _$ExclusiveSummaryTransaction {
|
||||||
|
const factory ExclusiveSummaryTransaction({
|
||||||
|
required DateTime date,
|
||||||
|
required String categoryCode,
|
||||||
|
required String categoryName,
|
||||||
|
required String description,
|
||||||
|
required int amount,
|
||||||
|
required String source,
|
||||||
|
}) = _ExclusiveSummaryTransaction;
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ class PaymentMethodAnalytic with _$PaymentMethodAnalytic {
|
|||||||
const factory PaymentMethodAnalytic({
|
const factory PaymentMethodAnalytic({
|
||||||
required String organizationId,
|
required String organizationId,
|
||||||
required String outletId,
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
required String dateFrom,
|
required String dateFrom,
|
||||||
required String dateTo,
|
required String dateTo,
|
||||||
required String groupBy,
|
required String groupBy,
|
||||||
@@ -15,6 +16,7 @@ class PaymentMethodAnalytic with _$PaymentMethodAnalytic {
|
|||||||
factory PaymentMethodAnalytic.empty() => PaymentMethodAnalytic(
|
factory PaymentMethodAnalytic.empty() => PaymentMethodAnalytic(
|
||||||
organizationId: '',
|
organizationId: '',
|
||||||
outletId: '',
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
dateFrom: '',
|
dateFrom: '',
|
||||||
dateTo: '',
|
dateTo: '',
|
||||||
groupBy: '',
|
groupBy: '',
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ class ProductAnalytic with _$ProductAnalytic {
|
|||||||
const factory ProductAnalytic({
|
const factory ProductAnalytic({
|
||||||
required String organizationId,
|
required String organizationId,
|
||||||
required String outletId,
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
required String dateFrom,
|
required String dateFrom,
|
||||||
required String dateTo,
|
required String dateTo,
|
||||||
required List<ProductAnalyticData> data,
|
required List<ProductAnalyticData> data,
|
||||||
@@ -13,6 +14,7 @@ class ProductAnalytic with _$ProductAnalytic {
|
|||||||
factory ProductAnalytic.empty() => const ProductAnalytic(
|
factory ProductAnalytic.empty() => const ProductAnalytic(
|
||||||
organizationId: '',
|
organizationId: '',
|
||||||
outletId: '',
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
dateFrom: '',
|
dateFrom: '',
|
||||||
dateTo: '',
|
dateTo: '',
|
||||||
data: [],
|
data: [],
|
||||||
@@ -24,22 +26,40 @@ class ProductAnalyticData with _$ProductAnalyticData {
|
|||||||
const factory ProductAnalyticData({
|
const factory ProductAnalyticData({
|
||||||
required String productId,
|
required String productId,
|
||||||
required String productName,
|
required String productName,
|
||||||
|
required String productSku,
|
||||||
|
required int productPrice,
|
||||||
required String categoryId,
|
required String categoryId,
|
||||||
required String categoryName,
|
required String categoryName,
|
||||||
|
required int categoryOrder,
|
||||||
required int quantitySold,
|
required int quantitySold,
|
||||||
required int revenue,
|
required int revenue,
|
||||||
required double averagePrice,
|
required double averagePrice,
|
||||||
required int orderCount,
|
required int orderCount,
|
||||||
|
required int standardHppPerUnit,
|
||||||
|
required int standardHppTotal,
|
||||||
|
required int fifoHppPerUnit,
|
||||||
|
required int fifoHppTotal,
|
||||||
|
required int movingAverageHppPerUnit,
|
||||||
|
required int movingAverageHppTotal,
|
||||||
}) = _ProductAnalyticData;
|
}) = _ProductAnalyticData;
|
||||||
|
|
||||||
factory ProductAnalyticData.empty() => const ProductAnalyticData(
|
factory ProductAnalyticData.empty() => const ProductAnalyticData(
|
||||||
productId: '',
|
productId: '',
|
||||||
productName: '',
|
productName: '',
|
||||||
|
productSku: '',
|
||||||
|
productPrice: 0,
|
||||||
categoryId: '',
|
categoryId: '',
|
||||||
categoryName: '',
|
categoryName: '',
|
||||||
|
categoryOrder: 0,
|
||||||
quantitySold: 0,
|
quantitySold: 0,
|
||||||
revenue: 0,
|
revenue: 0,
|
||||||
averagePrice: 0.0,
|
averagePrice: 0.0,
|
||||||
orderCount: 0,
|
orderCount: 0,
|
||||||
|
standardHppPerUnit: 0,
|
||||||
|
standardHppTotal: 0,
|
||||||
|
fifoHppPerUnit: 0,
|
||||||
|
fifoHppTotal: 0,
|
||||||
|
movingAverageHppPerUnit: 0,
|
||||||
|
movingAverageHppTotal: 0,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,22 +4,34 @@ part of '../analytic.dart';
|
|||||||
class ProfitLossAnalytic with _$ProfitLossAnalytic {
|
class ProfitLossAnalytic with _$ProfitLossAnalytic {
|
||||||
const factory ProfitLossAnalytic({
|
const factory ProfitLossAnalytic({
|
||||||
required String organizationId,
|
required String organizationId,
|
||||||
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
required String dateFrom,
|
required String dateFrom,
|
||||||
required String dateTo,
|
required String dateTo,
|
||||||
required String groupBy,
|
required String groupBy,
|
||||||
required ProfitLossSummary summary,
|
required ProfitLossSummary summary,
|
||||||
required List<ProfitLossDailyData> data,
|
required List<ProfitLossDailyData> data,
|
||||||
required List<ProfitLossProductData> productData,
|
required List<ProfitLossProductData> productData,
|
||||||
|
required List<ProfitLossMainSummaryItem> mainSummary,
|
||||||
|
required ProfitLossPurchasing purchasing,
|
||||||
|
required List<ProfitLossOperationalExpense> operationalExpenses,
|
||||||
|
required int operationalExpensesTotal,
|
||||||
}) = _ProfitLossAnalytic;
|
}) = _ProfitLossAnalytic;
|
||||||
|
|
||||||
factory ProfitLossAnalytic.empty() => ProfitLossAnalytic(
|
factory ProfitLossAnalytic.empty() => ProfitLossAnalytic(
|
||||||
organizationId: '',
|
organizationId: '',
|
||||||
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
dateFrom: '',
|
dateFrom: '',
|
||||||
dateTo: '',
|
dateTo: '',
|
||||||
groupBy: '',
|
groupBy: '',
|
||||||
summary: ProfitLossSummary.empty(),
|
summary: ProfitLossSummary.empty(),
|
||||||
data: [],
|
data: [],
|
||||||
productData: [],
|
productData: [],
|
||||||
|
mainSummary: [],
|
||||||
|
purchasing: ProfitLossPurchasing.empty(),
|
||||||
|
operationalExpenses: [],
|
||||||
|
operationalExpensesTotal: 0,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,3 +127,79 @@ class ProfitLossProductData with _$ProfitLossProductData {
|
|||||||
profitPerUnit: 0,
|
profitPerUnit: 0,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitLossMainSummaryItem with _$ProfitLossMainSummaryItem {
|
||||||
|
const factory ProfitLossMainSummaryItem({
|
||||||
|
required String id,
|
||||||
|
required String label,
|
||||||
|
required bool isBold,
|
||||||
|
required int todayNominal,
|
||||||
|
required double todayPct,
|
||||||
|
required int mtdNominal,
|
||||||
|
required double mtdPct,
|
||||||
|
@Default([]) List<ProfitLossMainSummaryItem> subItems,
|
||||||
|
}) = _ProfitLossMainSummaryItem;
|
||||||
|
|
||||||
|
factory ProfitLossMainSummaryItem.empty() => const ProfitLossMainSummaryItem(
|
||||||
|
id: '',
|
||||||
|
label: '',
|
||||||
|
isBold: false,
|
||||||
|
todayNominal: 0,
|
||||||
|
todayPct: 0,
|
||||||
|
mtdNominal: 0,
|
||||||
|
mtdPct: 0,
|
||||||
|
subItems: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitLossPurchasing with _$ProfitLossPurchasing {
|
||||||
|
const factory ProfitLossPurchasing({
|
||||||
|
required int todayTotal,
|
||||||
|
required int mtdTotal,
|
||||||
|
required int todayRawMaterial,
|
||||||
|
required int mtdRawMaterial,
|
||||||
|
required int todayExpense,
|
||||||
|
required int mtdExpense,
|
||||||
|
@Default([]) List<ProfitLossPurchasingItem> items,
|
||||||
|
}) = _ProfitLossPurchasing;
|
||||||
|
|
||||||
|
factory ProfitLossPurchasing.empty() => const ProfitLossPurchasing(
|
||||||
|
todayTotal: 0,
|
||||||
|
mtdTotal: 0,
|
||||||
|
todayRawMaterial: 0,
|
||||||
|
mtdRawMaterial: 0,
|
||||||
|
todayExpense: 0,
|
||||||
|
mtdExpense: 0,
|
||||||
|
items: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitLossPurchasingItem with _$ProfitLossPurchasingItem {
|
||||||
|
const factory ProfitLossPurchasingItem({
|
||||||
|
required String date,
|
||||||
|
required String item,
|
||||||
|
required int quantity,
|
||||||
|
required int nominal,
|
||||||
|
}) = _ProfitLossPurchasingItem;
|
||||||
|
|
||||||
|
factory ProfitLossPurchasingItem.empty() => const ProfitLossPurchasingItem(
|
||||||
|
date: '',
|
||||||
|
item: '',
|
||||||
|
quantity: 0,
|
||||||
|
nominal: 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitLossOperationalExpense with _$ProfitLossOperationalExpense {
|
||||||
|
const factory ProfitLossOperationalExpense({
|
||||||
|
required String item,
|
||||||
|
required int nominal,
|
||||||
|
}) = _ProfitLossOperationalExpense;
|
||||||
|
|
||||||
|
factory ProfitLossOperationalExpense.empty() =>
|
||||||
|
const ProfitLossOperationalExpense(item: '', nominal: 0);
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,219 @@
|
|||||||
|
part of '../analytic.dart';
|
||||||
|
|
||||||
|
/// Bagi hasil (profit sharing) berdasarkan omzet per parent category.
|
||||||
|
@freezed
|
||||||
|
class ProfitSharing with _$ProfitSharing {
|
||||||
|
const factory ProfitSharing({
|
||||||
|
required String organizationId,
|
||||||
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
required List<ProfitSharingCategory> categories,
|
||||||
|
required ProfitSharingBudget budget,
|
||||||
|
}) = _ProfitSharing;
|
||||||
|
|
||||||
|
factory ProfitSharing.empty() => ProfitSharing(
|
||||||
|
organizationId: '',
|
||||||
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
|
dateFrom: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
dateTo: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
categories: [],
|
||||||
|
budget: ProfitSharingBudget.empty(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingCategory with _$ProfitSharingCategory {
|
||||||
|
const ProfitSharingCategory._();
|
||||||
|
|
||||||
|
const factory ProfitSharingCategory({
|
||||||
|
required String parentCategoryId,
|
||||||
|
required String parentCategoryName,
|
||||||
|
required int totalRevenue,
|
||||||
|
required int totalQuantity,
|
||||||
|
required int categoryCount,
|
||||||
|
required int productCount,
|
||||||
|
required int orderCount,
|
||||||
|
required int totalStandardHpp,
|
||||||
|
required int totalFifoHpp,
|
||||||
|
required int totalMovingAverageHpp,
|
||||||
|
}) = _ProfitSharingCategory;
|
||||||
|
|
||||||
|
factory ProfitSharingCategory.empty() => const ProfitSharingCategory(
|
||||||
|
parentCategoryId: '',
|
||||||
|
parentCategoryName: '',
|
||||||
|
totalRevenue: 0,
|
||||||
|
totalQuantity: 0,
|
||||||
|
categoryCount: 0,
|
||||||
|
productCount: 0,
|
||||||
|
orderCount: 0,
|
||||||
|
totalStandardHpp: 0,
|
||||||
|
totalFifoHpp: 0,
|
||||||
|
totalMovingAverageHpp: 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Laba kotor memakai HPP standar (acuan yang dipakai di laporan laba rugi).
|
||||||
|
int get grossProfit => totalRevenue - totalStandardHpp;
|
||||||
|
|
||||||
|
double get grossMargin =>
|
||||||
|
totalRevenue == 0 ? 0 : (grossProfit / totalRevenue) * 100;
|
||||||
|
|
||||||
|
/// % HPP standar terhadap omzet.
|
||||||
|
double get standardHppPercentage =>
|
||||||
|
totalRevenue == 0 ? 0 : (totalStandardHpp / totalRevenue) * 100;
|
||||||
|
|
||||||
|
/// % HPP riil (FIFO) terhadap omzet — dipakai untuk status kesehatan margin.
|
||||||
|
double get realHppPercentage =>
|
||||||
|
totalRevenue == 0 ? 0 : (totalFifoHpp / totalRevenue) * 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingBudget with _$ProfitSharingBudget {
|
||||||
|
const factory ProfitSharingBudget({
|
||||||
|
required ProfitSharingPercentage percentages,
|
||||||
|
required DateTime cutOffFrom,
|
||||||
|
required DateTime cutOffTo,
|
||||||
|
required ProfitSharingPeriod total,
|
||||||
|
required List<ProfitSharingPeriod> weekly,
|
||||||
|
required List<ProfitSharingPeriod> monthly,
|
||||||
|
}) = _ProfitSharingBudget;
|
||||||
|
|
||||||
|
factory ProfitSharingBudget.empty() => ProfitSharingBudget(
|
||||||
|
percentages: ProfitSharingPercentage.empty(),
|
||||||
|
cutOffFrom: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
cutOffTo: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
total: ProfitSharingPeriod.empty(),
|
||||||
|
weekly: [],
|
||||||
|
monthly: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingPercentage with _$ProfitSharingPercentage {
|
||||||
|
const factory ProfitSharingPercentage({
|
||||||
|
required double purchase,
|
||||||
|
required double owner,
|
||||||
|
required double team,
|
||||||
|
}) = _ProfitSharingPercentage;
|
||||||
|
|
||||||
|
factory ProfitSharingPercentage.empty() =>
|
||||||
|
const ProfitSharingPercentage(purchase: 0, owner: 0, team: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Satu baris periode bagi hasil. Dipakai untuk total, mingguan, dan bulanan.
|
||||||
|
/// [month] dan [weekCount] hanya terisi untuk data bulanan.
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingPeriod with _$ProfitSharingPeriod {
|
||||||
|
const ProfitSharingPeriod._();
|
||||||
|
|
||||||
|
const factory ProfitSharingPeriod({
|
||||||
|
required DateTime periodStart,
|
||||||
|
required DateTime periodEnd,
|
||||||
|
required int revenue,
|
||||||
|
required int orderCount,
|
||||||
|
required int limitPurchase,
|
||||||
|
required int limitOwner,
|
||||||
|
required int limitTeam,
|
||||||
|
@Default('') String month,
|
||||||
|
@Default(0) int weekCount,
|
||||||
|
}) = _ProfitSharingPeriod;
|
||||||
|
|
||||||
|
factory ProfitSharingPeriod.empty() => ProfitSharingPeriod(
|
||||||
|
periodStart: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
periodEnd: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
revenue: 0,
|
||||||
|
orderCount: 0,
|
||||||
|
limitPurchase: 0,
|
||||||
|
limitOwner: 0,
|
||||||
|
limitTeam: 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
bool get hasRevenue => revenue > 0;
|
||||||
|
|
||||||
|
int get averageOrderValue => orderCount == 0 ? 0 : revenue ~/ orderCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Rincian satu kategori induk: ringkasan, sub kategori beserta produknya,
|
||||||
|
/// dan bagi hasil khusus kategori tersebut.
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingDetail with _$ProfitSharingDetail {
|
||||||
|
const factory ProfitSharingDetail({
|
||||||
|
required String organizationId,
|
||||||
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
required String parentCategoryId,
|
||||||
|
required String parentCategoryName,
|
||||||
|
required ProfitSharingCategory summary,
|
||||||
|
required List<ProfitSharingSubCategory> categories,
|
||||||
|
required ProfitSharingBudget budget,
|
||||||
|
}) = _ProfitSharingDetail;
|
||||||
|
|
||||||
|
factory ProfitSharingDetail.empty() => ProfitSharingDetail(
|
||||||
|
organizationId: '',
|
||||||
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
|
dateFrom: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
dateTo: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
parentCategoryId: '',
|
||||||
|
parentCategoryName: '',
|
||||||
|
summary: ProfitSharingCategory.empty(),
|
||||||
|
categories: [],
|
||||||
|
budget: ProfitSharingBudget.empty(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingSubCategory with _$ProfitSharingSubCategory {
|
||||||
|
const ProfitSharingSubCategory._();
|
||||||
|
|
||||||
|
const factory ProfitSharingSubCategory({
|
||||||
|
required String categoryId,
|
||||||
|
required String categoryName,
|
||||||
|
required int totalRevenue,
|
||||||
|
required int totalQuantity,
|
||||||
|
required int productCount,
|
||||||
|
required int orderCount,
|
||||||
|
required int totalStandardHpp,
|
||||||
|
required int totalFifoHpp,
|
||||||
|
required int totalMovingAverageHpp,
|
||||||
|
required List<ProfitSharingProduct> products,
|
||||||
|
}) = _ProfitSharingSubCategory;
|
||||||
|
|
||||||
|
double get standardHppPercentage =>
|
||||||
|
totalRevenue == 0 ? 0 : (totalStandardHpp / totalRevenue) * 100;
|
||||||
|
|
||||||
|
double get realHppPercentage =>
|
||||||
|
totalRevenue == 0 ? 0 : (totalFifoHpp / totalRevenue) * 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class ProfitSharingProduct with _$ProfitSharingProduct {
|
||||||
|
const ProfitSharingProduct._();
|
||||||
|
|
||||||
|
const factory ProfitSharingProduct({
|
||||||
|
required String productId,
|
||||||
|
required String productName,
|
||||||
|
required String productSku,
|
||||||
|
required int productPrice,
|
||||||
|
required int quantitySold,
|
||||||
|
required int revenue,
|
||||||
|
required double averagePrice,
|
||||||
|
required int orderCount,
|
||||||
|
required double standardHppPerUnit,
|
||||||
|
required int standardHppTotal,
|
||||||
|
required double fifoHppPerUnit,
|
||||||
|
required int fifoHppTotal,
|
||||||
|
required double movingAverageHppPerUnit,
|
||||||
|
required int movingAverageHppTotal,
|
||||||
|
}) = _ProfitSharingProduct;
|
||||||
|
|
||||||
|
double get standardHppPercentage =>
|
||||||
|
revenue == 0 ? 0 : (standardHppTotal / revenue) * 100;
|
||||||
|
|
||||||
|
double get realHppPercentage =>
|
||||||
|
revenue == 0 ? 0 : (fifoHppTotal / revenue) * 100;
|
||||||
|
}
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
part of '../analytic.dart';
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class PurchasingAnalytic with _$PurchasingAnalytic {
|
||||||
|
const factory PurchasingAnalytic({
|
||||||
|
required String organizationId,
|
||||||
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
required String groupBy,
|
||||||
|
required PurchasingAnalyticSummary summary,
|
||||||
|
required List<PurchasingAnalyticData> data,
|
||||||
|
required List<PurchasingIngredientData> ingredientData,
|
||||||
|
required List<PurchasingVendorData> vendorData,
|
||||||
|
}) = _PurchasingAnalytic;
|
||||||
|
|
||||||
|
factory PurchasingAnalytic.empty() => PurchasingAnalytic(
|
||||||
|
organizationId: '',
|
||||||
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
|
dateFrom: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
dateTo: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
groupBy: '',
|
||||||
|
summary: PurchasingAnalyticSummary.empty(),
|
||||||
|
data: [],
|
||||||
|
ingredientData: [],
|
||||||
|
vendorData: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class PurchasingAnalyticSummary with _$PurchasingAnalyticSummary {
|
||||||
|
const factory PurchasingAnalyticSummary({
|
||||||
|
required int totalPurchases,
|
||||||
|
required int rawMaterialPurchases,
|
||||||
|
required int expensePurchases,
|
||||||
|
required int totalPurchaseOrders,
|
||||||
|
required int rawMaterialPurchaseOrders,
|
||||||
|
required int expenseCount,
|
||||||
|
required int totalQuantity,
|
||||||
|
required double averagePurchaseOrderValue,
|
||||||
|
required int totalIngredients,
|
||||||
|
required int totalVendors,
|
||||||
|
}) = _PurchasingAnalyticSummary;
|
||||||
|
|
||||||
|
factory PurchasingAnalyticSummary.empty() =>
|
||||||
|
const PurchasingAnalyticSummary(
|
||||||
|
totalPurchases: 0,
|
||||||
|
rawMaterialPurchases: 0,
|
||||||
|
expensePurchases: 0,
|
||||||
|
totalPurchaseOrders: 0,
|
||||||
|
rawMaterialPurchaseOrders: 0,
|
||||||
|
expenseCount: 0,
|
||||||
|
totalQuantity: 0,
|
||||||
|
averagePurchaseOrderValue: 0,
|
||||||
|
totalIngredients: 0,
|
||||||
|
totalVendors: 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class PurchasingAnalyticData with _$PurchasingAnalyticData {
|
||||||
|
const factory PurchasingAnalyticData({
|
||||||
|
required DateTime date,
|
||||||
|
required int purchases,
|
||||||
|
required int rawMaterialPurchases,
|
||||||
|
required int expensePurchases,
|
||||||
|
required int purchaseOrders,
|
||||||
|
required int rawMaterialPurchaseOrders,
|
||||||
|
required int expenseCount,
|
||||||
|
required int quantity,
|
||||||
|
required int ingredients,
|
||||||
|
required int vendors,
|
||||||
|
}) = _PurchasingAnalyticData;
|
||||||
|
|
||||||
|
factory PurchasingAnalyticData.empty() => PurchasingAnalyticData(
|
||||||
|
date: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
|
purchases: 0,
|
||||||
|
rawMaterialPurchases: 0,
|
||||||
|
expensePurchases: 0,
|
||||||
|
purchaseOrders: 0,
|
||||||
|
rawMaterialPurchaseOrders: 0,
|
||||||
|
expenseCount: 0,
|
||||||
|
quantity: 0,
|
||||||
|
ingredients: 0,
|
||||||
|
vendors: 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class PurchasingIngredientData with _$PurchasingIngredientData {
|
||||||
|
const factory PurchasingIngredientData({
|
||||||
|
required String ingredientId,
|
||||||
|
required String ingredientName,
|
||||||
|
required int quantity,
|
||||||
|
required int totalCost,
|
||||||
|
required double averageUnitCost,
|
||||||
|
required int purchaseOrderCount,
|
||||||
|
}) = _PurchasingIngredientData;
|
||||||
|
|
||||||
|
factory PurchasingIngredientData.empty() =>
|
||||||
|
const PurchasingIngredientData(
|
||||||
|
ingredientId: '',
|
||||||
|
ingredientName: '',
|
||||||
|
quantity: 0,
|
||||||
|
totalCost: 0,
|
||||||
|
averageUnitCost: 0,
|
||||||
|
purchaseOrderCount: 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
class PurchasingVendorData with _$PurchasingVendorData {
|
||||||
|
const factory PurchasingVendorData({
|
||||||
|
required String vendorId,
|
||||||
|
required String vendorName,
|
||||||
|
required int totalCost,
|
||||||
|
required int purchaseOrderCount,
|
||||||
|
required int ingredientCount,
|
||||||
|
required int quantity,
|
||||||
|
}) = _PurchasingVendorData;
|
||||||
|
|
||||||
|
factory PurchasingVendorData.empty() => const PurchasingVendorData(
|
||||||
|
vendorId: '',
|
||||||
|
vendorName: '',
|
||||||
|
totalCost: 0,
|
||||||
|
purchaseOrderCount: 0,
|
||||||
|
ingredientCount: 0,
|
||||||
|
quantity: 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ class SalesAnalytic with _$SalesAnalytic {
|
|||||||
const factory SalesAnalytic({
|
const factory SalesAnalytic({
|
||||||
required String organizationId,
|
required String organizationId,
|
||||||
required String outletId,
|
required String outletId,
|
||||||
|
required String outletName,
|
||||||
required DateTime dateFrom,
|
required DateTime dateFrom,
|
||||||
required DateTime dateTo,
|
required DateTime dateTo,
|
||||||
required String groupBy,
|
required String groupBy,
|
||||||
@@ -15,6 +16,7 @@ class SalesAnalytic with _$SalesAnalytic {
|
|||||||
factory SalesAnalytic.empty() => SalesAnalytic(
|
factory SalesAnalytic.empty() => SalesAnalytic(
|
||||||
organizationId: '',
|
organizationId: '',
|
||||||
outletId: '',
|
outletId: '',
|
||||||
|
outletName: '',
|
||||||
dateFrom: DateTime.fromMillisecondsSinceEpoch(0),
|
dateFrom: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
dateTo: DateTime.fromMillisecondsSinceEpoch(0),
|
dateTo: DateTime.fromMillisecondsSinceEpoch(0),
|
||||||
groupBy: '',
|
groupBy: '',
|
||||||
|
|||||||
@@ -44,4 +44,31 @@ abstract class IAnalyticRepository {
|
|||||||
required DateTime dateTo,
|
required DateTime dateTo,
|
||||||
String? outletId,
|
String? outletId,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Future<Either<AnalyticFailure, PurchasingAnalytic>> getPurchasing({
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
String? outletId,
|
||||||
|
String groupBy = 'day',
|
||||||
|
});
|
||||||
|
|
||||||
|
Future<Either<AnalyticFailure, ExclusiveSummary>> getExclusiveSummary({
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
String? outletId,
|
||||||
|
});
|
||||||
|
|
||||||
|
Future<Either<AnalyticFailure, ProfitSharing>> getProfitSharing({
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
String? outletId,
|
||||||
|
String groupBy = 'day',
|
||||||
|
});
|
||||||
|
|
||||||
|
Future<Either<AnalyticFailure, ProfitSharingDetail>> getProfitSharingDetail({
|
||||||
|
required String parentCategoryId,
|
||||||
|
required DateTime dateFrom,
|
||||||
|
required DateTime dateTo,
|
||||||
|
String? outletId,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||