Fixed your tender and recommendedTenders in home
This commit is contained in:
@@ -35,6 +35,7 @@ class AppStrings {
|
||||
static const String recommendation = 'Recommendation';
|
||||
static const String welcome = 'Welcome';
|
||||
static const String tenderDeadline = 'Deadline';
|
||||
static const String recommendedTenders = 'Recommended Tenders';
|
||||
|
||||
//Tenders
|
||||
static const String tendersTitle = 'Tenders';
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:tm_app/data/services/home_service.dart';
|
||||
import 'package:tm_app/data/services/model/home/home_request/home_request_model.dart';
|
||||
import 'package:tm_app/data/services/model/home/home_response/home_response_model.dart';
|
||||
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
|
||||
class HomeRepository {
|
||||
HomeRepository({required HomeService homeService})
|
||||
@@ -21,4 +22,7 @@ class HomeRepository {
|
||||
}) async {
|
||||
return _homeService.getRecommendedTenders(limit: limit, offset: offset);
|
||||
}
|
||||
Future<Result<TenderApprovalsResponse>> getYourTenders() {
|
||||
return _homeService.getYourTenders();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:tm_app/data/services/mock_data/home_mock_data.dart';
|
||||
import 'package:tm_app/data/services/model/home/home_request/home_request_model.dart';
|
||||
import 'package:tm_app/data/services/model/home/home_response/home_response_model.dart';
|
||||
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
|
||||
import '../../core/network/network_manager.dart';
|
||||
|
||||
@@ -50,4 +51,21 @@ class HomeService {
|
||||
);
|
||||
return result;
|
||||
}
|
||||
Future<Result<TenderApprovalsResponse>> getYourTenders() async {
|
||||
try {
|
||||
final result = await _networkManager.makeRequest(
|
||||
'/api/v1/tender-approvals',
|
||||
(json) => TenderApprovalsResponse.fromJson(json),
|
||||
method: 'GET',
|
||||
);
|
||||
|
||||
return result;
|
||||
} on DioException catch (e) {
|
||||
appLogger.error('get approved tenders failed: $e');
|
||||
return Result.error(e);
|
||||
} on Exception catch (e, stackTrace) {
|
||||
appLogger.error('get approved tenders failed: $e', stackTrace: stackTrace);
|
||||
return Result.error(Exception(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/utils/result.dart';
|
||||
import 'package:tm_app/data/services/model/home/home_request/home_request_model.dart';
|
||||
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
|
||||
|
||||
import '../data/repositories/home_repository.dart';
|
||||
@@ -11,14 +12,15 @@ class HomeViewModel with ChangeNotifier {
|
||||
final HomeRepository _homeRepository;
|
||||
|
||||
HomeViewModel({required HomeRepository homeRepository})
|
||||
: _homeRepository = homeRepository {
|
||||
: _homeRepository = homeRepository {
|
||||
getHome(homeRequestModel: HomeRequestModel(id: '1'));
|
||||
getHomeRecommandTenders(reset: true);
|
||||
getYourTenders();
|
||||
}
|
||||
|
||||
bool _isLoading = false;
|
||||
String? _errorMessage;
|
||||
HomeResponseModel? _homeResponse;
|
||||
TenderApprovalsResponse? data;
|
||||
|
||||
bool get isLoading => _isLoading;
|
||||
String? get errorMessage => _errorMessage;
|
||||
@@ -97,4 +99,36 @@ class HomeViewModel with ChangeNotifier {
|
||||
_isLoadingMore = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> getYourTenders() async {
|
||||
_isLoading = true;
|
||||
notifyListeners();
|
||||
|
||||
final result = await _homeRepository.getYourTenders();
|
||||
|
||||
switch (result) {
|
||||
case Ok<TenderApprovalsResponse>():
|
||||
data = result.value;
|
||||
_errorMessage = null;
|
||||
|
||||
if (data?.data?.isEmpty ?? true) {
|
||||
await getHomeRecommandTenders(reset: true);
|
||||
} else {
|
||||
_tenders.clear();
|
||||
_tenders.addAll(
|
||||
data!.data!
|
||||
.map((e) => e.tender)
|
||||
.whereType<TenderData>(),
|
||||
);
|
||||
}
|
||||
|
||||
case Error<TenderApprovalsResponse>():
|
||||
_errorMessage = result.error.toString();
|
||||
await getHomeRecommandTenders(reset: true);
|
||||
break;
|
||||
}
|
||||
|
||||
_isLoading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ class MobileHomePage extends StatelessWidget {
|
||||
if (homeViewModel.errorMessage != null) {
|
||||
return Center(child: Text(homeViewModel.errorMessage!));
|
||||
}
|
||||
|
||||
if (homeViewModel.homeResponse != null) {
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
@@ -44,7 +45,7 @@ class MobileHomePage extends StatelessWidget {
|
||||
SizedBox(height: 8.0.h()),
|
||||
_secondTenderCardsRow(homeViewModel.homeResponse!),
|
||||
SizedBox(height: 40.0.h()),
|
||||
_yourTenderText(),
|
||||
_yourTenderText(homeViewModel),
|
||||
_bottomListView(homeViewModel),
|
||||
],
|
||||
),
|
||||
@@ -149,11 +150,12 @@ class MobileHomePage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _yourTenderText() {
|
||||
Widget _yourTenderText(HomeViewModel homeViewModel) {
|
||||
final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false;
|
||||
return Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
|
||||
child: Text(
|
||||
AppStrings.recommendation,
|
||||
isYourTenders ? AppStrings.yourTenders : AppStrings.recommendedTenders,
|
||||
style: TextStyle(
|
||||
fontSize: 18.0.sp(),
|
||||
fontWeight: FontWeight.w700,
|
||||
|
||||
Reference in New Issue
Block a user