build_app
This commit is contained in:
		
							parent
							
								
									824975a80b
								
							
						
					
					
						commit
						66de984bcf
					
				@ -69,6 +69,9 @@ public class BuilderService {
 | 
				
			|||||||
		executeDump(true);
 | 
							executeDump(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// ADD OTHER SERVICE
 | 
							// ADD OTHER SERVICE
 | 
				
			||||||
 | 
					addCustomMenu( "Testingone",  "Transcations"); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		System.out.println("dashboard and menu inserted...");
 | 
							System.out.println("dashboard and menu inserted...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.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.basicp1.Entity.Testingone;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Services.TestingoneService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/Testingone")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class TestingoneController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private TestingoneService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Testingone")
 | 
				
			||||||
 | 
							  public Testingone Savedata(@RequestBody Testingone data) {
 | 
				
			||||||
 | 
							Testingone save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Testingone/{id}")
 | 
				
			||||||
 | 
						public  Testingone update(@RequestBody Testingone data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testingone update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Testingone/getall/page")
 | 
				
			||||||
 | 
						public Page<Testingone> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Testingone> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Testingone")
 | 
				
			||||||
 | 
						public List<Testingone> getdetails() {
 | 
				
			||||||
 | 
							 List<Testingone> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Testingone")
 | 
				
			||||||
 | 
						public List<Testingone> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Testingone> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Testingone/{id}")
 | 
				
			||||||
 | 
						public  Testingone  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testingone  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Testingone/{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,33 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Entity;
 | 
				
			||||||
 | 
					 import lombok.*;
 | 
				
			||||||
 | 
					import com.realnet.WhoColumn.Entity.Extension; 
 | 
				
			||||||
 | 
					 import javax.persistence.*;
 | 
				
			||||||
 | 
					 import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					 import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Entity 
 | 
				
			||||||
 | 
					 @Data
 | 
				
			||||||
 | 
					 public class    Testingone 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,30 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.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.basicp1.Entity.Testingone;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Repository
 | 
				
			||||||
 | 
					public interface  TestingoneRepository  extends  JpaRepository<Testingone, Integer>  { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testingone where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						List<Testingone> findAll(Long creayedBy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testingone where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						Page<Testingone> findAll(Pageable page, Long creayedBy);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,93 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Services;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Repository.TestingoneRepository;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Entity.Testingone
 | 
				
			||||||
 | 
					;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 TestingoneService {
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
					private TestingoneRepository Repository;
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private AppUserServiceImpl userService; 
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
						private RealmService realmService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testingone Savedata(Testingone data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setCreatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setAccountId(getUser().getAccount().getAccount_id());
 | 
				
			||||||
 | 
					Testingone save = Repository.save(data);
 | 
				
			||||||
 | 
									return save;	
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						public Page<Testingone> getAllWithPagination(Pageable page) {
 | 
				
			||||||
 | 
							return Repository.findAll(page, getUser().getUserId());
 | 
				
			||||||
 | 
						}			
 | 
				
			||||||
 | 
					public List<Testingone> getdetails() {  
 | 
				
			||||||
 | 
							List<Realm> realm = realmService.findByUserId(getUser().getUserId());
 | 
				
			||||||
 | 
					List<Testingone> all = Repository.findAll(getUser().getUserId());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return all ;		}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testingone getdetailsbyId(Integer id) {
 | 
				
			||||||
 | 
						return Repository.findById(id).get();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void delete_by_id(Integer id) {
 | 
				
			||||||
 | 
					 Repository.deleteById(id);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testingone update(Testingone data,Integer id) {
 | 
				
			||||||
 | 
						Testingone old = Repository.findById(id).get();
 | 
				
			||||||
 | 
					old.setName(data.getName());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setDescription(data.getDescription());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setActive (data.isActive());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Testingone test = Repository.save(old);
 | 
				
			||||||
 | 
							data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
					  return test;} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public AppUser getUser() {
 | 
				
			||||||
 | 
							AppUser user = userService.getLoggedInUser();
 | 
				
			||||||
 | 
							return user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}}
 | 
				
			||||||
							
								
								
									
										2
									
								
								test24april-db-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								test24april-db-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					CREATE TABLE db.Testingone(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400),  PRIMARY KEY (id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -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 testingoneApiService {
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Future<List<Map<String, dynamic>>> getEntities() async {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getGetApiResponse('$baseUrl/Testingone/Testingone');
 | 
				
			||||||
 | 
					      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/Testingone/Testingone/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/Testingone/Testingone', 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/Testingone/Testingone/$entityId',
 | 
				
			||||||
 | 
					      entity);                print(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity( int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					 await _helper.getDeleteApiResponse('$baseUrl/Testingone/Testingone/$entityId');
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,214 @@
 | 
				
			|||||||
 | 
					// 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 '../Testingone_viewModel/Testingone_view_model_screen.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 testingoneCreateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					  const testingoneCreateEntityScreen({super.key});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _testingoneCreateEntityScreenState createState() => _testingoneCreateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _testingoneCreateEntityScreenState extends State<testingoneCreateEntityScreen> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Map<String, dynamic> formData = {};
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					  final TextEditingController nameController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController descriptionController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool _isSwitchedactive = false;
 | 
				
			||||||
 | 
					bool active = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void _toggleSwitchactive(bool value) {
 | 
				
			||||||
 | 
					  setState(() {
 | 
				
			||||||
 | 
					    _isSwitchedactive = value;
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState(); 
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestingoneViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestingoneViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    return Scaffold(
 | 
				
			||||||
 | 
					      appBar: CustomAppBar(
 | 
				
			||||||
 | 
					          height: getVerticalSize(49),
 | 
				
			||||||
 | 
					          leadingWidth: 40,
 | 
				
			||||||
 | 
					          leading: AppbarImage(
 | 
				
			||||||
 | 
					              height: getSize(24),
 | 
				
			||||||
 | 
					              width: getSize(24),
 | 
				
			||||||
 | 
					              svgPath: ImageConstant.imgArrowleftBlueGray900,
 | 
				
			||||||
 | 
					              margin: getMargin(left: 16, top: 12, bottom: 13),
 | 
				
			||||||
 | 
					              onTap: () {
 | 
				
			||||||
 | 
					                Navigator.pop(context);
 | 
				
			||||||
 | 
					              }),
 | 
				
			||||||
 | 
					          centerTitle: true,
 | 
				
			||||||
 | 
					          title: AppbarTitle(text: "Create Testingone"),
 | 
				
			||||||
 | 
					 actions: [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					],
 | 
				
			||||||
 | 
					 ),
 | 
				
			||||||
 | 
					      body: SingleChildScrollView(
 | 
				
			||||||
 | 
					        child: Padding(
 | 
				
			||||||
 | 
					          padding: const EdgeInsets.all(16),
 | 
				
			||||||
 | 
					          child: Form(
 | 
				
			||||||
 | 
					            key: _formKey,
 | 
				
			||||||
 | 
					            child: Column(
 | 
				
			||||||
 | 
					              children: [
 | 
				
			||||||
 | 
					 ReusableTextField(
 | 
				
			||||||
 | 
					                  controller: nameController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onSaved:(value) => formData['name'] = value ,
 | 
				
			||||||
 | 
					  label:"Enter Name",
 | 
				
			||||||
 | 
					  // ValidationProperties
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					                  controller: descriptionController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onSaved:(value) => formData['description'] = value ,
 | 
				
			||||||
 | 
					  label: "Enter Description",
 | 
				
			||||||
 | 
					  maxLines: 5,
 | 
				
			||||||
 | 
					// ValidationProperties
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                       SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Switch(
 | 
				
			||||||
 | 
					              value: _isSwitchedactive,
 | 
				
			||||||
 | 
					              onChanged: _toggleSwitchactive,
 | 
				
			||||||
 | 
					              activeColor: Colors.white,
 | 
				
			||||||
 | 
					              activeTrackColor: Colors.green,
 | 
				
			||||||
 | 
					              inactiveThumbColor: Colors.white,
 | 
				
			||||||
 | 
					              inactiveTrackColor: Colors.red,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   const SizedBox(width: 8),
 | 
				
			||||||
 | 
					                CustomButton(
 | 
				
			||||||
 | 
					                  height: getVerticalSize(50),
 | 
				
			||||||
 | 
					                  text: "Submit",
 | 
				
			||||||
 | 
					                  margin: getMargin(top: 24, bottom: 5),
 | 
				
			||||||
 | 
					                  onTap: () async {
 | 
				
			||||||
 | 
					                    if (_formKey.currentState!.validate()) {
 | 
				
			||||||
 | 
					                      _formKey.currentState!.save(); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					formData['active'] = active;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					                      try {
 | 
				
			||||||
 | 
					                        print(formData);
 | 
				
			||||||
 | 
					  Map<String, dynamic> createdEntity =  await provider.createEntity(formData); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        Navigator.pop(context);
 | 
				
			||||||
 | 
					                      } catch (e) {
 | 
				
			||||||
 | 
					                        // ignore: use_build_context_synchronously
 | 
				
			||||||
 | 
					                        showDialog(
 | 
				
			||||||
 | 
					                          context: context,
 | 
				
			||||||
 | 
					                          builder: (BuildContext context) {
 | 
				
			||||||
 | 
					                            return AlertDialog(
 | 
				
			||||||
 | 
					                              title: const Text('Error'),
 | 
				
			||||||
 | 
					                              content: Text('Failed to create Testingone: $e'),
 | 
				
			||||||
 | 
					                              actions: [
 | 
				
			||||||
 | 
					                                TextButton(
 | 
				
			||||||
 | 
					                                  child: const Text('OK'),
 | 
				
			||||||
 | 
					                                  onPressed: () {
 | 
				
			||||||
 | 
					                                    Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                                  },
 | 
				
			||||||
 | 
					                                ),
 | 
				
			||||||
 | 
					                              ],
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					                          },
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					                      }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                  },
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   ],
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					     );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,635 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					import 'Testingone_create_entity_screen.dart';
 | 
				
			||||||
 | 
					import 'Testingone_update_entity_screen.dart';
 | 
				
			||||||
 | 
					import '../Testingone_viewModel/Testingone_view_model_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 testingone_entity_list_screen extends StatefulWidget {
 | 
				
			||||||
 | 
					  static const String routeName = '/entity-list';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _testingone_entity_list_screenState createState() => _testingone_entity_list_screenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _testingone_entity_list_screenState extends State<testingone_entity_list_screen> {
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> entities = [];
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> filteredEntities = [];
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> serachEntities = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool showCardView = true; // Add this variable to control the view mode
 | 
				
			||||||
 | 
					  TextEditingController searchController = TextEditingController();
 | 
				
			||||||
 | 
					  late stt.SpeechToText _speech;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool isLoading = false; // Add this variable to track loading state
 | 
				
			||||||
 | 
					  int currentPage = 0;
 | 
				
			||||||
 | 
					  int pageSize = 10; // Adjust this based on your backend API
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final ScrollController _scrollController = ScrollController();
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    _speech = stt.SpeechToText();
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    fetchEntities();
 | 
				
			||||||
 | 
					    _scrollController.addListener(_scrollListener);
 | 
				
			||||||
 | 
					    fetchwithoutpaging();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> fetchwithoutpaging() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        final provider =
 | 
				
			||||||
 | 
					          Provider.of<TestingoneViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					      final fetchedEntities = await provider.getEntities();
 | 
				
			||||||
 | 
					        setState(() {
 | 
				
			||||||
 | 
					          serachEntities = fetchedEntities; // Update only filteredEntities
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      showDialog(
 | 
				
			||||||
 | 
					        context: context,
 | 
				
			||||||
 | 
					        builder: (BuildContext context) {
 | 
				
			||||||
 | 
					          return AlertDialog(
 | 
				
			||||||
 | 
					            title: const Text('Error'),
 | 
				
			||||||
 | 
					            content: Text('Failed to fetch Testingone: $e'),
 | 
				
			||||||
 | 
					            actions: [
 | 
				
			||||||
 | 
					              TextButton(
 | 
				
			||||||
 | 
					                child: const Text('OK'),
 | 
				
			||||||
 | 
					                onPressed: () {
 | 
				
			||||||
 | 
					                  Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					Future<void> fetchEntities() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      setState(() {
 | 
				
			||||||
 | 
					        isLoading = true;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    final provider =
 | 
				
			||||||
 | 
					          Provider.of<TestingoneViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					      final fetchedEntities =
 | 
				
			||||||
 | 
					          await provider.getAllWithPagination(currentPage, pageSize);
 | 
				
			||||||
 | 
					        setState(() {
 | 
				
			||||||
 | 
					          entities.addAll(fetchedEntities); // Add new data to the existing list
 | 
				
			||||||
 | 
					          filteredEntities = entities.toList(); // Update only filteredEntities
 | 
				
			||||||
 | 
					          currentPage++;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     } catch (e) {
 | 
				
			||||||
 | 
					      showDialog(
 | 
				
			||||||
 | 
					        context: context,
 | 
				
			||||||
 | 
					        builder: (BuildContext context) {
 | 
				
			||||||
 | 
					          return AlertDialog(
 | 
				
			||||||
 | 
					            title: const Text('Error'),
 | 
				
			||||||
 | 
					            content: Text('Failed to fetch Testingone data: $e'),
 | 
				
			||||||
 | 
					            actions: [
 | 
				
			||||||
 | 
					              TextButton(
 | 
				
			||||||
 | 
					                child: const Text('OK'),
 | 
				
			||||||
 | 
					                onPressed: () {
 | 
				
			||||||
 | 
					                  Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      setState(() {
 | 
				
			||||||
 | 
					        isLoading = false;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _scrollListener() {
 | 
				
			||||||
 | 
					    if (_scrollController.position.pixels ==
 | 
				
			||||||
 | 
					        _scrollController.position.maxScrollExtent) {
 | 
				
			||||||
 | 
					      fetchEntities();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity(Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final provider =
 | 
				
			||||||
 | 
					          Provider.of<TestingoneViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      await provider.deleteEntity(entity['id']);;
 | 
				
			||||||
 | 
					      setState(() {
 | 
				
			||||||
 | 
					        entities.remove(entity);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      showDialog(
 | 
				
			||||||
 | 
					        context: context,
 | 
				
			||||||
 | 
					        builder: (BuildContext context) {
 | 
				
			||||||
 | 
					          return AlertDialog(
 | 
				
			||||||
 | 
					            title: const Text('Error'),
 | 
				
			||||||
 | 
					            content: Text('Failed to delete entity: $e'),
 | 
				
			||||||
 | 
					            actions: [
 | 
				
			||||||
 | 
					              TextButton(
 | 
				
			||||||
 | 
					                child: const Text('OK'),
 | 
				
			||||||
 | 
					                onPressed: () {
 | 
				
			||||||
 | 
					                  Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _searchEntities(String keyword) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      filteredEntities = serachEntities
 | 
				
			||||||
 | 
					          .where((entity) =>
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['name'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['description'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              entity['active'].toString().toLowerCase().contains(keyword.toLowerCase()) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 ).toList();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _startListening() async {
 | 
				
			||||||
 | 
					    if (!_speech.isListening) {
 | 
				
			||||||
 | 
					      bool available = await _speech.initialize(
 | 
				
			||||||
 | 
					        onStatus: (status) {
 | 
				
			||||||
 | 
					          print('Speech recognition status: $status');
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        onError: (error) {
 | 
				
			||||||
 | 
					          print('Speech recognition error: $error');
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (available) {
 | 
				
			||||||
 | 
					        _speech.listen(
 | 
				
			||||||
 | 
					          onResult: (result) {
 | 
				
			||||||
 | 
					            if (result.finalResult) {
 | 
				
			||||||
 | 
					              searchController.text = result.recognizedWords;
 | 
				
			||||||
 | 
					              _searchEntities(result.recognizedWords);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _stopListening() {
 | 
				
			||||||
 | 
					    if (_speech.isListening) {
 | 
				
			||||||
 | 
					      _speech.stop();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void dispose() {
 | 
				
			||||||
 | 
					    _speech.cancel();
 | 
				
			||||||
 | 
					    super.dispose();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					onTapArrowleft1(BuildContext context) {
 | 
				
			||||||
 | 
					    Navigator.pop(context);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return SafeArea(
 | 
				
			||||||
 | 
					      child: Scaffold(
 | 
				
			||||||
 | 
					        appBar: CustomAppBar(
 | 
				
			||||||
 | 
					          height: getVerticalSize(49),
 | 
				
			||||||
 | 
					          leadingWidth: 40,
 | 
				
			||||||
 | 
					          leading: AppbarImage(
 | 
				
			||||||
 | 
					              height: getSize(24),
 | 
				
			||||||
 | 
					              width: getSize(24),
 | 
				
			||||||
 | 
					              svgPath: ImageConstant.imgArrowleft,
 | 
				
			||||||
 | 
					              margin: getMargin(left: 16, top: 12, bottom: 13),
 | 
				
			||||||
 | 
					              onTap: () {
 | 
				
			||||||
 | 
					                onTapArrowleft1(context);
 | 
				
			||||||
 | 
					              }),
 | 
				
			||||||
 | 
					          centerTitle: true,
 | 
				
			||||||
 | 
					          title: AppbarTitle(text: " Testingone"),
 | 
				
			||||||
 | 
					        actions: [
 | 
				
			||||||
 | 
					         Row(
 | 
				
			||||||
 | 
					            children: [
 | 
				
			||||||
 | 
					              Switch(
 | 
				
			||||||
 | 
					                activeColor: Colors.greenAccent,
 | 
				
			||||||
 | 
					                inactiveThumbColor: Colors.white,
 | 
				
			||||||
 | 
					                value: showCardView,
 | 
				
			||||||
 | 
					                onChanged: (value) {
 | 
				
			||||||
 | 
					                  setState(() {
 | 
				
			||||||
 | 
					                    showCardView = value;
 | 
				
			||||||
 | 
					                  });
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					          ),        ],
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      body: RefreshIndicator(
 | 
				
			||||||
 | 
					        onRefresh: () async {
 | 
				
			||||||
 | 
					          currentPage = 1;
 | 
				
			||||||
 | 
					          entities.clear();
 | 
				
			||||||
 | 
					          await fetchEntities();
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        child: Column(
 | 
				
			||||||
 | 
					          children: [
 | 
				
			||||||
 | 
					            Padding(
 | 
				
			||||||
 | 
					              padding: const EdgeInsets.all(8.0),
 | 
				
			||||||
 | 
					              child: TextField(
 | 
				
			||||||
 | 
					                controller: searchController,
 | 
				
			||||||
 | 
					                onChanged: (value) {
 | 
				
			||||||
 | 
					                  _searchEntities(value);
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                decoration: InputDecoration(
 | 
				
			||||||
 | 
					                  hintText: 'Search...',
 | 
				
			||||||
 | 
					                  contentPadding: const EdgeInsets.symmetric(horizontal: 16.0),
 | 
				
			||||||
 | 
					                  filled: true,
 | 
				
			||||||
 | 
					                  fillColor: Colors.grey[200],
 | 
				
			||||||
 | 
					                  border: OutlineInputBorder(
 | 
				
			||||||
 | 
					                    borderRadius: BorderRadius.circular(10.0),
 | 
				
			||||||
 | 
					                    borderSide: BorderSide.none,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  suffixIcon: IconButton(
 | 
				
			||||||
 | 
					                    icon: const Icon(Icons.mic),
 | 
				
			||||||
 | 
					                    onPressed: () {
 | 
				
			||||||
 | 
					                      _startListening();
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            Expanded(
 | 
				
			||||||
 | 
					              child: ListView.builder(
 | 
				
			||||||
 | 
					                itemCount: filteredEntities.length + (isLoading ? 1 : 0),
 | 
				
			||||||
 | 
					                itemBuilder: (BuildContext context, int index) {
 | 
				
			||||||
 | 
					                  if (index < filteredEntities.length) {
 | 
				
			||||||
 | 
					                    final entity = filteredEntities[index];
 | 
				
			||||||
 | 
					                    return _buildListItem(entity);
 | 
				
			||||||
 | 
					                  } else {
 | 
				
			||||||
 | 
					                    // Display the loading indicator at the bottom when new data is loading
 | 
				
			||||||
 | 
					                    return const Padding(
 | 
				
			||||||
 | 
					                      padding: EdgeInsets.all(8.0),
 | 
				
			||||||
 | 
					                      child: Center(
 | 
				
			||||||
 | 
					                        child: CircularProgressIndicator(),
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                controller: _scrollController,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      floatingActionButton: FloatingActionButton(
 | 
				
			||||||
 | 
					        onPressed: () {
 | 
				
			||||||
 | 
					          Navigator.push(
 | 
				
			||||||
 | 
					            context,
 | 
				
			||||||
 | 
					            MaterialPageRoute(
 | 
				
			||||||
 | 
					              builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					                create: (context) => TestingoneViewModelScreen(),
 | 
				
			||||||
 | 
					                child: testingoneCreateEntityScreen(),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ).then((_) {
 | 
				
			||||||
 | 
					            fetchEntities();
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        child: const Icon(Icons.add),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget _buildListItem(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    return showCardView ? _buildCardView(entity) : _buildNormalView(entity);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Function to build card view for a list item
 | 
				
			||||||
 | 
					  Widget _buildCardView(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					 return      Card(
 | 
				
			||||||
 | 
					        elevation: 2,
 | 
				
			||||||
 | 
					        margin: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
 | 
				
			||||||
 | 
					        child: _buildNormalView(entity))
 | 
				
			||||||
 | 
					 ; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Function to build normal view for a list item
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 // Function to build normal view for a list item
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget _buildNormalView(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    final values = entity.values.elementAt(21) ?? 'Authsec';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return SizedBox(
 | 
				
			||||||
 | 
					      width: double.maxFinite,
 | 
				
			||||||
 | 
					      child: Container(
 | 
				
			||||||
 | 
					        padding: getPadding(
 | 
				
			||||||
 | 
					          left: 16,
 | 
				
			||||||
 | 
					          top: 5,
 | 
				
			||||||
 | 
					          right: 5,
 | 
				
			||||||
 | 
					          bottom: 17,
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        decoration: AppDecoration.outlineGray70011.copyWith(
 | 
				
			||||||
 | 
					            borderRadius: BorderRadiusStyle.roundedBorder6,
 | 
				
			||||||
 | 
					            color: Colors.grey[100]),
 | 
				
			||||||
 | 
					        child: Column(
 | 
				
			||||||
 | 
					          mainAxisSize: MainAxisSize.min,
 | 
				
			||||||
 | 
					          crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					          mainAxisAlignment: MainAxisAlignment.center,
 | 
				
			||||||
 | 
					          children: [
 | 
				
			||||||
 | 
					            Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                  //right: 13,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Container(
 | 
				
			||||||
 | 
					                    width: MediaQuery.of(context).size.width * 0.30,
 | 
				
			||||||
 | 
					                    margin: getMargin(
 | 
				
			||||||
 | 
					                      left: 8,
 | 
				
			||||||
 | 
					                      top: 3,
 | 
				
			||||||
 | 
					                      bottom: 1,
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    child: Column(
 | 
				
			||||||
 | 
					                      crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					                      mainAxisAlignment: MainAxisAlignment.start,
 | 
				
			||||||
 | 
					                      children: [
 | 
				
			||||||
 | 
					                        Text(
 | 
				
			||||||
 | 
					                          entity['id'].toString(),
 | 
				
			||||||
 | 
					                          overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                          textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                          style: AppStyle.txtGreenSemiBold16,
 | 
				
			||||||
 | 
					                        ),
 | 
				
			||||||
 | 
					                      ],
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  const Spacer(),
 | 
				
			||||||
 | 
					                  PopupMenuButton<String>(
 | 
				
			||||||
 | 
					                    icon: const Icon(
 | 
				
			||||||
 | 
					                      Icons.more_vert,
 | 
				
			||||||
 | 
					                      color: Colors.black,
 | 
				
			||||||
 | 
					                      size: 16,
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    itemBuilder: (BuildContext context) {
 | 
				
			||||||
 | 
					                      return [
 | 
				
			||||||
 | 
					                        PopupMenuItem<String>(
 | 
				
			||||||
 | 
					                          value: 'edit',
 | 
				
			||||||
 | 
					                          child: Row(
 | 
				
			||||||
 | 
					                            children: [
 | 
				
			||||||
 | 
					                              const Icon(
 | 
				
			||||||
 | 
					                                Icons.edit,
 | 
				
			||||||
 | 
					                                size: 16, // Adjust the icon size as needed
 | 
				
			||||||
 | 
					                              ),
 | 
				
			||||||
 | 
					                              const SizedBox(width: 8),
 | 
				
			||||||
 | 
					                              Text(
 | 
				
			||||||
 | 
					                                'Edit',
 | 
				
			||||||
 | 
					                                style: AppStyle
 | 
				
			||||||
 | 
					                                    .txtGilroySemiBold16, // Adjust the text size as needed
 | 
				
			||||||
 | 
					                              ),
 | 
				
			||||||
 | 
					                            ],
 | 
				
			||||||
 | 
					                          ),
 | 
				
			||||||
 | 
					                        ),
 | 
				
			||||||
 | 
					                        PopupMenuItem<String>(
 | 
				
			||||||
 | 
					                          value: 'delete',
 | 
				
			||||||
 | 
					                          child: Row(
 | 
				
			||||||
 | 
					                            children: [
 | 
				
			||||||
 | 
					                              const Icon(
 | 
				
			||||||
 | 
					                                Icons.delete,
 | 
				
			||||||
 | 
					                                size: 16, // Adjust the icon size as needed
 | 
				
			||||||
 | 
					                              ),
 | 
				
			||||||
 | 
					                              const SizedBox(width: 8),
 | 
				
			||||||
 | 
					                              Text(
 | 
				
			||||||
 | 
					                                'Delete',
 | 
				
			||||||
 | 
					                                style: AppStyle
 | 
				
			||||||
 | 
					                                    .txtGilroySemiBold16, // Adjust the text size as needed
 | 
				
			||||||
 | 
					                              ),
 | 
				
			||||||
 | 
					                            ],
 | 
				
			||||||
 | 
					                          ),
 | 
				
			||||||
 | 
					                        ),
 | 
				
			||||||
 | 
					                      ];
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    onSelected: (String value) {
 | 
				
			||||||
 | 
					                      if (value == 'edit') {
 | 
				
			||||||
 | 
					                       Navigator.push(
 | 
				
			||||||
 | 
					                          context,
 | 
				
			||||||
 | 
					                          MaterialPageRoute(
 | 
				
			||||||
 | 
					                            builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					                              create: (context) => TestingoneViewModelScreen(),
 | 
				
			||||||
 | 
					                              child: testingoneUpdateEntityScreen(entity: entity),
 | 
				
			||||||
 | 
					                            ),
 | 
				
			||||||
 | 
					                          ),
 | 
				
			||||||
 | 
					                        ).then((_) {
 | 
				
			||||||
 | 
					                          fetchEntities();
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      } else if (value == 'delete') {
 | 
				
			||||||
 | 
					                        showDialog(
 | 
				
			||||||
 | 
					                          context: context,
 | 
				
			||||||
 | 
					                          builder: (BuildContext context) {
 | 
				
			||||||
 | 
					                            return AlertDialog(
 | 
				
			||||||
 | 
					                              title: const Text('Confirm Deletion'),
 | 
				
			||||||
 | 
					                              content: const Text(
 | 
				
			||||||
 | 
					                                  'Are you sure you want to delete?'),
 | 
				
			||||||
 | 
					                              actions: [
 | 
				
			||||||
 | 
					                                TextButton(
 | 
				
			||||||
 | 
					                                  child: const Text('Cancel'),
 | 
				
			||||||
 | 
					                                  onPressed: () {
 | 
				
			||||||
 | 
					                                    Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                                  },
 | 
				
			||||||
 | 
					                                ),
 | 
				
			||||||
 | 
					                                TextButton(
 | 
				
			||||||
 | 
					                                  child: const Text('Delete'),
 | 
				
			||||||
 | 
					                                  onPressed: () {
 | 
				
			||||||
 | 
					                                    Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                                    deleteEntity(entity)
 | 
				
			||||||
 | 
					                                        .then((value) => {fetchEntities()});
 | 
				
			||||||
 | 
					                                  },
 | 
				
			||||||
 | 
					                                ),
 | 
				
			||||||
 | 
					                              ],
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					                          },
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					                      }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Name : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['name'].toString() ?? 'No Name Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Description : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['description'].toString() ?? 'No Description Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Active : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['active'].toString() ?? 'No Active Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					   ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget _buildLeadingIcon(String title) {
 | 
				
			||||||
 | 
					    return CircleAvatar(
 | 
				
			||||||
 | 
					      backgroundColor: Colors.blue,
 | 
				
			||||||
 | 
					      child: Text(
 | 
				
			||||||
 | 
					        title.isNotEmpty ? title[0].toUpperCase() : 'NA',
 | 
				
			||||||
 | 
					        style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _showAdditionalFieldsDialog(
 | 
				
			||||||
 | 
					    BuildContext context,
 | 
				
			||||||
 | 
					    Map<String, dynamic> entity,
 | 
				
			||||||
 | 
					  ) {
 | 
				
			||||||
 | 
					    final dateFormat = DateFormat('yyyy-MM-dd HH:mm:ss');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    showDialog(
 | 
				
			||||||
 | 
					      context: context,
 | 
				
			||||||
 | 
					      builder: (BuildContext context) {
 | 
				
			||||||
 | 
					        return AlertDialog(
 | 
				
			||||||
 | 
					          title: const Text('Additional Fields'),
 | 
				
			||||||
 | 
					          content: Column(
 | 
				
			||||||
 | 
					            crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					            mainAxisSize: MainAxisSize.min,
 | 
				
			||||||
 | 
					            children: [
 | 
				
			||||||
 | 
					              Text(
 | 
				
			||||||
 | 
					                  'Created At: ${_formatTimestamp(entity['createdAt'], dateFormat)}'),
 | 
				
			||||||
 | 
					              Text('Created By: ${entity['createdBy'] ?? 'N/A'}'),
 | 
				
			||||||
 | 
					              Text('Updated By: ${entity['updatedBy'] ?? 'N/A'}'),
 | 
				
			||||||
 | 
					              Text(
 | 
				
			||||||
 | 
					                  'Updated At: ${_formatTimestamp(entity['updatedAt'], dateFormat)}'),
 | 
				
			||||||
 | 
					              Text('Account ID: ${entity['accountId'] ?? 'N/A'}'),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					          actions: [
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Close'),
 | 
				
			||||||
 | 
					              onPressed: () {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String _formatTimestamp(dynamic timestamp, DateFormat dateFormat) {
 | 
				
			||||||
 | 
					    if (timestamp is int) {
 | 
				
			||||||
 | 
					      final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp);
 | 
				
			||||||
 | 
					      return dateFormat.format(dateTime);
 | 
				
			||||||
 | 
					    } else if (timestamp is String) {
 | 
				
			||||||
 | 
					      return timestamp;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      return 'N/A';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
@ -0,0 +1,190 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../Testingone_viewModel/Testingone_view_model_screen.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 testingoneUpdateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					    final Map<String, dynamic> entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  testingoneUpdateEntityScreen({required this.entity});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _testingoneUpdateEntityScreenState createState() => _testingoneUpdateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _testingoneUpdateEntityScreenState extends State<testingoneUpdateEntityScreen> {
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool isactive = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestingoneViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					isactive = widget.entity['active'] ?? false; // Set initial value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestingoneViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    return Scaffold(
 | 
				
			||||||
 | 
					      appBar: CustomAppBar(
 | 
				
			||||||
 | 
					          height: getVerticalSize(49),
 | 
				
			||||||
 | 
					          leadingWidth: 40,
 | 
				
			||||||
 | 
					          leading: AppbarImage(
 | 
				
			||||||
 | 
					              height: getSize(24),
 | 
				
			||||||
 | 
					              width: getSize(24),
 | 
				
			||||||
 | 
					              svgPath: ImageConstant.imgArrowleftBlueGray900,
 | 
				
			||||||
 | 
					              margin: getMargin(left: 16, top: 12, bottom: 13),
 | 
				
			||||||
 | 
					              onTap: () {
 | 
				
			||||||
 | 
					                Navigator.pop(context);
 | 
				
			||||||
 | 
					              }),
 | 
				
			||||||
 | 
					          centerTitle: true,
 | 
				
			||||||
 | 
					          title: AppbarTitle(text: "Update Testingone"),        actions: [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					      body:  SingleChildScrollView(
 | 
				
			||||||
 | 
					        child: Padding(
 | 
				
			||||||
 | 
					          padding: const EdgeInsets.all(16),
 | 
				
			||||||
 | 
					          child: Form(
 | 
				
			||||||
 | 
					            key: _formKey,
 | 
				
			||||||
 | 
					            child: Column(
 | 
				
			||||||
 | 
					              children: [
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					                        ReusableTextField(
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					                            label: "Please Enter Name",
 | 
				
			||||||
 | 
					                            initialValue: widget.entity['name'] ?? '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // ValidationProperties
 | 
				
			||||||
 | 
					                            onSaved: (value) => widget.entity['name'] = value,
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                          SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ReusableTextField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['description'],
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['description']= value,
 | 
				
			||||||
 | 
					              label: "Enter Description",
 | 
				
			||||||
 | 
					              maxLines: 5,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Row(
 | 
				
			||||||
 | 
					  children: [
 | 
				
			||||||
 | 
					    Switch(
 | 
				
			||||||
 | 
					      value: isactive,
 | 
				
			||||||
 | 
					      onChanged: (newValue) {
 | 
				
			||||||
 | 
					        setState(() {
 | 
				
			||||||
 | 
					          isactive = newValue;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					  activeColor: Colors.white,
 | 
				
			||||||
 | 
					              activeTrackColor: Colors.green,
 | 
				
			||||||
 | 
					              inactiveThumbColor: Colors.white,
 | 
				
			||||||
 | 
					              inactiveTrackColor: Colors.red,
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    const SizedBox(width: 8),
 | 
				
			||||||
 | 
					    const Text('Active'),
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					          CustomButton(
 | 
				
			||||||
 | 
					                  height: getVerticalSize(50),
 | 
				
			||||||
 | 
					                  text: "Update",
 | 
				
			||||||
 | 
					                  margin: getMargin(top: 24, bottom: 5),
 | 
				
			||||||
 | 
					                  onTap: () async {
 | 
				
			||||||
 | 
					                    if (_formKey.currentState!.validate()) {
 | 
				
			||||||
 | 
					                      _formKey.currentState!.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					widget.entity['active'] = isactive;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					                        try {
 | 
				
			||||||
 | 
					                        await provider.updateEntity(
 | 
				
			||||||
 | 
					                              widget.entity[
 | 
				
			||||||
 | 
					                                  'id'], // Assuming 'id' is the key in your entity map
 | 
				
			||||||
 | 
					                              widget.entity);   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        Navigator.pop(context);
 | 
				
			||||||
 | 
					                      } catch (e) {
 | 
				
			||||||
 | 
					                        // ignore: use_build_context_synchronously
 | 
				
			||||||
 | 
					                        showDialog(
 | 
				
			||||||
 | 
					                          context: context,
 | 
				
			||||||
 | 
					                          builder: (BuildContext context) {
 | 
				
			||||||
 | 
					                            return AlertDialog(
 | 
				
			||||||
 | 
					                              title: const Text('Error'),
 | 
				
			||||||
 | 
					                              content:
 | 
				
			||||||
 | 
					                              Text('Failed to update Testingone: $e'),
 | 
				
			||||||
 | 
					                              actions: [
 | 
				
			||||||
 | 
					                                TextButton(
 | 
				
			||||||
 | 
					                                  child: const Text('OK'),
 | 
				
			||||||
 | 
					                                  onPressed: () {
 | 
				
			||||||
 | 
					                                    Navigator.of(context).pop();
 | 
				
			||||||
 | 
					 },
 | 
				
			||||||
 | 
					                                  ),
 | 
				
			||||||
 | 
					                                ],
 | 
				
			||||||
 | 
					                              );
 | 
				
			||||||
 | 
					                            },
 | 
				
			||||||
 | 
					                          );
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                      }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					       ),
 | 
				
			||||||
 | 
					       );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					import 'package:dio/dio.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/base_network_service.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/network_api_service.dart';
 | 
				
			||||||
 | 
					import '../../../../resources/api_constants.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestingoneRepoScreen {
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					  final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<dynamic> getEntities() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response =
 | 
				
			||||||
 | 
					          await _helper.getGetApiResponse('$baseUrl/Testingone/Testingone');
 | 
				
			||||||
 | 
					      return response;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to get all entities: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<dynamic> getAllWithPagination(int page, int size) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getGetApiResponse(
 | 
				
			||||||
 | 
					          '$baseUrl/Testingone/Testingone/getall/page?page=$page&size=$size');
 | 
				
			||||||
 | 
					      return response;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to get all without pagination: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<dynamic> createEntity(Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      print("in post api$entity");
 | 
				
			||||||
 | 
					      final response = await _helper.getPostApiResponse(
 | 
				
			||||||
 | 
					          '$baseUrl/Testingone/Testingone', entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      print(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return response;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to create entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> updateEntity(int entityId, Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await _helper.getPutApiResponse(
 | 
				
			||||||
 | 
					          '$baseUrl/Testingone/Testingone/$entityId', entity);
 | 
				
			||||||
 | 
					      print(entity);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity(int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await _helper
 | 
				
			||||||
 | 
					          .getDeleteApiResponse('$baseUrl/Testingone/Testingone/$entityId');
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,107 @@
 | 
				
			|||||||
 | 
					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 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import '../Testingone_Repo/Testingone_repo_screen.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestingoneViewModelScreen extends ChangeNotifier{
 | 
				
			||||||
 | 
					  final TestingoneRepoScreen repo = TestingoneRepoScreen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<List<Map<String, dynamic>>> getEntities() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.getEntities();
 | 
				
			||||||
 | 
					      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 repo.getAllWithPagination(page, size); // ✅ Use await
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      print('with pagination res - $response');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // ✅ Ensure response is a Map<String, dynamic>
 | 
				
			||||||
 | 
					      if (response is! Map<String, dynamic>) {
 | 
				
			||||||
 | 
					        throw Exception('Unexpected response format: $response');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // ✅ Extract 'content' and ensure it's a list
 | 
				
			||||||
 | 
					      final entities = (response['content'] as List)
 | 
				
			||||||
 | 
					          .cast<Map<String, dynamic>>() // ✅ Ensure list of maps
 | 
				
			||||||
 | 
					          .toList();
 | 
				
			||||||
 | 
					      return entities;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      print(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");
 | 
				
			||||||
 | 
					      // Wait for API response
 | 
				
			||||||
 | 
					      final responseData =
 | 
				
			||||||
 | 
					          await repo.createEntity(entity) as Map<String, dynamic>;
 | 
				
			||||||
 | 
					      print('after value - $responseData');
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: "Added Successfully", toastType: ToastType.success);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return responseData; // Return the data AFTER it is received
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      print("error--$error");
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: "Got Error", toastType: ToastType.error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      throw Exception(
 | 
				
			||||||
 | 
					          'Failed to Create Entity: $error'); // Properly rethrow the error
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  } 
 | 
				
			||||||
 | 
					  Future<void> updateEntity(int entityId, Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      repo.updateEntity(entityId, entity).then((value) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					            message: "Updated Successfully", toastType: ToastType.success);
 | 
				
			||||||
 | 
					      }).onError(
 | 
				
			||||||
 | 
					        (error, stackTrace) {
 | 
				
			||||||
 | 
					          print("error--$error");
 | 
				
			||||||
 | 
					          ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					              message: "Got Error", toastType: ToastType.error);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      print(entity);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity(int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      repo.deleteEntity(entityId).then((value) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					            message: "Deleted Successfully", toastType: ToastType.success);
 | 
				
			||||||
 | 
					      }).onError(
 | 
				
			||||||
 | 
					        (error, stackTrace) {
 | 
				
			||||||
 | 
					          print("error--$error");
 | 
				
			||||||
 | 
					          ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					              message: "Got Error", toastType: ToastType.error);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,3 +1,6 @@
 | 
				
			|||||||
 | 
					import '../../Entity/basicp1/Testingone/TestingoneView/Testingone_entity_list_screen.dart';
 | 
				
			||||||
 | 
					import '../../Entity/basicp1/Testingone/Testingone_viewModel/Testingone_view_model_screen.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:base_project/utils/image_constant.dart';
 | 
					import 'package:base_project/utils/image_constant.dart';
 | 
				
			||||||
import 'package:base_project/commans/widgets/custome_drawe_item.dart';
 | 
					import 'package:base_project/commans/widgets/custome_drawe_item.dart';
 | 
				
			||||||
import 'package:base_project/resources/app_colors.dart';
 | 
					import 'package:base_project/resources/app_colors.dart';
 | 
				
			||||||
@ -70,6 +73,23 @@ class MyCustomDrawer extends StatelessWidget {
 | 
				
			|||||||
),
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NEW MENU
 | 
					// NEW MENU
 | 
				
			||||||
 | 
					DrawerItem(
 | 
				
			||||||
 | 
					            color: AppColors.primary,
 | 
				
			||||||
 | 
					            icon: Icons.chat_bubble,
 | 
				
			||||||
 | 
					            title: 'Testingone',
 | 
				
			||||||
 | 
					            onTap: () {
 | 
				
			||||||
 | 
					              Navigator.push(
 | 
				
			||||||
 | 
					                context,
 | 
				
			||||||
 | 
					                MaterialPageRoute(
 | 
				
			||||||
 | 
					                  builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					                    create: (context) => TestingoneViewModelScreen(),
 | 
				
			||||||
 | 
					                    child: testingone_entity_list_screen(),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              );
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DrawerItem(
 | 
					DrawerItem(
 | 
				
			||||||
icon: Icons.logout,
 | 
					icon: Icons.logout,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user