build_app
This commit is contained in:
		
							parent
							
								
									a520fdf4bb
								
							
						
					
					
						commit
						272d0b5609
					
				
							
								
								
									
										6
									
								
								testflutterbug01-dbtdt-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								testflutterbug01-dbtdt-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,6 @@ | ||||
| CREATE TABLE dbtdt.Testbug(id BIGINT NOT NULL AUTO_INCREMENT, select_dynamic_mul VARCHAR(400), onetoone VARCHAR(400), select_autocomp int, select_autcomp_mul VARCHAR(400), fileupload_fields VARCHAR(400), bar_code VARCHAR(400), qr_code VARCHAR(400), value_list_fieldcc VARCHAR(400), datagrid_fieldv VARCHAR(400), select_dyanamic int, name VARCHAR(400),  PRIMARY KEY (id)); | ||||
| 
 | ||||
| CREATE TABLE dbtdt.Child(id BIGINT NOT NULL AUTO_INCREMENT, namek VARCHAR(400),  PRIMARY KEY (id)); | ||||
| 
 | ||||
| CREATE TABLE dbtdt.Testlist(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400),  PRIMARY KEY (id)); | ||||
| 
 | ||||
| @ -0,0 +1,76 @@ | ||||
| import 'dart:typed_data'; | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:http_parser/http_parser.dart'; | ||||
| import '../../../../resources/api_constants.dart'; | ||||
| import '../../../../data/network/base_network_service.dart'; | ||||
| import '../../../../data/network/network_api_service.dart'; | ||||
| 
 | ||||
