Fixing JIRA Issues

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

@ -38,8 +38,8 @@ class ProviderAppRoutes {
//Appointments
AppRoutes.appointment: (context) => AppointmentPage(branch: ModalRoute.of(context)!.settings.arguments as BranchDetailModel),
AppRoutes.appointmentDetailList: (context) => const AppointmentDetailListPage(),
AppRoutes.updateAppointmentPage: (context) => UpdateAppointmentPage(),
AppRoutes.appointmentDetailList: (context) => AppointmentDetailListPage(),
AppRoutes.updateAppointmentPage: (context) => const UpdateAppointmentPage(),
AppRoutes.addServiceInAppointment: (context) => AddNewServiceAppointmentPage(ModalRoute.of(context)!.settings.arguments as AppointmentListModel),
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:mc_common_app/config/routes.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/utils/enums.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/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/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:easy_localization/easy_localization.dart';
class AppointmentDetailListPage extends StatelessWidget {
const AppointmentDetailListPage({super.key});
AppointmentDetailListPage({super.key});
int customerID = 0;
int complainType = 1;
String customerName = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CustomAppBar(
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(
width: double.infinity,
@ -33,6 +54,12 @@ class AppointmentDetailListPage extends StatelessWidget {
} else {
return ListView.separated(
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(
appointmentListModel: appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index],
isNeedTotalPayment: true,

@ -100,6 +100,10 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
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
void initState() {
super.initState();
@ -177,8 +181,20 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
onTap: () async {
startDate = await Utils.pickDateFromDatePicker(
context,
initial: tomorrowDate,
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();
scheduleVM.refresh();
},
@ -191,12 +207,32 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
size: 16,
),
value: endDate,
isNeedClickAll: true,
isNeedClickAll: true,
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(
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();
scheduleVM.refresh();
},
@ -231,6 +267,16 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
isNeedClickAll: true,
onTap: () async {
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();
scheduleVM.refresh();
},
@ -248,11 +294,23 @@ class _AddSchedulesPageState extends State<AddSchedulesPage> {
isNeedClickAll: true,
onTap: () async {
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(
context,
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();
scheduleVM.refresh();
},

@ -19,7 +19,7 @@ class ChipsPickerItem extends StatelessWidget {
final List<PickerItem> itemsList;
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
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/generated/locale_keys.g.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/extensions/extensions_widget.dart';
import 'package:provider/provider.dart';
@ -72,9 +73,7 @@ class _SelectDaysSheetState extends State<SelectDaysSheet> {
);
},
separatorBuilder: (BuildContext context, int index) {
return const Divider(
height: 1,
);
return const Divider(height: 1);
},
itemCount: list.length,
),
@ -83,8 +82,19 @@ class _SelectDaysSheetState extends State<SelectDaysSheet> {
title: LocaleKeys.addSelectedDays.tr(),
maxWidth: double.infinity,
onPressed: () {
widget.onSelected(list);
Navigator.pop(context);
bool isOneUnSelected = false;
for (var day in list) {
if (!(day.isSelected ?? false)) {
isOneUnSelected = true;
break;
}
}
if (isOneUnSelected) {
widget.onSelected(list);
Navigator.pop(context);
} else {
Utils.showToast(LocaleKeys.cannotSelectAllDaysAsOff.tr());
}
},
)
],

@ -29,7 +29,7 @@ import 'package:provider/provider.dart';
class CreateServicesPage3 extends StatefulWidget {
final CreateBranchModel? branchModel;
const CreateServicesPage3(this.branchModel, {Key? key}) : super(key: key);
const CreateServicesPage3(this.branchModel, {super.key});
@override
State<CreateServicesPage3> createState() => _CreateServicesPage3State();
@ -225,6 +225,12 @@ class _CreateServicesPage3State extends State<CreateServicesPage3> {
}
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 = [];
model.services!.data?.forEach((element) {
if (serviceId == element.id) {

Loading…
Cancel
Save