Fixing JIRA Issues

aamir_dev
Faiz Hashmi 1 year ago
parent 31d0368e2a
commit 48ce588021

@ -38,8 +38,8 @@ class ProviderAppRoutes {
//Appointments //Appointments
AppRoutes.appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel), AppRoutes.appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
AppRoutes.appointmentDetailList: (context) => const AppointmentDetailListPage(), AppRoutes.appointmentDetailList: (context) => AppointmentDetailListPage(),
AppRoutes.updateAppointmentPage: (context) => UpdateAppointmentPage(), AppRoutes.updateAppointmentPage: (context) => const UpdateAppointmentPage(),
AppRoutes.addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel), AppRoutes.addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel),
AppRoutes.mergeAppointments: (context) => const MergeAppointmentListPage(), AppRoutes.mergeAppointments: (context) => const MergeAppointmentListPage(),

@ -3,23 +3,44 @@ import 'package:car_provider_app/views/dashboard/widget/general_appointment_widg
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/info_bottom_sheet.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
class AppointmentDetailListPage extends StatelessWidget { class AppointmentDetailListPage extends StatelessWidget {
const AppointmentDetailListPage({super.key}); AppointmentDetailListPage({super.key});
int customerID = 0;
int complainType = 1;
String customerName = "";
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
title: LocaleKeys.appointment_details.tr(), title: LocaleKeys.appointment_details.tr(),
actions: [
IconButton(
onPressed: () {
context.read<AppointmentsVM>().buildComplaintBottomSheet(
customerID: customerID,
customerName: customerName,
complainType: complainType,
context: context,
);
},
icon: const Icon(Icons.report_problem_outlined).paddingOnly(right: 21),
),
],
), ),
body: SizedBox( body: SizedBox(
width: double.infinity, width: double.infinity,
@ -33,6 +54,12 @@ class AppointmentDetailListPage extends StatelessWidget {
} else { } else {
return ListView.separated( return ListView.separated(
itemBuilder: (context, index) { itemBuilder: (context, index) {
if (customerID == 0) {
customerID = appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index].customerID ?? 0;
}
if (customerName.isEmpty) {
customerName = appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index].customerName ?? "";
}
return GeneralAppointmentWidget( return GeneralAppointmentWidget(
appointmentListModel: appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index], appointmentListModel: appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index],
isNeedTotalPayment: true, isNeedTotalPayment: true,

@ -100,6 +100,10 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
DropValue(2, 'Customer Location', ''), DropValue(2, 'Customer Location', ''),
]; ];
DateTime tomorrowDate = DateTime.now().add(const Duration(days: 1)).subtract(
Duration(hours: DateTime.now().hour, minutes: DateTime.now().minute, seconds: DateTime.now().second, microseconds: DateTime.now().microsecond),
);
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -177,8 +181,20 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
onTap: () async { onTap: () async {
startDate = await Utils.pickDateFromDatePicker( startDate = await Utils.pickDateFromDatePicker(
context, context,
initial: tomorrowDate,
firstDate: DateTime.now(), firstDate: DateTime.now(),
); );
if (endDate.isNotEmpty) {
DateTime sDate = DateTime.parse(startDate);
DateTime eDate = DateTime.parse(endDate);
if (sDate.isAfter(eDate)) {
startDate = "";
Utils.showToast(LocaleKeys.endDateAfterStartDate.tr());
}
}
FocusManager.instance.primaryFocus?.unfocus(); FocusManager.instance.primaryFocus?.unfocus();
scheduleVM.refresh(); scheduleVM.refresh();
}, },
@ -193,10 +209,30 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
value: endDate, value: endDate,
isNeedClickAll: true, isNeedClickAll: true,
onTap: () async { onTap: () async {
DateTime? firstDate;
DateTime? sDate;
if (startDate.isEmpty) {
Utils.showToast(LocaleKeys.pleaseEnterStartDateFirst.tr());
return;
} else {
sDate = DateTime.parse(startDate);
firstDate = sDate.add(const Duration(days: 1)).subtract(
Duration(hours: DateTime.now().hour, minutes: DateTime.now().minute, seconds: DateTime.now().second, microseconds: DateTime.now().microsecond),
);
}
endDate = await Utils.pickDateFromDatePicker( endDate = await Utils.pickDateFromDatePicker(
context, context,
firstDate: DateTime.now(), initial: tomorrowDate,
firstDate: firstDate ?? tomorrowDate,
); );
DateTime eDate = DateTime.parse(endDate);
if (!eDate.isAfter(sDate)) {
endDate = "";
Utils.showToast(LocaleKeys.endDateAfterStartDate.tr());
}
FocusManager.instance.primaryFocus?.unfocus(); FocusManager.instance.primaryFocus?.unfocus();
scheduleVM.refresh(); scheduleVM.refresh();
}, },
@ -231,6 +267,16 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
isNeedClickAll: true, isNeedClickAll: true,
onTap: () async { onTap: () async {
startTime = await Utils.pickTime(context); startTime = await Utils.pickTime(context);
if (endTime.isNotEmpty) {
TimeOfDay sTime = TimeOfDayUtils.convertStringToTimeOfDay(startTime);
TimeOfDay eTime = TimeOfDayUtils.convertStringToTimeOfDay(endTime);
if (!eTime.isAfter(sTime)) {
startTime = "";
Utils.showToast(LocaleKeys.endTimeAfterStartTime.tr());
}
}
FocusManager.instance.primaryFocus?.unfocus(); FocusManager.instance.primaryFocus?.unfocus();
scheduleVM.refresh(); scheduleVM.refresh();
}, },
@ -248,11 +294,23 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
isNeedClickAll: true, isNeedClickAll: true,
onTap: () async { onTap: () async {
TimeOfDay _startTime = TimeOfDay.now(); TimeOfDay _startTime = TimeOfDay.now();
if (startTime.isNotEmpty) _startTime = TimeOfDay(hour: int.parse(startTime.split(":")[0]), minute: int.parse(startTime.split(":")[1])); if (startTime.isNotEmpty) {
_startTime = TimeOfDay(hour: int.parse(startTime.split(":")[0]), minute: int.parse(startTime.split(":")[1]));
}
endTime = await Utils.pickTime( endTime = await Utils.pickTime(
context, context,
initialTime: _startTime, initialTime: _startTime,
); );
if (startTime.isNotEmpty) {
TimeOfDay sTime = TimeOfDayUtils.convertStringToTimeOfDay(startTime);
TimeOfDay eTime = TimeOfDayUtils.convertStringToTimeOfDay(endTime);
if (!eTime.isAfter(sTime)) {
endTime = "";
Utils.showToast(LocaleKeys.endTimeAfterStartTime.tr());
}
}
FocusManager.instance.primaryFocus?.unfocus(); FocusManager.instance.primaryFocus?.unfocus();
scheduleVM.refresh(); scheduleVM.refresh();
}, },

@ -19,7 +19,7 @@ class ChipsPickerItem extends StatelessWidget {
final List<PickerItem> itemsList; final List<PickerItem> itemsList;
final Function onClick; final Function onClick;
const ChipsPickerItem({Key? key, required this.hint, required this.itemsList, required this.onClick}) : super(key: key); const ChipsPickerItem({super.key, required this.hint, required this.itemsList, required this.onClick});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -5,6 +5,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -72,9 +73,7 @@ class _SelectDaysSheetState extends State<SelectDaysSheet> {
); );
}, },
separatorBuilder: (BuildContext context, int index) { separatorBuilder: (BuildContext context, int index) {
return const Divider( return const Divider(height: 1);
height: 1,
);
}, },
itemCount: list.length, itemCount: list.length,
), ),
@ -83,8 +82,19 @@ class _SelectDaysSheetState extends State<SelectDaysSheet> {
title: LocaleKeys.addSelectedDays.tr(), title: LocaleKeys.addSelectedDays.tr(),
maxWidth: double.infinity, maxWidth: double.infinity,
onPressed: () { onPressed: () {
bool isOneUnSelected = false;
for (var day in list) {
if (!(day.isSelected ?? false)) {
isOneUnSelected = true;
break;
}
}
if (isOneUnSelected) {
widget.onSelected(list); widget.onSelected(list);
Navigator.pop(context); Navigator.pop(context);
} else {
Utils.showToast(LocaleKeys.cannotSelectAllDaysAsOff.tr());
}
}, },
) )
], ],

@ -29,7 +29,7 @@ import 'package:provider/provider.dart';
class CreateServicesPage3 extends StatefulWidget { class CreateServicesPage3 extends StatefulWidget {
final CreateBranchModel? branchModel; final CreateBranchModel? branchModel;
const CreateServicesPage3(this.branchModel, {Key? key}) : super(key: key); const CreateServicesPage3(this.branchModel, {super.key});
@override @override
State<CreateServicesPage3> createState() => _CreateServicesPage3State(); State<CreateServicesPage3> createState() => _CreateServicesPage3State();
@ -225,6 +225,12 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
} }
createService(BuildContext context, ServiceVM model) async { createService(BuildContext context, ServiceVM model) async {
if (isHomeAppointmentAvailable) {
if (serviceRage == 0 || chargersPerKm.isEmpty || double.parse(chargersPerKm) < 1) {
Utils.showToast(LocaleKeys.chargesAndServiceRangeGreaterThanZero.tr());
return;
}
}
List<Map<String, dynamic>> map = []; List<Map<String, dynamic>> map = [];
model.services!.data?.forEach((element) { model.services!.data?.forEach((element) {
if (serviceId == element.id) { if (serviceId == element.id) {

Loading…
Cancel
Save