build_app
This commit is contained in:
		
							parent
							
								
									db6c601805
								
							
						
					
					
						commit
						07ff479d0c
					
				@ -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,179 @@
 | 
				
			|||||||
 | 
					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,179 @@
 | 
				
			|||||||
 | 
					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,84 @@
 | 
				
			|||||||
 | 
					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 String selectstat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 private String radio_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					private boolean q;
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					private boolean b;
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  fileupload_fieldname;
 | 
				
			||||||
 | 
					private String  fileupload_fieldpath ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  imageupload_fieldname;
 | 
				
			||||||
 | 
					private String  imageupload_fieldpath ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  audio_fieldname;
 | 
				
			||||||
 | 
					private String  audio_fieldpath ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String currency;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String qrcode_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String barcode_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private int numa;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private int numb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String calculated_field_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					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.setSelectstat(data.getSelectstat());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setRadio_field(data.getRadio_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					old.setQ(data.isQ());
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					old.setB(data.isB());
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setCurrency(data.getCurrency());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setQrcode_field(data.getQrcode_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setBarcode_field(data.getBarcode_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setNuma(data.getNuma());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setNumb(data.getNumb());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setCalculated_field_field(data.getCalculated_field_field());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Testss test = Repository.save(old);
 | 
				
			||||||
 | 
							data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
					  return test;} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public AppUser getUser() {
 | 
				
			||||||
 | 
							AppUser user = userService.getLoggedInUser();
 | 
				
			||||||
 | 
							return user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}}
 | 
				
			||||||
							
								
								
									
										2
									
								
								testflutter002-dbs-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								testflutter002-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, b bit(1), qrcode_field VARCHAR(400), selectstat VARCHAR(400), fileupload_field VARCHAR(400), name VARCHAR(400), radio_field VARCHAR(400), q bit(1), currency VARCHAR(400), numb int, calculated_field_field VARCHAR(400), imageupload_field VARCHAR(400), audio_field VARCHAR(400), barcode_field VARCHAR(400), numa int,  PRIMARY KEY (id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,124 @@
 | 
				
			|||||||
 | 
					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');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -0,0 +1,905 @@
 | 
				
			|||||||
 | 
					// 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['selectstat'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['radio_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['audio_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['currency'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['qrcode_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['barcode_field'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['numa'].toString().toLowerCase().contains(keyword.toLowerCase()) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					 entity['numb'].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(
 | 
				
			||||||
 | 
					                    "selectstat : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['selectstat'].toString() ?? 'No selectstat Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Radio Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['radio_field'].toString() ?? 'No Radio Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Q : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['q'].toString() ?? 'No Q Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "B : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['b'].toString() ?? 'No B Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Currency : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['currency'].toString() ?? 'No Currency Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "QRCode Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['qrcode_field'].toString() ?? 'No QRCode Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "BarCode Field : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['barcode_field'].toString() ?? 'No BarCode Field Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Numa : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['numa'].toString() ?? 'No Numa Available',
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16Bluegray900,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Padding(
 | 
				
			||||||
 | 
					              padding: getPadding(
 | 
				
			||||||
 | 
					                top: 10,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              child: Row(
 | 
				
			||||||
 | 
					                mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | 
				
			||||||
 | 
					                children: [
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    "Numb : ",
 | 
				
			||||||
 | 
					                    overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					                    style: AppStyle.txtGilroyMedium16,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  Text(
 | 
				
			||||||
 | 
					                    entity['numb'].toString() ?? 'No Numb 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,649 @@
 | 
				
			|||||||
 | 
					// 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>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var selectedselectstat; // Initialize with the default value \n);
 | 
				
			||||||
 | 
					  List<String> selectstatList = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    'bar_code',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    'qr_code',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Widget _buildDropdownselectstat(String label, List<String> options, String? value, void Function(String?) onChanged) {
 | 
				
			||||||
 | 
					    return Padding(
 | 
				
			||||||
 | 
					      padding: const EdgeInsets.symmetric(vertical: 8.0),
 | 
				
			||||||
 | 
					      child: DropdownButtonFormField<String>(
 | 
				
			||||||
 | 
					        decoration: InputDecoration(labelText: label,
 | 
				
			||||||
 | 
					          border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					        value: value,
 | 
				
			||||||
 | 
					        onChanged: onChanged,
 | 
				
			||||||
 | 
					        items: options.map<DropdownMenuItem<String>>((String value) {
 | 
				
			||||||
 | 
					          return DropdownMenuItem<String>(
 | 
				
			||||||
 | 
					            value: value,
 | 
				
			||||||
 | 
					            child: Text(value),
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        }).toList(),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String? selectedradio_field;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> _showradio_fieldSelectionDialog(BuildContext context) async {
 | 
				
			||||||
 | 
					    final result = await showDialog<String>(
 | 
				
			||||||
 | 
					      context: context,
 | 
				
			||||||
 | 
					      builder: (BuildContext context) {
 | 
				
			||||||
 | 
					        return SimpleDialog(
 | 
				
			||||||
 | 
					          title: const Text('Select radio_field'),
 | 
				
			||||||
 | 
					          children: [
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					            RadioListTile<String>(
 | 
				
			||||||
 | 
					              title: const Text('bar_code'),
 | 
				
			||||||
 | 
					              value: 'bar_code',
 | 
				
			||||||
 | 
					              groupValue: selectedradio_field,
 | 
				
			||||||
 | 
					              onChanged: (value) {
 | 
				
			||||||
 | 
					                setState(() {
 | 
				
			||||||
 | 
					                  selectedradio_field = value;
 | 
				
			||||||
 | 
					                  Navigator.pop(context, value);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					            RadioListTile<String>(
 | 
				
			||||||
 | 
					              title: const Text('qr_code'),
 | 
				
			||||||
 | 
					              value: 'qr_code',
 | 
				
			||||||
 | 
					              groupValue: selectedradio_field,
 | 
				
			||||||
 | 
					              onChanged: (value) {
 | 
				
			||||||
 | 
					                setState(() {
 | 
				
			||||||
 | 
					                  selectedradio_field = value;
 | 
				
			||||||
 | 
					                  Navigator.pop(context, value);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (result != null) {
 | 
				
			||||||
 | 
					      setState(() {
 | 
				
			||||||
 | 
					        selectedradio_field = result;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool qcBox = false;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool bcBox = false;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final TextEditingController _inputcurrencyController = TextEditingController();
 | 
				
			||||||
 | 
					double editedcurrencyValue = 0.0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					late String inputDataqrcode_field;
 | 
				
			||||||
 | 
					  late TextEditingController controllerInputqrcode_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 late  String inputDatabarcode_field; // By default barcode
 | 
				
			||||||
 | 
					  TextEditingController controllerInputbarcode_field = TextEditingController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    final provider = Provider.of<TestssViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  selectedselectstat = widget.entity['selectstat'] ?? selectstatList[0] ; // Initialize with the default value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					selectedradio_field = widget.entity['radio_field'] ?? ''; // Initialize selected radio_field 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					qcBox = widget.entity['q'] ?? false; 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					bcBox = widget.entity['b'] ?? false; 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Convert the currency value to double if it's not already
 | 
				
			||||||
 | 
					    if (widget.entity['currency'] is String) {
 | 
				
			||||||
 | 
					      widget.entity['currency'] =
 | 
				
			||||||
 | 
					          double.tryParse(widget.entity['currency']) ?? 0.0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Initially set the controller text without formatting
 | 
				
			||||||
 | 
					    _inputcurrencyController.text = widget.entity['currency'].toString();
 | 
				
			||||||
 | 
					    editedcurrencyValue = widget.entity['currency'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 inputDataqrcode_field = widget.entity['qrcode_field'] ?? "Hello";
 | 
				
			||||||
 | 
					    controllerInputqrcode_field = TextEditingController(text: inputDataqrcode_field);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  inputDatabarcode_field = widget.entity['barcode_field'] ?? "Hello";
 | 
				
			||||||
 | 
					    controllerInputbarcode_field.text = inputDatabarcode_field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  @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),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 _buildDropdownselectstat(
 | 
				
			||||||
 | 
					             'selectstat',
 | 
				
			||||||
 | 
					              selectstatList,
 | 
				
			||||||
 | 
					              selectedselectstat,
 | 
				
			||||||
 | 
					              (value) {
 | 
				
			||||||
 | 
					                setState(() {
 | 
				
			||||||
 | 
					                 selectedselectstat = value;
 | 
				
			||||||
 | 
					                  widget.entity['selectstat'] = value; // Save selected value to entity
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Padding(
 | 
				
			||||||
 | 
					        padding: const EdgeInsets.all(16.0),
 | 
				
			||||||
 | 
					        child: Column(
 | 
				
			||||||
 | 
					          crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					          children: [
 | 
				
			||||||
 | 
					            Text(
 | 
				
			||||||
 | 
					              "Radio Field",
 | 
				
			||||||
 | 
					              overflow: TextOverflow.ellipsis,
 | 
				
			||||||
 | 
					              textAlign: TextAlign.left,
 | 
				
			||||||
 | 
					              style: TextStyle(
 | 
				
			||||||
 | 
					                fontSize: 16,
 | 
				
			||||||
 | 
					                fontWeight: FontWeight.w500,
 | 
				
			||||||
 | 
					                color: Colors.blueGrey[900],
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            const SizedBox(height: 6),
 | 
				
			||||||
 | 
					            GestureDetector(
 | 
				
			||||||
 | 
					              onTap: () => _showradio_fieldSelectionDialog(context),
 | 
				
			||||||
 | 
					              child: AbsorbPointer(
 | 
				
			||||||
 | 
					                child: TextFormField(
 | 
				
			||||||
 | 
					                  decoration: InputDecoration(
 | 
				
			||||||
 | 
					                    hintText: "Enter Radio Field",
 | 
				
			||||||
 | 
					                    border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					                    contentPadding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12.0),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                  controller: TextEditingController(text: selectedradio_field),
 | 
				
			||||||
 | 
					                  onSaved: (value) {
 | 
				
			||||||
 | 
					                    widget.entity['radio_field'] = value;
 | 
				
			||||||
 | 
					                  },
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            const SizedBox(height: 16),
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Row(
 | 
				
			||||||
 | 
					                  children: [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					                    Checkbox(
 | 
				
			||||||
 | 
					                      value: qcBox,
 | 
				
			||||||
 | 
					                      onChanged: (newValue) {
 | 
				
			||||||
 | 
					                        setState(() {
 | 
				
			||||||
 | 
					                          qcBox = newValue!;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      },
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    const SizedBox(width: 8),
 | 
				
			||||||
 | 
					                    Text('Q'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					                    Checkbox(
 | 
				
			||||||
 | 
					                      value: bcBox,
 | 
				
			||||||
 | 
					                      onChanged: (newValue) {
 | 
				
			||||||
 | 
					                        setState(() {
 | 
				
			||||||
 | 
					                          bcBox = newValue!;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      },
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    const SizedBox(width: 8),
 | 
				
			||||||
 | 
					                    Text('B'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  ],
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					                SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        ReusableTextField(
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					                            label: "Please Enter audio Field",
 | 
				
			||||||
 | 
					                            initialValue: widget.entity['audio_field'] ?? '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // ValidationProperties
 | 
				
			||||||
 | 
					                            onSaved: (value) => widget.entity['audio_field'] = value,
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                          SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Column(
 | 
				
			||||||
 | 
					  crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
 | 
					  children: [
 | 
				
			||||||
 | 
					    TextFormField(
 | 
				
			||||||
 | 
					      controller: _inputcurrencyController,
 | 
				
			||||||
 | 
					      keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					      decoration: const InputDecoration(
 | 
				
			||||||
 | 
					        labelText: 'Edit Currency Value',
 | 
				
			||||||
 | 
					        prefixIcon: Icon(Icons.money),
 | 
				
			||||||
 | 
					                      border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      onChanged: (text) {
 | 
				
			||||||
 | 
					        setState(() {
 | 
				
			||||||
 | 
					          try {
 | 
				
			||||||
 | 
					            String currencyString = text;
 | 
				
			||||||
 | 
					            currencyString = currencyString.replaceAll(',', ''); // Remove commas
 | 
				
			||||||
 | 
					            currencyString = currencyString.replaceAll('₹', ''); // Remove currency symbol
 | 
				
			||||||
 | 
					            editedcurrencyValue = double.parse(currencyString);
 | 
				
			||||||
 | 
					            print("Parsed double value: $editedcurrencyValue");
 | 
				
			||||||
 | 
					          } catch (e) {
 | 
				
			||||||
 | 
					            print("Invalid input: $text");
 | 
				
			||||||
 | 
					            editedcurrencyValue = 0.0; // Set to a default value or handle the error accordingly
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      onSaved: (value) {
 | 
				
			||||||
 | 
					        widget.entity['currency'] = editedcurrencyValue;
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    SizedBox(height: 16),
 | 
				
			||||||
 | 
					    Text(
 | 
				
			||||||
 | 
					      'Edited Currency Value: ${editedcurrencyValue.toStringAsFixed(2)}', // Display formatted currency value
 | 
				
			||||||
 | 
					      style: TextStyle(
 | 
				
			||||||
 | 
					        fontSize: 16,
 | 
				
			||||||
 | 
					        fontWeight: FontWeight.bold,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    SizedBox(height: 16),
 | 
				
			||||||
 | 
					    // Add other form fields here
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Column(
 | 
				
			||||||
 | 
					          crossAxisAlignment: CrossAxisAlignment.center,
 | 
				
			||||||
 | 
					          children: [
 | 
				
			||||||
 | 
					            Text(
 | 
				
			||||||
 | 
					              'Generate QR Code',
 | 
				
			||||||
 | 
					              style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            const SizedBox(height: 16),
 | 
				
			||||||
 | 
					            QrImageView(
 | 
				
			||||||
 | 
					              data: inputDataqrcode_field,
 | 
				
			||||||
 | 
					              version: QrVersions.auto,
 | 
				
			||||||
 | 
					              size: 200.0,
 | 
				
			||||||
 | 
					              gapless: false,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            const SizedBox(height: 16),
 | 
				
			||||||
 | 
					            TextField(
 | 
				
			||||||
 | 
					              controller: controllerInputqrcode_field,
 | 
				
			||||||
 | 
					              decoration: InputDecoration(
 | 
				
			||||||
 | 
					                border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					                labelText: 'Enter data for QR code',
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              onChanged: (value) {
 | 
				
			||||||
 | 
					                setState(() {
 | 
				
			||||||
 | 
					                  inputDataqrcode_field = value;
 | 
				
			||||||
 | 
					 widget.entity['qrcode_field'] = inputDataqrcode_field;
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Column(
 | 
				
			||||||
 | 
					                  crossAxisAlignment: CrossAxisAlignment.center,
 | 
				
			||||||
 | 
					                  children: [
 | 
				
			||||||
 | 
					                    const Text(
 | 
				
			||||||
 | 
					                      'Generate Barcode',
 | 
				
			||||||
 | 
					                      style: TextStyle(fontSize: 18),
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    const SizedBox(height: 16),
 | 
				
			||||||
 | 
					                    if (inputDatabarcode_field.isNotEmpty)
 | 
				
			||||||
 | 
					                      BarcodeWidget(
 | 
				
			||||||
 | 
					                        barcode: Barcode.code128(), // Choose the type of barcode
 | 
				
			||||||
 | 
					                        data: inputDatabarcode_field,
 | 
				
			||||||
 | 
					                        width: 200,
 | 
				
			||||||
 | 
					                        height: 80,
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                    const SizedBox(height: 16),
 | 
				
			||||||
 | 
					                    TextField(
 | 
				
			||||||
 | 
					                      controller: controllerInputbarcode_field,
 | 
				
			||||||
 | 
					                      decoration: const InputDecoration(
 | 
				
			||||||
 | 
					                        border: OutlineInputBorder(),
 | 
				
			||||||
 | 
					                        labelText: 'Enter data for barcode',
 | 
				
			||||||
 | 
					                      ),
 | 
				
			||||||
 | 
					                      onChanged: (value) {
 | 
				
			||||||
 | 
					                        setState(() {
 | 
				
			||||||
 | 
					                          inputDatabarcode_field = value;
 | 
				
			||||||
 | 
					                          widget.entity['barcode_field'] = inputDatabarcode_field;
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                      },
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    const SizedBox(height: 16),
 | 
				
			||||||
 | 
					                    // ElevatedButton(
 | 
				
			||||||
 | 
					                    //   onPressed: () {
 | 
				
			||||||
 | 
					                    //     setState(() {
 | 
				
			||||||
 | 
					                    //       inputData = controllerInput.text;
 | 
				
			||||||
 | 
					                    //     });
 | 
				
			||||||
 | 
					                    //   },
 | 
				
			||||||
 | 
					                    //   child: const Text('Generate Barcode'),
 | 
				
			||||||
 | 
					                    // ),
 | 
				
			||||||
 | 
					                  ],
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					  const SizedBox(height: 16),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 ReusableTextField(
 | 
				
			||||||
 | 
					              initialValue: widget.entity['numa'].toString(),
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['numa']= value,
 | 
				
			||||||
 | 
					              label: "Enter Numa",
 | 
				
			||||||
 | 
					              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['numb'].toString(),
 | 
				
			||||||
 | 
					              onSaved: (value) => widget.entity['numb']= value,
 | 
				
			||||||
 | 
					              label: "Enter Numb",
 | 
				
			||||||
 | 
					              keyboardType: TextInputType.number,
 | 
				
			||||||
 | 
					              inputFormatters: [
 | 
				
			||||||
 | 
					                FilteringTextInputFormatter.allow((RegExp(r'[0-9]'))),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					              validator: (value) {
 | 
				
			||||||
 | 
					                if (value == null || value.isEmpty) {
 | 
				
			||||||
 | 
					                  return 'Please enter a number';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					          CustomButton(
 | 
				
			||||||
 | 
					                  height: getVerticalSize(50),
 | 
				
			||||||
 | 
					                  text: "Update",
 | 
				
			||||||
 | 
					                  margin: getMargin(top: 24, bottom: 5),
 | 
				
			||||||
 | 
					                  onTap: () async {
 | 
				
			||||||
 | 
					                    if (_formKey.currentState!.validate()) {
 | 
				
			||||||
 | 
					                      _formKey.currentState!.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  widget.entity['q'] = qcBox;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  widget.entity['b'] = bcBox;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					                        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,115 @@
 | 
				
			|||||||
 | 
					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');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Future<dynamic> fileupload_fieldUpload(
 | 
				
			||||||
 | 
					      String ref, String refTableNmae, FormData entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      String apiUrl = "$baseUrl/FileUpload/Uploadeddocs/$ref/$refTableNmae";
 | 
				
			||||||
 | 
					      final response = await _helper.getPostApiResponse(apiUrl, entity);
 | 
				
			||||||
 | 
					      return response;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to Upload File: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Future<dynamic> imageupload_fieldUpload(
 | 
				
			||||||
 | 
					      String ref, String refTableNmae, FormData entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      String apiUrl = "$baseUrl/FileUpload/Uploadeddocs/$ref/$refTableNmae";
 | 
				
			||||||
 | 
					      final response = await _helper.getPostApiResponse(apiUrl, entity);
 | 
				
			||||||
 | 
					      return response;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to Upload Imageupload Field: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Future<dynamic> audio_fieldUpload(
 | 
				
			||||||
 | 
					      String ref, String refTableNmae, FormData entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      String apiUrl = "$baseUrl/FileUpload/Uploadeddocs/$ref/$refTableNmae";
 | 
				
			||||||
 | 
					      final response = await _helper.getPostApiResponse(apiUrl, entity);
 | 
				
			||||||
 | 
					      return response;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to Upload File: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,279 @@
 | 
				
			|||||||
 | 
					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');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Modify the uploadfileupload_fieldimage function
 | 
				
			||||||
 | 
					  Future<void> uploadfileupload_field(String ref, String refTableNmae,
 | 
				
			||||||
 | 
					      String selectedFilePath, Uint8List imageTimageBytes) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final Uint8List fileBytes = imageTimageBytes!;
 | 
				
			||||||
 | 
					      final mimeType = fileupload_fieldlookupMimeType(selectedFilePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FormData formData = FormData.fromMap({
 | 
				
			||||||
 | 
					        'file': MultipartFile.fromBytes(
 | 
				
			||||||
 | 
					          fileBytes,
 | 
				
			||||||
 | 
					          filename: selectedFilePath
 | 
				
			||||||
 | 
					              .split('/')
 | 
				
			||||||
 | 
					              .last, // Get the file name from the path
 | 
				
			||||||
 | 
					          contentType: MediaType.parse(mimeType!),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      await repo.fileupload_fieldUpload(ref, refTableNmae, formData).then((value) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					            message: "File uploaded successfully",
 | 
				
			||||||
 | 
					            toastType: ToastType.success);
 | 
				
			||||||
 | 
					      }).onError(
 | 
				
			||||||
 | 
					        (error, stackTrace) {
 | 
				
			||||||
 | 
					          print("error--$error");
 | 
				
			||||||
 | 
					          ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					              message: "Failed to upload file", toastType: ToastType.error);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      print('Error occurred during form submission: $error');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Modify the lookupMimeType function if needed
 | 
				
			||||||
 | 
					  String fileupload_fieldlookupMimeType(String filePath) {
 | 
				
			||||||
 | 
					    final ext = filePath.split('.').last;
 | 
				
			||||||
 | 
					    switch (ext) {
 | 
				
			||||||
 | 
					      case 'jpg':
 | 
				
			||||||
 | 
					      case 'jpeg':
 | 
				
			||||||
 | 
					        return 'image/jpeg';
 | 
				
			||||||
 | 
					      case 'png':
 | 
				
			||||||
 | 
					        return 'image/png';
 | 
				
			||||||
 | 
					      case 'pdf':
 | 
				
			||||||
 | 
					        return 'application/pdf';
 | 
				
			||||||
 | 
					      // Add more cases for other file types as needed
 | 
				
			||||||
 | 
					      default:
 | 
				
			||||||
 | 
					        return 'application/octet-stream'; // Default MIME type
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Modify the uploadimageupload_fieldimage function
 | 
				
			||||||
 | 
					  Future<void> uploadimageupload_field(String ref, String refTableNmae,
 | 
				
			||||||
 | 
					      String selectedFilePath, Uint8List image_timageBytes) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final Uint8List fileBytes = image_timageBytes!;
 | 
				
			||||||
 | 
					      final mimeType = imageupload_fieldlookupMimeType(selectedFilePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FormData formData = FormData.fromMap({
 | 
				
			||||||
 | 
					        'file': MultipartFile.fromBytes(
 | 
				
			||||||
 | 
					          fileBytes,
 | 
				
			||||||
 | 
					          filename: selectedFilePath
 | 
				
			||||||
 | 
					              .split('/')
 | 
				
			||||||
 | 
					              .last, // Get the file name from the path
 | 
				
			||||||
 | 
					          contentType: MediaType.parse(mimeType!),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					await repo.imageupload_fieldUpload(ref, refTableNmae, formData).then((value) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					            message: "File uploaded successfully",
 | 
				
			||||||
 | 
					            toastType: ToastType.success);
 | 
				
			||||||
 | 
					      }).onError(
 | 
				
			||||||
 | 
					        (error, stackTrace) {
 | 
				
			||||||
 | 
					          print("error--$error");
 | 
				
			||||||
 | 
					          ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					              message: "Failed to upload file", toastType: ToastType.error);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      print('Error occurred during form submission: $error');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Modify the lookupMimeType function if needed
 | 
				
			||||||
 | 
					  String imageupload_fieldlookupMimeType(String filePath) {
 | 
				
			||||||
 | 
					    final ext = filePath.split('.').last;
 | 
				
			||||||
 | 
					    switch (ext) {
 | 
				
			||||||
 | 
					      case 'jpg':
 | 
				
			||||||
 | 
					      case 'jpeg':
 | 
				
			||||||
 | 
					        return 'image/jpeg';
 | 
				
			||||||
 | 
					      case 'png':
 | 
				
			||||||
 | 
					        return 'image/png';
 | 
				
			||||||
 | 
					      case 'pdf':
 | 
				
			||||||
 | 
					        return 'application/pdf';
 | 
				
			||||||
 | 
					      // Add more cases for other file types as needed
 | 
				
			||||||
 | 
					      default:
 | 
				
			||||||
 | 
					        return 'application/octet-stream'; // Default MIME type
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Modify the uploadaudio_fieldimage function
 | 
				
			||||||
 | 
					  Future<void> uploadaudio_field(String ref, String refTableNmae,
 | 
				
			||||||
 | 
					      String selectedFilePath, Uint8List image_timageBytes) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final Uint8List fileBytes = image_timageBytes!;
 | 
				
			||||||
 | 
					      final mimeType = audio_fieldlookupMimeType(selectedFilePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      FormData formData = FormData.fromMap({
 | 
				
			||||||
 | 
					        'file': MultipartFile.fromBytes(
 | 
				
			||||||
 | 
					          fileBytes,
 | 
				
			||||||
 | 
					          filename: selectedFilePath
 | 
				
			||||||
 | 
					              .split('/')
 | 
				
			||||||
 | 
					              .last, // Get the file name from the path
 | 
				
			||||||
 | 
					          contentType: MediaType.parse(mimeType!),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     await repo.audio_fieldUpload(ref, refTableNmae, formData).then((value) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					            message: "File uploaded successfully",
 | 
				
			||||||
 | 
					            toastType: ToastType.success);
 | 
				
			||||||
 | 
					      }).onError(
 | 
				
			||||||
 | 
					        (error, stackTrace) {
 | 
				
			||||||
 | 
					          print("error--$error");
 | 
				
			||||||
 | 
					          ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					              message: "Failed to upload file", toastType: ToastType.error);
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      print('Error occurred during form submission: $error');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Modify the lookupMimeType function if needed
 | 
				
			||||||
 | 
					  String audio_fieldlookupMimeType(String filePath) {
 | 
				
			||||||
 | 
					  final ext = filePath.split('.').last.toLowerCase();
 | 
				
			||||||
 | 
					  switch (ext) {
 | 
				
			||||||
 | 
					    case 'mp3':
 | 
				
			||||||
 | 
					      return 'audio/mpeg';
 | 
				
			||||||
 | 
					    case 'wav':
 | 
				
			||||||
 | 
					      return 'audio/wav';
 | 
				
			||||||
 | 
					    case 'm4a':
 | 
				
			||||||
 | 
					      return 'audio/mp4';
 | 
				
			||||||
 | 
					    case 'flac':
 | 
				
			||||||
 | 
					      return 'audio/flac';
 | 
				
			||||||
 | 
					    // Add more cases for other audio formats as needed
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					      return 'application/octet-stream'; // Default MIME type
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -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';
 | 
				
			||||||
@ -70,6 +73,23 @@ class MyCustomDrawer extends StatelessWidget {
 | 
				
			|||||||
),
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NEW MENU
 | 
					// NEW MENU
 | 
				
			||||||
 | 
					DrawerItem(
 | 
				
			||||||
 | 
					            color: AppColors.primary,
 | 
				
			||||||
 | 
					            icon: Icons.chat_bubble,
 | 
				
			||||||
 | 
					            title: 'Testss',
 | 
				
			||||||
 | 
					            onTap: () {
 | 
				
			||||||
 | 
					              Navigator.push(
 | 
				
			||||||
 | 
					                context,
 | 
				
			||||||
 | 
					                MaterialPageRoute(
 | 
				
			||||||
 | 
					                  builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					                    create: (context) => TestssViewModelScreen(),
 | 
				
			||||||
 | 
					                    child: testss_entity_list_screen(),
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              );
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DrawerItem(
 | 
					DrawerItem(
 | 
				
			||||||
icon: Icons.logout,
 | 
					icon: Icons.logout,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user