From 46f0de6a02b65ae1bb8bfdab8663590933e1f283 Mon Sep 17 00:00:00 2001 From: aninarafath6 Date: Thu, 22 Dec 2022 00:26:28 +0530 Subject: [PATCH 1/4] batch logic changed --- arnhss-app/lib/common/routes/app_routes.dart | 4 +- .../view_model/batches_view_model.dart | 32 ++--- .../view_model/course_view_model.dart | 110 +++++++++--------- .../admin/admission/views/admission_view.dart | 1 + .../admission/views/single_batch_view.dart | 33 +++--- .../admin/admission/widgets/batch_card.dart | 8 +- .../admin/admission/widgets/course_card.dart | 1 + arnhss-app/lib/main.dart | 3 +- 8 files changed, 92 insertions(+), 100 deletions(-) diff --git a/arnhss-app/lib/common/routes/app_routes.dart b/arnhss-app/lib/common/routes/app_routes.dart index 75817c5..0b0fb83 100644 --- a/arnhss-app/lib/common/routes/app_routes.dart +++ b/arnhss-app/lib/common/routes/app_routes.dart @@ -39,8 +39,8 @@ class AppRoutes { // return MaterialPageRoute(builder: (_) => const StudentAuthentication()); case SingleBatchView.routeName: return MaterialPageRoute(builder: (_) { - var args = settings.arguments; - return SingleBatchView(selectedBatch: args as Batch); + // var args = settings.arguments; + return const SingleBatchView(); }); case SelectAccount.routeName: diff --git a/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart b/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart index 83f18a0..8115481 100644 --- a/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart +++ b/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart @@ -11,6 +11,7 @@ import 'package:intl/intl.dart'; class BatchViewModel extends ChangeNotifier with HandleException { final AdmissionService _admissionService = AdmissionService(); + late Batch selectedBatch; late TextEditingController nameController = TextEditingController(); late TextEditingController batchCodeController = TextEditingController(); DateTime startDateController = DateTime.now(); @@ -69,7 +70,8 @@ class BatchViewModel extends ChangeNotifier with HandleException { } //* edit batch - void setUpToUpdate(Batch batch) { + void setUpToUpdate() { + var batch = selectedBatch; nameController.text = batch.name; endDateController = batch.endDate; startDateController = batch.startDate; @@ -134,6 +136,7 @@ class BatchViewModel extends ChangeNotifier with HandleException { } //* validate + bool validate({String? id}) { //* handling errors try { @@ -144,34 +147,23 @@ class BatchViewModel extends ChangeNotifier with HandleException { if (batchCodeController.text.isEmpty) { throw InvalidException("Please enter batch code..!!", false); } else { - List check = _batches.where( + List check = hold.where( (element) { if (id == null) { return element.code.toUpperCase() == - batchCodeController.text.trim().toUpperCase() || - element.name.toUpperCase() == - nameController.text.trim().toUpperCase(); + batchCodeController.text.trim().toUpperCase(); } else { return element.code.toUpperCase() == - batchCodeController.text.trim().toUpperCase() && - element.id != id || - element.name.toUpperCase() == - nameController.text.trim().toUpperCase(); + batchCodeController.text.trim().toUpperCase() && + element.id != id; } }, ).toList(); if (check.isNotEmpty) { - throw InvalidException( - "Batch id or name is already exist..", false); + throw InvalidException("Course id is already exist..", false); } else { - if (startDateController.microsecondsSinceEpoch < - endDateController.microsecondsSinceEpoch) { - return true; - } else { - throw InvalidException( - "Start date must be greater than end date...", false); - } + return true; } } } @@ -242,8 +234,6 @@ class BatchViewModel extends ChangeNotifier with HandleException { Future update(Batch oldBatch) async { bool isValid = validate(id: oldBatch.id); - print("here"); - // * validate inputs fields if (isValid) { //* create new batch with new data @@ -263,6 +253,8 @@ class BatchViewModel extends ChangeNotifier with HandleException { var index = _batches.indexWhere((element) => element.id == updatedBatch.id); _batches[index] = updatedBatch; + selectedBatch = updatedBatch; + notifyListeners(); }); //* set loading as false _setToggleLoading = false; diff --git a/arnhss-app/lib/features/users/admin/admission/view_model/course_view_model.dart b/arnhss-app/lib/features/users/admin/admission/view_model/course_view_model.dart index 31ebeed..6047003 100644 --- a/arnhss-app/lib/features/users/admin/admission/view_model/course_view_model.dart +++ b/arnhss-app/lib/features/users/admin/admission/view_model/course_view_model.dart @@ -1,66 +1,66 @@ -import 'package:arnhss/common/routes/index_routes.dart'; -import 'package:arnhss/extensions/string_extension.dart'; -import 'package:arnhss/features/users/admin/admission/model/batch_model.dart'; -import 'package:arnhss/features/users/admin/admission/model/course_model.dart'; -import 'package:arnhss/features/users/admin/admission/repo/admission_service.dart'; -import 'package:arnhss/services/base/exception/app_exceptions.dart'; -import 'package:arnhss/services/base/exception/handle_exception.dart'; -import 'package:intl/intl.dart'; +// import 'package:arnhss/common/routes/index_routes.dart'; +// import 'package:arnhss/extensions/string_extension.dart'; +// import 'package:arnhss/features/users/admin/admission/model/batch_model.dart'; +// import 'package:arnhss/features/users/admin/admission/model/course_model.dart'; +// import 'package:arnhss/features/users/admin/admission/repo/admission_service.dart'; +// import 'package:arnhss/services/base/exception/app_exceptions.dart'; +// import 'package:arnhss/services/base/exception/handle_exception.dart'; +// import 'package:intl/intl.dart'; -class CourseViewModel with ChangeNotifier, HandleException { - final List _batches = []; - // int get batchCount => _batches.length; +// class CourseViewModel with ChangeNotifier, HandleException { +// final List _batches = []; +// // int get batchCount => _batches.length; -//* getters. - // List get batches => _batches; +// //* getters. +// // List get batches => _batches; - // //* setters. - // set _toggleLoading(bool state) { - // _loading = state; - // notifyListeners(); - // } +// // //* setters. +// // set _toggleLoading(bool state) { +// // _loading = state; +// // notifyListeners(); +// // } - // set _setBatch(List newBatch) { - // // _batches.clear(); - // _batches.addAll(newBatch); +// // set _setBatch(List newBatch) { +// // // _batches.clear(); +// // _batches.addAll(newBatch); - // notifyListeners(); - // } +// // notifyListeners(); +// // } -// //* add course functionality -// Future addBatch(Course course) async { -// bool isValid = validate(); +// // //* add course functionality +// // Future addBatch(Course course) async { +// // bool isValid = validate(); -// // * validate inputs fields -// if (isValid) { -// //* create new course with new data -// Batch newBatch = Batch( -// name: nameController.text.trim().capitalize, -// startDate: startDateController, -// code: batchCodeController.text.trim().toUpperCase(), -// endDate: endDateController, -// id: "", -// ); +// // // * validate inputs fields +// // if (isValid) { +// // //* create new course with new data +// // Batch newBatch = Batch( +// // name: nameController.text.trim().capitalize, +// // startDate: startDateController, +// // code: batchCodeController.text.trim().toUpperCase(), +// // endDate: endDateController, +// // id: "", +// // ); -// //* start loading -// //* and set course on firebase -// _setToggleLoading = true; -// await _admissionService.addBatch(newBatch, courseId: course.id).then( -// (course) => _setBatch = [ -// ..._batches, -// course ?? newBatch, -// ], -// ); -// //* set loading as false -// _setToggleLoading = false; +// // //* start loading +// // //* and set course on firebase +// // _setToggleLoading = true; +// // await _admissionService.addBatch(newBatch, courseId: course.id).then( +// // (course) => _setBatch = [ +// // ..._batches, +// // course ?? newBatch, +// // ], +// // ); +// // //* set loading as false +// // _setToggleLoading = false; -// //* clear input controllers's value -// clearControllers(); -// return true; -// } else { -// return false; -// } -// } +// // //* clear input controllers's value +// // clearControllers(); +// // return true; +// // } else { +// // return false; +// // } +// // } -} +// } diff --git a/arnhss-app/lib/features/users/admin/admission/views/admission_view.dart b/arnhss-app/lib/features/users/admin/admission/views/admission_view.dart index a03d20f..888acdf 100644 --- a/arnhss-app/lib/features/users/admin/admission/views/admission_view.dart +++ b/arnhss-app/lib/features/users/admin/admission/views/admission_view.dart @@ -35,6 +35,7 @@ class _AdmissionViewState extends State { horizontal: AppSizes.default_padding - 10, vertical: 5), child: Consumer( builder: (context, value, _) { + return value.loading ? ListView.builder( itemCount: 5, diff --git a/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart b/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart index f46ff51..4147a7f 100644 --- a/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart +++ b/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart @@ -6,7 +6,6 @@ import 'package:arnhss/extensions/dt_extension.dart'; import 'package:arnhss/extensions/string_extension.dart'; import 'package:arnhss/features/authentication/login/view/index.dart'; import 'package:arnhss/features/users/admin/admission/model/batch_model.dart'; -import 'package:arnhss/features/users/admin/admission/view_model/admission_view_model.dart'; import 'package:arnhss/features/users/admin/admission/view_model/batches_view_model.dart'; import 'package:arnhss/features/users/admin/admission/views/course_view.dart'; import 'package:arnhss/features/users/admin/admission/widgets/forms.dart'; @@ -20,9 +19,9 @@ enum Choice { delete, update } class SingleBatchView extends StatefulWidget { const SingleBatchView({ Key? key, - required this.selectedBatch, + // required this.selectedBatch, }) : super(key: key); - final Batch selectedBatch; + // final Batch selectedBatch; static const String routeName = "/"; @override @@ -33,17 +32,20 @@ class _SingleBatchViewState extends State { @override void initState() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) { - context.read().checkStatus(widget.selectedBatch); + context + .read() + .checkStatus(context.read().selectedBatch); }); super.initState(); } @override Widget build(BuildContext context) { + Batch watchBatch = context.watch().selectedBatch; return Scaffold( appBar: customAppBar( context, - title: widget.selectedBatch.name, + title: watchBatch.name, // center: false, actions: [ PopupMenuButton( @@ -54,17 +56,14 @@ class _SingleBatchViewState extends State { enableFeedback: true, onSelected: (value) async { if (value == Choice.update) { - context - .read() - .setUpToUpdate(widget.selectedBatch); + context.read().setUpToUpdate(); showBatchForm( context, title: "Edit Batch", buttonTXT: "Update", onSubmit: () async { - bool status = await context - .read() - .update(widget.selectedBatch); + bool status = + await context.read().update(watchBatch); if (!status) { HandleException().handleException( @@ -101,9 +100,7 @@ class _SingleBatchViewState extends State { ); if (status) { - context - .read() - .deleteBatch(widget.selectedBatch); + context.read().deleteBatch(watchBatch); Navigator.pop(context); } } @@ -136,18 +133,18 @@ class _SingleBatchViewState extends State { children: [ DetailCard( listData: [ - DText(value: widget.selectedBatch.name, name: "Name"), + DText(value: watchBatch.name, name: "Name"), const Divider(), - DText(value: widget.selectedBatch.code, name: "Code"), + DText(value: watchBatch.code, name: "Code"), const Divider(), DText( - value: widget.selectedBatch.startDate + value: watchBatch.startDate .dtFrm(e: "", d: "dd", m: " MMM ", y: "y"), name: "Start Date", ), const Divider(), DText( - value: widget.selectedBatch.endDate.dtFrm( + value: watchBatch.endDate.dtFrm( e: "", m: " MMM ", d: "dd", diff --git a/arnhss-app/lib/features/users/admin/admission/widgets/batch_card.dart b/arnhss-app/lib/features/users/admin/admission/widgets/batch_card.dart index 19b856f..0ee9187 100644 --- a/arnhss-app/lib/features/users/admin/admission/widgets/batch_card.dart +++ b/arnhss-app/lib/features/users/admin/admission/widgets/batch_card.dart @@ -1,17 +1,18 @@ import 'package:arnhss/common/constants/color_constants.dart'; import 'package:arnhss/features/authentication/login/view/index.dart'; import 'package:arnhss/features/users/admin/admission/model/batch_model.dart'; +import 'package:arnhss/features/users/admin/admission/view_model/batches_view_model.dart'; import 'package:arnhss/features/users/admin/admission/views/single_batch_view.dart'; import 'package:shimmer/shimmer.dart'; class BatchCard extends StatelessWidget { const BatchCard({ Key? key, - this.batch, + required this.batch, this.isSkelton = false, }) : super(key: key); - final Batch? batch; + final Batch batch; final bool isSkelton; @override @@ -34,7 +35,7 @@ class BatchCard extends StatelessWidget { ), leading: CircleAvatar( backgroundColor: CustomColors.bgOverlay, - child: Text(batch?.code ?? ""), + child: Text(batch.code), ), trailing: Container( width: 15, @@ -51,6 +52,7 @@ class BatchCard extends StatelessWidget { SingleBatchView.routeName, arguments: batch, ); + context.read().selectedBatch = batch; }, title: Text(batch?.name ?? ""), diff --git a/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart b/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart index 6a9f776..6a36126 100644 --- a/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart +++ b/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart @@ -80,6 +80,7 @@ class CourseCard extends StatelessWidget { ListTile( onTap: () { Navigator.pushNamed(context, CourseView.routeName, arguments: course); + }, // onLongPress: () { // context.read().setUpToUpdate(course!); diff --git a/arnhss-app/lib/main.dart b/arnhss-app/lib/main.dart index 3e2f9ea..23a44a5 100644 --- a/arnhss-app/lib/main.dart +++ b/arnhss-app/lib/main.dart @@ -5,7 +5,6 @@ import 'package:arnhss/common/theme/theme.dart'; import 'package:arnhss/features/authentication/repo/auth_service.dart'; import 'package:arnhss/features/users/admin/admission/view_model/admission_view_model.dart'; import 'package:arnhss/features/users/admin/admission/view_model/batches_view_model.dart'; -import 'package:arnhss/features/users/admin/admission/view_model/course_view_model.dart'; import 'package:arnhss/features/users/student/attendance/view_model/attendance_view_model.dart'; import 'package:arnhss/features/authentication/account/view_model/select_account_view_model.dart'; import 'package:arnhss/features/authentication/login/view_model/country_view_model.dart'; @@ -95,7 +94,7 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => Loader()), ChangeNotifierProvider(create: (_) => AdmissionViewModel()), ChangeNotifierProvider(create: (_) => BatchViewModel()), - ChangeNotifierProvider(create: (_) => CourseViewModel()), + // ChangeNotifierProvider(create: (_) => CourseViewModel()), ], child: GetMaterialApp( title: 'arnhss', From 8730c4fd79ddae8c9387e5e91fcd5e7f06b1b21b Mon Sep 17 00:00:00 2001 From: aninarafath6 Date: Thu, 22 Dec 2022 00:34:38 +0530 Subject: [PATCH 2/4] reactive course update --- arnhss-app/lib/common/routes/app_routes.dart | 4 +-- .../view_model/admission_view_model.dart | 8 ++++- .../admin/admission/views/course_view.dart | 36 +++++++------------ .../admin/admission/widgets/course_card.dart | 7 ++-- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/arnhss-app/lib/common/routes/app_routes.dart b/arnhss-app/lib/common/routes/app_routes.dart index 0b0fb83..7390546 100644 --- a/arnhss-app/lib/common/routes/app_routes.dart +++ b/arnhss-app/lib/common/routes/app_routes.dart @@ -29,8 +29,8 @@ class AppRoutes { return MaterialPageRoute(builder: (_) => const AdmissionView()); case CourseView.routeName: return MaterialPageRoute(builder: (_) { - final Course args = settings.arguments as Course; - return CourseView(selectedCourse: args); + // final Course args = settings.arguments as Course; + return const CourseView(); }); // case UserRole.routeName: diff --git a/arnhss-app/lib/features/users/admin/admission/view_model/admission_view_model.dart b/arnhss-app/lib/features/users/admin/admission/view_model/admission_view_model.dart index 56eb4a9..086ea8c 100644 --- a/arnhss-app/lib/features/users/admin/admission/view_model/admission_view_model.dart +++ b/arnhss-app/lib/features/users/admin/admission/view_model/admission_view_model.dart @@ -1,4 +1,3 @@ - import 'package:arnhss/extensions/string_extension.dart'; import 'package:arnhss/features/users/admin/admission/model/course_model.dart'; import 'package:arnhss/features/users/admin/admission/repo/admission_service.dart'; @@ -10,6 +9,7 @@ import 'package:flutter/material.dart'; class AdmissionViewModel with ChangeNotifier, HandleException { //* admission service object. final AdmissionService _admissionService = AdmissionService(); + late Course selectedCourse; late TextEditingController nameController = TextEditingController(); late TextEditingController courseCodeController = TextEditingController(); @@ -34,6 +34,11 @@ class AdmissionViewModel with ChangeNotifier, HandleException { notifyListeners(); } + set setSelectedCourse(Course course) { + selectedCourse = course; + notifyListeners(); + } + set _setToggleLoading(bool state) { _setLoading = state; notifyListeners(); @@ -194,6 +199,7 @@ class AdmissionViewModel with ChangeNotifier, HandleException { var index = _courses.indexWhere((element) => element.id == updatedCourse.id); _courses[index] = updatedCourse; + selectedCourse = updatedCourse; }); //* set loading as false _setToggleLoading = false; diff --git a/arnhss-app/lib/features/users/admin/admission/views/course_view.dart b/arnhss-app/lib/features/users/admin/admission/views/course_view.dart index aa7488f..be66501 100644 --- a/arnhss-app/lib/features/users/admin/admission/views/course_view.dart +++ b/arnhss-app/lib/features/users/admin/admission/views/course_view.dart @@ -20,9 +20,9 @@ enum Choice { delete, update } class CourseView extends StatefulWidget { const CourseView({ Key? key, - required this.selectedCourse, + // required this.selectedCourse, }) : super(key: key); - final Course selectedCourse; + // final Course selectedCourse; static const String routeName = "/batch_view"; @override @@ -30,20 +30,14 @@ class CourseView extends StatefulWidget { } class _CourseViewState extends State { - @override - void initState() { - WidgetsBinding.instance.addPostFrameCallback((timeStamp) { - // context.read().getBatches(widget.selectedCourse); - }); - super.initState(); - } @override Widget build(BuildContext context) { + Course watchCourse = context.watch().selectedCourse; return Scaffold( appBar: customAppBar( context, - title: widget.selectedCourse.name, + title: watchCourse.name, actions: [ PopupMenuButton( icon: const Icon( @@ -53,9 +47,7 @@ class _CourseViewState extends State { enableFeedback: true, onSelected: (value) async { if (value == Choice.update) { - context - .read() - .setUpToUpdate(widget.selectedCourse); + context.read().setUpToUpdate(watchCourse); showCourseForm( context, title: "Edit Course", @@ -63,7 +55,7 @@ class _CourseViewState extends State { onSubmit: () async { bool status = await context .read() - .update(widget.selectedCourse); + .update(watchCourse); if (!status) { HandleException().handleException( @@ -100,9 +92,7 @@ class _CourseViewState extends State { ); if (status) { - context - .read() - .deleteCourse(widget.selectedCourse); + context.read().deleteCourse(watchCourse); Navigator.pop(context); } } @@ -141,14 +131,14 @@ class _CourseViewState extends State { mainAxisCellCount: 4.5, child: DetailCard( listData: [ - DText(value: widget.selectedCourse.name, name: "Name"), + DText(value: watchCourse.name, name: "Name"), const Divider(), DText( - value: widget.selectedCourse.d_code, + value: watchCourse.d_code, name: "Display code", ), const Divider(), - DText(value: widget.selectedCourse.code, name: "Code"), + DText(value: watchCourse.code, name: "Code"), const Divider(), FutureBuilder>( builder: (context, snapshot) { @@ -165,7 +155,7 @@ class _CourseViewState extends State { }, future: context .read() - .getCourseData(widget.selectedCourse), + .getCourseData(watchCourse), ), const Divider(), FutureBuilder>( @@ -183,7 +173,7 @@ class _CourseViewState extends State { }, future: context .read() - .getCourseData(widget.selectedCourse)), + .getCourseData(watchCourse)), ], ), ), @@ -205,7 +195,7 @@ class _CourseViewState extends State { label: "Batches", onTap: () => Navigator.of(context).pushNamed( BatchesView.routeName, - arguments: widget.selectedCourse, + arguments: watchCourse, ), count: 0, ), diff --git a/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart b/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart index 6a36126..d58aaf4 100644 --- a/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart +++ b/arnhss-app/lib/features/users/admin/admission/widgets/course_card.dart @@ -79,8 +79,11 @@ class CourseCard extends StatelessWidget { // child: ListTile( onTap: () { - Navigator.pushNamed(context, CourseView.routeName, arguments: course); - + Navigator.pushNamed( + context, + CourseView.routeName, + ); + context.read().selectedCourse = course!; }, // onLongPress: () { // context.read().setUpToUpdate(course!); From 2479ada37b6b0efbba0fe69ae5998e5dacd83c1b Mon Sep 17 00:00:00 2001 From: aninarafath6 Date: Thu, 22 Dec 2022 01:05:48 +0530 Subject: [PATCH 3/4] auto naming on add batch --- arnhss-app/lib/common/widgets/custom_input.dart | 4 +++- .../admin/admission/view_model/batches_view_model.dart | 10 ++++++++++ .../users/admin/admission/views/batches_view.dart | 8 ++++++-- .../users/admin/admission/views/single_batch_view.dart | 8 ++++++++ .../features/users/admin/admission/widgets/forms.dart | 4 ++++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/arnhss-app/lib/common/widgets/custom_input.dart b/arnhss-app/lib/common/widgets/custom_input.dart index b0cdc9a..a498746 100644 --- a/arnhss-app/lib/common/widgets/custom_input.dart +++ b/arnhss-app/lib/common/widgets/custom_input.dart @@ -8,11 +8,13 @@ class CustomInput extends StatelessWidget { this.hintText, this.size = Sizing.sm, this.controller, + this.keyboardType = TextInputType.multiline, }) : super(key: key); final String? hintText; final Sizing size; final TextEditingController? controller; + final TextInputType keyboardType; @override Widget build(BuildContext context) { @@ -32,12 +34,12 @@ class CustomInput extends StatelessWidget { borderRadius: BorderRadius.circular(8), ), child: TextField( + keyboardType: keyboardType, maxLines: size == Sizing.xl ? 20 : size == Sizing.lg ? 5 : 1, - keyboardType: TextInputType.multiline, controller: controller, minLines: 1, cursorColor: CustomColors.dark, diff --git a/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart b/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart index 8115481..8f8e3aa 100644 --- a/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart +++ b/arnhss-app/lib/features/users/admin/admission/view_model/batches_view_model.dart @@ -81,6 +81,8 @@ class BatchViewModel extends ChangeNotifier with HandleException { void clearControllers() { nameController.clear(); batchCodeController.clear(); + startDateController = DateTime.now(); + endDateController = DateTime.utc(DateTime.now().year + 2); } void setUpForAdd(Course course) { @@ -89,6 +91,12 @@ class BatchViewModel extends ChangeNotifier with HandleException { "${formatter.format(startDateController).toString()}-${formatter.format(endDateController).toString()} ${course.d_code.toUpperCase()}"; } + void setupToAdd(String courseDc) { + nameController.text = + "${startDateController.year}-${endDateController.year} $courseDc"; + batchCodeController.text = (hold.length + 1).toString(); + } + void get toggleFilter { _filter = !filter; if (_filter) { @@ -212,6 +220,8 @@ class BatchViewModel extends ChangeNotifier with HandleException { Future deleteBatch(Batch? batch) async { if (batch != null) { _batches.removeWhere((element) => element.id == batch.id); + hold.removeWhere((element) => element.id == batch.id); + debugPrint("=== batch deletion process started ====="); _setToggleDeleteLoading = true; await Future.delayed(const Duration(milliseconds: 300)); diff --git a/arnhss-app/lib/features/users/admin/admission/views/batches_view.dart b/arnhss-app/lib/features/users/admin/admission/views/batches_view.dart index 448778d..f1c4658 100644 --- a/arnhss-app/lib/features/users/admin/admission/views/batches_view.dart +++ b/arnhss-app/lib/features/users/admin/admission/views/batches_view.dart @@ -5,7 +5,6 @@ import 'package:arnhss/common/widgets/not_found.dart'; import 'package:arnhss/features/authentication/otp_verification/view/index.dart'; import 'package:arnhss/features/users/admin/admission/model/batch_model.dart'; import 'package:arnhss/features/users/admin/admission/model/course_model.dart'; -import 'package:arnhss/features/users/admin/admission/view_model/admission_view_model.dart'; import 'package:arnhss/features/users/admin/admission/view_model/batches_view_model.dart'; import 'package:arnhss/features/users/admin/admission/widgets/forms.dart'; import 'package:arnhss/features/users/admin/admission/widgets/batch_card.dart'; @@ -113,9 +112,14 @@ class _BatchesViewState extends State { ), floatingActionButton: TextButton( onPressed: () { - context.read().clearControllers(); + context.read().clearControllers(); + context + .read() + .setupToAdd(widget.selectedCourse.d_code); + showBatchForm( context, + dc: widget.selectedCourse.d_code, title: "New Batch", onSubmit: () async { bool status = await context diff --git a/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart b/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart index 4147a7f..8ef9e06 100644 --- a/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart +++ b/arnhss-app/lib/features/users/admin/admission/views/single_batch_view.dart @@ -6,6 +6,7 @@ import 'package:arnhss/extensions/dt_extension.dart'; import 'package:arnhss/extensions/string_extension.dart'; import 'package:arnhss/features/authentication/login/view/index.dart'; import 'package:arnhss/features/users/admin/admission/model/batch_model.dart'; +import 'package:arnhss/features/users/admin/admission/view_model/admission_view_model.dart'; import 'package:arnhss/features/users/admin/admission/view_model/batches_view_model.dart'; import 'package:arnhss/features/users/admin/admission/views/course_view.dart'; import 'package:arnhss/features/users/admin/admission/widgets/forms.dart'; @@ -39,6 +40,12 @@ class _SingleBatchViewState extends State { super.initState(); } + @override + void dispose() { + context.read().clearControllers(); + super.dispose(); + } + @override Widget build(BuildContext context) { Batch watchBatch = context.watch().selectedBatch; @@ -61,6 +68,7 @@ class _SingleBatchViewState extends State { context, title: "Edit Batch", buttonTXT: "Update", + dc: context.read().selectedCourse.d_code, onSubmit: () async { bool status = await context.read().update(watchBatch); diff --git a/arnhss-app/lib/features/users/admin/admission/widgets/forms.dart b/arnhss-app/lib/features/users/admin/admission/widgets/forms.dart index 7e0f6d6..2abf296 100644 --- a/arnhss-app/lib/features/users/admin/admission/widgets/forms.dart +++ b/arnhss-app/lib/features/users/admin/admission/widgets/forms.dart @@ -146,6 +146,7 @@ void showBatchForm( String title = "New Batch", String buttonTXT = "Add", required VoidCallback onSubmit, + required String dc, }) { showModalBottomSheet( backgroundColor: Colors.transparent, @@ -198,6 +199,7 @@ void showBatchForm( controller: context.read().batchCodeController, size: Sizing.sm, + keyboardType: TextInputType.number, ), const SizedBox(height: 5), Row( @@ -216,6 +218,7 @@ void showBatchForm( ).then( (value) { _provider.setStartDate = value ?? DateTime.now(); + context.read().setupToAdd(dc); }, ); }, @@ -240,6 +243,7 @@ void showBatchForm( ).then( (value) { _provider.setEndDate = value ?? DateTime.now(); + context.read().setupToAdd(dc); }, ); }, From e740781cf46e39da6a6dc0b9982ef1c4ecf4cc51 Mon Sep 17 00:00:00 2001 From: aninarafath6 Date: Thu, 22 Dec 2022 01:11:11 +0530 Subject: [PATCH 4/4] stable batch --- .../features/users/admin/admission/repo/admission_service.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/arnhss-app/lib/features/users/admin/admission/repo/admission_service.dart b/arnhss-app/lib/features/users/admin/admission/repo/admission_service.dart index f9e25d6..16e9b81 100644 --- a/arnhss-app/lib/features/users/admin/admission/repo/admission_service.dart +++ b/arnhss-app/lib/features/users/admin/admission/repo/admission_service.dart @@ -123,6 +123,7 @@ class AdmissionService with HandleException { }, ); } catch (e) { + print(e); handleException( InvalidException( "Batch cannot be added because there is something wrong with them 🤯",