Implement tender workflows and dashboard integration
continuous-integration/drone/push Build encountered an error

This commit is contained in:
AmirReza Jamali
2026-07-14 11:12:09 +03:30
parent ce170f9bc8
commit 72881df210
29 changed files with 1820 additions and 159 deletions
+18 -34
View File
@@ -127,13 +127,7 @@ class DesktopHomePage extends StatelessWidget {
backgroundColor: AppColors.primary20,
iconPath: AssetsManager.arrows,
title: HomeStrings.tenderSubmitted,
amount:
(homeViewModel
.tenderApprovalsStateResponse
?.data
?.submittedTenders ??
0)
.toString(),
amount: homeViewModel.submittedTendersCount.toString(),
textColor: AppColors.mainBlue,
enableTap: true,
@@ -152,7 +146,7 @@ class DesktopHomePage extends StatelessWidget {
backgroundColor: AppColors.primary10,
iconPath: AssetsManager.approve,
title: HomeStrings.approvedTenders,
amount: '0',
amount: homeViewModel.approvedTendersCount.toString(),
textColor: AppColors.jellyBean,
enableTap: true,
width: 178,
@@ -165,32 +159,22 @@ class DesktopHomePage extends StatelessWidget {
),
),
const SizedBox(width: 10),
TenderCard(
backgroundColor: AppColors.orange10,
iconPath: AssetsManager.shield,
title: HomeStrings.tenderValue,
amount: '0',
textColor: AppColors.orange,
enableTap: false,
width: 178,
height: 148,
onTap: () {},
),
const SizedBox(width: 10),
TenderCard(
backgroundColor: AppColors.grey10,
iconPath: AssetsManager.thumbLike,
title: HomeStrings.likedTenders,
amount: homeViewModel.userLikedTendersCount.toString(),
textColor: AppColors.grey50,
enableTap: true,
width: 178,
height: 148,
onTap: () {
const LikedTendersRouteData().push(context).then((value) {
homeViewModel.init();
});
},
Expanded(
child: TenderCard(
backgroundColor: AppColors.grey10,
iconPath: AssetsManager.thumbLike,
title: HomeStrings.likedTenders,
amount: homeViewModel.userLikedTendersCount.toString(),
textColor: AppColors.grey50,
enableTap: true,
width: 178,
height: 148,
onTap: () {
const LikedTendersRouteData().push(context).then((value) {
homeViewModel.init();
});
},
),
),
],
);
+19 -31
View File
@@ -5,7 +5,6 @@ import 'package:tm_app/core/constants/assets.dart';
import 'package:tm_app/core/routes/app_routes.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
import 'package:tm_app/view_models/home_view_model.dart';
import 'package:tm_app/views/shared/tender_app_bar.dart';
@@ -44,10 +43,7 @@ class MobileHomePage extends StatelessWidget {
SizedBox(height: 32.0.h()),
_progressBarsRow(homeViewModel),
SizedBox(height: 32.0.h()),
_firstTenderCardsRow(
context,
homeViewModel.tenderApprovalsStateResponse!,
),
_firstTenderCardsRow(context, homeViewModel),
SizedBox(height: 8.0.h()),
_secondTenderCardsRow(homeViewModel, context),
SizedBox(height: 40.0.h()),
@@ -93,7 +89,7 @@ class MobileHomePage extends StatelessWidget {
Widget _firstTenderCardsRow(
BuildContext context,
TenderApprovalsStatsResponse tenderApprovalsStateResponse,
HomeViewModel homeViewModel,
) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
@@ -104,9 +100,7 @@ class MobileHomePage extends StatelessWidget {
backgroundColor: AppColors.primary20,
iconPath: AssetsManager.arrows,
title: HomeStrings.tenderSubmitted,
amount:
(tenderApprovalsStateResponse.data?.submittedTenders ?? 0)
.toString(),
amount: homeViewModel.submittedTendersCount.toString(),
textColor: AppColors.mainBlue,
enableTap: true,
onTap: () {
@@ -119,7 +113,7 @@ class MobileHomePage extends StatelessWidget {
backgroundColor: AppColors.primary10,
iconPath: AssetsManager.approve,
title: HomeStrings.approvedTenders,
amount: '0',
amount: homeViewModel.approvedTendersCount.toString(),
textColor: AppColors.jellyBean,
enableTap: true,
@@ -143,27 +137,21 @@ class MobileHomePage extends StatelessWidget {
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TenderCard(
backgroundColor: AppColors.orange10,
iconPath: AssetsManager.shield,
title: HomeStrings.tenderValue,
amount: '0',
textColor: AppColors.orange,
enableTap: false,
onTap: () {},
),
TenderCard(
backgroundColor: AppColors.grey10,
iconPath: AssetsManager.thumbLike,
title: HomeStrings.likedTenders,
amount: homeViewModel.userLikedTendersCount.toString(),
textColor: AppColors.grey50,
enableTap: true,
onTap: () {
const LikedTendersRouteData().push(context).then((value) {
homeViewModel.init();
});
},
Expanded(
child: TenderCard(
backgroundColor: AppColors.grey10,
iconPath: AssetsManager.thumbLike,
title: HomeStrings.likedTenders,
amount: homeViewModel.userLikedTendersCount.toString(),
textColor: AppColors.grey50,
enableTap: true,
width: double.infinity,
onTap: () {
const LikedTendersRouteData().push(context).then((value) {
homeViewModel.init();
});
},
),
),
],
),
+4 -24
View File
@@ -4,7 +4,6 @@ import 'package:provider/provider.dart';
import 'package:tm_app/core/routes/app_routes.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
import 'package:tm_app/view_models/home_view_model.dart';
import 'package:tm_app/views/shared/tablet_navigation_widget.dart';
@@ -59,10 +58,7 @@ class TabletHomePage extends StatelessWidget {
SizedBox(height: 40.0.h()),
_progressBarsRow(homeViewModel),
SizedBox(height: 32.0.h()),
_firstTenderCardsRow(
context,
homeViewModel.tenderApprovalsStateResponse!,
),
_firstTenderCardsRow(context, homeViewModel),
SizedBox(height: 8.0.h()),
_secondTenderCardsRow(homeViewModel, context),
SizedBox(height: 32.0.h()),
@@ -113,7 +109,7 @@ class TabletHomePage extends StatelessWidget {
Widget _firstTenderCardsRow(
BuildContext context,
TenderApprovalsStatsResponse tenderApprovalsStateResponse,
HomeViewModel homeViewModel,
) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -123,9 +119,7 @@ class TabletHomePage extends StatelessWidget {
backgroundColor: AppColors.primary20,
iconPath: AssetsManager.arrows,
title: HomeStrings.tenderSubmitted,
amount:
(tenderApprovalsStateResponse.data?.submittedTenders ?? 0)
.toString(),
amount: homeViewModel.submittedTendersCount.toString(),
textColor: AppColors.mainBlue,
enableTap: true,
@@ -144,7 +138,7 @@ class TabletHomePage extends StatelessWidget {
backgroundColor: AppColors.primary10,
iconPath: AssetsManager.approve,
title: HomeStrings.approvedTenders,
amount: '0',
amount: homeViewModel.approvedTendersCount.toString(),
textColor: AppColors.jellyBean,
enableTap: true,
width: double.infinity,
@@ -167,20 +161,6 @@ class TabletHomePage extends StatelessWidget {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: TenderCard(
backgroundColor: AppColors.orange10,
iconPath: AssetsManager.shield,
title: HomeStrings.tenderValue,
amount: '0',
textColor: AppColors.orange,
enableTap: false,
width: double.infinity,
height: 148,
onTap: () {},
),
),
const SizedBox(width: 16.0),
Expanded(
child: TenderCard(
backgroundColor: AppColors.grey10,