forked from eatvio/eatvio_app
feat(userPurchases, consultantFinances): added status to models and layout for status
This commit is contained in:
@@ -13,6 +13,7 @@ abstract class ConsultantFinanceModel with _$ConsultantFinanceModel {
|
||||
@JsonKey(name: 'clientName') required String clientName,
|
||||
@JsonKey(name: 'duration') required int duration,
|
||||
@JsonKey(name: 'payment_price', fromJson: _parsePayment) required String paymentPrice,
|
||||
required PaymentStatus? paymentStatus,
|
||||
}) = _ConsultantFinanceModel;
|
||||
|
||||
factory ConsultantFinanceModel.fromJson(Map<String, dynamic> json) => _$ConsultantFinanceModelFromJson(json);
|
||||
@@ -28,9 +29,5 @@ enum PaymentStatus {
|
||||
@JsonValue('REJECTED')
|
||||
rejected,
|
||||
@JsonValue('CHECKED')
|
||||
checked,
|
||||
@JsonValue('CREDIT_CHECKING')
|
||||
creditChecking,
|
||||
@JsonValue('COMPLETING')
|
||||
completing;
|
||||
checked
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart';
|
||||
import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'user_purchases_model.freezed.dart';
|
||||
@@ -8,12 +9,13 @@ part 'user_purchases_model.g.dart';
|
||||
abstract class UserPurchasesModel with _$UserPurchasesModel {
|
||||
factory UserPurchasesModel({
|
||||
@JsonKey(name: 'start_date', fromJson: parseDate) required DateTime startDate,
|
||||
@JsonKey(name: 'bank_id') required String? bankId,
|
||||
@JsonKey(name: 'bank_id') required String bankId,
|
||||
@JsonKey(name: 'title') required String title,
|
||||
@JsonKey(name: 'consultantName') required String consultantName,
|
||||
@JsonKey(name: 'duration') required int duration,
|
||||
@JsonKey(name: 'price') required int paymentPrice,
|
||||
@JsonKey(name: 'chosen_plan_last_state') required ChosenPlanStateEnum chosenPlanState,
|
||||
}) = _UserPurchasesModel;
|
||||
|
||||
factory UserPurchasesModel.fromJson(Map<String, dynamic> json) => _$UserPurchasesModelFromJson(json);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,9 @@ import 'package:eatvio_app/core/widgets/custom_drop_down_button.dart';
|
||||
import 'package:eatvio_app/core/widgets/loader.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/cubit/consultant_finances/consultant_finances_cubit.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/cubit/consultant_finances/consultant_finances_state.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/models/consultant_finance_model.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/period_enum.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/presentation/widgets/status_widget.dart';
|
||||
import 'package:eatvio_app/features/my_finance/presentation/pages/card_settings.dart';
|
||||
import 'package:eatvio_app/generated/l10n.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -102,6 +104,12 @@ class _ConsultantFinancesScreenState extends State<ConsultantFinancesScreen> {
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
itemBuilder: (context, index) {
|
||||
final Status modelStatus = switch (state.financesModels[index].paymentStatus) {
|
||||
null => Status.inProgress,
|
||||
PaymentStatus.completed => Status.success,
|
||||
PaymentStatus.rejected => Status.canceled,
|
||||
PaymentStatus.checked => Status.success,
|
||||
};
|
||||
return Material(
|
||||
color: const Color(0xFFF6F6F6),
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
@@ -181,9 +189,9 @@ class _ConsultantFinancesScreenState extends State<ConsultantFinancesScreen> {
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
// StatusWidget(
|
||||
// status: state.consultations[index].chosenPlanState,
|
||||
// ),
|
||||
StatusWidget(
|
||||
status: modelStatus,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:eatvio_app/features/finances_and_consultations_archive/cubit/arc
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/cubit/archive/consultations_archive_state.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/period_enum.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/presentation/widgets/status_widget.dart';
|
||||
import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
|
||||
import 'package:eatvio_app/generated/l10n.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
@@ -165,6 +166,15 @@ class _ConsultationsArchiveScreenState extends State<ConsultationsArchiveScreen>
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
itemBuilder: (context, index) {
|
||||
final Status consultationStatus;
|
||||
if (state.consultations[index].chosenPlanState == ChosenPlanStateEnum.stateCanceledByTheInitiator) {
|
||||
consultationStatus = Status.canceled;
|
||||
} else if (state.consultations[index].chosenPlanState == ChosenPlanStateEnum.stateChargeWasCollected) {
|
||||
consultationStatus = Status.success;
|
||||
} else {
|
||||
consultationStatus = Status.inProgress;
|
||||
}
|
||||
|
||||
return Material(
|
||||
color: const Color(0xFFF6F6F6),
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
@@ -246,7 +256,7 @@ class _ConsultationsArchiveScreenState extends State<ConsultationsArchiveScreen>
|
||||
),
|
||||
),
|
||||
StatusWidget(
|
||||
status: state.consultations[index].chosenPlanState,
|
||||
status: consultationStatus,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -8,6 +8,8 @@ import 'package:eatvio_app/core/widgets/loader.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/cubit/user_purchases/user_purchases_cubit.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/cubit/user_purchases/user_purchases_state.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/period_enum.dart';
|
||||
import 'package:eatvio_app/features/finances_and_consultations_archive/presentation/widgets/status_widget.dart';
|
||||
import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
|
||||
import 'package:eatvio_app/generated/l10n.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
@@ -84,6 +86,14 @@ class _UserPurchasesScreen extends State<UserPurchasesScreen> {
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
itemBuilder: (context, index) {
|
||||
final Status purchaseStatus;
|
||||
if (state.purchasesModels[index].chosenPlanState == ChosenPlanStateEnum.stateCanceledByTheInitiator) {
|
||||
purchaseStatus = Status.canceled;
|
||||
} else if (state.purchasesModels[index].chosenPlanState == ChosenPlanStateEnum.stateChargeWasCollected) {
|
||||
purchaseStatus = Status.success;
|
||||
} else {
|
||||
purchaseStatus = Status.inProgress;
|
||||
}
|
||||
return Material(
|
||||
color: const Color(0xFFF6F6F6),
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
@@ -96,10 +106,9 @@ class _UserPurchasesScreen extends State<UserPurchasesScreen> {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Builder(builder: (context) {
|
||||
// final idLen = state.purchasesModels[index].bankId.length;
|
||||
final bankId = state.purchasesModels[index].bankId;
|
||||
final idLen = state.purchasesModels[index].bankId.length;
|
||||
return Text(
|
||||
'$bankId',
|
||||
'${state.purchasesModels[index].bankId.substring(0, 4)}...${state.purchasesModels[index].bankId.substring(idLen - 4, idLen)} ',
|
||||
style: TextStyles.textSMedium.copyWith(color: appTheme.black),
|
||||
);
|
||||
}),
|
||||
@@ -164,9 +173,9 @@ class _UserPurchasesScreen extends State<UserPurchasesScreen> {
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
// StatusWidget(
|
||||
// status: state.consultations[index].chosenPlanState,
|
||||
// ),
|
||||
StatusWidget(
|
||||
status: purchaseStatus,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import 'package:eatvio_app/core/theme/theme_helper.dart';
|
||||
import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class StatusWidget extends StatelessWidget {
|
||||
const StatusWidget({super.key, required this.status});
|
||||
final ChosenPlanStateEnum status;
|
||||
final Status status;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (status == ChosenPlanStateEnum.stateCanceledByTheInitiator) {
|
||||
return Material(
|
||||
return switch (status){
|
||||
|
||||
Status.canceled => Material(
|
||||
color: appTheme.lightRed,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: Padding(
|
||||
@@ -24,9 +24,9 @@ class StatusWidget extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
} else if (status == ChosenPlanStateEnum.stateChargeWasCollected) {
|
||||
return Material(
|
||||
),
|
||||
|
||||
Status.success => Material(
|
||||
color: const Color(0xFF0BB450).withAlpha(11),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: const Padding(
|
||||
@@ -41,9 +41,9 @@ class StatusWidget extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
return Material(
|
||||
),
|
||||
|
||||
Status.inProgress => Material(
|
||||
color: appTheme.transparentBlue,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: Padding(
|
||||
@@ -58,6 +58,13 @@ class StatusWidget extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
enum Status {
|
||||
canceled,
|
||||
success,
|
||||
inProgress
|
||||
}
|
||||
@@ -44,7 +44,6 @@ class MenuScreen extends StatelessWidget {
|
||||
onTap: () {
|
||||
if (profileModel.roles.contains('consultant')) {
|
||||
GoRouter.of(context).push(ConsultantFinancesScreen.path);
|
||||
GoRouter.of(context).push(UserPurchasesScreen.path);
|
||||
return;
|
||||
}
|
||||
GoRouter.of(context).push(UserPurchasesScreen.path);
|
||||
|
||||
Reference in New Issue
Block a user