build_app
This commit is contained in:
		
							parent
							
								
									397228c18d
								
							
						
					
					
						commit
						8a76c2527f
					
				@ -69,6 +69,9 @@ public class BuilderService {
 | 
				
			|||||||
		executeDump(true);
 | 
							executeDump(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// ADD OTHER SERVICE
 | 
							// ADD OTHER SERVICE
 | 
				
			||||||
 | 
					addCustomMenu( "Testss","Testss",  "Transcations"); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		System.out.println("dashboard and menu inserted...");
 | 
							System.out.println("dashboard and menu inserted...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,187 @@
 | 
				
			|||||||
 | 
					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.Testss;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Services.TestssService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/Testss")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class TestssController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private TestssService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Testss")
 | 
				
			||||||
 | 
							  public Testss Savedata(@RequestBody Testss data) {
 | 
				
			||||||
 | 
							Testss save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Testss/{id}")
 | 
				
			||||||
 | 
						public  Testss update(@RequestBody Testss data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testss update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Testss/getall/page")
 | 
				
			||||||
 | 
						public Page<Testss> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Testss> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Testss")
 | 
				
			||||||
 | 
						public List<Testss> getdetails() {
 | 
				
			||||||
 | 
							 List<Testss> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Testss")
 | 
				
			||||||
 | 
						public List<Testss> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Testss> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Testss/{id}")
 | 
				
			||||||
 | 
						public  Testss  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testss  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Testss/{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,187 @@
 | 
				
			|||||||
 | 
					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.Testss;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Services.TestssService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/token/Testss")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class tokenFree_TestssController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private TestssService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Testss")
 | 
				
			||||||
 | 
							  public Testss Savedata(@RequestBody Testss data) {
 | 
				
			||||||
 | 
							Testss save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Testss/{id}")
 | 
				
			||||||
 | 
						public  Testss update(@RequestBody Testss data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testss update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Testss/getall/page")
 | 
				
			||||||
 | 
						public Page<Testss> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Testss> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Testss")
 | 
				
			||||||
 | 
						public List<Testss> getdetails() {
 | 
				
			||||||
 | 
							 List<Testss> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Testss")
 | 
				
			||||||
 | 
						public List<Testss> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Testss> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Testss/{id}")
 | 
				
			||||||
 | 
						public  Testss  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testss  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Testss/{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,81 @@
 | 
				
			|||||||
 | 
					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    Testss extends Extension { 
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Id
 | 
				
			||||||
 | 
					 @GeneratedValue(strategy = GenerationType.IDENTITY)
 | 
				
			||||||
 | 
					 private Integer id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private int number_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 private String phone_number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Column(length = 2000)
 | 
				
			||||||
 | 
					private String paragraph_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String password_field;
 | 
				
			||||||
 | 
					@Transient
 | 
				
			||||||
 | 
					private String confirmpassword_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Column(length = 2000)
 | 
				
			||||||
 | 
					private String textarea_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String date_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String datetime_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String email_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private boolean toggle_switch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String url_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private int decimal_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private int percentage_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String recaptcha;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					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.Testss;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Repository
 | 
				
			||||||
 | 
					public interface  TestssRepository  extends  JpaRepository<Testss, Integer>  { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testss where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						List<Testss> findAll(Long creayedBy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testss where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						Page<Testss> findAll(Pageable page, Long creayedBy);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,203 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Services;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Repository.TestssRepository;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Entity.Testss
 | 
				
			||||||
 | 
					;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 TestssService {
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
					private TestssRepository Repository;
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private AppUserServiceImpl userService; 
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
						private RealmService realmService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testss Savedata(Testss data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setCreatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setAccountId(getUser().getAccount().getAccount_id());
 | 
				
			||||||
 | 
					Testss save = Repository.save(data);
 | 
				
			||||||
 | 
									return save;	
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						public Page<Testss> getAllWithPagination(Pageable page) {
 | 
				
			||||||
 | 
							return Repository.findAll(page, getUser().getUserId());
 | 
				
			||||||
 | 
						}			
 | 
				
			||||||
 | 
					public List<Testss> getdetails() {  
 | 
				
			||||||
 | 
							List<Realm> realm = realmService.findByUserId(getUser().getUserId());
 | 
				
			||||||
 | 
					List<Testss> all = Repository.findAll(getUser().getUserId());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return all ;		}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testss getdetailsbyId(Integer id) {
 | 
				
			||||||
 | 
						return Repository.findById(id).get();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void delete_by_id(Integer id) {
 | 
				
			||||||
 | 
					 Repository.deleteById(id);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testss update(Testss data,Integer id) {
 | 
				
			||||||
 | 
						Testss old = Repository.findById(id).get();
 | 
				
			||||||
 | 
					old.setName(data.getName());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setNumber_field(data.getNumber_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setPhone_number(data.getPhone_number());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setParagraph_field(data.getParagraph_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setPassword_field(data.getPassword_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setTextarea_field(data.getTextarea_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setDate_field(data.getDate_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setDatetime_field(data.getDatetime_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setEmail_field(data.getEmail_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setToggle_switch (data.isToggle_switch());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setUrl_field(data.getUrl_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setDecimal_field(data.getDecimal_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setPercentage_field(data.getPercentage_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setRecaptcha(data.getRecaptcha());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Testss test = Repository.save(old);
 | 
				
			||||||
 | 
							data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
					  return test;} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public AppUser getUser() {
 | 
				
			||||||
 | 
							AppUser user = userService.getLoggedInUser();
 | 
				
			||||||
 | 
							return user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}}
 | 
				
			||||||
							
								
								
									
										2
									
								
								testflutter001-dbs-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								testflutter001-dbs-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					CREATE TABLE dbs.Testss(id BIGINT NOT NULL AUTO_INCREMENT, number_field int, datetime_field VARCHAR(400), toggle_switch VARCHAR(400), percentage_field int, phone_number VARCHAR(400), email_field VARCHAR(400), url_field VARCHAR(400), name VARCHAR(400), textarea_field VARCHAR(400), paragraph_field VARCHAR(400), recaptcha VARCHAR(400), password_field VARCHAR(400), date_field Date, decimal_field int,  PRIMARY KEY (id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,128 @@
 | 
				
			|||||||
 | 
					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 testssApiService {
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Future<List<Map<String, dynamic>>> getEntities() async {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getGetApiResponse('$baseUrl/Testss/Testss');
 | 
				
			||||||
 | 
					      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/Testss/Testss/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/Testss/Testss', 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/Testss/Testss/$entityId',
 | 
				
			||||||
 | 
					      entity);                print(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity( int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					 await _helper.getDeleteApiResponse('$baseUrl/Testss/Testss/$entityId');
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,707 @@
 | 
				
			|||||||
 | 
					// 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 '../Testss_viewModel/Testss_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 testssCreateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					  const testssCreateEntityScreen({super.key});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _testssCreateEntityScreenState createState() => _testssCreateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _testssCreateEntityScreenState extends State<testssCreateEntityScreen> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Map<String, dynamic> formData = {};
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					  final TextEditingController nameController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController number_fieldController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController phone_numberController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController paragraph_fieldController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool _passwordVisiblepassword_field = false;
 | 
				
			||||||
 | 
					  bool _isPasswordValidpassword_field = true;
 | 
				
			||||||
 | 
					  bool _doPasswordsMatchpassword_field = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String _passwordpassword_field = ''; // To store the first password
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _validatePasswordpassword_field(String password) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      _isPasswordValidpassword_field = password.isNotEmpty;
 | 
				
			||||||
 | 
					      _passwordpassword_field = password; // Store the password for later comparison
 | 
				
			||||||
 | 
					      _doPasswordsMatchpassword_field = true; // Reset match flag on new input
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _validateConfirmPasswordpassword_field(String confirmPassword) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      _doPasswordsMatchpassword_field = confirmPassword == _passwordpassword_field;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController textarea_fieldController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TextEditingController date_field = TextEditingController(); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 DateTime selectedDatedate_field = DateTime.now();
 | 
				
			||||||
 | 
					  Future<void> _selectDatedate_field(BuildContext context) async {
 | 
				
			||||||
 | 
					    final DateTime? picked = await showDatePicker(
 | 
				
			||||||
 | 
					      context: context,
 | 
				
			||||||
 | 
					      initialDate: selectedDatedate_field,
 | 
				
			||||||
 | 
					      firstDate: DateTime(2000),
 | 
				
			||||||
 | 
					      lastDate: DateTime(2101),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    if (picked != null && picked != selectedDatedate_field) {
 | 
				
			||||||
 | 
					      setState(() {
 | 
				
			||||||
 | 
					        selectedDatedate_field = picked;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController datetime_fieldController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool _isemail_fieldEmailValid = true;
 | 
				
			||||||
 | 
					  void _validateemail_fieldEmail(String email) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      _isemail_fieldEmailValid = RegExp(r'^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$').hasMatch(email);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool _isSwitchedtoggle_switch = false;
 | 
				
			||||||
 | 
					bool toggle_switch = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void _toggleSwitchtoggle_switch(bool value) {
 | 
				
			||||||
 | 
					  setState(() {
 | 
				
			||||||
 | 
					    _isSwitchedtoggle_switch = value;
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool _isUrlValidurl_field = true;
 | 
				
			||||||
 | 
					  void _validateUrlurl_field(String url) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      _isUrlValidurl_field = Uri.parse(url).isAbsolute;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController decimal_fieldController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final TextEditingController percentage_fieldController = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					late String recaptchacaptcha;
 | 
				
			||||||
 | 
					  TextEditingController _recaptchaController = TextEditingController();
 | 
				
			||||||
 | 
					  final GlobalKey<ScaffoldMessengerState> _recaptchascaffoldKey = GlobalKey<ScaffoldMessengerState>();
 | 
				
			||||||
 | 
					void generaterecaptchaCaptcha() {
 | 
				
			||||||
 | 
					    final random = Random();
 | 
				
			||||||
 | 
					    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
 | 
				
			||||||
 | 
					    recaptchacaptcha = String.fromCharCodes(Iterable.generate(
 | 
				
			||||||
 | 
					        6, (_) => chars.codeUnitAt(random.nextInt(chars.length))));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void verifyrecaptchaCaptcha() {
 | 
				
			||||||
 | 
					    print("Verifying captcha");
 | 
				
			||||||
 | 
					    if (_recaptchaController.text.isEmpty) {
 | 
				
			||||||
 | 
					      print("recaptcha is empty");
 | 
				
			||||||
 | 
					      recaptchaSnackbar('Please enter CAPTCHA', success: false);
 | 
				
			||||||
 | 
					    } else if (_recaptchaController.text != recaptchacaptcha) {
 | 
				
			||||||
 | 
					      print("captcha is not matching");
 | 
				
			||||||
 | 
					      recaptchaSnackbar('CAPTCHA verification failed', success: false);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      print("captcha is verified");
 | 
				
			||||||
 | 
					      recaptchaSnackbar('CAPTCHA Verified', success: true);
 | 
				
			||||||
 | 
					      // Navigate to another screen after verification
 | 
				
			||||||
 | 
					      // Example navigation to a new screen
 | 
				
			||||||
 | 
					     // Navigator.push(
 | 
				
			||||||
 | 
					       // context,
 | 
				
			||||||
 | 
					       // MaterialPageRoute(builder: (context) => NextScreen()),
 | 
				
			||||||
 | 
					    //  );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void recaptchaSnackbar(String message, {required bool success}) {
 | 
				
			||||||
 | 
					    ScaffoldMessenger.of(context).showSnackBar(
 | 
				
			||||||
 | 
					      SnackBar(
 | 
				
			||||||
 | 
					        content: Text(message),
 | 
				
			||||||
 | 
					        backgroundColor: success ? Colors.green : Colors.red,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState(); 
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestssViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   generaterecaptchaCaptcha();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestssViewModelScreen>(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 Testss"),
 | 
				
			||||||
 | 
					 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: number_fieldController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              onSaved:(value) => formData['number_field'] = value ,
 | 
				
			||||||
 | 
					              label: "Enter Number Field",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.allow((RegExp(r'[0-9]'))),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					             // ValidationProperties     
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SizedBox(height: 16), 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					              onSaved:(value) => formData['phone_number'] = value ,
 | 
				
			||||||
 | 
					              label: "Enter Phone Number",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					              FilteringTextInputFormatter.digitsOnly,
 | 
				
			||||||
 | 
					LengthLimitingTextInputFormatter(
 | 
				
			||||||
 | 
					                        10), // Limit input to 10 digits
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					              validator: (value) {
 | 
				
			||||||
 | 
					                if (value == null || value.isEmpty) {
 | 
				
			||||||
 | 
					                  return 'Please enter Phone Number';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (value.length != 10) {
 | 
				
			||||||
 | 
					                      return 'Phone number must be exactly 10 digits';
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					                  controller: paragraph_fieldController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              onSaved:(value) => formData['paragraph_field'] = value ,
 | 
				
			||||||
 | 
					              label: "Enter Paragraph Field",
 | 
				
			||||||
 | 
					              maxLines: 5,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TextFormField(
 | 
				
			||||||
 | 
					                  obscureText: !_passwordVisiblepassword_field,
 | 
				
			||||||
 | 
					                  decoration: InputDecoration(
 | 
				
			||||||
 | 
					                    labelText: 'Password Field',
 | 
				
			||||||
 | 
					                    suffixIcon: IconButton(
 | 
				
			||||||
 | 
					                      icon: Icon(
 | 
				
			||||||
 | 
					                        _passwordVisiblepassword_field
 | 
				
			||||||
 | 
					                            ? Icons.visibility
 | 
				
			||||||
 | 
					                            : Icons.visibility_off,
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                      onPressed: () {
 | 
				
			||||||
 | 
					                        setState(() {
 | 
				
			||||||
 | 
					                          _passwordVisiblepassword_field = !_passwordVisiblepassword_field;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      },
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    errorText:
 | 
				
			||||||
 | 
					                        _isPasswordValidpassword_field ? null : 'Please enter a password',
 | 
				
			||||||
 | 
					                    border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  onSaved: (value) => formData['password_field'] = value,
 | 
				
			||||||
 | 
					                  onChanged: _validatePasswordpassword_field,
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					                const SizedBox(height: 16),
 | 
				
			||||||
 | 
					                TextFormField(
 | 
				
			||||||
 | 
					                  obscureText: !_passwordVisiblepassword_field,
 | 
				
			||||||
 | 
					                  decoration: InputDecoration(
 | 
				
			||||||
 | 
					                    labelText: 'Confirm Password Field',
 | 
				
			||||||
 | 
					                    suffixIcon: IconButton(
 | 
				
			||||||
 | 
					                      icon: Icon(
 | 
				
			||||||
 | 
					                        _passwordVisiblepassword_field
 | 
				
			||||||
 | 
					                            ? Icons.visibility
 | 
				
			||||||
 | 
					                            : Icons.visibility_off,
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                      onPressed: () {
 | 
				
			||||||
 | 
					                        setState(() {
 | 
				
			||||||
 | 
					                          _passwordVisiblepassword_field = !_passwordVisiblepassword_field;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      },
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    errorText:
 | 
				
			||||||
 | 
					                        _doPasswordsMatchpassword_field ? null : 'Passwords do not match',
 | 
				
			||||||
 | 
					                    border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  onChanged: _validateConfirmPasswordpassword_field,
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					                  controller: textarea_fieldController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onSaved:(value) => formData['textarea_field'] = value ,
 | 
				
			||||||
 | 
					  label: "Enter Textarea Field",
 | 
				
			||||||
 | 
					  maxLines: 5,
 | 
				
			||||||
 | 
					// ValidationProperties
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                       SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableDatePickerField(
 | 
				
			||||||
 | 
					                label:' Date Field', controller: date_field 
 | 
				
			||||||
 | 
					,
 | 
				
			||||||
 | 
					                                      onSaved: (value) => formData['date_field'] = value,),
 | 
				
			||||||
 | 
					const SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					                  controller: datetime_fieldController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onSaved:(value) => formData['datetime_field'] = value ,
 | 
				
			||||||
 | 
					  label:"Enter Datetime Field",
 | 
				
			||||||
 | 
					  // ValidationProperties
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Padding(
 | 
				
			||||||
 | 
					                    padding: getPadding(top: 19),
 | 
				
			||||||
 | 
					                    child: Column(
 | 
				
			||||||
 | 
					                        crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					                        mainAxisAlignment: MainAxisAlignment.start,
 | 
				
			||||||
 | 
					                        children: [
 | 
				
			||||||
 | 
					                          Text("Email Field",
 | 
				
			||||||
 | 
					                              overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                              textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                              style: AppStyle.txtGilroyMedium16Bluegray900),
 | 
				
			||||||
 | 
					                          CustomTextFormField(
 | 
				
			||||||
 | 
					                              hintText: "Enter Email Field",
 | 
				
			||||||
 | 
					    errorText: _isemail_fieldEmailValid ? null : 'Please enter a valid email',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					onsaved: (value) => formData['email_field'] = value,
 | 
				
			||||||
 | 
					  onChanged: (value) {
 | 
				
			||||||
 | 
					    _validateemail_fieldEmail(value);
 | 
				
			||||||
 | 
					  },                            
 | 
				
			||||||
 | 
					  margin: getMargin(top: 6))
 | 
				
			||||||
 | 
					                        ])),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Switch(
 | 
				
			||||||
 | 
					              value: _isSwitchedtoggle_switch,
 | 
				
			||||||
 | 
					              onChanged: _toggleSwitchtoggle_switch,
 | 
				
			||||||
 | 
					              activeColor: Colors.white,
 | 
				
			||||||
 | 
					              activeTrackColor: Colors.green,
 | 
				
			||||||
 | 
					              inactiveThumbColor: Colors.white,
 | 
				
			||||||
 | 
					              inactiveTrackColor: Colors.red,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Padding(
 | 
				
			||||||
 | 
					                    padding: getPadding(top: 19),
 | 
				
			||||||
 | 
					                    child: Column(
 | 
				
			||||||
 | 
					                        crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					                        mainAxisAlignment: MainAxisAlignment.start,
 | 
				
			||||||
 | 
					                        children: [
 | 
				
			||||||
 | 
					                          Text("Url Field",
 | 
				
			||||||
 | 
					                              overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                              textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                              style: AppStyle.txtGilroyMedium16Bluegray900),
 | 
				
			||||||
 | 
					                          CustomTextFormField(
 | 
				
			||||||
 | 
					                              hintText: "Enter Url Field",
 | 
				
			||||||
 | 
					    errorText: _isUrlValidurl_field ? null : 'Please enter a valid URL',
 | 
				
			||||||
 | 
					  keyboardType: TextInputType.url,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              onsaved: (value) => formData['url_field'] = value,
 | 
				
			||||||
 | 
					  onChanged: _validateUrlurl_field,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              margin: getMargin(top: 6))
 | 
				
			||||||
 | 
					                        ])),
 | 
				
			||||||
 | 
					SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					                  controller: decimal_fieldController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              onSaved:(value) => formData['decimal_field'] = value ,
 | 
				
			||||||
 | 
					              label: "Enter Decimal Field",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.allow((RegExp(r'[0-9]'))),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					             // ValidationProperties     
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SizedBox(height: 16), 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					                  controller: percentage_fieldController,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              onSaved:(value) => formData['percentage_field'] = value ,
 | 
				
			||||||
 | 
					              label: "Enter Percentage Field",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.allow((RegExp(r'[0-9]'))),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					             // ValidationProperties     
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SizedBox(height: 16), 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Padding(
 | 
				
			||||||
 | 
					        padding: const EdgeInsets.all(16.0),
 | 
				
			||||||
 | 
					        child: Column(
 | 
				
			||||||
 | 
					          crossAxisAlignment: CrossAxisAlignment.center,
 | 
				
			||||||
 | 
					          children: <Widget>[
 | 
				
			||||||
 | 
					            Text(
 | 
				
			||||||
 | 
					              'Enter the following CAPTCHA:',
 | 
				
			||||||
 | 
					              style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            SizedBox(height: 16),
 | 
				
			||||||
 | 
					            Container(
 | 
				
			||||||
 | 
					              decoration: BoxDecoration(
 | 
				
			||||||
 | 
					                color: Colors.grey[300],
 | 
				
			||||||
 | 
					                borderRadius: BorderRadius.circular(10),
 | 
				
			||||||
 | 
					                boxShadow: [
 | 
				
			||||||
 | 
					                  BoxShadow(
 | 
				
			||||||
 | 
					                    color: Colors.black.withOpacity(0.3),
 | 
				
			||||||
 | 
					                    spreadRadius: 2,
 | 
				
			||||||
 | 
					                    blurRadius: 5,
 | 
				
			||||||
 | 
					                    offset: Offset(0, 3),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: <Widget>[
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    recaptchacaptcha,
 | 
				
			||||||
 | 
					                    style: TextStyle(
 | 
				
			||||||
 | 
					                      fontSize: 28,
 | 
				
			||||||
 | 
					                      fontWeight: FontWeight.bold,
 | 
				
			||||||
 | 
					                      color: Colors.blue,
 | 
				
			||||||
 | 
					                      letterSpacing: 4,
 | 
				
			||||||
 | 
					                      fontFamily: 'Roboto',
 | 
				
			||||||
 | 
					                      decoration: TextDecoration.none,
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  IconButton(
 | 
				
			||||||
 | 
					                    icon: Icon(Icons.refresh),
 | 
				
			||||||
 | 
					                    onPressed: () {
 | 
				
			||||||
 | 
					                      setState(() {
 | 
				
			||||||
 | 
					                        generaterecaptchaCaptcha();
 | 
				
			||||||
 | 
					                      });
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            SizedBox(height: 24),
 | 
				
			||||||
 | 
					            TextFormField(
 | 
				
			||||||
 | 
					              controller: _recaptchaController,
 | 
				
			||||||
 | 
					              decoration: InputDecoration(
 | 
				
			||||||
 | 
					                labelText: 'Enter CAPTCHA',
 | 
				
			||||||
 | 
					                border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            SizedBox(height: 24),
 | 
				
			||||||
 | 
					            ElevatedButton(
 | 
				
			||||||
 | 
					              onPressed: verifyrecaptchaCaptcha,
 | 
				
			||||||
 | 
					              child: Text('Verify CAPTCHA'),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   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['toggle_switch'] = toggle_switch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					                      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 Testss: $e'),
 | 
				
			||||||
 | 
					                              actions: [
 | 
				
			||||||
 | 
					                                TextButton(
 | 
				
			||||||
 | 
					                                  child: const Text('OK'),
 | 
				
			||||||
 | 
					                                  onPressed: () {
 | 
				
			||||||
 | 
					                                    Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                                  },
 | 
				
			||||||
 | 
					                                ),
 | 
				
			||||||
 | 
					                              ],
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					                          },
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					                      }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                  },
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   ],
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					     );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,983 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					import 'Testss_create_entity_screen.dart';
 | 
				
			||||||
 | 
					import 'Testss_update_entity_screen.dart';
 | 
				
			||||||
 | 
					import '../Testss_viewModel/Testss_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 testss_entity_list_screen extends StatefulWidget {
 | 
				
			||||||
 | 
					  static const String routeName = '/entity-list';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _testss_entity_list_screenState createState() => _testss_entity_list_screenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _testss_entity_list_screenState extends State<testss_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<TestssViewModelScreen>(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 Testss: $e'),
 | 
				
			||||||
 | 
					            actions: [
 | 
				
			||||||
 | 
					              TextButton(
 | 
				
			||||||
 | 
					                child: const Text('OK'),
 | 
				
			||||||
 | 
					                onPressed: () {
 | 
				
			||||||
 | 
					                  Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					Future<void> fetchEntities() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      setState(() {
 | 
				
			||||||
 | 
					        isLoading = true;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    final provider =
 | 
				
			||||||
 | 
					          Provider.of<TestssViewModelScreen>(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 Testss 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<TestssViewModelScreen>(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['number_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['phone_number'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['paragraph_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['password_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['textarea_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['date_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['datetime_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['email_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              entity['toggle_switch'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['url_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['decimal_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['percentage_field'].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: " Testss"),
 | 
				
			||||||
 | 
					        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) => TestssViewModelScreen(),
 | 
				
			||||||
 | 
					                child: testssCreateEntityScreen(),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ).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) => TestssViewModelScreen(),
 | 
				
			||||||
 | 
					                              child: testssUpdateEntityScreen(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(
 | 
				
			||||||
 | 
					                    "Number Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['number_field'].toString() ?? 'No Number Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Phone Number : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['phone_number'].toString() ?? 'No Phone Number Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Paragraph Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['paragraph_field'].toString() ?? 'No Paragraph Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Password Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['password_field'].toString() ?? 'No Password Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Textarea Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['textarea_field'].toString() ?? 'No Textarea Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Date Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['date_field'].toString() ?? 'No Date Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Datetime Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['datetime_field'].toString() ?? 'No Datetime Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Email Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['email_field'].toString() ?? 'No Email Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "toggle switch : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['toggle_switch'].toString() ?? 'No toggle switch Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Url Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['url_field'].toString() ?? 'No Url Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Decimal Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['decimal_field'].toString() ?? 'No Decimal Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Percentage Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['percentage_field'].toString() ?? 'No Percentage Field 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,566 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../Testss_viewModel/Testss_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 testssUpdateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					    final Map<String, dynamic> entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  testssUpdateEntityScreen({required this.entity});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _testssUpdateEntityScreenState createState() => _testssUpdateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _testssUpdateEntityScreenState extends State<testssUpdateEntityScreen> {
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool _passwordVisiblepassword_field = false;
 | 
				
			||||||
 | 
					  bool _isPasswordValidpassword_field = true;
 | 
				
			||||||
 | 
					  bool _doPasswordsMatchpassword_field = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String _passwordpassword_field = ''; // To store the first password
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _validatePasswordpassword_field(String password) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      _isPasswordValidpassword_field = password.isNotEmpty;
 | 
				
			||||||
 | 
					      _passwordpassword_field = password; // Store the password for later comparison
 | 
				
			||||||
 | 
					      _doPasswordsMatchpassword_field = true; // Reset match flag on new input
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _validateConfirmPasswordpassword_field(String confirmPassword) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      _doPasswordsMatchpassword_field = confirmPassword == _passwordpassword_field;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TextEditingController date_field = TextEditingController(); 
 | 
				
			||||||
 | 
					DateTime selectedDatedate_field = DateTime.now();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Future<void> _selectDatedate_field(BuildContext context) async {
 | 
				
			||||||
 | 
					  final DateTime? picked = await showDatePicker(
 | 
				
			||||||
 | 
					    context: context,
 | 
				
			||||||
 | 
					    initialDate: selectedDatedate_field,
 | 
				
			||||||
 | 
					    firstDate: DateTime(2000),
 | 
				
			||||||
 | 
					    lastDate: DateTime(2101),
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					  print(picked);
 | 
				
			||||||
 | 
					  if (picked != null && picked != selectedDatedate_field) {
 | 
				
			||||||
 | 
					    setState(() {
 | 
				
			||||||
 | 
					      selectedDatedate_field = picked;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool _isemail_fieldEmailValid = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void _validateemail_fieldEmail(String email) {
 | 
				
			||||||
 | 
					  setState(() {
 | 
				
			||||||
 | 
					    _isemail_fieldEmailValid = RegExp(r'^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$').hasMatch(email);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool istoggle_switch = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool _isUrlValidurl_field = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void _validateUrlurl_field(String url) {
 | 
				
			||||||
 | 
					  setState(() {
 | 
				
			||||||
 | 
					    _isUrlValidurl_field= Uri.parse(url).isAbsolute;
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestssViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					istoggle_switch = widget.entity['toggle_switch'] ?? false; // Set initial value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestssViewModelScreen>(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 Testss"),        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['number_field'].toString(),
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['number_field']= value,
 | 
				
			||||||
 | 
					              label: "Enter Number Field",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.allow((RegExp(r'[0-9]'))),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					              validator: (value) {
 | 
				
			||||||
 | 
					                if (value == null || value.isEmpty) {
 | 
				
			||||||
 | 
					                  return 'Please enter a number';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ReusableTextField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['phone_number'],
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['phone_number'] = value,
 | 
				
			||||||
 | 
					              label: "Enter Phone Number",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.digitsOnly,
 | 
				
			||||||
 | 
					 LengthLimitingTextInputFormatter(
 | 
				
			||||||
 | 
					                        10), // Limit input to 10 digits
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					              validator: (value) {
 | 
				
			||||||
 | 
					                if (value == null || value.isEmpty) {
 | 
				
			||||||
 | 
					                  return 'Please enter  Phone Number';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (value.length != 10) {
 | 
				
			||||||
 | 
					                      return 'Phone number must be exactly 10 digits';
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // }),
 | 
				
			||||||
 | 
					            ReusableTextField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['paragraph_field'],
 | 
				
			||||||
 | 
					              onSaved: (value) =>  widget.entity['paragraph_field']= value,
 | 
				
			||||||
 | 
					              label: "Enter Paragraph Field",
 | 
				
			||||||
 | 
					              maxLines: 5,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TextFormField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['password_field'],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  obscureText: !_passwordVisiblepassword_field,
 | 
				
			||||||
 | 
					                  decoration: InputDecoration(
 | 
				
			||||||
 | 
					                    labelText: 'Password Field',
 | 
				
			||||||
 | 
					                    suffixIcon: IconButton(
 | 
				
			||||||
 | 
					                      icon: Icon(
 | 
				
			||||||
 | 
					                        _passwordVisiblepassword_field
 | 
				
			||||||
 | 
					                            ? Icons.visibility
 | 
				
			||||||
 | 
					                            : Icons.visibility_off,
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                      onPressed: () {
 | 
				
			||||||
 | 
					                        setState(() {
 | 
				
			||||||
 | 
					                          _passwordVisiblepassword_field = !_passwordVisiblepassword_field;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      },
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    errorText:
 | 
				
			||||||
 | 
					                        _isPasswordValidpassword_field ? null : 'Please enter a password',
 | 
				
			||||||
 | 
					                    border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  onSaved: (value) => widget.entity['password_field'] = value,
 | 
				
			||||||
 | 
					                  onChanged: _validatePasswordpassword_field,
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					                const SizedBox(height: 16),
 | 
				
			||||||
 | 
					                TextFormField(
 | 
				
			||||||
 | 
					                  obscureText: !_passwordVisiblepassword_field,
 | 
				
			||||||
 | 
					                  decoration: InputDecoration(
 | 
				
			||||||
 | 
					                    labelText: 'Confirm Password Field',
 | 
				
			||||||
 | 
					                    suffixIcon: IconButton(
 | 
				
			||||||
 | 
					                      icon: Icon(
 | 
				
			||||||
 | 
					                        _passwordVisiblepassword_field
 | 
				
			||||||
 | 
					                            ? Icons.visibility
 | 
				
			||||||
 | 
					                            : Icons.visibility_off,
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                      onPressed: () {
 | 
				
			||||||
 | 
					                        setState(() {
 | 
				
			||||||
 | 
					                          _passwordVisiblepassword_field = !_passwordVisiblepassword_field;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      },
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    errorText:
 | 
				
			||||||
 | 
					                        _doPasswordsMatchpassword_field ? null : 'Passwords do not match',
 | 
				
			||||||
 | 
					                    border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  onChanged: _validateConfirmPasswordpassword_field,
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ReusableTextField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['textarea_field'],
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['textarea_field']= value,
 | 
				
			||||||
 | 
					              label: "Enter Textarea Field",
 | 
				
			||||||
 | 
					              maxLines: 5,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 ReusableDatePickerField(label: 'Date Field', controller: date_field, initialDate: widget.entity['date_field'],
 | 
				
			||||||
 | 
					                                      onSaved: (value) => widget.entity['date_field'] = value,),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        ReusableTextField(
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					                            label: "Please Enter Datetime Field",
 | 
				
			||||||
 | 
					                            initialValue: widget.entity['datetime_field'] ?? '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // ValidationProperties
 | 
				
			||||||
 | 
					                            onSaved: (value) => widget.entity['datetime_field'] = value,
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                          SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					                    padding: getPadding(top: 19),
 | 
				
			||||||
 | 
					                    child: Column(
 | 
				
			||||||
 | 
					                        crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					                        mainAxisAlignment: MainAxisAlignment.start,
 | 
				
			||||||
 | 
					                        children: [
 | 
				
			||||||
 | 
					                          Text("Email Field",
 | 
				
			||||||
 | 
					                              overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                              textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                              style: AppStyle
 | 
				
			||||||
 | 
					                                  .txtGilroyMedium16Bluegray900),
 | 
				
			||||||
 | 
					                          CustomTextFormField(
 | 
				
			||||||
 | 
					                              hintText: "Enter Email Field",
 | 
				
			||||||
 | 
					                              initialValue: widget.entity['email_field'],
 | 
				
			||||||
 | 
					                               keyboardType: TextInputType.url,
 | 
				
			||||||
 | 
					                              errorText: _isemail_fieldEmailValid ? null : 'Please enter a valid URL',
 | 
				
			||||||
 | 
					                                onChanged: _validateemail_fieldEmail,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // ValidationProperties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              onsaved: (value) {
 | 
				
			||||||
 | 
					                                widget.entity['email_field'] = value;
 | 
				
			||||||
 | 
					                              },
 | 
				
			||||||
 | 
					                              margin: getMargin(top: 6))
 | 
				
			||||||
 | 
					                        ])),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Row(
 | 
				
			||||||
 | 
					  children: [
 | 
				
			||||||
 | 
					    Switch(
 | 
				
			||||||
 | 
					      value: istoggle_switch,
 | 
				
			||||||
 | 
					      onChanged: (newValue) {
 | 
				
			||||||
 | 
					        setState(() {
 | 
				
			||||||
 | 
					          istoggle_switch = newValue;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					  activeColor: Colors.white,
 | 
				
			||||||
 | 
					              activeTrackColor: Colors.green,
 | 
				
			||||||
 | 
					              inactiveThumbColor: Colors.white,
 | 
				
			||||||
 | 
					              inactiveTrackColor: Colors.red,
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    const SizedBox(width: 8),
 | 
				
			||||||
 | 
					    const Text('toggle switch'),
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					                    padding: getPadding(top: 19),
 | 
				
			||||||
 | 
					                    child: Column(
 | 
				
			||||||
 | 
					                        crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					                        mainAxisAlignment: MainAxisAlignment.start,
 | 
				
			||||||
 | 
					                        children: [
 | 
				
			||||||
 | 
					                          Text("Url Field",
 | 
				
			||||||
 | 
					                              overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                              textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                              style: AppStyle
 | 
				
			||||||
 | 
					                                  .txtGilroyMedium16Bluegray900),
 | 
				
			||||||
 | 
					                          CustomTextFormField(
 | 
				
			||||||
 | 
					                              hintText: "Enter Url Field",
 | 
				
			||||||
 | 
					                              initialValue: widget.entity['url_field'],
 | 
				
			||||||
 | 
					                               keyboardType: TextInputType.url,
 | 
				
			||||||
 | 
					                              errorText: _isUrlValidurl_field ? null : 'Please enter a valid URL',
 | 
				
			||||||
 | 
					                                onChanged: _validateUrlurl_field,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // ValidationProperties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              onsaved: (value) {
 | 
				
			||||||
 | 
					                                widget.entity['url_field'] = value;
 | 
				
			||||||
 | 
					                              },
 | 
				
			||||||
 | 
					                              margin: getMargin(top: 6))
 | 
				
			||||||
 | 
					                        ])),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 ReusableTextField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['decimal_field'].toString(),
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['decimal_field']= value,
 | 
				
			||||||
 | 
					              label: "Enter Decimal Field",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.allow((RegExp(r'[0-9]'))),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					              validator: (value) {
 | 
				
			||||||
 | 
					                if (value == null || value.isEmpty) {
 | 
				
			||||||
 | 
					                  return 'Please enter a number';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 ReusableTextField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['percentage_field'].toString(),
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['percentage_field']= value,
 | 
				
			||||||
 | 
					              label: "Enter Percentage Field",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.allow((RegExp(r'[0-9]'))),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					              validator: (value) {
 | 
				
			||||||
 | 
					                if (value == null || value.isEmpty) {
 | 
				
			||||||
 | 
					                  return 'Please enter a number';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        ReusableTextField(
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					                            label: "Please Enter recaptcha",
 | 
				
			||||||
 | 
					                            initialValue: widget.entity['recaptcha'] ?? '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // ValidationProperties
 | 
				
			||||||
 | 
					                            onSaved: (value) => widget.entity['recaptcha'] = value,
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                          SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					          CustomButton(
 | 
				
			||||||
 | 
					                  height: getVerticalSize(50),
 | 
				
			||||||
 | 
					                  text: "Update",
 | 
				
			||||||
 | 
					                  margin: getMargin(top: 24, bottom: 5),
 | 
				
			||||||
 | 
					                  onTap: () async {
 | 
				
			||||||
 | 
					                    if (_formKey.currentState!.validate()) {
 | 
				
			||||||
 | 
					                      _formKey.currentState!.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					widget.entity['toggle_switch'] = istoggle_switch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					                        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 Testss: $e'),
 | 
				
			||||||
 | 
					                              actions: [
 | 
				
			||||||
 | 
					                                TextButton(
 | 
				
			||||||
 | 
					                                  child: const Text('OK'),
 | 
				
			||||||
 | 
					                                  onPressed: () {
 | 
				
			||||||
 | 
					                                    Navigator.of(context).pop();
 | 
				
			||||||
 | 
					 },
 | 
				
			||||||
 | 
					                                  ),
 | 
				
			||||||
 | 
					                                ],
 | 
				
			||||||
 | 
					                              );
 | 
				
			||||||
 | 
					                            },
 | 
				
			||||||
 | 
					                          );
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                      }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					       ),
 | 
				
			||||||
 | 
					       );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					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 TestssRepoScreen {
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					  final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<dynamic> getEntities() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response =
 | 
				
			||||||
 | 
					          await _helper.getGetApiResponse('$baseUrl/Testss/Testss');
 | 
				
			||||||
 | 
					      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/Testss/Testss/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/Testss/Testss', 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/Testss/Testss/$entityId', entity);
 | 
				
			||||||
 | 
					      print(entity);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity(int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await _helper
 | 
				
			||||||
 | 
					          .getDeleteApiResponse('$baseUrl/Testss/Testss/$entityId');
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,129 @@
 | 
				
			|||||||
 | 
					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 '../Testss_Repo/Testss_repo_screen.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestssViewModelScreen extends ChangeNotifier{
 | 
				
			||||||
 | 
					  final TestssRepoScreen repo = TestssRepoScreen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  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/Testss/TestssView/Testss_entity_list_screen.dart';
 | 
				
			||||||
 | 
					import '../../Entity/basicp1/Testss/Testss_viewModel/Testss_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';
 | 
				
			||||||
@ -9,79 +12,96 @@ import 'package:flutter_svg/svg.dart';
 | 
				
			|||||||
import 'package:provider/provider.dart';
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MyCustomDrawer extends StatelessWidget {
 | 
					class MyCustomDrawer extends StatelessWidget {
 | 
				
			||||||
  const MyCustomDrawer({super.key});
 | 
					const MyCustomDrawer({super.key});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					@override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					Widget build(BuildContext context) {
 | 
				
			||||||
    final email = UserManager().email;
 | 
					final email = UserManager().email;
 | 
				
			||||||
    final userName = UserManager().userName;
 | 
					final userName = UserManager().userName;
 | 
				
			||||||
    final provider = Provider.of<ProfileViewModel>(context, listen: false);
 | 
					final provider = Provider.of<ProfileViewModel>(context, listen: false);
 | 
				
			||||||
    return Drawer(
 | 
					return Drawer(
 | 
				
			||||||
      child: ListView(
 | 
					child: ListView(
 | 
				
			||||||
        padding: EdgeInsets.zero,
 | 
					padding: EdgeInsets.zero,
 | 
				
			||||||
        children: <Widget>[
 | 
					children: <Widget>[
 | 
				
			||||||
          UserAccountsDrawerHeader(
 | 
					UserAccountsDrawerHeader(
 | 
				
			||||||
            decoration: const BoxDecoration(
 | 
					decoration: const BoxDecoration(
 | 
				
			||||||
              color: AppColors.primary,
 | 
					color: AppColors.primary,
 | 
				
			||||||
            ),
 | 
					),
 | 
				
			||||||
            currentAccountPicture: CircleAvatar(
 | 
					currentAccountPicture: CircleAvatar(
 | 
				
			||||||
              radius: 60,
 | 
					radius: 60,
 | 
				
			||||||
              backgroundColor: AppColors.primary.withOpacity(0.3),
 | 
					backgroundColor: AppColors.primary.withOpacity(0.3),
 | 
				
			||||||
              backgroundImage: provider.profileImageBytes != null
 | 
					backgroundImage: provider.profileImageBytes != null
 | 
				
			||||||
                  ? MemoryImage(provider.profileImageBytes!)
 | 
					? MemoryImage(provider.profileImageBytes!)
 | 
				
			||||||
                  : null,
 | 
					: null,
 | 
				
			||||||
              child: provider.profileImageBytes != null
 | 
					child: provider.profileImageBytes != null
 | 
				
			||||||
                  ? null // Use backgroundImage for the actual image, so child should be null
 | 
					? null // Use backgroundImage for the actual image, so child should be null
 | 
				
			||||||
                  : SvgPicture.asset(
 | 
					: SvgPicture.asset(
 | 
				
			||||||
                      ImageConstant.userProfileImg, // Placeholder SVG asset
 | 
					ImageConstant.userProfileImg, // Placeholder SVG asset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AppImages.userProfileImg, // Placeholder SVG asset
 | 
					// AppImages.userProfileImg, // Placeholder SVG asset
 | 
				
			||||||
                      width: 60, // Adjust to fit the CircleAvatar
 | 
					width: 60, // Adjust to fit the CircleAvatar
 | 
				
			||||||
                      height: 60,
 | 
					height: 60,
 | 
				
			||||||
                    ),
 | 
					),
 | 
				
			||||||
            ),
 | 
					),
 | 
				
			||||||
            accountName: Text("Hello, $userName"),
 | 
					accountName: Text("Hello, $userName"),
 | 
				
			||||||
            accountEmail: Text(email.toString()),
 | 
					accountEmail: Text(email.toString()),
 | 
				
			||||||
          ),
 | 
					),
 | 
				
			||||||
          DrawerItem(
 | 
					DrawerItem(
 | 
				
			||||||
            color: AppColors.primary,
 | 
					color: AppColors.primary,
 | 
				
			||||||
            icon: Icons.person,
 | 
					icon: Icons.person,
 | 
				
			||||||
            title: 'Profile',
 | 
					title: 'Profile',
 | 
				
			||||||
            onTap: () {
 | 
					onTap: () {
 | 
				
			||||||
              Navigator.pushNamed(context, RouteNames.profileView);
 | 
					Navigator.pushNamed(context, RouteNames.profileView);
 | 
				
			||||||
            },
 | 
					},
 | 
				
			||||||
          ),
 | 
					),
 | 
				
			||||||
          DrawerItem(
 | 
					DrawerItem(
 | 
				
			||||||
            color: AppColors.primary,
 | 
					color: AppColors.primary,
 | 
				
			||||||
            icon: Icons.system_security_update,
 | 
					icon: Icons.system_security_update,
 | 
				
			||||||
            title: 'System Parameters',
 | 
					title: 'System Parameters',
 | 
				
			||||||
            onTap: () {
 | 
					onTap: () {
 | 
				
			||||||
// Add navigation or other logic here
 | 
					// Add navigation or other logic here
 | 
				
			||||||
              Navigator.pushNamed(context, RouteNames.systemParamsView);
 | 
					Navigator.pushNamed(context, RouteNames.systemParamsView);
 | 
				
			||||||
            },
 | 
					},
 | 
				
			||||||
          ),
 | 
					),
 | 
				
			||||||
          DrawerItem(
 | 
					DrawerItem(
 | 
				
			||||||
            color: AppColors.primary,
 | 
					color: AppColors.primary,
 | 
				
			||||||
            icon: Icons.password,
 | 
					icon: Icons.password,
 | 
				
			||||||
            title: 'change password',
 | 
					title: 'change password',
 | 
				
			||||||
            onTap: () {
 | 
					onTap: () {
 | 
				
			||||||
              Navigator.pushNamed(context, RouteNames.changePasswordView);
 | 
					Navigator.pushNamed(context, RouteNames.changePasswordView);
 | 
				
			||||||
            },
 | 
					},
 | 
				
			||||||
          ),
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NEW MENU
 | 
					// NEW MENU
 | 
				
			||||||
 | 
					DrawerItem(
 | 
				
			||||||
          DrawerItem(
 | 
					            color: AppColors.primary,
 | 
				
			||||||
            icon: Icons.logout,
 | 
					            icon: Icons.chat_bubble,
 | 
				
			||||||
            color: Colors.red,
 | 
					            title: 'Testss',
 | 
				
			||||||
            title: 'Logout',
 | 
					            onTap: () {
 | 
				
			||||||
            onTap: () async {
 | 
					              Navigator.push(
 | 
				
			||||||
              await UserManager().clearUser();
 | 
					                context,
 | 
				
			||||||
              Navigator.pushReplacementNamed(context, RouteNames.splashView);
 | 
					                MaterialPageRoute(
 | 
				
			||||||
 | 
					                  builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					                    create: (context) => TestssViewModelScreen(),
 | 
				
			||||||
 | 
					                    child: testss_entity_list_screen(),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              );
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
        ],
 | 
					
 | 
				
			||||||
      ),
 | 
					
 | 
				
			||||||
    );
 | 
					DrawerItem(
 | 
				
			||||||
  }
 | 
					icon: Icons.logout,
 | 
				
			||||||
 | 
					color: Colors.red,
 | 
				
			||||||
 | 
					title: 'Logout',
 | 
				
			||||||
 | 
					onTap: () async {
 | 
				
			||||||
 | 
					await UserManager().clearUser();
 | 
				
			||||||
 | 
					Navigator.pushReplacementNamed(context, RouteNames.splashView);
 | 
				
			||||||
 | 
					},
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					],
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user