BASE: Update Icons & Name Of The App.
This commit is contained in:
@@ -8,16 +8,18 @@ import 'package:easy_localization/easy_localization.dart';
|
||||
import '../screen_ui/multi_vendor_service/dine_in_booking/dine_in_booking_screen.dart';
|
||||
import '../service/fire_store_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:get/get.dart' hide Trans;
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import '../service/send_notification.dart';
|
||||
import '../themes/show_toast_dialog.dart';
|
||||
|
||||
class DineInRestaurantDetailsController extends GetxController {
|
||||
Rx<TextEditingController> searchEditingController = TextEditingController().obs;
|
||||
Rx<TextEditingController> searchEditingController =
|
||||
TextEditingController().obs;
|
||||
|
||||
Rx<TextEditingController> additionRequestController = TextEditingController().obs;
|
||||
Rx<TextEditingController> additionRequestController =
|
||||
TextEditingController().obs;
|
||||
|
||||
RxBool isLoading = true.obs;
|
||||
RxBool firstVisit = false.obs;
|
||||
@@ -42,6 +44,7 @@ class DineInRestaurantDetailsController extends GetxController {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
RxString selectedOccasion = "".obs;
|
||||
|
||||
RxList<DateModel> dateList = <DateModel>[].obs;
|
||||
@@ -65,30 +68,53 @@ class DineInRestaurantDetailsController extends GetxController {
|
||||
ShowToastDialog.showLoader("Please wait...".tr());
|
||||
|
||||
DateTime dt = selectedDate.value.toDate();
|
||||
String hour = DateFormat("kk:mm").format(DateFormat('hh:mm a').parse((Intl.getCurrentLocale() == "en_US") ? selectedTimeSlot.value : selectedTimeSlot.value.toLowerCase()));
|
||||
dt = DateTime(dt.year, dt.month, dt.day, int.parse(hour.split(":")[0]), int.parse(hour.split(":")[1]), dt.second, dt.millisecond, dt.microsecond);
|
||||
String hour = DateFormat("kk:mm").format(
|
||||
DateFormat('hh:mm a').parse(
|
||||
(Intl.getCurrentLocale() == "en_US")
|
||||
? selectedTimeSlot.value
|
||||
: selectedTimeSlot.value.toLowerCase(),
|
||||
),
|
||||
);
|
||||
dt = DateTime(
|
||||
dt.year,
|
||||
dt.month,
|
||||
dt.day,
|
||||
int.parse(hour.split(":")[0]),
|
||||
int.parse(hour.split(":")[1]),
|
||||
dt.second,
|
||||
dt.millisecond,
|
||||
dt.microsecond,
|
||||
);
|
||||
selectedDate.value = Timestamp.fromDate(dt);
|
||||
DineInBookingModel dineInBookingModel = DineInBookingModel(
|
||||
id: Constant.getUuid(),
|
||||
author: Constant.userModel,
|
||||
authorID: FireStoreUtils.getCurrentUid(),
|
||||
createdAt: Timestamp.now(),
|
||||
date: selectedDate.value,
|
||||
status: Constant.orderPlaced,
|
||||
vendor: vendorModel.value,
|
||||
specialRequest: additionRequestController.value.text.isEmpty ? "" : additionRequestController.value.text,
|
||||
vendorID: vendorModel.value.id,
|
||||
guestEmail: Constant.userModel!.email,
|
||||
guestFirstName: Constant.userModel!.firstName,
|
||||
guestLastName: Constant.userModel!.lastName,
|
||||
guestPhone: Constant.userModel!.phoneNumber,
|
||||
occasion: selectedOccasion.value,
|
||||
discount: selectedTimeDiscount.value,
|
||||
discountType: selectedTimeDiscountType.value,
|
||||
totalGuest: noOfQuantity.value.toString(),
|
||||
firstVisit: firstVisit.value);
|
||||
id: Constant.getUuid(),
|
||||
author: Constant.userModel,
|
||||
authorID: FireStoreUtils.getCurrentUid(),
|
||||
createdAt: Timestamp.now(),
|
||||
date: selectedDate.value,
|
||||
status: Constant.orderPlaced,
|
||||
vendor: vendorModel.value,
|
||||
specialRequest:
|
||||
additionRequestController.value.text.isEmpty
|
||||
? ""
|
||||
: additionRequestController.value.text,
|
||||
vendorID: vendorModel.value.id,
|
||||
guestEmail: Constant.userModel!.email,
|
||||
guestFirstName: Constant.userModel!.firstName,
|
||||
guestLastName: Constant.userModel!.lastName,
|
||||
guestPhone: Constant.userModel!.phoneNumber,
|
||||
occasion: selectedOccasion.value,
|
||||
discount: selectedTimeDiscount.value,
|
||||
discountType: selectedTimeDiscountType.value,
|
||||
totalGuest: noOfQuantity.value.toString(),
|
||||
firstVisit: firstVisit.value,
|
||||
);
|
||||
await FireStoreUtils.setBookedOrder(dineInBookingModel);
|
||||
await SendNotification.sendFcmMessage(Constant.dineInPlaced, vendorModel.value.fcmToken.toString(), {});
|
||||
await SendNotification.sendFcmMessage(
|
||||
Constant.dineInPlaced,
|
||||
vendorModel.value.fcmToken.toString(),
|
||||
{},
|
||||
);
|
||||
ShowToastDialog.closeLoader();
|
||||
Get.back();
|
||||
Get.to(const DineInBookingScreen());
|
||||
@@ -99,27 +125,46 @@ class DineInRestaurantDetailsController extends GetxController {
|
||||
for (int i = 0; i < 7; i++) {
|
||||
final now = DateTime.now().add(Duration(days: i));
|
||||
var day = DateFormat('EEEE').format(now);
|
||||
if (vendorModel.value.specialDiscount?.isNotEmpty == true && vendorModel.value.specialDiscountEnable == true) {
|
||||
if (vendorModel.value.specialDiscount?.isNotEmpty == true &&
|
||||
vendorModel.value.specialDiscountEnable == true) {
|
||||
for (var element in vendorModel.value.specialDiscount!) {
|
||||
if (day == element.day.toString()) {
|
||||
if (element.timeslot!.isNotEmpty) {
|
||||
SpecialDiscountTimeslot employeeWithMaxSalary =
|
||||
element.timeslot!.reduce((item1, item2) => double.parse(item1.discount.toString()) > double.parse(item2.discount.toString()) ? item1 : item2);
|
||||
SpecialDiscountTimeslot employeeWithMaxSalary = element.timeslot!
|
||||
.reduce(
|
||||
(item1, item2) =>
|
||||
double.parse(item1.discount.toString()) >
|
||||
double.parse(item2.discount.toString())
|
||||
? item1
|
||||
: item2,
|
||||
);
|
||||
if (employeeWithMaxSalary.discountType == "dinein") {
|
||||
DateModel model = DateModel(date: Timestamp.fromDate(now), discountPer: employeeWithMaxSalary.discount.toString());
|
||||
DateModel model = DateModel(
|
||||
date: Timestamp.fromDate(now),
|
||||
discountPer: employeeWithMaxSalary.discount.toString(),
|
||||
);
|
||||
dateList.add(model);
|
||||
} else {
|
||||
DateModel model = DateModel(date: Timestamp.fromDate(now), discountPer: "0");
|
||||
DateModel model = DateModel(
|
||||
date: Timestamp.fromDate(now),
|
||||
discountPer: "0",
|
||||
);
|
||||
dateList.add(model);
|
||||
}
|
||||
} else {
|
||||
DateModel model = DateModel(date: Timestamp.fromDate(now), discountPer: "0");
|
||||
DateModel model = DateModel(
|
||||
date: Timestamp.fromDate(now),
|
||||
discountPer: "0",
|
||||
);
|
||||
dateList.add(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
DateModel model = DateModel(date: Timestamp.fromDate(now), discountPer: "0");
|
||||
DateModel model = DateModel(
|
||||
date: Timestamp.fromDate(now),
|
||||
discountPer: "0",
|
||||
);
|
||||
dateList.add(model);
|
||||
}
|
||||
}
|
||||
@@ -127,70 +172,116 @@ class DineInRestaurantDetailsController extends GetxController {
|
||||
|
||||
timeSet(selectedDate.value);
|
||||
if (timeSlotList.isNotEmpty) {
|
||||
selectedTimeSlot.value = DateFormat('hh:mm a').format(timeSlotList[0].time!);
|
||||
selectedTimeSlot.value = DateFormat(
|
||||
'hh:mm a',
|
||||
).format(timeSlotList[0].time!);
|
||||
}
|
||||
}
|
||||
|
||||
void timeSet(Timestamp selectedDate) {
|
||||
timeSlotList.clear();
|
||||
|
||||
for (DateTime time = Constant.stringToDate(vendorModel.value.openDineTime.toString());
|
||||
time.isBefore(Constant.stringToDate(vendorModel.value.closeDineTime.toString()));
|
||||
time = time.add(const Duration(minutes: 30))) {
|
||||
for (
|
||||
DateTime time = Constant.stringToDate(
|
||||
vendorModel.value.openDineTime.toString(),
|
||||
);
|
||||
time.isBefore(
|
||||
Constant.stringToDate(vendorModel.value.closeDineTime.toString()),
|
||||
);
|
||||
time = time.add(const Duration(minutes: 30))
|
||||
) {
|
||||
final now = DateTime.parse(selectedDate.toDate().toString());
|
||||
var day = DateFormat('EEEE').format(now);
|
||||
var date = DateFormat('dd-MM-yyyy').format(now);
|
||||
|
||||
if (vendorModel.value.specialDiscount?.isNotEmpty == true && vendorModel.value.specialDiscountEnable == true) {
|
||||
if (vendorModel.value.specialDiscount?.isNotEmpty == true &&
|
||||
vendorModel.value.specialDiscountEnable == true) {
|
||||
for (var element in vendorModel.value.specialDiscount!) {
|
||||
if (day == element.day.toString()) {
|
||||
if (element.timeslot!.isNotEmpty) {
|
||||
for (var element in element.timeslot!) {
|
||||
if (element.discountType == "dinein") {
|
||||
var start = DateFormat("dd-MM-yyyy HH:mm").parse("$date ${element.from}");
|
||||
var end = DateFormat("dd-MM-yyyy HH:mm").parse("$date ${element.to}");
|
||||
var selected = DateFormat("dd-MM-yyyy HH:mm").parse("$date ${DateFormat.Hm().format(time)}");
|
||||
var start = DateFormat(
|
||||
"dd-MM-yyyy HH:mm",
|
||||
).parse("$date ${element.from}");
|
||||
var end = DateFormat(
|
||||
"dd-MM-yyyy HH:mm",
|
||||
).parse("$date ${element.to}");
|
||||
var selected = DateFormat(
|
||||
"dd-MM-yyyy HH:mm",
|
||||
).parse("$date ${DateFormat.Hm().format(time)}");
|
||||
|
||||
if (isCurrentDateInRangeDineIn(start, end, selected)) {
|
||||
var contains = timeSlotList.where((element) => element.time == time);
|
||||
var contains = timeSlotList.where(
|
||||
(element) => element.time == time,
|
||||
);
|
||||
if (contains.isNotEmpty) {
|
||||
var index = timeSlotList.indexWhere((element) => element.time == time);
|
||||
var index = timeSlotList.indexWhere(
|
||||
(element) => element.time == time,
|
||||
);
|
||||
if (timeSlotList[index].discountPer == "0") {
|
||||
timeSlotList.removeAt(index);
|
||||
TimeModel model = TimeModel(time: time, discountPer: element.discount, discountType: element.type);
|
||||
TimeModel model = TimeModel(
|
||||
time: time,
|
||||
discountPer: element.discount,
|
||||
discountType: element.type,
|
||||
);
|
||||
timeSlotList.insert(index == 0 ? 0 : index, model);
|
||||
}
|
||||
} else {
|
||||
TimeModel model = TimeModel(time: time, discountPer: element.discount, discountType: element.type);
|
||||
TimeModel model = TimeModel(
|
||||
time: time,
|
||||
discountPer: element.discount,
|
||||
discountType: element.type,
|
||||
);
|
||||
timeSlotList.add(model);
|
||||
}
|
||||
} else {
|
||||
var contains = timeSlotList.where((element) => element.time == time);
|
||||
var contains = timeSlotList.where(
|
||||
(element) => element.time == time,
|
||||
);
|
||||
if (contains.isEmpty) {
|
||||
TimeModel model = TimeModel(time: time, discountPer: "0", discountType: "amount");
|
||||
TimeModel model = TimeModel(
|
||||
time: time,
|
||||
discountPer: "0",
|
||||
discountType: "amount",
|
||||
);
|
||||
timeSlotList.add(model);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
TimeModel model = TimeModel(time: time, discountPer: "0", discountType: "amount");
|
||||
TimeModel model = TimeModel(
|
||||
time: time,
|
||||
discountPer: "0",
|
||||
discountType: "amount",
|
||||
);
|
||||
timeSlotList.add(model);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
TimeModel model = TimeModel(time: time, discountPer: "0", discountType: "amount");
|
||||
TimeModel model = TimeModel(
|
||||
time: time,
|
||||
discountPer: "0",
|
||||
discountType: "amount",
|
||||
);
|
||||
timeSlotList.add(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
TimeModel model = TimeModel(time: time, discountPer: "0", discountType: "amount");
|
||||
TimeModel model = TimeModel(
|
||||
time: time,
|
||||
discountPer: "0",
|
||||
discountType: "amount",
|
||||
);
|
||||
timeSlotList.add(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void animateSlider() {
|
||||
if (vendorModel.value.photos != null && vendorModel.value.photos!.isNotEmpty) {
|
||||
if (vendorModel.value.photos != null &&
|
||||
vendorModel.value.photos!.isNotEmpty) {
|
||||
Timer.periodic(const Duration(seconds: 2), (Timer timer) {
|
||||
if (currentPage < vendorModel.value.photos!.length) {
|
||||
currentPage++;
|
||||
@@ -226,18 +317,16 @@ class DineInRestaurantDetailsController extends GetxController {
|
||||
|
||||
Future<void> getFavouriteList() async {
|
||||
if (Constant.userModel != null) {
|
||||
await FireStoreUtils.getFavouriteRestaurant().then(
|
||||
(value) {
|
||||
favouriteList.value = value;
|
||||
},
|
||||
);
|
||||
await FireStoreUtils.getFavouriteRestaurant().then((value) {
|
||||
favouriteList.value = value;
|
||||
});
|
||||
}
|
||||
|
||||
await FireStoreUtils.getVendorCuisines(vendorModel.value.id.toString()).then(
|
||||
(value) {
|
||||
tags.value = value;
|
||||
},
|
||||
);
|
||||
await FireStoreUtils.getVendorCuisines(
|
||||
vendorModel.value.id.toString(),
|
||||
).then((value) {
|
||||
tags.value = value;
|
||||
});
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -251,8 +340,12 @@ class DineInRestaurantDetailsController extends GetxController {
|
||||
if (day == element.day.toString()) {
|
||||
if (element.timeslot!.isNotEmpty) {
|
||||
for (var element in element.timeslot!) {
|
||||
var start = DateFormat("dd-MM-yyyy HH:mm").parse("$date ${element.from}");
|
||||
var end = DateFormat("dd-MM-yyyy HH:mm").parse("$date ${element.to}");
|
||||
var start = DateFormat(
|
||||
"dd-MM-yyyy HH:mm",
|
||||
).parse("$date ${element.from}");
|
||||
var end = DateFormat(
|
||||
"dd-MM-yyyy HH:mm",
|
||||
).parse("$date ${element.to}");
|
||||
if (isCurrentDateInRange(start, end)) {
|
||||
isOpen.value = true;
|
||||
}
|
||||
@@ -262,8 +355,14 @@ class DineInRestaurantDetailsController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
bool isCurrentDateInRangeDineIn(DateTime startDate, DateTime endDate, DateTime selected) {
|
||||
return selected.isAtSameMomentAs(startDate) || selected.isAtSameMomentAs(endDate) || selected.isAfter(startDate) && selected.isBefore(endDate);
|
||||
bool isCurrentDateInRangeDineIn(
|
||||
DateTime startDate,
|
||||
DateTime endDate,
|
||||
DateTime selected,
|
||||
) {
|
||||
return selected.isAtSameMomentAs(startDate) ||
|
||||
selected.isAtSameMomentAs(endDate) ||
|
||||
selected.isAfter(startDate) && selected.isBefore(endDate);
|
||||
}
|
||||
|
||||
bool isCurrentDateInRange(DateTime startDate, DateTime endDate) {
|
||||
@@ -284,5 +383,9 @@ class TimeModel {
|
||||
String? discountPer;
|
||||
String? discountType;
|
||||
|
||||
TimeModel({required this.time, required this.discountPer, required this.discountType});
|
||||
TimeModel({
|
||||
required this.time,
|
||||
required this.discountPer,
|
||||
required this.discountType,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user