| class ChildApiService { | ||||
|   final String baseUrl = ApiConstants.baseUrl; | ||||
| 
 | ||||
|       final BaseNetworkService _helper = NetworkApiService(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|    Future<List<Map<String, dynamic>>> getEntities() async { | ||||
| 
 | ||||
|     try { | ||||
|       final response = await _helper.getGetApiResponse('$baseUrl/Child/Child'); | ||||
|       final entities = (response as List).cast<Map<String, dynamic>>(); | ||||
|       return entities; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all entities: $e'); | ||||
|     } | ||||
|   } | ||||
| Future<List<Map<String, dynamic>>> getAllWithPagination( | ||||
|        int page, int size) async { | ||||
|     try { | ||||
|             final response = | ||||
|           await _helper.getGetApiResponse('$baseUrl/Child/Child/getall/page?page=$page&size=$size'); | ||||
|       final entities = | ||||
|           (response['content'] as List).cast<Map<String, dynamic>>(); | ||||
|       return entities; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all without pagination: $e'); | ||||
|     } | ||||
|   } | ||||
|   Future<Map<String, dynamic>> createEntity( | ||||
|        Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|             print("in post api$entity"); | ||||
|       final response = | ||||
|           await _helper.getPostApiResponse('$baseUrl/Child/Child', entity); | ||||
| 
 | ||||
|       print(entity); | ||||
| 
 | ||||
|       // Assuming the response is a Map<String, dynamic> | ||||
|       Map<String, dynamic> responseData = response; | ||||
| 
 | ||||
|       return responseData; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to create entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   Future<void> updateEntity( int entityId, Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|      await _helper.getPutApiResponse('$baseUrl/Child/Child/$entityId', | ||||
|       entity);                print(entity); | ||||
| 
 | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to update entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<void> deleteEntity( int entityId) async { | ||||
|     try { | ||||
|  await _helper.getDeleteApiResponse('$baseUrl/Child/Child/$entityId'); | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to delete entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,78 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'dart:convert'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:file_picker/file_picker.dart'; | ||||
| import 'package:image_picker/image_picker.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../Child_viewModel/Child_view_model_screen.dart'; | ||||
| import 'Child_fields.dart';import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; | ||||
| import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import '../../../../widgets/custom_button.dart'; | ||||
| import '../../../../widgets/custom_text_form_field.dart';  | ||||
| import '../../../../widgets/custom_dropdown_field.dart'; | ||||
| import 'dart:math'; | ||||
| import 'package:qr_flutter/qr_flutter.dart'; | ||||
| import 'package:barcode_widget/barcode_widget.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
|   | ||||
| import 'package:autocomplete_textfield/autocomplete_textfield.dart'; | ||||
| import 'package:http/http.dart' as http; | ||||
| import 'package:flutter/services.dart'; | ||||
| import 'package:image_picker/image_picker.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| import '../../../../Reuseable/reusable_date_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_time_picker_field.dart' | ||||
| ;import 'package:multi_select_flutter/multi_select_flutter.dart'; | ||||
| import 'package:just_audio/just_audio.dart'; | ||||
| import 'package:video_player/video_player.dart'; | ||||
| import 'package:google_fonts/google_fonts.dart'; | ||||
| import 'package:lottie/lottie.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import 'dart:io'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import '../../../../Reuseable/reusable_dropdown_field.dart'; | ||||
| 
 | ||||
| 
 | ||||
| class ChildCreateEntityScreen extends StatefulWidget { | ||||
|   const ChildCreateEntityScreen({super.key}); | ||||
| 
 | ||||
|   @override | ||||
|   _ChildCreateEntityScreenState createState() => _ChildCreateEntityScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _ChildCreateEntityScreenState extends State<ChildCreateEntityScreen> { | ||||
| 
 | ||||
| final Map<String, dynamic> formData = {}; | ||||
|   final _formKey = GlobalKey<FormState>(); | ||||
|    | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<ChildViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityCreateScreen( | ||||
|           fields: ChildFields.getFields(context), | ||||
|           onSubmit: (data) => _handleSubmit(data), | ||||
|           title: 'Child', | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Future<void> _handleSubmit(Map<String, dynamic> formData) async { | ||||
|     final provider = | ||||
|         Provider.of<ChildViewModelScreen>(context, listen: false); | ||||
|     final success = await provider.createEntity(formData); | ||||
| 
 | ||||
|     if (success && mounted) { | ||||
|       Navigator.pop(context); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,86 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../../../../BuilderField/shared/ui/entity_details.dart'; | ||||
| import '../Child_viewModel/Child_view_model_screen.dart'; | ||||
| import 'Child_update_entity_screen.dart'; | ||||
| 
 | ||||
| class ChildDetailsScreen extends StatefulWidget { | ||||
|   final Map<String, dynamic> entity; | ||||
| 
 | ||||
|   const ChildDetailsScreen({ | ||||
|     super.key, | ||||
|     required this.entity, | ||||
|   }); | ||||
| 
 | ||||
|   @override | ||||
|   State<ChildDetailsScreen> createState() => _ChildDetailsScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _ChildDetailsScreenState extends State<ChildDetailsScreen> { | ||||
|   void _navigateToUpdateScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => ChildViewModelScreen(), | ||||
|           child: ChildUpdateEntityScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       // Refresh the details screen with updated data | ||||
|       setState(() {}); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _showDeleteDialog(Map<String, dynamic> entity) { | ||||
|     showDialog( | ||||
|       context: context, | ||||
|       builder: (BuildContext context) { | ||||
|         return AlertDialog( | ||||
|           title: const Text('Confirm Deletion'), | ||||
|           content: const Text('Are you sure you want to delete this Child?'), | ||||
|           actions: [ | ||||
|             TextButton( | ||||
|               child: const Text('Cancel'), | ||||
|               onPressed: () { | ||||
|                 Navigator.of(context).pop(); | ||||
|               }, | ||||
|             ), | ||||
|             TextButton( | ||||
|               child: const Text('Delete'), | ||||
|               onPressed: () async { | ||||
|                 Navigator.of(context).pop(); | ||||
|                 final vm = | ||||
|                     Provider.of<ChildViewModelScreen>(context, listen: false); | ||||
|                 final success = await vm.deleteEntity(entity['id']); | ||||
|                 if (success && mounted) { | ||||
|                   Navigator.pop(context); // Go back to list | ||||
|                 } | ||||
|               }, | ||||
|             ), | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<ChildViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityDetails( | ||||
|           entity: widget.entity, | ||||
|           onEdit: (entity) => _navigateToUpdateScreen(entity), | ||||
|           onDelete: (entity) => _showDeleteDialog(entity), | ||||
|           title: 'Child', | ||||
|           displayFields: [ | ||||
|   {'key': 'namek', 'label': 'Namek', 'type': 'text'}, | ||||
| 
 | ||||
|           ], | ||||
|           isLoading: viewModel.isLoading, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,146 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
| import 'package:base_project/BuilderField/shared/ui/entity_list.dart'; | ||||
| import 'Child_create_entity_screen.dart'; | ||||
| import 'Child_update_entity_screen.dart'; | ||||
| import '../Child_viewModel/Child_view_model_screen.dart'; | ||||
| import 'Child_details_screen.dart';import 'package:flutter/services.dart'; | ||||
| import 'package:speech_to_text/speech_to_text.dart' as stt; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../widgets/custom_icon_button.dart'; | ||||
| import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import '../../../../theme/app_decoration.dart'; | ||||
| import 'package:multi_select_flutter/multi_select_flutter.dart'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| 
 | ||||
| class Child_entity_list_screen extends StatefulWidget { | ||||
|   static const String routeName = '/entity-list'; | ||||
| 
 | ||||
|   @override | ||||
|   _Child_entity_list_screenState createState() => _Child_entity_list_screenState(); | ||||
| } | ||||
| 
 | ||||
| class _Child_entity_list_screenState extends State<Child_entity_list_screen> { | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     _loadData(); | ||||
|   } | ||||
| 
 | ||||
|   void _loadData() { | ||||
|     WidgetsBinding.instance.addPostFrameCallback((_) { | ||||
|       if (mounted) { | ||||
|         final vm = Provider.of<ChildViewModelScreen>(context, listen: false); | ||||
|         vm.getAllWithPagination(refresh: true); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToCreateScreen() { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => ChildViewModelScreen(), | ||||
|           child: const ChildCreateEntityScreen(), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       final vm = Provider.of<ChildViewModelScreen>(context, listen: false); | ||||
|       vm.refreshData(); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToUpdateScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => ChildViewModelScreen(), | ||||
|           child: ChildUpdateEntityScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       final vm = Provider.of<ChildViewModelScreen>(context, listen: false); | ||||
|       vm.refreshData(); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToDetailsScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => ChildViewModelScreen(), | ||||
|           child: ChildDetailsScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   void _showDeleteDialog(Map<String, dynamic> entity) { | ||||
|  final parentContext = context;  | ||||
|     showDialog( | ||||
|       context: context, | ||||
|       builder: (BuildContext context) { | ||||
|         return AlertDialog( | ||||
|           title: const Text('Confirm Deletion'), | ||||
|           content: const Text('Are you sure you want to delete this Child?'), | ||||
|           actions: [ | ||||
|             TextButton( | ||||
|               child: const Text('Cancel'), | ||||
|               onPressed: () { | ||||
|                 Navigator.of(context).pop(); | ||||
|               }, | ||||
|             ), | ||||
|             TextButton( | ||||
|               child: const Text('Delete'), | ||||
|               onPressed: () async { | ||||
|                 Navigator.of(context).pop(); | ||||
|                 final vm = | ||||
|                     Provider.of<ChildViewModelScreen>(parentContext, listen: false); | ||||
|                 await vm.deleteEntity(entity['id']); | ||||
|               }, | ||||
|             ), | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<ChildViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityList( | ||||
|           entities: viewModel.filteredList, | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|           hasMoreData: viewModel.hasMoreData, | ||||
|           searchQuery: viewModel.searchQuery, | ||||
|           onSearchChanged: (query) => viewModel.searchchild(query), | ||||
|           onEdit: (entity) => _navigateToUpdateScreen(entity), | ||||
|           onDelete: (entity) => _showDeleteDialog(entity), | ||||
|           onTap: (entity) => _navigateToDetailsScreen(entity), | ||||
|           onRefresh: () => viewModel.refreshData(), | ||||
|           onLoadMore: () => viewModel.getAllWithPagination(), | ||||
|           title: 'Child', | ||||
|           onAddNew: _navigateToCreateScreen, | ||||
|           displayFields: [ | ||||
|   {'key': 'namek', 'label': 'Namek', 'type': 'text'}, | ||||
| 
 | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,63 @@ | ||||
| import 'package:base_project/BuilderField/shared/fields/number_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/password_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/phone_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/custom_text_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/base_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/date_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/datetime_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/email_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/url_field.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/custom_text_field.dart' as shared_text; | ||||
| import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/calculated_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/one_to_many_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/value_list_picker_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/captcha_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/switch_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/url_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/audio_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/checkbox_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/file_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/image_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/radio_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/video_upload_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/autocomplete_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/autocomplete_multiselect_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/data_grid_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/static_multiselect_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/currency_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/field_group_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/qr_code_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/barcode_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dependent_dropdown_field.dart'; | ||||
|  import '../Child_viewModel/Child_view_model_screen.dart';/// Field definitions for Child entity | ||||
| /// This defines the structure and validation for Child forms | ||||
| class ChildFields { | ||||
|   /// Get field definitions for Child entity | ||||
|   static List<BaseField> getFields(BuildContext context) { | ||||
|     final viewModel = | ||||
|         Provider.of<ChildViewModelScreen>(context, listen: false); | ||||
|     return [ | ||||
|       // Basic Information | ||||
|  CustomTextField( | ||||
|         fieldKey: 'namek', | ||||
|         label: 'Namek', | ||||
|         hint: 'Enter Namek', | ||||
|         isRequired: true, | ||||
|         maxLength: 50, | ||||
|       ), | ||||
| 
 | ||||
|     ]; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,73 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'dart:convert'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../Child_viewModel/Child_view_model_screen.dart'; | ||||
| import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; | ||||
| import 'Child_fields.dart';import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import 'package:barcode_widget/barcode_widget.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| import '../../../../widgets/custom_button.dart'; | ||||
| import '../../../../widgets/custom_text_form_field.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:autocomplete_textfield/autocomplete_textfield.dart'; | ||||
| import 'package:qr_flutter/qr_flutter.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
| 
 | ||||
| import 'dart:math'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_time_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_dropdown_field.dart'; | ||||
| import 'package:flutter/services.dart'; | ||||
| class ChildUpdateEntityScreen extends StatefulWidget { | ||||
|     final Map<String, dynamic> entity; | ||||
| 
 | ||||
| 
 | ||||
|   ChildUpdateEntityScreen({required this.entity}); | ||||
| 
 | ||||
|   @override | ||||
|   _ChildUpdateEntityScreenState createState() => _ChildUpdateEntityScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _ChildUpdateEntityScreenState extends State<ChildUpdateEntityScreen> { | ||||
|   final _formKey = GlobalKey<FormState>(); | ||||
| 
 | ||||
| @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<ChildViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
| // Start with all fields, then remove upload fields (generic filter by keys) | ||||
|         final Set<String> hiddenKeys = {  | ||||
| 
 | ||||
| 
 | ||||
|  }; | ||||
|         final fields = ChildFields.getFields(context) | ||||
|             .where((f) => !hiddenKeys.contains(f.fieldKey)) | ||||
|             .toList();        return EntityUpdateScreen( | ||||
|           fields: fields, | ||||
|           initialData: widget.entity, | ||||
|           onSubmit: (data) => _handleSubmit(data), | ||||
|           title: 'Child', | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Future<void> _handleSubmit(Map<String, dynamic> formData) async { | ||||
|     final provider = | ||||
|         Provider.of<ChildViewModelScreen>(context, listen: false); | ||||
|     final success = await provider.updateEntity(widget.entity['id'], formData); | ||||
| 
 | ||||
|     if (success && mounted) { | ||||
|       Navigator.pop(context); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,91 @@ | ||||
| import 'package:dio/dio.dart'; | ||||
| import '../../../../data/network/base_network_service.dart'; | ||||
| import '../../../../data/network/network_api_service.dart'; | ||||
| import '../../../../resources/api_constants.dart'; | ||||
| import 'package:base_project/data/response/api_response.dart'; | ||||
| 
 | ||||
| class ChildRepoScreen { | ||||
| 
 | ||||
|   final String baseUrl = ApiConstants.baseUrl; | ||||
|   final BaseNetworkService _helper = NetworkApiService(); | ||||
|   final String _endpointPath = '/Child/Child'; | ||||
| 
 | ||||
|   Future<ApiResponse<List<Map<String, dynamic>>>> getEntities() async { | ||||
|     try { | ||||
|       final response = | ||||
|           await _helper.getGetApiResponse('$baseUrl$_endpointPath'); | ||||
|       print('Response received: $response'); | ||||
|       List<Map<String, dynamic>> entities = const []; | ||||
|       if (response is List) { | ||||
|         entities = response | ||||
|             .whereType<Map>() | ||||
|             .map((e) => Map<String, dynamic>.from(e as Map)) | ||||
|             .toList(); | ||||
|       } else if (response is Map<String, dynamic>) { | ||||
|         final dynamic content = response['content']; | ||||
|         if (content is List) { | ||||
|           entities = content | ||||
|               .whereType<Map>() | ||||
|               .map((e) => Map<String, dynamic>.from(e as Map)) | ||||
|               .toList(); | ||||
|         } | ||||
|       } | ||||
|       return ApiResponse.success(entities); | ||||
|     } catch (e) { | ||||
|       print(' error got $e'); | ||||
|       return ApiResponse.error('Failed to get all entities: $e'); | ||||
|     } | ||||
|   }  | ||||
| 
 | ||||
|   Future<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination( | ||||
|       int page, int size) async { | ||||
|     try { | ||||
|       final response = await _helper.getGetApiResponse( | ||||
|           '$baseUrl$_endpointPath/getall/page?page=$page&size=$size'); | ||||
| 
 | ||||
|       if (response is Map<String, dynamic> && response['content'] is List) { | ||||
|         final List<Map<String, dynamic>> entities = | ||||
|             (response['content'] as List).cast<Map<String, dynamic>>().toList(); | ||||
|         return ApiResponse.success(entities); | ||||
|       } else { | ||||
|         return ApiResponse.error('Invalid response format'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to get all without pagination: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<Map<String, dynamic>>> createEntity( | ||||
|       Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|       print("in post api$entity"); | ||||
|       final response = | ||||
|           await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity); | ||||
|       return ApiResponse.success(response as Map<String, dynamic>); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to create entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<Map<String, dynamic>>> updateEntity( | ||||
|       int entityId, Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|       final response = await _helper.getPutApiResponse( | ||||
|           '$baseUrl$_endpointPath/$entityId', entity); | ||||
|       return ApiResponse.success(response as Map<String, dynamic>); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to update entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<void>> deleteEntity(int entityId) async { | ||||
|     try { | ||||
|       await _helper.getDeleteApiResponse('$baseUrl$_endpointPath/$entityId'); | ||||
|       return ApiResponse.success(null); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to delete entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,276 @@ | ||||
| import 'package:base_project/data/response/status.dart'; | ||||
| import 'dart:typed_data'; | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:http_parser/http_parser.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import '../../../../BuilderField/shared/utils/entity_field_store.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import '../Child_Repo/Child_repo_screen.dart'; | ||||
| 
 | ||||
| class ChildViewModelScreen extends ChangeNotifier{ | ||||
|   final ChildRepoScreen repo = ChildRepoScreen(); | ||||
| 
 | ||||
|   | ||||
|   // State variables | ||||
|   List<Map<String, dynamic>> _childList = []; | ||||
|   List<Map<String, dynamic>> _filteredList = []; | ||||
|   bool _isLoading = false; | ||||
|   String _errorMessage = ''; | ||||
|   int _currentPage = 0; | ||||
|   int _pageSize = 10; | ||||
|   bool _hasMoreData = true; | ||||
|   String _searchQuery = ''; | ||||
| 
 | ||||
|   // Getters | ||||
|   List<Map<String, dynamic>> get childList => _childList; | ||||
|   List<Map<String, dynamic>> get filteredList => _filteredList; | ||||
|   bool get isLoading => _isLoading; | ||||
|   String get errorMessage => _errorMessage; | ||||
|   bool get hasMoreData => _hasMoreData; | ||||
|   String get searchQuery => _searchQuery; | ||||
| 
 | ||||
|   // Set loading state | ||||
|   void _setLoading(bool loading) { | ||||
|     _isLoading = loading; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Set error message | ||||
|   void _setError(String error) { | ||||
|     _errorMessage = error; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Clear error | ||||
|   void clearError() { | ||||
|     _errorMessage = ''; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Get child list | ||||
|   Future<void> getEntities() async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.getEntities(); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         _childList = response.data ?? []; | ||||
|         _filteredList = List.from(_childList); | ||||
|         _currentPage = 0; | ||||
|         _hasMoreData = true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to fetch child list'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to fetch child list: $e'); | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Get child list with pagination | ||||
|   Future<void> getAllWithPagination({bool refresh = false}) async { | ||||
|     if (refresh) { | ||||
|       _currentPage = 0; | ||||
|       _childList.clear(); | ||||
|       _filteredList.clear(); | ||||
|       _hasMoreData = true; | ||||
|     } | ||||
| 
 | ||||
|     if (!_hasMoreData || _isLoading) return; | ||||
| 
 | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.getAllWithPagination(_currentPage, _pageSize); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         final newItems = response.data ?? []; | ||||
| 
 | ||||
|         if (refresh) { | ||||
|           _childList = newItems; | ||||
|         } else { | ||||
|           _childList.addAll(newItems); | ||||
|         } | ||||
| 
 | ||||
|         _filteredList = List.from(_childList); | ||||
|         _currentPage++; | ||||
| 
 | ||||
|         // Check if we have more data | ||||
|         _hasMoreData = newItems.length == _pageSize; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to fetch Child list'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to fetch child list: $e'); | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   // Create Child | ||||
|   Future<bool> createEntity(Map<String, dynamic> entity) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
| 
 | ||||
| 
 | ||||
|       final response = await repo.createEntity(entity); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
| // Get the response ID for image upload | ||||
| 
 | ||||
|         final responseId = response.data!['id'].toString(); | ||||
| 
 | ||||
| 
 | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'child created successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Refresh the list | ||||
|         await getEntities(); | ||||
| 
 | ||||
| 
 | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to create Child'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to create Child', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to create child: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to create Child: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Update child | ||||
|   Future<bool> updateEntity(int id, Map<String, dynamic> entity) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.updateEntity(id, entity); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'Child updated successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Update the item in the list | ||||
|         final index = _childList.indexWhere((item) => item['id'] == id); | ||||
|         if (index != -1) { | ||||
|           _childList[index] = response.data!; | ||||
|           _filteredList = List.from(_childList); | ||||
|           notifyListeners(); | ||||
|         } | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to update Child'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to update Child', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to update child: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to update Child: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Delete child | ||||
|   Future<bool> deleteEntity(int id) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.deleteEntity(id); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'Child deleted successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Remove the item from the list | ||||
|         _childList.removeWhere((item) => item['id'] == id); | ||||
|         _filteredList = List.from(_childList); | ||||
|         notifyListeners(); | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to delete Child'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to delete Child', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to delete child: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to delete Child: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Search child | ||||
|   void searchchild(String query) { | ||||
|     _searchQuery = query; | ||||
| 
 | ||||
|     if (query.isEmpty) { | ||||
|       _filteredList = List.from(_childList); | ||||
|     } else { | ||||
|       _filteredList = _childList.where((item) { | ||||
|         return | ||||
| 
 | ||||
|               | ||||
| (item['namek']?.toString().toLowerCase().contains(query.toLowerCase()) ??false)  | ||||
| 
 | ||||
| 
 | ||||
| ; | ||||
|       }).toList(); | ||||
|     } | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Clear search | ||||
|   void clearSearch() { | ||||
|     _searchQuery = ''; | ||||
|     _filteredList = List.from(_childList); | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Refresh data | ||||
|   Future<void> refreshData() async { | ||||
|     await getAllWithPagination(refresh: true); | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,112 @@ | ||||
| import 'dart:typed_data'; | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:http_parser/http_parser.dart'; | ||||
| import '../../../../resources/api_constants.dart'; | ||||
| import '../../../../data/network/base_network_service.dart'; | ||||
| import '../../../../data/network/network_api_service.dart'; | ||||
| 
 | ||||
| class TestbugApiService { | ||||
|   final String baseUrl = ApiConstants.baseUrl; | ||||
| 
 | ||||
|       final BaseNetworkService _helper = NetworkApiService(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|    Future<List<Map<String, dynamic>>> getEntities() async { | ||||
| 
 | ||||
|     try { | ||||
|       final response = await _helper.getGetApiResponse('$baseUrl/Testbug/Testbug'); | ||||
|       final entities = (response as List).cast<Map<String, dynamic>>(); | ||||
|       return entities; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all entities: $e'); | ||||
|     } | ||||
|   } | ||||
| Future<List<Map<String, dynamic>>> getAllWithPagination( | ||||
|        int page, int size) async { | ||||
|     try { | ||||
|             final response = | ||||
|           await _helper.getGetApiResponse('$baseUrl/Testbug/Testbug/getall/page?page=$page&size=$size'); | ||||
|       final entities = | ||||
|           (response['content'] as List).cast<Map<String, dynamic>>(); | ||||
|       return entities; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all without pagination: $e'); | ||||
|     } | ||||
|   } | ||||
|   Future<Map<String, dynamic>> createEntity( | ||||
|        Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|             print("in post api$entity"); | ||||
|       final response = | ||||
|           await _helper.getPostApiResponse('$baseUrl/Testbug/Testbug', entity); | ||||
| 
 | ||||
|       print(entity); | ||||
| 
 | ||||
|       // Assuming the response is a Map<String, dynamic> | ||||
|       Map<String, dynamic> responseData = response; | ||||
| 
 | ||||
|       return responseData; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to create entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   Future<void> updateEntity( int entityId, Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|      await _helper.getPutApiResponse('$baseUrl/Testbug/Testbug/$entityId', | ||||
|       entity);                print(entity); | ||||
| 
 | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to update entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<void> deleteEntity( int entityId) async { | ||||
|     try { | ||||
|  await _helper.getDeleteApiResponse('$baseUrl/Testbug/Testbug/$entityId'); | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to delete entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,96 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'dart:convert'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:file_picker/file_picker.dart'; | ||||
| import 'package:image_picker/image_picker.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../Testbug_viewModel/Testbug_view_model_screen.dart'; | ||||
| import 'Testbug_fields.dart';import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; | ||||
| import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import '../../../../widgets/custom_button.dart'; | ||||
| import '../../../../widgets/custom_text_form_field.dart';  | ||||
| import '../../../../widgets/custom_dropdown_field.dart'; | ||||
| import 'dart:math'; | ||||
| import 'package:qr_flutter/qr_flutter.dart'; | ||||
| import 'package:barcode_widget/barcode_widget.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
|   | ||||
| import 'package:autocomplete_textfield/autocomplete_textfield.dart'; | ||||
| import 'package:http/http.dart' as http; | ||||
| import 'package:flutter/services.dart'; | ||||
| import 'package:image_picker/image_picker.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| import '../../../../Reuseable/reusable_date_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_time_picker_field.dart' | ||||
| ;import 'package:multi_select_flutter/multi_select_flutter.dart'; | ||||
| import 'package:just_audio/just_audio.dart'; | ||||
| import 'package:video_player/video_player.dart'; | ||||
| import 'package:google_fonts/google_fonts.dart'; | ||||
| import 'package:lottie/lottie.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import 'dart:io'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import '../../../../Reuseable/reusable_dropdown_field.dart'; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| class TestbugCreateEntityScreen extends StatefulWidget { | ||||
|   const TestbugCreateEntityScreen({super.key}); | ||||
| 
 | ||||
|   @override | ||||
|   _TestbugCreateEntityScreenState createState() => _TestbugCreateEntityScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _TestbugCreateEntityScreenState extends State<TestbugCreateEntityScreen> { | ||||
| 
 | ||||
| final Map<String, dynamic> formData = {}; | ||||
|   final _formKey = GlobalKey<FormState>(); | ||||
|    | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestbugViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityCreateScreen( | ||||
|           fields: TestbugFields.getFields(context), | ||||
|           onSubmit: (data) => _handleSubmit(data), | ||||
|           title: 'Testbug', | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Future<void> _handleSubmit(Map<String, dynamic> formData) async { | ||||
|     final provider = | ||||
|         Provider.of<TestbugViewModelScreen>(context, listen: false); | ||||
|     final success = await provider.createEntity(formData); | ||||
| 
 | ||||
|     if (success && mounted) { | ||||
|       Navigator.pop(context); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,112 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../../../../BuilderField/shared/ui/entity_details.dart'; | ||||
| import '../Testbug_viewModel/Testbug_view_model_screen.dart'; | ||||
| import 'Testbug_update_entity_screen.dart'; | ||||
| 
 | ||||
| class TestbugDetailsScreen extends StatefulWidget { | ||||
|   final Map<String, dynamic> entity; | ||||
| 
 | ||||
|   const TestbugDetailsScreen({ | ||||
|     super.key, | ||||
|     required this.entity, | ||||
|   }); | ||||
| 
 | ||||
|   @override | ||||
|   State<TestbugDetailsScreen> createState() => _TestbugDetailsScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _TestbugDetailsScreenState extends State<TestbugDetailsScreen> { | ||||
|   void _navigateToUpdateScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestbugViewModelScreen(), | ||||
|           child: TestbugUpdateEntityScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       // Refresh the details screen with updated data | ||||
|       setState(() {}); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _showDeleteDialog(Map<String, dynamic> entity) { | ||||
|     showDialog( | ||||
|       context: context, | ||||
|       builder: (BuildContext context) { | ||||
|         return AlertDialog( | ||||
|           title: const Text('Confirm Deletion'), | ||||
|           content: const Text('Are you sure you want to delete this Testbug?'), | ||||
|           actions: [ | ||||
|             TextButton( | ||||
|               child: const Text('Cancel'), | ||||
|               onPressed: () { | ||||
|                 Navigator.of(context).pop(); | ||||
|               }, | ||||
|             ), | ||||
|             TextButton( | ||||
|               child: const Text('Delete'), | ||||
|               onPressed: () async { | ||||
|                 Navigator.of(context).pop(); | ||||
|                 final vm = | ||||
|                     Provider.of<TestbugViewModelScreen>(context, listen: false); | ||||
|                 final success = await vm.deleteEntity(entity['id']); | ||||
|                 if (success && mounted) { | ||||
|                   Navigator.pop(context); // Go back to list | ||||
|                 } | ||||
|               }, | ||||
|             ), | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestbugViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityDetails( | ||||
|           entity: widget.entity, | ||||
|           onEdit: (entity) => _navigateToUpdateScreen(entity), | ||||
|           onDelete: (entity) => _showDeleteDialog(entity), | ||||
|           title: 'Testbug', | ||||
|           displayFields: [ | ||||
|   {'key': 'name', 'label': 'Name', 'type': 'text'}, | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|    | ||||
|  {'key': 'bar_code', 'label': 'bar_code', 'type': 'field_group'}, | ||||
|   | ||||
| 
 | ||||
|    | ||||
|  {'key': 'qr_code', 'label': 'qr_code', 'type': 'field_group'}, | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   {'key': 'value_list_fieldcc', 'label': 'Value List Fieldcc', 'type': 'value_list'}, | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   {'key': 'select_dyanamic', 'label': 'select dyanamic', 'type': 'select'}, | ||||
| 
 | ||||
|   {'key': 'select_dynamic_mul', 'label': 'select dynamic mul', 'type': 'select'}, | ||||
| 
 | ||||
|   {'key': 'select_autocompidentifier', 'label': 'select autocompidentifier', 'type': 'select'}, | ||||
| 
 | ||||
|   {'key': 'select_autcomp_mul', 'label': 'select autcomp mul', 'type': 'select'}, | ||||
| 
 | ||||
|           ], | ||||
|           isLoading: viewModel.isLoading, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,172 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
| import 'package:base_project/BuilderField/shared/ui/entity_list.dart'; | ||||
| import 'Testbug_create_entity_screen.dart'; | ||||
| import 'Testbug_update_entity_screen.dart'; | ||||
| import '../Testbug_viewModel/Testbug_view_model_screen.dart'; | ||||
| import 'Testbug_details_screen.dart';import 'package:flutter/services.dart'; | ||||
| import 'package:speech_to_text/speech_to_text.dart' as stt; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../widgets/custom_icon_button.dart'; | ||||
| import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import '../../../../theme/app_decoration.dart'; | ||||
| import 'package:multi_select_flutter/multi_select_flutter.dart'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| 
 | ||||
| class Testbug_entity_list_screen extends StatefulWidget { | ||||
|   static const String routeName = '/entity-list'; | ||||
| 
 | ||||
|   @override | ||||
|   _Testbug_entity_list_screenState createState() => _Testbug_entity_list_screenState(); | ||||
| } | ||||
| 
 | ||||
| class _Testbug_entity_list_screenState extends State<Testbug_entity_list_screen> { | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     _loadData(); | ||||
|   } | ||||
| 
 | ||||
|   void _loadData() { | ||||
|     WidgetsBinding.instance.addPostFrameCallback((_) { | ||||
|       if (mounted) { | ||||
|         final vm = Provider.of<TestbugViewModelScreen>(context, listen: false); | ||||
|         vm.getAllWithPagination(refresh: true); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToCreateScreen() { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestbugViewModelScreen(), | ||||
|           child: const TestbugCreateEntityScreen(), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       final vm = Provider.of<TestbugViewModelScreen>(context, listen: false); | ||||
|       vm.refreshData(); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToUpdateScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestbugViewModelScreen(), | ||||
|           child: TestbugUpdateEntityScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       final vm = Provider.of<TestbugViewModelScreen>(context, listen: false); | ||||
|       vm.refreshData(); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToDetailsScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestbugViewModelScreen(), | ||||
|           child: TestbugDetailsScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   void _showDeleteDialog(Map<String, dynamic> entity) { | ||||
|  final parentContext = context;  | ||||
|     showDialog( | ||||
|       context: context, | ||||
|       builder: (BuildContext context) { | ||||
|         return AlertDialog( | ||||
|           title: const Text('Confirm Deletion'), | ||||
|           content: const Text('Are you sure you want to delete this Testbug?'), | ||||
|           actions: [ | ||||
|             TextButton( | ||||
|               child: const Text('Cancel'), | ||||
|               onPressed: () { | ||||
|                 Navigator.of(context).pop(); | ||||
|               }, | ||||
|             ), | ||||
|             TextButton( | ||||
|               child: const Text('Delete'), | ||||
|               onPressed: () async { | ||||
|                 Navigator.of(context).pop(); | ||||
|                 final vm = | ||||
|                     Provider.of<TestbugViewModelScreen>(parentContext, listen: false); | ||||
|                 await vm.deleteEntity(entity['id']); | ||||
|               }, | ||||
|             ), | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestbugViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityList( | ||||
|           entities: viewModel.filteredList, | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|           hasMoreData: viewModel.hasMoreData, | ||||
|           searchQuery: viewModel.searchQuery, | ||||
|           onSearchChanged: (query) => viewModel.searchtestbug(query), | ||||
|           onEdit: (entity) => _navigateToUpdateScreen(entity), | ||||
|           onDelete: (entity) => _showDeleteDialog(entity), | ||||
|           onTap: (entity) => _navigateToDetailsScreen(entity), | ||||
|           onRefresh: () => viewModel.refreshData(), | ||||
|           onLoadMore: () => viewModel.getAllWithPagination(), | ||||
|           title: 'Testbug', | ||||
|           onAddNew: _navigateToCreateScreen, | ||||
|           displayFields: [ | ||||
|   {'key': 'name', 'label': 'Name', 'type': 'text'}, | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|    | ||||
|  {'key': 'bar_code', 'label': 'bar_code', 'type': 'field_group'}, | ||||
|   | ||||
| 
 | ||||
|    | ||||
|  {'key': 'qr_code', 'label': 'qr_code', 'type': 'field_group'}, | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   {'key': 'value_list_fieldcc', 'label': 'Value List Fieldcc', 'type': 'value_list'}, | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   {'key': 'select_dyanamic', 'label': 'select dyanamic', 'type': 'select'}, | ||||
| 
 | ||||
|   {'key': 'select_dynamic_mul', 'label': 'select dynamic mul', 'type': 'select'}, | ||||
| 
 | ||||
|   {'key': 'select_autocompidentifier', 'label': 'select autocompidentifier', 'type': 'select'}, | ||||
| 
 | ||||
|   {'key': 'select_autcomp_mul', 'label': 'select autcomp mul', 'type': 'select'}, | ||||
| 
 | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,210 @@ | ||||
| import 'package:base_project/BuilderField/shared/fields/number_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/password_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/phone_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/custom_text_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/base_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/date_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/datetime_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/email_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/url_field.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/custom_text_field.dart' as shared_text; | ||||
| import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/calculated_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/one_to_many_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/value_list_picker_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/captcha_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/switch_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/url_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/audio_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/checkbox_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/file_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/image_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/radio_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/video_upload_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/autocomplete_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/autocomplete_multiselect_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/data_grid_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/static_multiselect_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/currency_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/field_group_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/qr_code_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/barcode_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dependent_dropdown_field.dart'; | ||||
|  import '../Testbug_viewModel/Testbug_view_model_screen.dart';/// Field definitions for Testbug entity | ||||
| /// This defines the structure and validation for Testbug forms | ||||
| class TestbugFields { | ||||
|   /// Get field definitions for Testbug entity | ||||
|   static List<BaseField> getFields(BuildContext context) { | ||||
|     final viewModel = | ||||
|         Provider.of<TestbugViewModelScreen>(context, listen: false); | ||||
|     return [ | ||||
|       // Basic Information | ||||
|  CustomTextField( | ||||
|         fieldKey: 'name', | ||||
|         label: 'Name', | ||||
|         hint: 'Enter Name', | ||||
|         isRequired: true, | ||||
|         maxLength: 50, | ||||
|       ), | ||||
| 
 | ||||
| FileUploadField( | ||||
|         fieldKey: 'fileupload_fields', | ||||
|         label: 'Fileupload Fields', | ||||
|  isRequired: false, | ||||
|       ), | ||||
| 
 | ||||
|  FieldGroupField( | ||||
|         fieldKey: 'field_groupnn', | ||||
|         label: 'Field Groupnn', | ||||
|         hint: 'Enter Field Groupnn', | ||||
|         subFields: [ | ||||
| 
 | ||||
|   | ||||
|           GroupSubField(path: 'bar_code', label: 'bar_code', isRequired: true), | ||||
|   | ||||
| 
 | ||||
|   | ||||
|           GroupSubField(path: 'qr_code', label: 'qr_code', isRequired: true), | ||||
|   | ||||
| 
 | ||||
|            | ||||
|         ], | ||||
|       ), | ||||
| 
 | ||||
| OneToOneRelationField( | ||||
|         fieldKey: 'child', | ||||
|         label: 'child', | ||||
|         hint: 'child details', | ||||
|         relationSchema: { | ||||
|           'title': 'child', | ||||
|           'box': true, | ||||
|           'fields': [ | ||||
| 
 | ||||
|   | ||||
|             { | ||||
|               'type': 'text', | ||||
|               'label': 'Namek', | ||||
|               'hint': 'Enter Namek', | ||||
|               'path': 'child.namek', | ||||
|             }, | ||||
| 
 | ||||
|              | ||||
| 	 | ||||
|           ], | ||||
|         }, | ||||
|       ), | ||||
| 
 | ||||
| 
 | ||||
| // 3) Value list picker â fill fields from selection (provide your loader) | ||||
|       ValueListPickerField( | ||||
|         fieldKey: 'value_list_fieldcc', | ||||
|         label: 'Value List Fieldcc', | ||||
|        optionsLoader: () async { | ||||
|            try { | ||||
|  await viewModel.getEntities(); | ||||
|             final response = viewModel.testbugList; | ||||
|             return response; | ||||
|           } catch (e) { | ||||
|             // Return empty list if API fails | ||||
|             return <Map<String, dynamic>>[]; | ||||
|           } | ||||
|         }, | ||||
|         fillMappings: const { | ||||
| 	 | ||||
|   | ||||
|           'name': 'name', | ||||
|   | ||||
| 
 | ||||
|           | ||||
|         }, | ||||
|       ), | ||||
| 
 | ||||
|   DataGridField( | ||||
|         fieldKey: 'datagrid_fieldv', | ||||
|         label: 'datagrid Fieldv', | ||||
|         dataLoader: () => viewModel.getdatagrid_fieldvGrid(), | ||||
|       ), | ||||
| 
 | ||||
|  DynamicDropdownField( | ||||
|         fieldKey: 'select_dyanamic', | ||||
|         label: 'Select select dyanamic', | ||||
|          hint: 'Search and select', | ||||
|         optionsLoader: () => viewModel.getselect_dyanamic(), | ||||
| 
 | ||||
|   | ||||
|         valueKey: 'id', | ||||
|         displayKey: 'name', | ||||
|   | ||||
| 
 | ||||
|       ), | ||||
| 
 | ||||
| 
 | ||||
|  DynamicMultiSelectDropdownField( | ||||
|         fieldKey: 'select_dynamic_mul', | ||||
|         label: 'select dynamic mul', | ||||
|         hint: 'Type to search and press enter', | ||||
|         optionsLoader: () async { | ||||
|           final list = await viewModel.getselect_dynamic_mul(); | ||||
|           return list | ||||
| 
 | ||||
|   | ||||
|               .map((e) => e['name']?.toString() ?? '') | ||||
|               .where((e) => e.isNotEmpty) | ||||
|               .toList(); | ||||
|   | ||||
| 
 | ||||
|         }, | ||||
|       ), | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   AutocompleteDropdownField( | ||||
|         fieldKey: 'select_autocomp', | ||||
|         label: 'select autocomp', | ||||
|         hint: 'Select select autocomp', | ||||
|         optionsLoader: () async => await viewModel.getselect_autocomp(), | ||||
| 
 | ||||
|   | ||||
|         valueKey: 'id', | ||||
|         displayKey: 'name', | ||||
|   | ||||
| 
 | ||||
|         isRequired: false, | ||||
|       ), | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   AutocompleteMultiSelectField( | ||||
|         fieldKey: 'select_autcomp_mul', | ||||
|         label: 'select autcomp mul', | ||||
|         hint: 'Select select autcomp mul', | ||||
|    isRequired: false, | ||||
|        optionsLoader: () async { | ||||
|           final data = await viewModel.getselect_autcomp_mul(); | ||||
| 
 | ||||
|   | ||||
|           return data | ||||
|               .map((e) => e['id']) | ||||
|               .where((e) => e != null) | ||||
|               .map<String>((e) => e.toString()) | ||||
|               .toList(); | ||||
|   | ||||
| 
 | ||||
|         }, | ||||
|       ), | ||||
| 
 | ||||
|     ]; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,91 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'dart:convert'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../Testbug_viewModel/Testbug_view_model_screen.dart'; | ||||
| import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; | ||||
| import 'Testbug_fields.dart';import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import 'package:barcode_widget/barcode_widget.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| import '../../../../widgets/custom_button.dart'; | ||||
| import '../../../../widgets/custom_text_form_field.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:autocomplete_textfield/autocomplete_textfield.dart'; | ||||
| import 'package:qr_flutter/qr_flutter.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
| 
 | ||||
| import 'dart:math'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_time_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_dropdown_field.dart'; | ||||
| import 'package:flutter/services.dart'; | ||||
| class TestbugUpdateEntityScreen extends StatefulWidget { | ||||
|     final Map<String, dynamic> entity; | ||||
| 
 | ||||
| 
 | ||||
|   TestbugUpdateEntityScreen({required this.entity}); | ||||
| 
 | ||||
|   @override | ||||
|   _TestbugUpdateEntityScreenState createState() => _TestbugUpdateEntityScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _TestbugUpdateEntityScreenState extends State<TestbugUpdateEntityScreen> { | ||||
|   final _formKey = GlobalKey<FormState>(); | ||||
| 
 | ||||
| @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestbugViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
| // Start with all fields, then remove upload fields (generic filter by keys) | ||||
|         final Set<String> hiddenKeys = {  | ||||
| 
 | ||||
| 
 | ||||
| 'fileupload_fields', | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  }; | ||||
|         final fields = TestbugFields.getFields(context) | ||||
|             .where((f) => !hiddenKeys.contains(f.fieldKey)) | ||||
|             .toList();        return EntityUpdateScreen( | ||||
|           fields: fields, | ||||
|           initialData: widget.entity, | ||||
|           onSubmit: (data) => _handleSubmit(data), | ||||
|           title: 'Testbug', | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Future<void> _handleSubmit(Map<String, dynamic> formData) async { | ||||
|     final provider = | ||||
|         Provider.of<TestbugViewModelScreen>(context, listen: false); | ||||
|     final success = await provider.updateEntity(widget.entity['id'], formData); | ||||
| 
 | ||||
|     if (success && mounted) { | ||||
|       Navigator.pop(context); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,158 @@ | ||||
| import 'package:dio/dio.dart'; | ||||
| import '../../../../data/network/base_network_service.dart'; | ||||
| import '../../../../data/network/network_api_service.dart'; | ||||
| import '../../../../resources/api_constants.dart'; | ||||
| import 'package:base_project/data/response/api_response.dart'; | ||||
| 
 | ||||
| class TestbugRepoScreen { | ||||
| 
 | ||||
|   final String baseUrl = ApiConstants.baseUrl; | ||||
|   final BaseNetworkService _helper = NetworkApiService(); | ||||
|   final String _endpointPath = '/Testbug/Testbug'; | ||||
| 
 | ||||
|   Future<ApiResponse<List<Map<String, dynamic>>>> getEntities() async { | ||||
|     try { | ||||
|       final response = | ||||
|           await _helper.getGetApiResponse('$baseUrl$_endpointPath'); | ||||
|       print('Response received: $response'); | ||||
|       List<Map<String, dynamic>> entities = const []; | ||||
|       if (response is List) { | ||||
|         entities = response | ||||
|             .whereType<Map>() | ||||
|             .map((e) => Map<String, dynamic>.from(e as Map)) | ||||
|             .toList(); | ||||
|       } else if (response is Map<String, dynamic>) { | ||||
|         final dynamic content = response['content']; | ||||
|         if (content is List) { | ||||
|           entities = content | ||||
|               .whereType<Map>() | ||||
|               .map((e) => Map<String, dynamic>.from(e as Map)) | ||||
|               .toList(); | ||||
|         } | ||||
|       } | ||||
|       return ApiResponse.success(entities); | ||||
|     } catch (e) { | ||||
|       print(' error got $e'); | ||||
|       return ApiResponse.error('Failed to get all entities: $e'); | ||||
|     } | ||||
|   }  | ||||
| 
 | ||||
|   Future<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination( | ||||
|       int page, int size) async { | ||||
|     try { | ||||
|       final response = await _helper.getGetApiResponse( | ||||
|           '$baseUrl$_endpointPath/getall/page?page=$page&size=$size'); | ||||
| 
 | ||||
|       if (response is Map<String, dynamic> && response['content'] is List) { | ||||
|         final List<Map<String, dynamic>> entities = | ||||
|             (response['content'] as List).cast<Map<String, dynamic>>().toList(); | ||||
|         return ApiResponse.success(entities); | ||||
|       } else { | ||||
|         return ApiResponse.error('Invalid response format'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to get all without pagination: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<Map<String, dynamic>>> createEntity( | ||||
|       Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|       print("in post api$entity"); | ||||
|       final response = | ||||
|           await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity); | ||||
|       return ApiResponse.success(response as Map<String, dynamic>); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to create entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<Map<String, dynamic>>> updateEntity( | ||||
|       int entityId, Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|       final response = await _helper.getPutApiResponse( | ||||
|           '$baseUrl$_endpointPath/$entityId', entity); | ||||
|       return ApiResponse.success(response as Map<String, dynamic>); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to update entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<void>> deleteEntity(int entityId) async { | ||||
|     try { | ||||
|       await _helper.getDeleteApiResponse('$baseUrl$_endpointPath/$entityId'); | ||||
|       return ApiResponse.success(null); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to delete entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
|  Future<dynamic> fileupload_fieldsUpload( | ||||
|       String ref, String refTableNmae, FormData entity) async { | ||||
|     try { | ||||
|       String apiUrl = "$baseUrl/FileUpload/Uploadeddocs/$ref/$refTableNmae"; | ||||
|       final response = await _helper.getPostApiResponse(apiUrl, entity); | ||||
|       return response; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to Upload File: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  Future<dynamic> getdatagrid_fieldvGrid() async { | ||||
|     try { | ||||
|       String apiUrl = "$baseUrl/Testlist_ListFilter1/Testlist_ListFilter1"; | ||||
|       final response = await _helper.getGetApiResponse(apiUrl); | ||||
|       return response; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to Upload datagrid Fieldv: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|  Future<dynamic> getselect_dyanamic() async { | ||||
|     try { | ||||
|       String apiUrl = "$baseUrl/Testlist_ListFilter1/Testlist_ListFilter1"; | ||||
|       final response = await _helper.getGetApiResponse(apiUrl); | ||||
|       return response; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to Get: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|  Future<dynamic> getselect_dynamic_mul() async { | ||||
|     try { | ||||
|       String apiUrl = "$baseUrl/Testlist_ListFilter1/Testlist_ListFilter1"; | ||||
|       final response = await _helper.getGetApiResponse(apiUrl); | ||||
|       return response; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to Get: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|  Future<dynamic> getselect_autocomp() async { | ||||
|     try { | ||||
|       String apiUrl = "$baseUrl/Testlist_ListFilter1/Testlist_ListFilter1"; | ||||
|       final response = await _helper.getGetApiResponse(apiUrl); | ||||
|       return response; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to Get: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|  Future<dynamic> getselect_autcomp_mul() async { | ||||
|     try { | ||||
|       String apiUrl = "$baseUrl/Testlist_ListFilter1/Testlist_ListFilter1"; | ||||
|       final response = await _helper.getGetApiResponse(apiUrl); | ||||
|       return response; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to Get: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,590 @@ | ||||
| import 'package:base_project/data/response/status.dart'; | ||||
| import 'dart:typed_data'; | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:http_parser/http_parser.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import '../../../../BuilderField/shared/utils/entity_field_store.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import '../Testbug_Repo/Testbug_repo_screen.dart'; | ||||
| 
 | ||||
| class TestbugViewModelScreen extends ChangeNotifier{ | ||||
|   final TestbugRepoScreen repo = TestbugRepoScreen(); | ||||
| 
 | ||||
|   | ||||
|   // State variables | ||||
|   List<Map<String, dynamic>> _testbugList = []; | ||||
|   List<Map<String, dynamic>> _filteredList = []; | ||||
|   bool _isLoading = false; | ||||
|   String _errorMessage = ''; | ||||
|   int _currentPage = 0; | ||||
|   int _pageSize = 10; | ||||
|   bool _hasMoreData = true; | ||||
|   String _searchQuery = ''; | ||||
| 
 | ||||
|   // Getters | ||||
|   List<Map<String, dynamic>> get testbugList => _testbugList; | ||||
|   List<Map<String, dynamic>> get filteredList => _filteredList; | ||||
|   bool get isLoading => _isLoading; | ||||
|   String get errorMessage => _errorMessage; | ||||
|   bool get hasMoreData => _hasMoreData; | ||||
|   String get searchQuery => _searchQuery; | ||||
| 
 | ||||
|   // Set loading state | ||||
|   void _setLoading(bool loading) { | ||||
|     _isLoading = loading; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Set error message | ||||
|   void _setError(String error) { | ||||
|     _errorMessage = error; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Clear error | ||||
|   void clearError() { | ||||
|     _errorMessage = ''; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Get testbug list | ||||
|   Future<void> getEntities() async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.getEntities(); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         _testbugList = response.data ?? []; | ||||
|         _filteredList = List.from(_testbugList); | ||||
|         _currentPage = 0; | ||||
|         _hasMoreData = true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to fetch testbug list'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to fetch testbug list: $e'); | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Get testbug list with pagination | ||||
|   Future<void> getAllWithPagination({bool refresh = false}) async { | ||||
|     if (refresh) { | ||||
|       _currentPage = 0; | ||||
|       _testbugList.clear(); | ||||
|       _filteredList.clear(); | ||||
|       _hasMoreData = true; | ||||
|     } | ||||
| 
 | ||||
|     if (!_hasMoreData || _isLoading) return; | ||||
| 
 | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.getAllWithPagination(_currentPage, _pageSize); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         final newItems = response.data ?? []; | ||||
| 
 | ||||
|         if (refresh) { | ||||
|           _testbugList = newItems; | ||||
|         } else { | ||||
|           _testbugList.addAll(newItems); | ||||
|         } | ||||
| 
 | ||||
|         _filteredList = List.from(_testbugList); | ||||
|         _currentPage++; | ||||
| 
 | ||||
|         // Check if we have more data | ||||
|         _hasMoreData = newItems.length == _pageSize; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to fetch Testbug list'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to fetch testbug list: $e'); | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // Variable to store image files | ||||
|   List<Map<String, dynamic>> _fileupload_fieldsFiles = []; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   // Create Testbug | ||||
|   Future<bool> createEntity(Map<String, dynamic> entity) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
| 
 | ||||
| 
 | ||||
|   // Always source image selections from EntityFieldStore for simplicity | ||||
|       final List<UploadItem> storefilefileupload_fields = EntityFieldStore.instance | ||||
|               .get<List<UploadItem>>('fileupload_fields') ?? | ||||
|           <UploadItem>[]; | ||||
| 
 | ||||
|       _fileupload_fieldsFiles = storefilefileupload_fields | ||||
|           .map((u) => {'path': u.fileName, 'bytes': u.bytes}) | ||||
|           .toList(); | ||||
| 
 | ||||
| 
 | ||||
|       entity.remove('fileupload_fields'); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|       final response = await repo.createEntity(entity); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
| // Get the response ID for image upload | ||||
| 
 | ||||
|         final responseId = response.data!['id'].toString(); | ||||
| 
 | ||||
| 
 | ||||
| // Upload File if available | ||||
|         if (_fileupload_fieldsFiles.isNotEmpty) { | ||||
|           await _uploadfileupload_fields(responseId, _fileupload_fieldsFiles); | ||||
|           _fileupload_fieldsFiles.clear(); // Clear after upload | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'testbug created successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Refresh the list | ||||
|         await getEntities(); | ||||
| 
 | ||||
| 
 | ||||
|         EntityFieldStore.instance.remove('fileupload_fields'); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to create Testbug'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to create Testbug', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to create testbug: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to create Testbug: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Update testbug | ||||
|   Future<bool> updateEntity(int id, Map<String, dynamic> entity) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.updateEntity(id, entity); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'Testbug updated successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Update the item in the list | ||||
|         final index = _testbugList.indexWhere((item) => item['id'] == id); | ||||
|         if (index != -1) { | ||||
|           _testbugList[index] = response.data!; | ||||
|           _filteredList = List.from(_testbugList); | ||||
|           notifyListeners(); | ||||
|         } | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to update Testbug'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to update Testbug', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to update testbug: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to update Testbug: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Delete testbug | ||||
|   Future<bool> deleteEntity(int id) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.deleteEntity(id); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'Testbug deleted successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Remove the item from the list | ||||
|         _testbugList.removeWhere((item) => item['id'] == id); | ||||
|         _filteredList = List.from(_testbugList); | ||||
|         notifyListeners(); | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to delete Testbug'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to delete Testbug', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to delete testbug: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to delete Testbug: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Search testbug | ||||
|   void searchtestbug(String query) { | ||||
|     _searchQuery = query; | ||||
| 
 | ||||
|     if (query.isEmpty) { | ||||
|       _filteredList = List.from(_testbugList); | ||||
|     } else { | ||||
|       _filteredList = _testbugList.where((item) { | ||||
|         return | ||||
| 
 | ||||
|               | ||||
| (item['name']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['field_groupnn']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['field_groupnn']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['child']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['datagrid_fieldv']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['select_dyanamic']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['select_dynamic_mul']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['select_autocompidentifier']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['select_autcomp_mul']?.toString().toLowerCase().contains(query.toLowerCase()) ??false)  | ||||
| 
 | ||||
| 
 | ||||
| ; | ||||
|       }).toList(); | ||||
|     } | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Clear search | ||||
|   void clearSearch() { | ||||
|     _searchQuery = ''; | ||||
|     _filteredList = List.from(_testbugList); | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Refresh data | ||||
|   Future<void> refreshData() async { | ||||
|     await getAllWithPagination(refresh: true); | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   // Helper method to upload multiple image files | ||||
|   Future<void> _uploadfileupload_fields( | ||||
|       String responseId, List<dynamic> Files) async { | ||||
|     try { | ||||
|       for (var File in Files) { | ||||
|         if (File is Map<String, dynamic> && | ||||
|             File.containsKey('path')) { | ||||
|           String filePath = File['path']; | ||||
|           Uint8List fileBytes = File['bytes']; | ||||
| 
 | ||||
|           // Upload each image file | ||||
|           await uploadfileupload_fields( | ||||
|               responseId, 'Testbug', filePath, fileBytes); | ||||
|         } | ||||
|       } | ||||
|     } catch (error) { | ||||
|       print('Error uploading files: $error'); | ||||
|       ToastMessageUtil.showToast( | ||||
|           message: "Failed to upload images", toastType: ToastType.error); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| // Modify the uploadfileupload_fieldsimage function | ||||
|   Future<void> uploadfileupload_fields(String ref, String refTableNmae, | ||||
|       String selectedFilePath, Uint8List imageTimageBytes) async { | ||||
|     try { | ||||
| 
 | ||||
|       final Uint8List fileBytes = imageTimageBytes!; | ||||
|       final mimeType = fileupload_fieldslookupMimeType(selectedFilePath); | ||||
| 
 | ||||
|       FormData formData = FormData.fromMap({ | ||||
|         'file': MultipartFile.fromBytes( | ||||
|           fileBytes, | ||||
|           filename: selectedFilePath | ||||
|               .split('/') | ||||
|               .last, // Get the file name from the path | ||||
|           contentType: MediaType.parse(mimeType!), | ||||
|         ), | ||||
|       }); | ||||
| 
 | ||||
| 
 | ||||
|       await repo.fileupload_fieldsUpload(ref, refTableNmae, formData).then((value) { | ||||
|         ToastMessageUtil.showToast( | ||||
|             message: "File uploaded successfully", | ||||
|             toastType: ToastType.success); | ||||
|       }).onError( | ||||
|         (error, stackTrace) { | ||||
|           print("error--$error"); | ||||
|           ToastMessageUtil.showToast( | ||||
|               message: "Failed to upload file", toastType: ToastType.error); | ||||
|         }, | ||||
|       ); | ||||
|     } catch (error) { | ||||
|       print('Error occurred during form submission: $error'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| // Modify the lookupMimeType function if needed | ||||
|   String fileupload_fieldslookupMimeType(String filePath) { | ||||
|     final ext = filePath.split('.').last; | ||||
|     switch (ext) { | ||||
|       case 'jpg': | ||||
|       case 'jpeg': | ||||
|         return 'image/jpeg'; | ||||
|       case 'png': | ||||
|         return 'image/png'; | ||||
|       case 'pdf': | ||||
|         return 'application/pdf'; | ||||
|       // Add more cases for other file types as needed | ||||
|       default: | ||||
|         return 'application/octet-stream'; // Default MIME type | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   late List<Map<String, dynamic>> datagrid_fieldvdataFuture = | ||||
|       []; // Data from fetchData | ||||
| 
 | ||||
|  Future<List<Map<String, dynamic>>>   getdatagrid_fieldvGrid() async { | ||||
| 
 | ||||
|       try { | ||||
|      final value = await repo.getdatagrid_fieldvGrid(); | ||||
|         datagrid_fieldvdataFuture =  (value as List) | ||||
|             .map((item) => item as Map<String, dynamic>) | ||||
|             .toList(); | ||||
| 
 | ||||
|    return datagrid_fieldvdataFuture; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| List<Map<String, dynamic>> select_dyanamicItems = []; | ||||
| 
 | ||||
|  Future<List<Map<String, dynamic>>>   getselect_dyanamic() async { | ||||
| 
 | ||||
|       try { | ||||
|      final value = await repo.getselect_dyanamic(); | ||||
|         select_dyanamicItems =  (value as List) | ||||
|             .map((item) => item as Map<String, dynamic>) | ||||
|             .toList(); | ||||
| 
 | ||||
|    return select_dyanamicItems; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| List<Map<String, dynamic>> select_dynamic_mulItems = []; | ||||
| 
 | ||||
|  Future<List<Map<String, dynamic>>>   getselect_dynamic_mul() async { | ||||
| 
 | ||||
|       try { | ||||
|      final value = await repo.getselect_dynamic_mul(); | ||||
|         select_dynamic_mulItems =  (value as List) | ||||
|             .map((item) => item as Map<String, dynamic>) | ||||
|             .toList(); | ||||
| 
 | ||||
|    return select_dynamic_mulItems; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| List<Map<String, dynamic>> select_autocompItems = []; | ||||
| 
 | ||||
|  Future<List<Map<String, dynamic>>>   getselect_autocomp() async { | ||||
| 
 | ||||
|       try { | ||||
|      final value = await repo.getselect_autocomp(); | ||||
|         select_autocompItems =  (value as List) | ||||
|             .map((item) => item as Map<String, dynamic>) | ||||
|             .toList(); | ||||
| 
 | ||||
|    return select_autocompItems; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| List<Map<String, dynamic>> select_autcomp_mulItems = []; | ||||
| 
 | ||||
|  Future<List<Map<String, dynamic>>>   getselect_autcomp_mul() async { | ||||
| 
 | ||||
|       try { | ||||
|      final value = await repo.getselect_autcomp_mul(); | ||||
|         select_autcomp_mulItems =  (value as List) | ||||
|             .map((item) => item as Map<String, dynamic>) | ||||
|             .toList(); | ||||
| 
 | ||||
|    return select_autcomp_mulItems; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,84 @@ | ||||
| import 'dart:typed_data'; | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:http_parser/http_parser.dart'; | ||||
| import '../../../../resources/api_constants.dart'; | ||||
| import '../../../../data/network/base_network_service.dart'; | ||||
| import '../../../../data/network/network_api_service.dart'; | ||||
| 
 | ||||
| class TestlistApiService { | ||||
|   final String baseUrl = ApiConstants.baseUrl; | ||||
| 
 | ||||
|       final BaseNetworkService _helper = NetworkApiService(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|    Future<List<Map<String, dynamic>>> getEntities() async { | ||||
| 
 | ||||
|     try { | ||||
|       final response = await _helper.getGetApiResponse('$baseUrl/Testlist/Testlist'); | ||||
|       final entities = (response as List).cast<Map<String, dynamic>>(); | ||||
|       return entities; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all entities: $e'); | ||||
|     } | ||||
|   } | ||||
| Future<List<Map<String, dynamic>>> getAllWithPagination( | ||||
|        int page, int size) async { | ||||
|     try { | ||||
|             final response = | ||||
|           await _helper.getGetApiResponse('$baseUrl/Testlist/Testlist/getall/page?page=$page&size=$size'); | ||||
|       final entities = | ||||
|           (response['content'] as List).cast<Map<String, dynamic>>(); | ||||
|       return entities; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to get all without pagination: $e'); | ||||
|     } | ||||
|   } | ||||
|   Future<Map<String, dynamic>> createEntity( | ||||
|        Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|             print("in post api$entity"); | ||||
|       final response = | ||||
|           await _helper.getPostApiResponse('$baseUrl/Testlist/Testlist', entity); | ||||
| 
 | ||||
|       print(entity); | ||||
| 
 | ||||
|       // Assuming the response is a Map<String, dynamic> | ||||
|       Map<String, dynamic> responseData = response; | ||||
| 
 | ||||
|       return responseData; | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to create entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   Future<void> updateEntity( int entityId, Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|      await _helper.getPutApiResponse('$baseUrl/Testlist/Testlist/$entityId', | ||||
|       entity);                print(entity); | ||||
| 
 | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to update entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<void> deleteEntity( int entityId) async { | ||||
|     try { | ||||
|  await _helper.getDeleteApiResponse('$baseUrl/Testlist/Testlist/$entityId'); | ||||
|     } catch (e) { | ||||
|       throw Exception('Failed to delete entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,82 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'dart:convert'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:file_picker/file_picker.dart'; | ||||
| import 'package:image_picker/image_picker.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../Testlist_viewModel/Testlist_view_model_screen.dart'; | ||||
| import 'Testlist_fields.dart';import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; | ||||
| import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import '../../../../widgets/custom_button.dart'; | ||||
| import '../../../../widgets/custom_text_form_field.dart';  | ||||
| import '../../../../widgets/custom_dropdown_field.dart'; | ||||
| import 'dart:math'; | ||||
| import 'package:qr_flutter/qr_flutter.dart'; | ||||
| import 'package:barcode_widget/barcode_widget.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
|   | ||||
| import 'package:autocomplete_textfield/autocomplete_textfield.dart'; | ||||
| import 'package:http/http.dart' as http; | ||||
| import 'package:flutter/services.dart'; | ||||
| import 'package:image_picker/image_picker.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| import '../../../../Reuseable/reusable_date_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_time_picker_field.dart' | ||||
| ;import 'package:multi_select_flutter/multi_select_flutter.dart'; | ||||
| import 'package:just_audio/just_audio.dart'; | ||||
| import 'package:video_player/video_player.dart'; | ||||
| import 'package:google_fonts/google_fonts.dart'; | ||||
| import 'package:lottie/lottie.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import 'dart:io'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import '../../../../Reuseable/reusable_dropdown_field.dart'; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| class TestlistCreateEntityScreen extends StatefulWidget { | ||||
|   const TestlistCreateEntityScreen({super.key}); | ||||
| 
 | ||||
|   @override | ||||
|   _TestlistCreateEntityScreenState createState() => _TestlistCreateEntityScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _TestlistCreateEntityScreenState extends State<TestlistCreateEntityScreen> { | ||||
| 
 | ||||
| final Map<String, dynamic> formData = {}; | ||||
|   final _formKey = GlobalKey<FormState>(); | ||||
|    | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestlistViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityCreateScreen( | ||||
|           fields: TestlistFields.getFields(context), | ||||
|           onSubmit: (data) => _handleSubmit(data), | ||||
|           title: 'Testlist', | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Future<void> _handleSubmit(Map<String, dynamic> formData) async { | ||||
|     final provider = | ||||
|         Provider.of<TestlistViewModelScreen>(context, listen: false); | ||||
|     final success = await provider.createEntity(formData); | ||||
| 
 | ||||
|     if (success && mounted) { | ||||
|       Navigator.pop(context); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,90 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../../../../BuilderField/shared/ui/entity_details.dart'; | ||||
| import '../Testlist_viewModel/Testlist_view_model_screen.dart'; | ||||
| import 'Testlist_update_entity_screen.dart'; | ||||
| 
 | ||||
| class TestlistDetailsScreen extends StatefulWidget { | ||||
|   final Map<String, dynamic> entity; | ||||
| 
 | ||||
|   const TestlistDetailsScreen({ | ||||
|     super.key, | ||||
|     required this.entity, | ||||
|   }); | ||||
| 
 | ||||
|   @override | ||||
|   State<TestlistDetailsScreen> createState() => _TestlistDetailsScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _TestlistDetailsScreenState extends State<TestlistDetailsScreen> { | ||||
|   void _navigateToUpdateScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestlistViewModelScreen(), | ||||
|           child: TestlistUpdateEntityScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       // Refresh the details screen with updated data | ||||
|       setState(() {}); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _showDeleteDialog(Map<String, dynamic> entity) { | ||||
|     showDialog( | ||||
|       context: context, | ||||
|       builder: (BuildContext context) { | ||||
|         return AlertDialog( | ||||
|           title: const Text('Confirm Deletion'), | ||||
|           content: const Text('Are you sure you want to delete this Testlist?'), | ||||
|           actions: [ | ||||
|             TextButton( | ||||
|               child: const Text('Cancel'), | ||||
|               onPressed: () { | ||||
|                 Navigator.of(context).pop(); | ||||
|               }, | ||||
|             ), | ||||
|             TextButton( | ||||
|               child: const Text('Delete'), | ||||
|               onPressed: () async { | ||||
|                 Navigator.of(context).pop(); | ||||
|                 final vm = | ||||
|                     Provider.of<TestlistViewModelScreen>(context, listen: false); | ||||
|                 final success = await vm.deleteEntity(entity['id']); | ||||
|                 if (success && mounted) { | ||||
|                   Navigator.pop(context); // Go back to list | ||||
|                 } | ||||
|               }, | ||||
|             ), | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestlistViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityDetails( | ||||
|           entity: widget.entity, | ||||
|           onEdit: (entity) => _navigateToUpdateScreen(entity), | ||||
|           onDelete: (entity) => _showDeleteDialog(entity), | ||||
|           title: 'Testlist', | ||||
|           displayFields: [ | ||||
|   {'key': 'name', 'label': 'Name', 'type': 'text'}, | ||||
| 
 | ||||
|   {'key': 'description', 'label': 'Description', 'type': 'textarea'}, | ||||
| 
 | ||||
|   {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'}, | ||||
| 
 | ||||
|           ], | ||||
|           isLoading: viewModel.isLoading, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,150 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
| import 'package:base_project/BuilderField/shared/ui/entity_list.dart'; | ||||
| import 'Testlist_create_entity_screen.dart'; | ||||
| import 'Testlist_update_entity_screen.dart'; | ||||
| import '../Testlist_viewModel/Testlist_view_model_screen.dart'; | ||||
| import 'Testlist_details_screen.dart';import 'package:flutter/services.dart'; | ||||
| import 'package:speech_to_text/speech_to_text.dart' as stt; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../widgets/custom_icon_button.dart'; | ||||
| import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import '../../../../theme/app_decoration.dart'; | ||||
| import 'package:multi_select_flutter/multi_select_flutter.dart'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| 
 | ||||
| class Testlist_entity_list_screen extends StatefulWidget { | ||||
|   static const String routeName = '/entity-list'; | ||||
| 
 | ||||
|   @override | ||||
|   _Testlist_entity_list_screenState createState() => _Testlist_entity_list_screenState(); | ||||
| } | ||||
| 
 | ||||
| class _Testlist_entity_list_screenState extends State<Testlist_entity_list_screen> { | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     _loadData(); | ||||
|   } | ||||
| 
 | ||||
|   void _loadData() { | ||||
|     WidgetsBinding.instance.addPostFrameCallback((_) { | ||||
|       if (mounted) { | ||||
|         final vm = Provider.of<TestlistViewModelScreen>(context, listen: false); | ||||
|         vm.getAllWithPagination(refresh: true); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToCreateScreen() { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestlistViewModelScreen(), | ||||
|           child: const TestlistCreateEntityScreen(), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       final vm = Provider.of<TestlistViewModelScreen>(context, listen: false); | ||||
|       vm.refreshData(); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToUpdateScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestlistViewModelScreen(), | ||||
|           child: TestlistUpdateEntityScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ).then((_) { | ||||
|       final vm = Provider.of<TestlistViewModelScreen>(context, listen: false); | ||||
|       vm.refreshData(); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   void _navigateToDetailsScreen(Map<String, dynamic> entity) { | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => ChangeNotifierProvider( | ||||
|           create: (context) => TestlistViewModelScreen(), | ||||
|           child: TestlistDetailsScreen(entity: entity), | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   void _showDeleteDialog(Map<String, dynamic> entity) { | ||||
|  final parentContext = context;  | ||||
|     showDialog( | ||||
|       context: context, | ||||
|       builder: (BuildContext context) { | ||||
|         return AlertDialog( | ||||
|           title: const Text('Confirm Deletion'), | ||||
|           content: const Text('Are you sure you want to delete this Testlist?'), | ||||
|           actions: [ | ||||
|             TextButton( | ||||
|               child: const Text('Cancel'), | ||||
|               onPressed: () { | ||||
|                 Navigator.of(context).pop(); | ||||
|               }, | ||||
|             ), | ||||
|             TextButton( | ||||
|               child: const Text('Delete'), | ||||
|               onPressed: () async { | ||||
|                 Navigator.of(context).pop(); | ||||
|                 final vm = | ||||
|                     Provider.of<TestlistViewModelScreen>(parentContext, listen: false); | ||||
|                 await vm.deleteEntity(entity['id']); | ||||
|               }, | ||||
|             ), | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestlistViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
|         return EntityList( | ||||
|           entities: viewModel.filteredList, | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|           hasMoreData: viewModel.hasMoreData, | ||||
|           searchQuery: viewModel.searchQuery, | ||||
|           onSearchChanged: (query) => viewModel.searchtestlist(query), | ||||
|           onEdit: (entity) => _navigateToUpdateScreen(entity), | ||||
|           onDelete: (entity) => _showDeleteDialog(entity), | ||||
|           onTap: (entity) => _navigateToDetailsScreen(entity), | ||||
|           onRefresh: () => viewModel.refreshData(), | ||||
|           onLoadMore: () => viewModel.getAllWithPagination(), | ||||
|           title: 'Testlist', | ||||
|           onAddNew: _navigateToCreateScreen, | ||||
|           displayFields: [ | ||||
|   {'key': 'name', 'label': 'Name', 'type': 'text'}, | ||||
| 
 | ||||
|   {'key': 'description', 'label': 'Description', 'type': 'textarea'}, | ||||
| 
 | ||||
|   {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'}, | ||||
| 
 | ||||
|           ], | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,76 @@ | ||||
| import 'package:base_project/BuilderField/shared/fields/number_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/password_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/phone_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/custom_text_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/base_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/date_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/datetime_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/email_field.dart'; | ||||
| import 'package:base_project/BuilderField/shared/fields/url_field.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/custom_text_field.dart' as shared_text; | ||||
| import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/calculated_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/one_to_many_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/value_list_picker_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/captcha_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/switch_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/url_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/audio_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/checkbox_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/file_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/image_upload_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/radio_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/video_upload_field.dart'; | ||||
| 
 | ||||
| import '../../../../BuilderField/shared/fields/autocomplete_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/autocomplete_multiselect_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/data_grid_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/static_multiselect_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/currency_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/field_group_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/qr_code_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/barcode_field.dart'; | ||||
| import '../../../../BuilderField/shared/fields/dependent_dropdown_field.dart'; | ||||
|  import '../Testlist_viewModel/Testlist_view_model_screen.dart';/// Field definitions for Testlist entity | ||||
| /// This defines the structure and validation for Testlist forms | ||||
| class TestlistFields { | ||||
|   /// Get field definitions for Testlist entity | ||||
|   static List<BaseField> getFields(BuildContext context) { | ||||
|     final viewModel = | ||||
|         Provider.of<TestlistViewModelScreen>(context, listen: false); | ||||
|     return [ | ||||
|       // Basic Information | ||||
|  CustomTextField( | ||||
|         fieldKey: 'name', | ||||
|         label: 'Name', | ||||
|         hint: 'Enter Name', | ||||
|         isRequired: true, | ||||
|         maxLength: 50, | ||||
|       ), | ||||
| 
 | ||||
| CustomTextField( | ||||
|         fieldKey: 'description', | ||||
|         label: 'Description', | ||||
|         hint: 'Enter Description', | ||||
|         isRequired: false, | ||||
|         maxLength: 1000, | ||||
|       ), | ||||
| 
 | ||||
|  SwitchField( | ||||
|         fieldKey: 'active', | ||||
|         label: 'Active', | ||||
|       ), | ||||
| 
 | ||||
|     ]; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,77 @@ | ||||
| // ignore_for_file: use_build_context_synchronously | ||||
| import 'dart:convert'; | ||||
| import 'package:provider/provider.dart'; | ||||
| import '../Testlist_viewModel/Testlist_view_model_screen.dart'; | ||||
| import 'package:base_project/BuilderField/shared/ui/entity_screens.dart'; | ||||
| import 'Testlist_fields.dart';import '../../../../utils/image_constant.dart'; | ||||
| import '../../../../utils/size_utils.dart'; | ||||
| import '../../../../theme/app_style.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_image.dart'; | ||||
| import '../../../../widgets/app_bar/appbar_title.dart'; | ||||
| import '../../../../widgets/app_bar/custom_app_bar.dart'; | ||||
| import 'package:barcode_widget/barcode_widget.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | ||||
| import '../../../../widgets/custom_button.dart'; | ||||
| import '../../../../widgets/custom_text_form_field.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:autocomplete_textfield/autocomplete_textfield.dart'; | ||||
| import 'package:qr_flutter/qr_flutter.dart'; | ||||
| import 'package:intl/intl.dart'; | ||||
| 
 | ||||
| import 'dart:math'; | ||||
| import '../../../../Reuseable/reusable_text_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_date_time_picker_field.dart'; | ||||
| import '../../../../Reuseable/reusable_dropdown_field.dart'; | ||||
| import 'package:flutter/services.dart'; | ||||
| class TestlistUpdateEntityScreen extends StatefulWidget { | ||||
|     final Map<String, dynamic> entity; | ||||
| 
 | ||||
| 
 | ||||
|   TestlistUpdateEntityScreen({required this.entity}); | ||||
| 
 | ||||
|   @override | ||||
|   _TestlistUpdateEntityScreenState createState() => _TestlistUpdateEntityScreenState(); | ||||
| } | ||||
| 
 | ||||
| class _TestlistUpdateEntityScreenState extends State<TestlistUpdateEntityScreen> { | ||||
|   final _formKey = GlobalKey<FormState>(); | ||||
| 
 | ||||
| @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Consumer<TestlistViewModelScreen>( | ||||
|       builder: (context, viewModel, child) { | ||||
| // Start with all fields, then remove upload fields (generic filter by keys) | ||||
|         final Set<String> hiddenKeys = {  | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  }; | ||||
|         final fields = TestlistFields.getFields(context) | ||||
|             .where((f) => !hiddenKeys.contains(f.fieldKey)) | ||||
|             .toList();        return EntityUpdateScreen( | ||||
|           fields: fields, | ||||
|           initialData: widget.entity, | ||||
|           onSubmit: (data) => _handleSubmit(data), | ||||
|           title: 'Testlist', | ||||
|           isLoading: viewModel.isLoading, | ||||
|           errorMessage: | ||||
|               viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null, | ||||
|         ); | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   Future<void> _handleSubmit(Map<String, dynamic> formData) async { | ||||
|     final provider = | ||||
|         Provider.of<TestlistViewModelScreen>(context, listen: false); | ||||
|     final success = await provider.updateEntity(widget.entity['id'], formData); | ||||
| 
 | ||||
|     if (success && mounted) { | ||||
|       Navigator.pop(context); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,95 @@ | ||||
| import 'package:dio/dio.dart'; | ||||
| import '../../../../data/network/base_network_service.dart'; | ||||
| import '../../../../data/network/network_api_service.dart'; | ||||
| import '../../../../resources/api_constants.dart'; | ||||
| import 'package:base_project/data/response/api_response.dart'; | ||||
| 
 | ||||
| class TestlistRepoScreen { | ||||
| 
 | ||||
|   final String baseUrl = ApiConstants.baseUrl; | ||||
|   final BaseNetworkService _helper = NetworkApiService(); | ||||
|   final String _endpointPath = '/Testlist/Testlist'; | ||||
| 
 | ||||
|   Future<ApiResponse<List<Map<String, dynamic>>>> getEntities() async { | ||||
|     try { | ||||
|       final response = | ||||
|           await _helper.getGetApiResponse('$baseUrl$_endpointPath'); | ||||
|       print('Response received: $response'); | ||||
|       List<Map<String, dynamic>> entities = const []; | ||||
|       if (response is List) { | ||||
|         entities = response | ||||
|             .whereType<Map>() | ||||
|             .map((e) => Map<String, dynamic>.from(e as Map)) | ||||
|             .toList(); | ||||
|       } else if (response is Map<String, dynamic>) { | ||||
|         final dynamic content = response['content']; | ||||
|         if (content is List) { | ||||
|           entities = content | ||||
|               .whereType<Map>() | ||||
|               .map((e) => Map<String, dynamic>.from(e as Map)) | ||||
|               .toList(); | ||||
|         } | ||||
|       } | ||||
|       return ApiResponse.success(entities); | ||||
|     } catch (e) { | ||||
|       print(' error got $e'); | ||||
|       return ApiResponse.error('Failed to get all entities: $e'); | ||||
|     } | ||||
|   }  | ||||
| 
 | ||||
|   Future<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination( | ||||
|       int page, int size) async { | ||||
|     try { | ||||
|       final response = await _helper.getGetApiResponse( | ||||
|           '$baseUrl$_endpointPath/getall/page?page=$page&size=$size'); | ||||
| 
 | ||||
|       if (response is Map<String, dynamic> && response['content'] is List) { | ||||
|         final List<Map<String, dynamic>> entities = | ||||
|             (response['content'] as List).cast<Map<String, dynamic>>().toList(); | ||||
|         return ApiResponse.success(entities); | ||||
|       } else { | ||||
|         return ApiResponse.error('Invalid response format'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to get all without pagination: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<Map<String, dynamic>>> createEntity( | ||||
|       Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|       print("in post api$entity"); | ||||
|       final response = | ||||
|           await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity); | ||||
|       return ApiResponse.success(response as Map<String, dynamic>); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to create entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<Map<String, dynamic>>> updateEntity( | ||||
|       int entityId, Map<String, dynamic> entity) async { | ||||
|     try { | ||||
|       final response = await _helper.getPutApiResponse( | ||||
|           '$baseUrl$_endpointPath/$entityId', entity); | ||||
|       return ApiResponse.success(response as Map<String, dynamic>); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to update entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<ApiResponse<void>> deleteEntity(int entityId) async { | ||||
|     try { | ||||
|       await _helper.getDeleteApiResponse('$baseUrl$_endpointPath/$entityId'); | ||||
|       return ApiResponse.success(null); | ||||
|     } catch (e) { | ||||
|       return ApiResponse.error('Failed to delete entity: $e'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,305 @@ | ||||
| import 'package:base_project/data/response/status.dart'; | ||||
| import 'dart:typed_data'; | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:http_parser/http_parser.dart'; | ||||
| import '../../../../utils/toast_messages/toast_message_util.dart'; | ||||
| import '../../../../BuilderField/shared/utils/entity_field_store.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import '../Testlist_Repo/Testlist_repo_screen.dart'; | ||||
| 
 | ||||
| class TestlistViewModelScreen extends ChangeNotifier{ | ||||
|   final TestlistRepoScreen repo = TestlistRepoScreen(); | ||||
| 
 | ||||
|   | ||||
|   // State variables | ||||
|   List<Map<String, dynamic>> _testlistList = []; | ||||
|   List<Map<String, dynamic>> _filteredList = []; | ||||
|   bool _isLoading = false; | ||||
|   String _errorMessage = ''; | ||||
|   int _currentPage = 0; | ||||
|   int _pageSize = 10; | ||||
|   bool _hasMoreData = true; | ||||
|   String _searchQuery = ''; | ||||
| 
 | ||||
|   // Getters | ||||
|   List<Map<String, dynamic>> get testlistList => _testlistList; | ||||
|   List<Map<String, dynamic>> get filteredList => _filteredList; | ||||
|   bool get isLoading => _isLoading; | ||||
|   String get errorMessage => _errorMessage; | ||||
|   bool get hasMoreData => _hasMoreData; | ||||
|   String get searchQuery => _searchQuery; | ||||
| 
 | ||||
|   // Set loading state | ||||
|   void _setLoading(bool loading) { | ||||
|     _isLoading = loading; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Set error message | ||||
|   void _setError(String error) { | ||||
|     _errorMessage = error; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Clear error | ||||
|   void clearError() { | ||||
|     _errorMessage = ''; | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Get testlist list | ||||
|   Future<void> getEntities() async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.getEntities(); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         _testlistList = response.data ?? []; | ||||
|         _filteredList = List.from(_testlistList); | ||||
|         _currentPage = 0; | ||||
|         _hasMoreData = true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to fetch testlist list'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to fetch testlist list: $e'); | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Get testlist list with pagination | ||||
|   Future<void> getAllWithPagination({bool refresh = false}) async { | ||||
|     if (refresh) { | ||||
|       _currentPage = 0; | ||||
|       _testlistList.clear(); | ||||
|       _filteredList.clear(); | ||||
|       _hasMoreData = true; | ||||
|     } | ||||
| 
 | ||||
|     if (!_hasMoreData || _isLoading) return; | ||||
| 
 | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.getAllWithPagination(_currentPage, _pageSize); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         final newItems = response.data ?? []; | ||||
| 
 | ||||
|         if (refresh) { | ||||
|           _testlistList = newItems; | ||||
|         } else { | ||||
|           _testlistList.addAll(newItems); | ||||
|         } | ||||
| 
 | ||||
|         _filteredList = List.from(_testlistList); | ||||
|         _currentPage++; | ||||
| 
 | ||||
|         // Check if we have more data | ||||
|         _hasMoreData = newItems.length == _pageSize; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to fetch Testlist list'); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to fetch testlist list: $e'); | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   // Create Testlist | ||||
|   Future<bool> createEntity(Map<String, dynamic> entity) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|       final response = await repo.createEntity(entity); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
| // Get the response ID for image upload | ||||
| 
 | ||||
|         final responseId = response.data!['id'].toString(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'testlist created successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Refresh the list | ||||
|         await getEntities(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to create Testlist'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to create Testlist', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to create testlist: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to create Testlist: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Update testlist | ||||
|   Future<bool> updateEntity(int id, Map<String, dynamic> entity) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.updateEntity(id, entity); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'Testlist updated successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Update the item in the list | ||||
|         final index = _testlistList.indexWhere((item) => item['id'] == id); | ||||
|         if (index != -1) { | ||||
|           _testlistList[index] = response.data!; | ||||
|           _filteredList = List.from(_testlistList); | ||||
|           notifyListeners(); | ||||
|         } | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to update Testlist'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to update Testlist', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to update testlist: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to update Testlist: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Delete testlist | ||||
|   Future<bool> deleteEntity(int id) async { | ||||
|     _setLoading(true); | ||||
|     _setError(''); | ||||
| 
 | ||||
|     try { | ||||
|       final response = await repo.deleteEntity(id); | ||||
| 
 | ||||
|       if (response.status == Status.SUCCESS) { | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: 'Testlist deleted successfully', | ||||
|           toastType: ToastType.success, | ||||
|         ); | ||||
| 
 | ||||
|         // Remove the item from the list | ||||
|         _testlistList.removeWhere((item) => item['id'] == id); | ||||
|         _filteredList = List.from(_testlistList); | ||||
|         notifyListeners(); | ||||
|         return true; | ||||
|       } else { | ||||
|         _setError(response.message ?? 'Failed to delete Testlist'); | ||||
|         ToastMessageUtil.showToast( | ||||
|           message: response.message ?? 'Failed to delete Testlist', | ||||
|           toastType: ToastType.error, | ||||
|         ); | ||||
|         return false; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       _setError('Failed to delete testlist: $e'); | ||||
|       ToastMessageUtil.showToast( | ||||
|         message: 'Failed to delete Testlist: $e', | ||||
|         toastType: ToastType.error, | ||||
|       ); | ||||
|       return false; | ||||
|     } finally { | ||||
|       _setLoading(false); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // Search testlist | ||||
|   void searchtestlist(String query) { | ||||
|     _searchQuery = query; | ||||
| 
 | ||||
|     if (query.isEmpty) { | ||||
|       _filteredList = List.from(_testlistList); | ||||
|     } else { | ||||
|       _filteredList = _testlistList.where((item) { | ||||
|         return | ||||
| 
 | ||||
|               | ||||
| (item['name']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|               | ||||
| (item['description']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) || | ||||
| 
 | ||||
| 
 | ||||
| (item['active']?.toString().toLowerCase().contains(query.toLowerCase()) ??false)  | ||||
| 
 | ||||
| 
 | ||||
| ; | ||||
|       }).toList(); | ||||
|     } | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Clear search | ||||
|   void clearSearch() { | ||||
|     _searchQuery = ''; | ||||
|     _filteredList = List.from(_testlistList); | ||||
|     notifyListeners(); | ||||
|   } | ||||
| 
 | ||||
|   // Refresh data | ||||
|   Future<void> refreshData() async { | ||||
|     await getAllWithPagination(refresh: true); | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -69,6 +69,15 @@ public class BuilderService { | ||||
| 		executeDump(true); | ||||
| 
 | ||||
| 		// ADD OTHER SERVICE | ||||
| addCustomMenu( "Testlist","Testlist",  "Transcations");  | ||||
| 
 | ||||
| 
 | ||||
| addCustomMenu( "Child","Child",  "Transcations");  | ||||
| 
 | ||||
| 
 | ||||
| addCustomMenu( "Testbug","Testbug",  "Transcations");  | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		System.out.println("dashboard and menu inserted..."); | ||||
| 
 | ||||
|  | ||||
| @ -0,0 +1,83 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
| import com.realnet.config.EmailService; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.springframework.data.domain.*; | ||||
| import com.realnet.fnd.response.EntityResponse; | ||||
| import org.springframework.http.*; | ||||
| import org.springframework.beans.factory.annotation.*; | ||||
| import com.realnet.basic1.Entity.Child; | ||||
| import com.realnet.basic1.Services.ChildService ; | ||||
| 
 | ||||
| 
 | ||||
| @RequestMapping(value = "/Child") | ||||
|  @CrossOrigin("*")  | ||||
| @RestController | ||||
| public class ChildController { | ||||
| 	@Autowired | ||||
| 	private ChildService Service; | ||||
| 
 | ||||
| @Value("${projectPath}") | ||||
| 	private String projectPath; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 	@PostMapping("/Child") | ||||
| 		  public Child Savedata(@RequestBody Child data) { | ||||
| 		Child save = Service.Savedata(data)	; | ||||
| 
 | ||||
| 		System.out.println("data saved..." + save); | ||||
| 
 | ||||
|  return save; | ||||
| 	  } | ||||
| @PutMapping("/Child/{id}") | ||||
| 	public  Child update(@RequestBody Child data,@PathVariable Integer id ) { | ||||
| 		Child update = Service.update(data,id); | ||||
| 		System.out.println("data update..." + update); | ||||
| 		return update; | ||||
| 	}	  | ||||
| //	get all with pagination | ||||
| 	@GetMapping("/Child/getall/page") | ||||
| 	public Page<Child> getall(@RequestParam(value = "page", required = false) Integer page, | ||||
| 			@RequestParam(value = "size", required = false) Integer size) { | ||||
| 		Pageable paging = PageRequest.of(page, size); | ||||
| 		Page<Child> get = Service.getAllWithPagination(paging); | ||||
| 
 | ||||
| 		return get; | ||||
| 
 | ||||
| 	}	 | ||||
| 	@GetMapping("/Child") | ||||
| 	public List<Child> getdetails() { | ||||
| 		 List<Child> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| // get all without authentication  | ||||
| 
 | ||||
| 	@GetMapping("/token/Child") | ||||
| 	public List<Child> getallwioutsec() { | ||||
| 		 List<Child> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| @GetMapping("/Child/{id}") | ||||
| 	public  Child  getdetailsbyId(@PathVariable Integer id ) { | ||||
| 		Child  get = Service.getdetailsbyId(id); | ||||
| 		return get; | ||||
| 	} | ||||
| @DeleteMapping("/Child/{id}") | ||||
| 	public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) { | ||||
| 	Service.delete_by_id(id); | ||||
| 			return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,155 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
| import com.realnet.config.EmailService; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.springframework.data.domain.*; | ||||
| import com.realnet.fnd.response.EntityResponse; | ||||
| import org.springframework.http.*; | ||||
| import org.springframework.beans.factory.annotation.*; | ||||
| import com.realnet.basic1.Entity.Testbug; | ||||
| import com.realnet.basic1.Services.TestbugService ; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @RequestMapping(value = "/Testbug") | ||||
|  @CrossOrigin("*")  | ||||
| @RestController | ||||
| public class TestbugController { | ||||
| 	@Autowired | ||||
| 	private TestbugService Service; | ||||
| 
 | ||||
| @Value("${projectPath}") | ||||
| 	private String projectPath; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	@PostMapping("/Testbug") | ||||
| 		  public Testbug Savedata(@RequestBody Testbug data) { | ||||
| 		Testbug save = Service.Savedata(data)	; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		System.out.println("data saved..." + save); | ||||
| 
 | ||||
|  return save; | ||||
| 	  } | ||||
| @PutMapping("/Testbug/{id}") | ||||
| 	public  Testbug update(@RequestBody Testbug data,@PathVariable Integer id ) { | ||||
| 		Testbug update = Service.update(data,id); | ||||
| 		System.out.println("data update..." + update); | ||||
| 		return update; | ||||
| 	}	  | ||||
| //	get all with pagination | ||||
| 	@GetMapping("/Testbug/getall/page") | ||||
| 	public Page<Testbug> getall(@RequestParam(value = "page", required = false) Integer page, | ||||
| 			@RequestParam(value = "size", required = false) Integer size) { | ||||
| 		Pageable paging = PageRequest.of(page, size); | ||||
| 		Page<Testbug> get = Service.getAllWithPagination(paging); | ||||
| 
 | ||||
| 		return get; | ||||
| 
 | ||||
| 	}	 | ||||
| 	@GetMapping("/Testbug") | ||||
| 	public List<Testbug> getdetails() { | ||||
| 		 List<Testbug> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| // get all without authentication  | ||||
| 
 | ||||
| 	@GetMapping("/token/Testbug") | ||||
| 	public List<Testbug> getallwioutsec() { | ||||
| 		 List<Testbug> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| @GetMapping("/Testbug/{id}") | ||||
| 	public  Testbug  getdetailsbyId(@PathVariable Integer id ) { | ||||
| 		Testbug  get = Service.getdetailsbyId(id); | ||||
| 		return get; | ||||
| 	} | ||||
| @DeleteMapping("/Testbug/{id}") | ||||
| 	public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) { | ||||
| 	Service.delete_by_id(id); | ||||
| 			return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,99 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
| import com.realnet.config.EmailService; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.springframework.data.domain.*; | ||||
| import com.realnet.fnd.response.EntityResponse; | ||||
| import org.springframework.http.*; | ||||
| import org.springframework.beans.factory.annotation.*; | ||||
| import com.realnet.basic1.Entity.Testlist; | ||||
| import com.realnet.basic1.Services.TestlistService ; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @RequestMapping(value = "/Testlist") | ||||
|  @CrossOrigin("*")  | ||||
| @RestController | ||||
| public class TestlistController { | ||||
| 	@Autowired | ||||
| 	private TestlistService Service; | ||||
| 
 | ||||
| @Value("${projectPath}") | ||||
| 	private String projectPath; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	@PostMapping("/Testlist") | ||||
| 		  public Testlist Savedata(@RequestBody Testlist data) { | ||||
| 		Testlist save = Service.Savedata(data)	; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		System.out.println("data saved..." + save); | ||||
| 
 | ||||
|  return save; | ||||
| 	  } | ||||
| @PutMapping("/Testlist/{id}") | ||||
| 	public  Testlist update(@RequestBody Testlist data,@PathVariable Integer id ) { | ||||
| 		Testlist update = Service.update(data,id); | ||||
| 		System.out.println("data update..." + update); | ||||
| 		return update; | ||||
| 	}	  | ||||
| //	get all with pagination | ||||
| 	@GetMapping("/Testlist/getall/page") | ||||
| 	public Page<Testlist> getall(@RequestParam(value = "page", required = false) Integer page, | ||||
| 			@RequestParam(value = "size", required = false) Integer size) { | ||||
| 		Pageable paging = PageRequest.of(page, size); | ||||
| 		Page<Testlist> get = Service.getAllWithPagination(paging); | ||||
| 
 | ||||
| 		return get; | ||||
| 
 | ||||
| 	}	 | ||||
| 	@GetMapping("/Testlist") | ||||
| 	public List<Testlist> getdetails() { | ||||
| 		 List<Testlist> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| // get all without authentication  | ||||
| 
 | ||||
| 	@GetMapping("/token/Testlist") | ||||
| 	public List<Testlist> getallwioutsec() { | ||||
| 		 List<Testlist> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| @GetMapping("/Testlist/{id}") | ||||
| 	public  Testlist  getdetailsbyId(@PathVariable Integer id ) { | ||||
| 		Testlist  get = Service.getdetailsbyId(id); | ||||
| 		return get; | ||||
| 	} | ||||
| @DeleteMapping("/Testlist/{id}") | ||||
| 	public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) { | ||||
| 	Service.delete_by_id(id); | ||||
| 			return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import com.realnet.basic1.Entity.Testlist_ListFilter1; | ||||
| import com.realnet.basic1.Services.Testlist_ListFilter1Service ; | ||||
| @RequestMapping(value = "/Testlist_ListFilter1") | ||||
| @RestController | ||||
| public class Testlist_ListFilter1Controller { | ||||
| 	 | ||||
| 	@Autowired | ||||
| 	private Testlist_ListFilter1Service Service; | ||||
| 
 | ||||
| 		@GetMapping("/Testlist_ListFilter1") | ||||
| 	public List<Testlist_ListFilter1> getlist() { | ||||
| 		 List<Testlist_ListFilter1> get = Service.getlistbuilder();		 | ||||
| 		return get; | ||||
| } | ||||
| 		@GetMapping("/Testlist_ListFilter11") | ||||
| 	public List<Testlist_ListFilter1> getlistwithparam( ) { | ||||
| 		 List<Testlist_ListFilter1> get = Service.getlistbuilderparam( );		 | ||||
| 		return get; | ||||
| } | ||||
| } | ||||
| @ -0,0 +1,83 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
| import com.realnet.config.EmailService; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.springframework.data.domain.*; | ||||
| import com.realnet.fnd.response.EntityResponse; | ||||
| import org.springframework.http.*; | ||||
| import org.springframework.beans.factory.annotation.*; | ||||
| import com.realnet.basic1.Entity.Child; | ||||
| import com.realnet.basic1.Services.ChildService ; | ||||
| 
 | ||||
| 
 | ||||
| @RequestMapping(value = "/token/Child") | ||||
|  @CrossOrigin("*")  | ||||
| @RestController | ||||
| public class tokenFree_ChildController { | ||||
| 	@Autowired | ||||
| 	private ChildService Service; | ||||
| 
 | ||||
| @Value("${projectPath}") | ||||
| 	private String projectPath; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 	@PostMapping("/Child") | ||||
| 		  public Child Savedata(@RequestBody Child data) { | ||||
| 		Child save = Service.Savedata(data)	; | ||||
| 
 | ||||
| 		System.out.println("data saved..." + save); | ||||
| 
 | ||||
|  return save; | ||||
| 	  } | ||||
| @PutMapping("/Child/{id}") | ||||
| 	public  Child update(@RequestBody Child data,@PathVariable Integer id ) { | ||||
| 		Child update = Service.update(data,id); | ||||
| 		System.out.println("data update..." + update); | ||||
| 		return update; | ||||
| 	}	  | ||||
| //	get all with pagination | ||||
| 	@GetMapping("/Child/getall/page") | ||||
| 	public Page<Child> getall(@RequestParam(value = "page", required = false) Integer page, | ||||
| 			@RequestParam(value = "size", required = false) Integer size) { | ||||
| 		Pageable paging = PageRequest.of(page, size); | ||||
| 		Page<Child> get = Service.getAllWithPagination(paging); | ||||
| 
 | ||||
| 		return get; | ||||
| 
 | ||||
| 	}	 | ||||
| 	@GetMapping("/Child") | ||||
| 	public List<Child> getdetails() { | ||||
| 		 List<Child> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| // get all without authentication  | ||||
| 
 | ||||
| 	@GetMapping("/token/Child") | ||||
| 	public List<Child> getallwioutsec() { | ||||
| 		 List<Child> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| @GetMapping("/Child/{id}") | ||||
| 	public  Child  getdetailsbyId(@PathVariable Integer id ) { | ||||
| 		Child  get = Service.getdetailsbyId(id); | ||||
| 		return get; | ||||
| 	} | ||||
| @DeleteMapping("/Child/{id}") | ||||
| 	public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) { | ||||
| 	Service.delete_by_id(id); | ||||
| 			return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,155 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
| import com.realnet.config.EmailService; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.springframework.data.domain.*; | ||||
| import com.realnet.fnd.response.EntityResponse; | ||||
| import org.springframework.http.*; | ||||
| import org.springframework.beans.factory.annotation.*; | ||||
| import com.realnet.basic1.Entity.Testbug; | ||||
| import com.realnet.basic1.Services.TestbugService ; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @RequestMapping(value = "/token/Testbug") | ||||
|  @CrossOrigin("*")  | ||||
| @RestController | ||||
| public class tokenFree_TestbugController { | ||||
| 	@Autowired | ||||
| 	private TestbugService Service; | ||||
| 
 | ||||
| @Value("${projectPath}") | ||||
| 	private String projectPath; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	@PostMapping("/Testbug") | ||||
| 		  public Testbug Savedata(@RequestBody Testbug data) { | ||||
| 		Testbug save = Service.Savedata(data)	; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		System.out.println("data saved..." + save); | ||||
| 
 | ||||
|  return save; | ||||
| 	  } | ||||
| @PutMapping("/Testbug/{id}") | ||||
| 	public  Testbug update(@RequestBody Testbug data,@PathVariable Integer id ) { | ||||
| 		Testbug update = Service.update(data,id); | ||||
| 		System.out.println("data update..." + update); | ||||
| 		return update; | ||||
| 	}	  | ||||
| //	get all with pagination | ||||
| 	@GetMapping("/Testbug/getall/page") | ||||
| 	public Page<Testbug> getall(@RequestParam(value = "page", required = false) Integer page, | ||||
| 			@RequestParam(value = "size", required = false) Integer size) { | ||||
| 		Pageable paging = PageRequest.of(page, size); | ||||
| 		Page<Testbug> get = Service.getAllWithPagination(paging); | ||||
| 
 | ||||
| 		return get; | ||||
| 
 | ||||
| 	}	 | ||||
| 	@GetMapping("/Testbug") | ||||
| 	public List<Testbug> getdetails() { | ||||
| 		 List<Testbug> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| // get all without authentication  | ||||
| 
 | ||||
| 	@GetMapping("/token/Testbug") | ||||
| 	public List<Testbug> getallwioutsec() { | ||||
| 		 List<Testbug> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| @GetMapping("/Testbug/{id}") | ||||
| 	public  Testbug  getdetailsbyId(@PathVariable Integer id ) { | ||||
| 		Testbug  get = Service.getdetailsbyId(id); | ||||
| 		return get; | ||||
| 	} | ||||
| @DeleteMapping("/Testbug/{id}") | ||||
| 	public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) { | ||||
| 	Service.delete_by_id(id); | ||||
| 			return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,99 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
| import com.realnet.config.EmailService; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.springframework.data.domain.*; | ||||
| import com.realnet.fnd.response.EntityResponse; | ||||
| import org.springframework.http.*; | ||||
| import org.springframework.beans.factory.annotation.*; | ||||
| import com.realnet.basic1.Entity.Testlist; | ||||
| import com.realnet.basic1.Services.TestlistService ; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @RequestMapping(value = "/token/Testlist") | ||||
|  @CrossOrigin("*")  | ||||
| @RestController | ||||
| public class tokenFree_TestlistController { | ||||
| 	@Autowired | ||||
| 	private TestlistService Service; | ||||
| 
 | ||||
| @Value("${projectPath}") | ||||
| 	private String projectPath; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	@PostMapping("/Testlist") | ||||
| 		  public Testlist Savedata(@RequestBody Testlist data) { | ||||
| 		Testlist save = Service.Savedata(data)	; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		System.out.println("data saved..." + save); | ||||
| 
 | ||||
|  return save; | ||||
| 	  } | ||||
| @PutMapping("/Testlist/{id}") | ||||
| 	public  Testlist update(@RequestBody Testlist data,@PathVariable Integer id ) { | ||||
| 		Testlist update = Service.update(data,id); | ||||
| 		System.out.println("data update..." + update); | ||||
| 		return update; | ||||
| 	}	  | ||||
| //	get all with pagination | ||||
| 	@GetMapping("/Testlist/getall/page") | ||||
| 	public Page<Testlist> getall(@RequestParam(value = "page", required = false) Integer page, | ||||
| 			@RequestParam(value = "size", required = false) Integer size) { | ||||
| 		Pageable paging = PageRequest.of(page, size); | ||||
| 		Page<Testlist> get = Service.getAllWithPagination(paging); | ||||
| 
 | ||||
| 		return get; | ||||
| 
 | ||||
| 	}	 | ||||
| 	@GetMapping("/Testlist") | ||||
| 	public List<Testlist> getdetails() { | ||||
| 		 List<Testlist> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| // get all without authentication  | ||||
| 
 | ||||
| 	@GetMapping("/token/Testlist") | ||||
| 	public List<Testlist> getallwioutsec() { | ||||
| 		 List<Testlist> get = Service.getdetails();		 | ||||
| 		return get; | ||||
| } | ||||
| @GetMapping("/Testlist/{id}") | ||||
| 	public  Testlist  getdetailsbyId(@PathVariable Integer id ) { | ||||
| 		Testlist  get = Service.getdetailsbyId(id); | ||||
| 		return get; | ||||
| 	} | ||||
| @DeleteMapping("/Testlist/{id}") | ||||
| 	public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) { | ||||
| 	Service.delete_by_id(id); | ||||
| 			return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| package com.realnet.basic1.Controllers; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
|  import org.springframework.web.bind.annotation.*; | ||||
| import com.realnet.basic1.Entity.Testlist_ListFilter1; | ||||
| import com.realnet.basic1.Services.Testlist_ListFilter1Service ; | ||||
| @RequestMapping(value = "/token/Testlist_ListFilter1") | ||||
| @RestController | ||||
| public class tokenFree_Testlist_ListFilter1Controller { | ||||
| 	 | ||||
| 	@Autowired | ||||
| 	private Testlist_ListFilter1Service Service; | ||||
| 
 | ||||
| 		@GetMapping("/Testlist_ListFilter1") | ||||
| 	public List<Testlist_ListFilter1> getlist() { | ||||
| 		 List<Testlist_ListFilter1> get = Service.getlistbuilder();		 | ||||
| 		return get; | ||||
| } | ||||
| 		@GetMapping("/Testlist_ListFilter11") | ||||
| 	public List<Testlist_ListFilter1> getlistwithparam( ) { | ||||
| 		 List<Testlist_ListFilter1> get = Service.getlistbuilderparam( );		 | ||||
| 		return get; | ||||
| } | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| package com.realnet.basic1.Entity; | ||||
|  import lombok.*; | ||||
| import com.realnet.WhoColumn.Entity.Extension;  | ||||
|  import javax.persistence.*; | ||||
|  import java.time.LocalDateTime; | ||||
|  import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
|  @Entity  | ||||
|  @Data | ||||
|  public class    Child extends Extension {  | ||||
|  /** | ||||
| 	 *  | ||||
| 	 */ | ||||
| 	private static final long serialVersionUID = 1L; | ||||
| 
 | ||||
|  @Id | ||||
|  @GeneratedValue(strategy = GenerationType.IDENTITY) | ||||
|  private Integer id; | ||||
| 
 | ||||
| private String  namek; | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,75 @@ | ||||
| package com.realnet.basic1.Entity; | ||||
|  import lombok.*; | ||||
| import com.realnet.WhoColumn.Entity.Extension;  | ||||
|  import javax.persistence.*; | ||||
|  import java.time.LocalDateTime; | ||||
|  import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| import com.realnet.basic1.Entity.Child; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  @Entity  | ||||
|  @Data | ||||
|  public class    Testbug extends Extension {  | ||||
|  /** | ||||
| 	 *  | ||||
| 	 */ | ||||
| 	private static final long serialVersionUID = 1L; | ||||
| 
 | ||||
|  @Id | ||||
|  @GeneratedValue(strategy = GenerationType.IDENTITY) | ||||
|  private Integer id; | ||||
| 
 | ||||
| private String  name; | ||||
| 
 | ||||
| private String  fileupload_fieldsname; | ||||
| private String  fileupload_fieldspath ; | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
|   | ||||
| 
 | ||||
| private String bar_code; | ||||
|   | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| private String qr_code; | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| @OneToOne(  cascade=CascadeType.ALL) | ||||
|  private  Child child;  | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| private String select_dyanamic; | ||||
| private String select_dyanamicidentifier; | ||||
| 
 | ||||
| private String select_dynamic_mul; | ||||
| 
 | ||||
| private String select_autocomp; | ||||
| private String select_autocompidentifier; | ||||
| 
 | ||||
| private String select_autcomp_mul; | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,33 @@ | ||||
| package com.realnet.basic1.Entity; | ||||
|  import lombok.*; | ||||
| import com.realnet.WhoColumn.Entity.Extension;  | ||||
|  import javax.persistence.*; | ||||
|  import java.time.LocalDateTime; | ||||
|  import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  @Entity  | ||||
|  @Data | ||||
|  public class    Testlist extends Extension {  | ||||
|  /** | ||||
| 	 *  | ||||
| 	 */ | ||||
| 	private static final long serialVersionUID = 1L; | ||||
| 
 | ||||
|  @Id | ||||
|  @GeneratedValue(strategy = GenerationType.IDENTITY) | ||||
|  private Integer id; | ||||
| 
 | ||||
| private String  name; | ||||
| 
 | ||||
| @Column(length = 2000) | ||||
| private String description; | ||||
| 
 | ||||
| private Boolean active; | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,14 @@ | ||||
| package com.realnet.basic1.Entity; | ||||
|  import lombok.*; | ||||
|  import javax.persistence.*; | ||||
|  import java.time.LocalDateTime; | ||||
|  import java.util.*; | ||||
| 
 | ||||
|  @Data | ||||
|  public class    Testlist_ListFilter1 {  | ||||
| 
 | ||||
|  private Integer id; | ||||
| 
 | ||||
| 
 | ||||
|  private String name; | ||||
| } | ||||
| @ -0,0 +1,26 @@ | ||||
| package com.realnet.basic1.Repository; | ||||
| 
 | ||||
| 
 | ||||
| import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.data.jpa.repository.Query; | ||||
| 
 | ||||
| import org.springframework.stereotype.Repository;  | ||||
| import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| import com.realnet.basic1.Entity.Child; | ||||
| 
 | ||||
| @Repository | ||||
| public interface  ChildRepository  extends  JpaRepository<Child, Integer>  {  | ||||
| 
 | ||||
| @Query(value = "select * from child where  created_by=?1", nativeQuery = true) | ||||
| 	List<Child> findAll(Long creayedBy); | ||||
| 
 | ||||
| @Query(value = "select * from child where  created_by=?1", nativeQuery = true) | ||||
| 	Page<Child> findAll( Long creayedBy,Pageable page); | ||||
| } | ||||
| @ -0,0 +1,44 @@ | ||||
| package com.realnet.basic1.Repository; | ||||
| 
 | ||||
| 
 | ||||
| import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.data.jpa.repository.Query; | ||||
| 
 | ||||
| import org.springframework.stereotype.Repository;  | ||||
| import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| import com.realnet.basic1.Entity.Testbug; | ||||
| 
 | ||||
| @Repository | ||||
| public interface  TestbugRepository  extends  JpaRepository<Testbug, Integer>  {  | ||||
| 
 | ||||
| @Query(value = "select * from testbug where  created_by=?1", nativeQuery = true) | ||||
| 	List<Testbug> findAll(Long creayedBy); | ||||
| 
 | ||||
| @Query(value = "select * from testbug where  created_by=?1", nativeQuery = true) | ||||
| 	Page<Testbug> findAll( Long creayedBy,Pageable page); | ||||
| } | ||||
| @ -0,0 +1,30 @@ | ||||
| package com.realnet.basic1.Repository; | ||||
| 
 | ||||
| 
 | ||||
| import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.data.jpa.repository.Query; | ||||
| 
 | ||||
| import org.springframework.stereotype.Repository;  | ||||
| import java.util.*; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| import com.realnet.basic1.Entity.Testlist; | ||||
| 
 | ||||
| @Repository | ||||
| public interface  TestlistRepository  extends  JpaRepository<Testlist, Integer>  {  | ||||
| 
 | ||||
| @Query(value = "select * from testlist where  created_by=?1", nativeQuery = true) | ||||
| 	List<Testlist> findAll(Long creayedBy); | ||||
| 
 | ||||
| @Query(value = "select * from testlist where  created_by=?1", nativeQuery = true) | ||||
| 	Page<Testlist> findAll( Long creayedBy,Pageable page); | ||||
| } | ||||
| @ -0,0 +1,73 @@ | ||||
| package com.realnet.basic1.Services; | ||||
| import com.realnet.basic1.Repository.ChildRepository; | ||||
| import com.realnet.basic1.Entity.Child | ||||
| ;import java.util.*; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import com.realnet.SequenceGenerator.Service.SequenceService; | ||||
| import org.springframework.data.domain.Page; | ||||
| import com.realnet.realm.Entity.Realm; | ||||
| import com.realnet.realm.Services.RealmService; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.http.*; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| 
 | ||||
| 
 | ||||
| 	import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| @Service | ||||
|  public class ChildService { | ||||
| @Autowired | ||||
| private ChildRepository Repository; | ||||
| 	@Autowired | ||||
| 	private AppUserServiceImpl userService;  | ||||
| @Autowired | ||||
| 	private RealmService realmService; | ||||
| 
 | ||||
| public Child Savedata(Child data) { | ||||
| 
 | ||||
| 
 | ||||
| 	data.setUpdatedBy(getUser().getUserId()); | ||||
| 		data.setCreatedBy(getUser().getUserId()); | ||||
| 		data.setAccountId(getUser().getAccount().getAccount_id()); | ||||
| Child save = Repository.save(data); | ||||
| 				return save;	 | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| //	get all with pagination | ||||
| 	public Page<Child> getAllWithPagination(Pageable page) { | ||||
| 		return Repository.findAll( getUser().getUserId(),page); | ||||
| 	}			 | ||||
| public List<Child> getdetails() {   | ||||
| 		List<Realm> realm = realmService.findByUserId(getUser().getUserId()); | ||||
| List<Child> all = Repository.findAll(getUser().getUserId()); | ||||
| 		 | ||||
| 		return all ;		} | ||||
| 
 | ||||
| 
 | ||||
| public Child getdetailsbyId(Integer id) { | ||||
| 	return Repository.findById(id).get(); | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| 	public void delete_by_id(Integer id) { | ||||
|  Repository.deleteById(id); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| public Child update(Child data,Integer id) { | ||||
| 	Child old = Repository.findById(id).get(); | ||||
| old.setNamek(data.getNamek()); | ||||
| 
 | ||||
| final Child test = Repository.save(old); | ||||
| 		data.setUpdatedBy(getUser().getUserId()); | ||||
|   return test;}  | ||||
| 
 | ||||
| 
 | ||||
|  public AppUser getUser() { | ||||
| 		AppUser user = userService.getLoggedInUser(); | ||||
| 		return user; | ||||
| 
 | ||||
| 	}} | ||||
| @ -0,0 +1,219 @@ | ||||
| package com.realnet.basic1.Services; | ||||
| import com.realnet.basic1.Repository.TestbugRepository; | ||||
| import com.realnet.basic1.Entity.Testbug | ||||
| ;import java.util.*; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import com.realnet.SequenceGenerator.Service.SequenceService; | ||||
| import org.springframework.data.domain.Page; | ||||
| import com.realnet.realm.Entity.Realm; | ||||
| import com.realnet.realm.Services.RealmService; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.http.*; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| import com.realnet.basic1.Entity.Testlist; | ||||
| import com.realnet.basic1.Services.TestlistService; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| import com.realnet.basic1.Entity.Testlist; | ||||
| import com.realnet.basic1.Services.TestlistService; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| @Service | ||||
|  public class TestbugService { | ||||
| @Autowired | ||||
| private TestbugRepository Repository; | ||||
| 	@Autowired | ||||
| 	private AppUserServiceImpl userService;  | ||||
| @Autowired | ||||
| 	private RealmService realmService; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @Autowired | ||||
| 	private TestlistService select_dyanamicserv; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @Autowired | ||||
| 	private TestlistService select_autocompserv; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public Testbug Savedata(Testbug data) { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| if (data.getSelect_dyanamic() != null) { | ||||
| 		try {	 | ||||
|   int select_dyanamicId = Integer.valueOf(data.getSelect_dyanamic()); | ||||
| Testlist get =  select_dyanamicserv.getdetailsbyId(select_dyanamicId); | ||||
| 			if (get != null) { | ||||
| 
 | ||||
| 			data.setSelect_dyanamicidentifier(get.getName()); | ||||
| } | ||||
| } catch (NumberFormatException e) { | ||||
| 				System.out.println(" select_dyanamicId is not integer.."); | ||||
| 				// Invalid integer string — ignore or log | ||||
| data.setSelect_dyanamicidentifier(data.getSelect_dyanamic()); | ||||
| 			} | ||||
| 
 | ||||
| 		} | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| if (data.getSelect_autocomp() != null) { | ||||
| 		try {	 | ||||
|   int select_autocompId = Integer.valueOf(data.getSelect_autocomp()); | ||||
| Testlist get =  select_autocompserv.getdetailsbyId(select_autocompId); | ||||
| 			if (get != null) { | ||||
| 
 | ||||
| 			data.setSelect_autocompidentifier(get.getName()); | ||||
| } | ||||
| } catch (NumberFormatException e) { | ||||
| 				System.out.println(" select_autocompId is not integer.."); | ||||
| 				// Invalid integer string — ignore or log | ||||
| data.setSelect_autocompidentifier(data.getSelect_autocomp()); | ||||
| 
 | ||||
| 			} | ||||
| 
 | ||||
| 		} | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	data.setUpdatedBy(getUser().getUserId()); | ||||
| 		data.setCreatedBy(getUser().getUserId()); | ||||
| 		data.setAccountId(getUser().getAccount().getAccount_id()); | ||||
| Testbug save = Repository.save(data); | ||||
| 				return save;	 | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| //	get all with pagination | ||||
| 	public Page<Testbug> getAllWithPagination(Pageable page) { | ||||
| 		return Repository.findAll( getUser().getUserId(),page); | ||||
| 	}			 | ||||
| public List<Testbug> getdetails() {   | ||||
| 		List<Realm> realm = realmService.findByUserId(getUser().getUserId()); | ||||
| List<Testbug> all = Repository.findAll(getUser().getUserId()); | ||||
| 		 | ||||
| 		return all ;		} | ||||
| 
 | ||||
| 
 | ||||
| public Testbug getdetailsbyId(Integer id) { | ||||
| 	return Repository.findById(id).get(); | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| 	public void delete_by_id(Integer id) { | ||||
|  Repository.deleteById(id); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| public Testbug update(Testbug data,Integer id) { | ||||
| 	Testbug old = Repository.findById(id).get(); | ||||
| old.setName(data.getName()); | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| old.setBar_code(data.getBar_code()); | ||||
|   | ||||
| 
 | ||||
|   | ||||
| old.setQr_code(data.getQr_code()); | ||||
|   | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
| old.setChild(data.getChild()); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| old.setSelect_dyanamic(data.getSelect_dyanamic()); | ||||
| 
 | ||||
| old.setSelect_dynamic_mul(data.getSelect_dynamic_mul()); | ||||
| 
 | ||||
| old.setSelect_autocomp(data.getSelect_autocomp()); | ||||
| 
 | ||||
| old.setSelect_autcomp_mul(data.getSelect_autcomp_mul()); | ||||
| 
 | ||||
| final Testbug test = Repository.save(old); | ||||
| 		data.setUpdatedBy(getUser().getUserId()); | ||||
|   return test;}  | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  public AppUser getUser() { | ||||
| 		AppUser user = userService.getLoggedInUser(); | ||||
| 		return user; | ||||
| 
 | ||||
| 	}} | ||||
| @ -0,0 +1,93 @@ | ||||
| package com.realnet.basic1.Services; | ||||
| import com.realnet.basic1.Repository.TestlistRepository; | ||||
| import com.realnet.basic1.Entity.Testlist | ||||
| ;import java.util.*; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import com.realnet.SequenceGenerator.Service.SequenceService; | ||||
| import org.springframework.data.domain.Page; | ||||
| import com.realnet.realm.Entity.Realm; | ||||
| import com.realnet.realm.Services.RealmService; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.http.*; | ||||
| import com.realnet.users.service1.AppUserServiceImpl; | ||||
| import com.realnet.users.entity1.AppUser; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| @Service | ||||
|  public class TestlistService { | ||||
| @Autowired | ||||
| private TestlistRepository Repository; | ||||
| 	@Autowired | ||||
| 	private AppUserServiceImpl userService;  | ||||
| @Autowired | ||||
| 	private RealmService realmService; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public Testlist Savedata(Testlist data) { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	data.setUpdatedBy(getUser().getUserId()); | ||||
| 		data.setCreatedBy(getUser().getUserId()); | ||||
| 		data.setAccountId(getUser().getAccount().getAccount_id()); | ||||
| Testlist save = Repository.save(data); | ||||
| 				return save;	 | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| //	get all with pagination | ||||
| 	public Page<Testlist> getAllWithPagination(Pageable page) { | ||||
| 		return Repository.findAll( getUser().getUserId(),page); | ||||
| 	}			 | ||||
| public List<Testlist> getdetails() {   | ||||
| 		List<Realm> realm = realmService.findByUserId(getUser().getUserId()); | ||||
| List<Testlist> all = Repository.findAll(getUser().getUserId()); | ||||
| 		 | ||||
| 		return all ;		} | ||||
| 
 | ||||
| 
 | ||||
| public Testlist getdetailsbyId(Integer id) { | ||||
| 	return Repository.findById(id).get(); | ||||
| 			} | ||||
| 
 | ||||
| 
 | ||||
| 	public void delete_by_id(Integer id) { | ||||
|  Repository.deleteById(id); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| public Testlist update(Testlist data,Integer id) { | ||||
| 	Testlist old = Repository.findById(id).get(); | ||||
| old.setName(data.getName()); | ||||
| 
 | ||||
| old.setDescription(data.getDescription()); | ||||
| 
 | ||||
| old.setActive (data.getActive()); | ||||
| 
 | ||||
| final Testlist test = Repository.save(old); | ||||
| 		data.setUpdatedBy(getUser().getUserId()); | ||||
|   return test;}  | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  public AppUser getUser() { | ||||
| 		AppUser user = userService.getLoggedInUser(); | ||||
| 		return user; | ||||
| 
 | ||||
| 	}} | ||||
| @ -0,0 +1,51 @@ | ||||
| package com.realnet.basic1.Services; | ||||
| import java.util.*; | ||||
| import com.realnet.basic1.Repository.TestlistRepository; | ||||
| import com.realnet.basic1.Entity.Testlist; | ||||
| 
 | ||||
| import com.realnet.basic1.Entity.Testlist_ListFilter1; | ||||
| import java.util.List; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| 	import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| @Service | ||||
|  public class Testlist_ListFilter1Service { | ||||
| @Autowired | ||||
| private TestlistRepository Repository; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  public   List<Testlist_ListFilter1>   getlistbuilder() { | ||||
| 	List<Testlist> list= Repository.findAll(); | ||||
| 		ArrayList<Testlist_ListFilter1> l = new ArrayList<>(); | ||||
| 		for (Testlist data : list) { | ||||
| Boolean isActive = data.getActive(); | ||||
| 
 | ||||
| 				if (Boolean.TRUE.equals(isActive)) {{	 | ||||
| Testlist_ListFilter1 dummy = new Testlist_ListFilter1(); | ||||
| 			dummy.setId(data.getId()); | ||||
|   dummy.setName(data.getName()); | ||||
| 	l.add(dummy); | ||||
| }}  | ||||
| } 		 | ||||
| return l;} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  public   List<Testlist_ListFilter1>   getlistbuilderparam( ) { | ||||
| 	List<Testlist> list= Repository.findAll(); | ||||
| 		ArrayList<Testlist_ListFilter1> l = new ArrayList<>(); | ||||
| 		for (Testlist data : list) { | ||||
| Boolean isActive = data.getActive(); | ||||
| 
 | ||||
| 				if (Boolean.TRUE.equals(isActive)) {{	 | ||||
| Testlist_ListFilter1 dummy = new Testlist_ListFilter1(); | ||||
| 			dummy.setId(data.getId()); | ||||
|   dummy.setName(data.getName()); | ||||
| 	l.add(dummy); | ||||
| }}  | ||||
| } 		 | ||||
| return l;} | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user