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 recommendation = 'Recommendation';
|
||||||
static const String welcome = 'Welcome';
|
static const String welcome = 'Welcome';
|
||||||
static const String tenderDeadline = 'Deadline';
|
static const String tenderDeadline = 'Deadline';
|
||||||
|
static const String recommendedTenders = 'Recommended Tenders';
|
||||||
|
|
||||||
//Tenders
|
//Tenders
|
||||||
static const String tendersTitle = '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_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/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/recommended_tenders_response/recommended_tenders_response.dart';
|
||||||
|
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||||
|
|
||||||
class HomeRepository {
|
class HomeRepository {
|
||||||
HomeRepository({required HomeService homeService})
|
HomeRepository({required HomeService homeService})
|
||||||
@@ -21,4 +22,7 @@ class HomeRepository {
|
|||||||
}) async {
|
}) async {
|
||||||
return _homeService.getRecommendedTenders(limit: limit, offset: offset);
|
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_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/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/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';
|
import '../../core/network/network_manager.dart';
|
||||||
|
|
||||||
@@ -50,4 +51,21 @@ class HomeService {
|
|||||||
);
|
);
|
||||||
return result;
|
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/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/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/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 'package:tm_app/data/services/model/tender_data/tender_data.dart';
|
||||||
|
|
||||||
import '../data/repositories/home_repository.dart';
|
import '../data/repositories/home_repository.dart';
|
||||||
@@ -11,14 +12,15 @@ class HomeViewModel with ChangeNotifier {
|
|||||||
final HomeRepository _homeRepository;
|
final HomeRepository _homeRepository;
|
||||||
|
|
||||||
HomeViewModel({required HomeRepository homeRepository})
|
HomeViewModel({required HomeRepository homeRepository})
|
||||||
: _homeRepository = homeRepository {
|
: _homeRepository = homeRepository {
|
||||||
getHome(homeRequestModel: HomeRequestModel(id: '1'));
|
getHome(homeRequestModel: HomeRequestModel(id: '1'));
|
||||||
getHomeRecommandTenders(reset: true);
|
getYourTenders();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
String? _errorMessage;
|
String? _errorMessage;
|
||||||
HomeResponseModel? _homeResponse;
|
HomeResponseModel? _homeResponse;
|
||||||
|
TenderApprovalsResponse? data;
|
||||||
|
|
||||||
bool get isLoading => _isLoading;
|
bool get isLoading => _isLoading;
|
||||||
String? get errorMessage => _errorMessage;
|
String? get errorMessage => _errorMessage;
|
||||||
@@ -97,4 +99,36 @@ class HomeViewModel with ChangeNotifier {
|
|||||||
_isLoadingMore = false;
|
_isLoadingMore = false;
|
||||||
notifyListeners();
|
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) {
|
if (homeViewModel.errorMessage != null) {
|
||||||
return Center(child: Text(homeViewModel.errorMessage!));
|
return Center(child: Text(homeViewModel.errorMessage!));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (homeViewModel.homeResponse != null) {
|
if (homeViewModel.homeResponse != null) {
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -44,7 +45,7 @@ class MobileHomePage extends StatelessWidget {
|
|||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_secondTenderCardsRow(homeViewModel.homeResponse!),
|
_secondTenderCardsRow(homeViewModel.homeResponse!),
|
||||||
SizedBox(height: 40.0.h()),
|
SizedBox(height: 40.0.h()),
|
||||||
_yourTenderText(),
|
_yourTenderText(homeViewModel),
|
||||||
_bottomListView(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(
|
return Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
|
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
|
||||||
child: Text(
|
child: Text(
|
||||||
AppStrings.recommendation,
|
isYourTenders ? AppStrings.yourTenders : AppStrings.recommendedTenders,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 18.0.sp(),
|
fontSize: 18.0.sp(),
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
|
|||||||
Reference in New Issue
Block a user