|
|
|
@ -18,6 +18,7 @@ import 'package:mc_common_app/models/general_models/enums_model.dart';
|
|
|
|
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
|
|
|
|
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
|
|
|
|
import 'package:mc_common_app/models/general_models/widgets_models.dart';
|
|
|
|
import 'package:mc_common_app/models/general_models/widgets_models.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/offers_model.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/offers_model.dart';
|
|
|
|
|
|
|
|
import 'package:mc_common_app/models/requests_models/offers_unread_chat_model.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/provider_offers_model.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/provider_offers_model.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/providers_offers_chat_model.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/providers_offers_chat_model.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/request_model.dart';
|
|
|
|
import 'package:mc_common_app/models/requests_models/request_model.dart';
|
|
|
|
@ -843,12 +844,12 @@ class RequestsVM extends BaseVM {
|
|
|
|
return isValid;
|
|
|
|
return isValid;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<ProviderOffersChatsModel> providerOffersChatsList = [];
|
|
|
|
Future<void> getOffersChatByProvider({required int providerId, required BuildContext context}) async {
|
|
|
|
|
|
|
|
List<ProviderOffersChatsModel> providerOffersChatsList = [];
|
|
|
|
|
|
|
|
|
|
|
|
Future<void> getProviderOffersChatsList({required int serviceProviderId, required BuildContext context}) async {
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
Utils.showLoading(context);
|
|
|
|
Utils.showLoading(context);
|
|
|
|
List<ProviderOffersChatsModel> respModel = await requestRepo.getOffersChatByProvider(serviceProviderId: serviceProviderId);
|
|
|
|
List<ProviderOffersChatsModel> respModel = await requestRepo.getOffersChatByProvider(serviceProviderId: providerId);
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
providerOffersChatsList.clear();
|
|
|
|
providerOffersChatsList.clear();
|
|
|
|
providerOffersChatsList = respModel;
|
|
|
|
providerOffersChatsList = respModel;
|
|
|
|
@ -860,7 +861,26 @@ class RequestsVM extends BaseVM {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OffersUnreadChatModel? offersUnreadChatModel;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Future<void> getOffersChatsUnreadList({required String userId, required BuildContext context}) async {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Utils.showLoading(context);
|
|
|
|
|
|
|
|
OffersUnreadChatModel respModel = await requestRepo.getOffersChatsUnreadList(userId: userId);
|
|
|
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
|
|
|
offersUnreadChatModel = respModel;
|
|
|
|
|
|
|
|
log("offersUnreadChatModel: ${offersUnreadChatModel!.reqChatUnread.length}");
|
|
|
|
|
|
|
|
notifyListeners();
|
|
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
|
|
logger.e(e.toString());
|
|
|
|
|
|
|
|
Utils.showToast(e.toString());
|
|
|
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
String offerPriceError = "";
|
|
|
|
String offerPriceError = "";
|
|
|
|
|
|
|
|
|
|
|
|
String offerDescriptionError = "";
|
|
|
|
String offerDescriptionError = "";
|
|
|
|
|
|
|
|
|
|
|
|
String offerPrice = "";
|
|
|
|
String offerPrice = "";
|
|
|
|
@ -907,6 +927,39 @@ class RequestsVM extends BaseVM {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String deliveryOptionSelectionError = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<EnumsModel> myDeliveryOptionsEnum = [];
|
|
|
|
|
|
|
|
List<FilterListModel> myDeliveryOptionsFilterOptions = [];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Future<void> populateDeliveryOptionEnums() async {
|
|
|
|
|
|
|
|
if (myDeliveryOptionsFilterOptions.isNotEmpty) return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
notifyListeners();
|
|
|
|
|
|
|
|
myDeliveryOptionsEnum = await commonRepo.getEnumTypeValues(enumTypeID: AppEnums.deliveryOptionEnumId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < myDeliveryOptionsEnum.length; i++) {
|
|
|
|
|
|
|
|
myDeliveryOptionsFilterOptions.add(FilterListModel(title: myDeliveryOptionsEnum[i].enumValueStr, isSelected: false, id: myDeliveryOptionsEnum[i].enumValue));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
notifyListeners();
|
|
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
|
|
logger.e(e.toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Future<void> applyFilterOnDeliveryOption({required RequestDeliveryOptionEnum requestDeliveryOptionEnum}) async {
|
|
|
|
|
|
|
|
if (myDeliveryOptionsFilterOptions.isEmpty) return;
|
|
|
|
|
|
|
|
for (var value in myDeliveryOptionsFilterOptions) {
|
|
|
|
|
|
|
|
value.isSelected = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (requestDeliveryOptionEnum != RequestDeliveryOptionEnum.none) {
|
|
|
|
|
|
|
|
myDeliveryOptionsFilterOptions[requestDeliveryOptionEnum.getIdRequestDeliveryOptionEnum() - 1].isSelected = true; // -1 to match with the index
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
notifyListeners();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<OfferRequestCommentModel> providerDeliveryActionsList = [
|
|
|
|
List<OfferRequestCommentModel> providerDeliveryActionsList = [
|
|
|
|
OfferRequestCommentModel(
|
|
|
|
OfferRequestCommentModel(
|
|
|
|
index: 0,
|
|
|
|
index: 0,
|
|
|
|
@ -974,19 +1027,40 @@ class RequestsVM extends BaseVM {
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
offerDescriptionError = "";
|
|
|
|
offerDescriptionError = "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (currentSelectedRequest != null && currentSelectedRequest!.requestType == RequestsTypeEnum.serviceRequest.getIdFromRequestTypeEnum()) {
|
|
|
|
|
|
|
|
int index = myDeliveryOptionsFilterOptions.indexWhere((option) => option.isSelected);
|
|
|
|
|
|
|
|
if (index == -1) {
|
|
|
|
|
|
|
|
deliveryOptionSelectionError = GlobalConsts.deliveryOptionSelectionError;
|
|
|
|
|
|
|
|
log("indexindex: ${index}");
|
|
|
|
|
|
|
|
isValidated = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
notifyListeners();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
deliveryOptionSelectionError = "";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
notifyListeners();
|
|
|
|
notifyListeners();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
log("isValidatedisValidated: ${isValidated}");
|
|
|
|
|
|
|
|
|
|
|
|
return isValidated;
|
|
|
|
return isValidated;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void resetSendOfferBottomSheet() {
|
|
|
|
void resetSendOfferBottomSheet() {
|
|
|
|
offerPrice = "";
|
|
|
|
offerPrice = "";
|
|
|
|
|
|
|
|
offerPriceError = "";
|
|
|
|
offerDescription = "";
|
|
|
|
offerDescription = "";
|
|
|
|
offerDescriptionError = "";
|
|
|
|
offerDescriptionError = "";
|
|
|
|
|
|
|
|
deliveryOptionSelectionError = "";
|
|
|
|
serviceItem = "";
|
|
|
|
serviceItem = "";
|
|
|
|
serviceItemCreatedOn = "";
|
|
|
|
serviceItemCreatedOn = "";
|
|
|
|
itemManufacturer = "";
|
|
|
|
itemManufacturer = "";
|
|
|
|
isDeliveryAvailableStatus = false;
|
|
|
|
isDeliveryAvailableStatus = false;
|
|
|
|
|
|
|
|
if (myDeliveryOptionsFilterOptions.isNotEmpty) {
|
|
|
|
|
|
|
|
myDeliveryOptionsFilterOptions.forEach((option) => option.isSelected = false);
|
|
|
|
|
|
|
|
}
|
|
|
|
pickedVehicleImages.clear();
|
|
|
|
pickedVehicleImages.clear();
|
|
|
|
notifyListeners();
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1055,6 +1129,7 @@ class RequestsVM extends BaseVM {
|
|
|
|
required int offerId,
|
|
|
|
required int offerId,
|
|
|
|
required String offerPrice,
|
|
|
|
required String offerPrice,
|
|
|
|
required bool isDeliveryAvailable,
|
|
|
|
required bool isDeliveryAvailable,
|
|
|
|
|
|
|
|
required RequestDeliveryOptionEnum offerDeliveryOption,
|
|
|
|
required String serviceItemName,
|
|
|
|
required String serviceItemName,
|
|
|
|
required String manufacturedByName,
|
|
|
|
required String manufacturedByName,
|
|
|
|
required String manufacturedOn,
|
|
|
|
required String manufacturedOn,
|
|
|
|
@ -1077,6 +1152,7 @@ class RequestsVM extends BaseVM {
|
|
|
|
offerId: offerId,
|
|
|
|
offerId: offerId,
|
|
|
|
offerPrice: offerPrice,
|
|
|
|
offerPrice: offerPrice,
|
|
|
|
isDeliveryAvailable: isDeliveryAvailable,
|
|
|
|
isDeliveryAvailable: isDeliveryAvailable,
|
|
|
|
|
|
|
|
offerDeliveryOption: offerDeliveryOption.getIdRequestDeliveryOptionEnum(),
|
|
|
|
serviceItemName: serviceItemName,
|
|
|
|
serviceItemName: serviceItemName,
|
|
|
|
manufacturedByName: manufacturedByName,
|
|
|
|
manufacturedByName: manufacturedByName,
|
|
|
|
manufacturedOn: manufacturedOn,
|
|
|
|
manufacturedOn: manufacturedOn,
|
|
|
|
@ -1120,6 +1196,7 @@ class RequestsVM extends BaseVM {
|
|
|
|
required String manufacturedOn,
|
|
|
|
required String manufacturedOn,
|
|
|
|
required RequestModel requestModel,
|
|
|
|
required RequestModel requestModel,
|
|
|
|
required bool isDeliveryAvailable,
|
|
|
|
required bool isDeliveryAvailable,
|
|
|
|
|
|
|
|
required RequestDeliveryOptionEnum offerDeliveryOption,
|
|
|
|
required int requestIndex,
|
|
|
|
required int requestIndex,
|
|
|
|
required bool isFromChatScreen,
|
|
|
|
required bool isFromChatScreen,
|
|
|
|
required int? offerId,
|
|
|
|
required int? offerId,
|
|
|
|
@ -1139,6 +1216,7 @@ class RequestsVM extends BaseVM {
|
|
|
|
requestId: requestId,
|
|
|
|
requestId: requestId,
|
|
|
|
offerPrice: offerPrice,
|
|
|
|
offerPrice: offerPrice,
|
|
|
|
isDeliveryAvailable: isDeliveryAvailable,
|
|
|
|
isDeliveryAvailable: isDeliveryAvailable,
|
|
|
|
|
|
|
|
offerDeliveryOption: offerDeliveryOption,
|
|
|
|
manufacturedByName: manufacturedByName,
|
|
|
|
manufacturedByName: manufacturedByName,
|
|
|
|
manufacturedOn: manufacturedOn,
|
|
|
|
manufacturedOn: manufacturedOn,
|
|
|
|
serviceItemName: serviceItemName,
|
|
|
|
serviceItemName: serviceItemName,
|
|
|
|
@ -1173,6 +1251,7 @@ class RequestsVM extends BaseVM {
|
|
|
|
requestID: requestModel.id,
|
|
|
|
requestID: requestModel.id,
|
|
|
|
price: double.parse(offerPrice),
|
|
|
|
price: double.parse(offerPrice),
|
|
|
|
isDeliveryAvailable: isDeliveryAvailable,
|
|
|
|
isDeliveryAvailable: isDeliveryAvailable,
|
|
|
|
|
|
|
|
requestDeliveryOption: offerDeliveryOption,
|
|
|
|
manufacturedByName: manufacturedByName,
|
|
|
|
manufacturedByName: manufacturedByName,
|
|
|
|
manufacturedOn: manufacturedOn,
|
|
|
|
manufacturedOn: manufacturedOn,
|
|
|
|
serviceItemName: serviceItemName,
|
|
|
|
serviceItemName: serviceItemName,
|
|
|
|
@ -1182,6 +1261,7 @@ class RequestsVM extends BaseVM {
|
|
|
|
reqOfferImages: images,
|
|
|
|
reqOfferImages: images,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
context.read<ChatVM>().onNewMessageReceivedForRequestOffer(messages: [chatMessageModel], requestsVM: this, isMyOwnOffer: true);
|
|
|
|
context.read<ChatVM>().onNewMessageReceivedForRequestOffer(messages: [chatMessageModel], requestsVM: this, isMyOwnOffer: true);
|
|
|
|
|
|
|
|
|
|
|
|
if (!isFromChatScreen) {
|
|
|
|
if (!isFromChatScreen) {
|
|
|
|
|