build_app
This commit is contained in:
		
							parent
							
								
									bfa9b8accf
								
							
						
					
					
						commit
						bddd79217b
					
				@ -69,6 +69,12 @@ public class BuilderService {
 | 
				
			|||||||
		executeDump(true);
 | 
							executeDump(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// ADD OTHER SERVICE
 | 
							// ADD OTHER SERVICE
 | 
				
			||||||
 | 
					addCustomMenu( "Form_d","Form_d",  "Transcations"); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					addCustomMenu( "Testlist","Testlist",  "Transcations"); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		System.out.println("dashboard and menu inserted...");
 | 
							System.out.println("dashboard and menu inserted...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,107 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.CrossOrigin;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.JsonMappingException;
 | 
				
			||||||
 | 
					import com.realnet.config.EmailService;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.*;
 | 
				
			||||||
 | 
					import com.realnet.fnd.response.EntityResponse;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Form_d;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Services.Form_dService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/Form_d")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class Form_dController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private Form_dService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Form_d")
 | 
				
			||||||
 | 
							  public Form_d Savedata(@RequestBody Form_d data) {
 | 
				
			||||||
 | 
							Form_d save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Form_d/{id}")
 | 
				
			||||||
 | 
						public  Form_d update(@RequestBody Form_d data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Form_d update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Form_d/getall/page")
 | 
				
			||||||
 | 
						public Page<Form_d> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Form_d> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Form_d")
 | 
				
			||||||
 | 
						public List<Form_d> getdetails() {
 | 
				
			||||||
 | 
							 List<Form_d> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Form_d")
 | 
				
			||||||
 | 
						public List<Form_d> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Form_d> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Form_d/{id}")
 | 
				
			||||||
 | 
						public  Form_d  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Form_d  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Form_d/{id}")
 | 
				
			||||||
 | 
						public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
						Service.delete_by_id(id);
 | 
				
			||||||
 | 
								return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.CrossOrigin;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.JsonMappingException;
 | 
				
			||||||
 | 
					import com.realnet.config.EmailService;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.*;
 | 
				
			||||||
 | 
					import com.realnet.fnd.response.EntityResponse;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Services.TestlistService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/Testlist")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class TestlistController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private TestlistService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Testlist")
 | 
				
			||||||
 | 
							  public Testlist Savedata(@RequestBody Testlist data) {
 | 
				
			||||||
 | 
							Testlist save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Testlist/{id}")
 | 
				
			||||||
 | 
						public  Testlist update(@RequestBody Testlist data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testlist update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Testlist/getall/page")
 | 
				
			||||||
 | 
						public Page<Testlist> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Testlist> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Testlist")
 | 
				
			||||||
 | 
						public List<Testlist> getdetails() {
 | 
				
			||||||
 | 
							 List<Testlist> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Testlist")
 | 
				
			||||||
 | 
						public List<Testlist> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Testlist> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Testlist/{id}")
 | 
				
			||||||
 | 
						public  Testlist  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testlist  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Testlist/{id}")
 | 
				
			||||||
 | 
						public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
						Service.delete_by_id(id);
 | 
				
			||||||
 | 
								return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist_ListFilter1;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Services.Testlist_ListFilter1Service ;
 | 
				
			||||||
 | 
					@RequestMapping(value = "/Testlist_ListFilter1")
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class Testlist_ListFilter1Controller {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private Testlist_ListFilter1Service Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@GetMapping("/Testlist_ListFilter1")
 | 
				
			||||||
 | 
						public List<Testlist_ListFilter1> getlist() {
 | 
				
			||||||
 | 
							 List<Testlist_ListFilter1> get = Service.getlistbuilder();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
							@GetMapping("/Testlist_ListFilter11")
 | 
				
			||||||
 | 
						public List<Testlist_ListFilter1> getlistwithparam( ) {
 | 
				
			||||||
 | 
							 List<Testlist_ListFilter1> get = Service.getlistbuilderparam( );		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,107 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.CrossOrigin;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.JsonMappingException;
 | 
				
			||||||
 | 
					import com.realnet.config.EmailService;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.*;
 | 
				
			||||||
 | 
					import com.realnet.fnd.response.EntityResponse;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Form_d;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Services.Form_dService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/token/Form_d")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class tokenFree_Form_dController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private Form_dService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Form_d")
 | 
				
			||||||
 | 
							  public Form_d Savedata(@RequestBody Form_d data) {
 | 
				
			||||||
 | 
							Form_d save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Form_d/{id}")
 | 
				
			||||||
 | 
						public  Form_d update(@RequestBody Form_d data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Form_d update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Form_d/getall/page")
 | 
				
			||||||
 | 
						public Page<Form_d> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Form_d> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Form_d")
 | 
				
			||||||
 | 
						public List<Form_d> getdetails() {
 | 
				
			||||||
 | 
							 List<Form_d> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Form_d")
 | 
				
			||||||
 | 
						public List<Form_d> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Form_d> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Form_d/{id}")
 | 
				
			||||||
 | 
						public  Form_d  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Form_d  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Form_d/{id}")
 | 
				
			||||||
 | 
						public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
						Service.delete_by_id(id);
 | 
				
			||||||
 | 
								return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.CrossOrigin;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.JsonMappingException;
 | 
				
			||||||
 | 
					import com.realnet.config.EmailService;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.*;
 | 
				
			||||||
 | 
					import com.realnet.fnd.response.EntityResponse;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Services.TestlistService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/token/Testlist")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class tokenFree_TestlistController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private TestlistService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Testlist")
 | 
				
			||||||
 | 
							  public Testlist Savedata(@RequestBody Testlist data) {
 | 
				
			||||||
 | 
							Testlist save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Testlist/{id}")
 | 
				
			||||||
 | 
						public  Testlist update(@RequestBody Testlist data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testlist update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Testlist/getall/page")
 | 
				
			||||||
 | 
						public Page<Testlist> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Testlist> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Testlist")
 | 
				
			||||||
 | 
						public List<Testlist> getdetails() {
 | 
				
			||||||
 | 
							 List<Testlist> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Testlist")
 | 
				
			||||||
 | 
						public List<Testlist> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Testlist> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Testlist/{id}")
 | 
				
			||||||
 | 
						public  Testlist  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testlist  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Testlist/{id}")
 | 
				
			||||||
 | 
						public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
						Service.delete_by_id(id);
 | 
				
			||||||
 | 
								return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist_ListFilter1;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Services.Testlist_ListFilter1Service ;
 | 
				
			||||||
 | 
					@RequestMapping(value = "/token/Testlist_ListFilter1")
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class tokenFree_Testlist_ListFilter1Controller {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private Testlist_ListFilter1Service Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@GetMapping("/Testlist_ListFilter1")
 | 
				
			||||||
 | 
						public List<Testlist_ListFilter1> getlist() {
 | 
				
			||||||
 | 
							 List<Testlist_ListFilter1> get = Service.getlistbuilder();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
							@GetMapping("/Testlist_ListFilter11")
 | 
				
			||||||
 | 
						public List<Testlist_ListFilter1> getlistwithparam( ) {
 | 
				
			||||||
 | 
							 List<Testlist_ListFilter1> get = Service.getlistbuilderparam( );		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Entity;
 | 
				
			||||||
 | 
					 import lombok.*;
 | 
				
			||||||
 | 
					import com.realnet.WhoColumn.Entity.Extension; 
 | 
				
			||||||
 | 
					 import javax.persistence.*;
 | 
				
			||||||
 | 
					 import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					 import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Entity 
 | 
				
			||||||
 | 
					 @Data
 | 
				
			||||||
 | 
					 public class    Form_d extends Extension { 
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Id
 | 
				
			||||||
 | 
					 @GeneratedValue(strategy = GenerationType.IDENTITY)
 | 
				
			||||||
 | 
					 private Integer id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  namek;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private int number_field_a;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private int number_field_b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String calculated_add;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Entity;
 | 
				
			||||||
 | 
					 import lombok.*;
 | 
				
			||||||
 | 
					import com.realnet.WhoColumn.Entity.Extension; 
 | 
				
			||||||
 | 
					 import javax.persistence.*;
 | 
				
			||||||
 | 
					 import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					 import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Entity 
 | 
				
			||||||
 | 
					 @Data
 | 
				
			||||||
 | 
					 public class    Testlist extends Extension { 
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Id
 | 
				
			||||||
 | 
					 @GeneratedValue(strategy = GenerationType.IDENTITY)
 | 
				
			||||||
 | 
					 private Integer id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Column(length = 2000)
 | 
				
			||||||
 | 
					private String description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private Boolean active;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Entity;
 | 
				
			||||||
 | 
					 import lombok.*;
 | 
				
			||||||
 | 
					 import javax.persistence.*;
 | 
				
			||||||
 | 
					 import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					 import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Data
 | 
				
			||||||
 | 
					 public class    Testlist_ListFilter1 { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 private Integer id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 private String name;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Page;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Pageable;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.JpaRepository;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.Query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Repository; 
 | 
				
			||||||
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Form_d;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Repository
 | 
				
			||||||
 | 
					public interface  Form_dRepository  extends  JpaRepository<Form_d, Integer>  { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from form_d where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						List<Form_d> findAll(Long creayedBy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from form_d where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						Page<Form_d> findAll( Long creayedBy,Pageable page);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Page;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Pageable;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.JpaRepository;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.Query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Repository; 
 | 
				
			||||||
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Repository
 | 
				
			||||||
 | 
					public interface  TestlistRepository  extends  JpaRepository<Testlist, Integer>  { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testlist where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						List<Testlist> findAll(Long creayedBy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testlist where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						Page<Testlist> findAll( Long creayedBy,Pageable page);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Services;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Repository.Form_dRepository;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Form_d
 | 
				
			||||||
 | 
					;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 Form_dService {
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
					private Form_dRepository Repository;
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private AppUserServiceImpl userService; 
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
						private RealmService realmService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Form_d Savedata(Form_d data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setCreatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setAccountId(getUser().getAccount().getAccount_id());
 | 
				
			||||||
 | 
					Form_d save = Repository.save(data);
 | 
				
			||||||
 | 
									return save;	
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						public Page<Form_d> getAllWithPagination(Pageable page) {
 | 
				
			||||||
 | 
							return Repository.findAll( getUser().getUserId(),page);
 | 
				
			||||||
 | 
						}			
 | 
				
			||||||
 | 
					public List<Form_d> getdetails() {  
 | 
				
			||||||
 | 
							List<Realm> realm = realmService.findByUserId(getUser().getUserId());
 | 
				
			||||||
 | 
					List<Form_d> all = Repository.findAll(getUser().getUserId());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return all ;		}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Form_d getdetailsbyId(Integer id) {
 | 
				
			||||||
 | 
						return Repository.findById(id).get();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void delete_by_id(Integer id) {
 | 
				
			||||||
 | 
					 Repository.deleteById(id);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Form_d update(Form_d data,Integer id) {
 | 
				
			||||||
 | 
						Form_d old = Repository.findById(id).get();
 | 
				
			||||||
 | 
					old.setNamek(data.getNamek());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setNumber_field_a(data.getNumber_field_a());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setNumber_field_b(data.getNumber_field_b());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setCalculated_add(data.getCalculated_add());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Form_d test = Repository.save(old);
 | 
				
			||||||
 | 
							data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
					  return test;} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public AppUser getUser() {
 | 
				
			||||||
 | 
							AppUser user = userService.getLoggedInUser();
 | 
				
			||||||
 | 
							return user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}}
 | 
				
			||||||
@ -0,0 +1,93 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Services;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Repository.TestlistRepository;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist
 | 
				
			||||||
 | 
					;import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import com.realnet.SequenceGenerator.Service.SequenceService;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Page;
 | 
				
			||||||
 | 
					import com.realnet.realm.Entity.Realm;
 | 
				
			||||||
 | 
					import com.realnet.realm.Services.RealmService;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Pageable;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Service
 | 
				
			||||||
 | 
					 public class TestlistService {
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
					private TestlistRepository Repository;
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private AppUserServiceImpl userService; 
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
						private RealmService realmService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testlist Savedata(Testlist data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setCreatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setAccountId(getUser().getAccount().getAccount_id());
 | 
				
			||||||
 | 
					Testlist save = Repository.save(data);
 | 
				
			||||||
 | 
									return save;	
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						public Page<Testlist> getAllWithPagination(Pageable page) {
 | 
				
			||||||
 | 
							return Repository.findAll( getUser().getUserId(),page);
 | 
				
			||||||
 | 
						}			
 | 
				
			||||||
 | 
					public List<Testlist> getdetails() {  
 | 
				
			||||||
 | 
							List<Realm> realm = realmService.findByUserId(getUser().getUserId());
 | 
				
			||||||
 | 
					List<Testlist> all = Repository.findAll(getUser().getUserId());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return all ;		}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testlist getdetailsbyId(Integer id) {
 | 
				
			||||||
 | 
						return Repository.findById(id).get();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void delete_by_id(Integer id) {
 | 
				
			||||||
 | 
					 Repository.deleteById(id);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testlist update(Testlist data,Integer id) {
 | 
				
			||||||
 | 
						Testlist old = Repository.findById(id).get();
 | 
				
			||||||
 | 
					old.setName(data.getName());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setDescription(data.getDescription());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					old.setActive (data.getActive());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Testlist test = Repository.save(old);
 | 
				
			||||||
 | 
							data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
					  return test;} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public AppUser getUser() {
 | 
				
			||||||
 | 
							AppUser user = userService.getLoggedInUser();
 | 
				
			||||||
 | 
							return user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}}
 | 
				
			||||||
@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					package com.realnet.basic1.Services;
 | 
				
			||||||
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Repository.TestlistRepository;
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.realnet.basic1.Entity.Testlist_ListFilter1;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
						import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Service
 | 
				
			||||||
 | 
					 public class Testlist_ListFilter1Service {
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
					private TestlistRepository Repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public   List<Testlist_ListFilter1>   getlistbuilder() {
 | 
				
			||||||
 | 
						List<Testlist> list= Repository.findAll();
 | 
				
			||||||
 | 
							ArrayList<Testlist_ListFilter1> l = new ArrayList<>();
 | 
				
			||||||
 | 
							for (Testlist data : list) {
 | 
				
			||||||
 | 
					boolean isactive = data.getActive();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (isactive) {{	
 | 
				
			||||||
 | 
					Testlist_ListFilter1 dummy = new Testlist_ListFilter1();
 | 
				
			||||||
 | 
								dummy.setId(data.getId());
 | 
				
			||||||
 | 
					  dummy.setName(data.getName());
 | 
				
			||||||
 | 
						l.add(dummy);
 | 
				
			||||||
 | 
					}} 
 | 
				
			||||||
 | 
					} 		
 | 
				
			||||||
 | 
					return l;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public   List<Testlist_ListFilter1>   getlistbuilderparam( ) {
 | 
				
			||||||
 | 
						List<Testlist> list= Repository.findAll();
 | 
				
			||||||
 | 
							ArrayList<Testlist_ListFilter1> l = new ArrayList<>();
 | 
				
			||||||
 | 
							for (Testlist data : list) {
 | 
				
			||||||
 | 
					boolean isactive = data.getActive();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (isactive) {{	
 | 
				
			||||||
 | 
					Testlist_ListFilter1 dummy = new Testlist_ListFilter1();
 | 
				
			||||||
 | 
								dummy.setId(data.getId());
 | 
				
			||||||
 | 
					  dummy.setName(data.getName());
 | 
				
			||||||
 | 
						l.add(dummy);
 | 
				
			||||||
 | 
					}} 
 | 
				
			||||||
 | 
					} 		
 | 
				
			||||||
 | 
					return l;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,88 @@
 | 
				
			|||||||
 | 
					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 Form_dApiService {
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Future<List<Map<String, dynamic>>> getEntities() async {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getGetApiResponse('$baseUrl/Form_d/Form_d');
 | 
				
			||||||
 | 
					      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/Form_d/Form_d/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/Form_d/Form_d', 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/Form_d/Form_d/$entityId',
 | 
				
			||||||
 | 
					      entity);                print(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity( int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					 await _helper.getDeleteApiResponse('$baseUrl/Form_d/Form_d/$entityId');
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:file_picker/file_picker.dart';
 | 
				
			||||||
 | 
					import 'package:image_picker/image_picker.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../Form_d_viewModel/Form_d_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'Form_d_fields.dart';import 'package:base_project/BuilderField/shared/ui/entity_screens.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/image_constant.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/size_utils.dart';
 | 
				
			||||||
 | 
					import '../../../../theme/app_style.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_image.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_title.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/custom_app_bar.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_button.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_text_form_field.dart'; 
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_dropdown_field.dart';
 | 
				
			||||||
 | 
					import 'dart:math';
 | 
				
			||||||
 | 
					import 'package:qr_flutter/qr_flutter.dart';
 | 
				
			||||||
 | 
					import 'package:barcode_widget/barcode_widget.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					import 'package:autocomplete_textfield/autocomplete_textfield.dart';
 | 
				
			||||||
 | 
					import 'package:http/http.dart' as http;
 | 
				
			||||||
 | 
					import 'package:flutter/services.dart';
 | 
				
			||||||
 | 
					import 'package:image_picker/image_picker.dart';
 | 
				
			||||||
 | 
					import 'package:fluttertoast/fluttertoast.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_time_picker_field.dart'
 | 
				
			||||||
 | 
					;import 'package:multi_select_flutter/multi_select_flutter.dart';
 | 
				
			||||||
 | 
					import 'package:just_audio/just_audio.dart';
 | 
				
			||||||
 | 
					import 'package:video_player/video_player.dart';
 | 
				
			||||||
 | 
					import 'package:google_fonts/google_fonts.dart';
 | 
				
			||||||
 | 
					import 'package:lottie/lottie.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/toast_messages/toast_message_util.dart';
 | 
				
			||||||
 | 
					import 'dart:io';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_text_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_dropdown_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Form_dCreateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					  const Form_dCreateEntityScreen({super.key});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _Form_dCreateEntityScreenState createState() => _Form_dCreateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _Form_dCreateEntityScreenState extends State<Form_dCreateEntityScreen> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Map<String, dynamic> formData = {};
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<Form_dViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					        return EntityCreateScreen(
 | 
				
			||||||
 | 
					          fields: Form_dFields.getFields(context),
 | 
				
			||||||
 | 
					          onSubmit: (data) => _handleSubmit(data),
 | 
				
			||||||
 | 
					          title: 'Form_d',
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					          errorMessage:
 | 
				
			||||||
 | 
					              viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> _handleSubmit(Map<String, dynamic> formData) async {
 | 
				
			||||||
 | 
					    final provider =
 | 
				
			||||||
 | 
					        Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    final success = await provider.createEntity(formData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (success && mounted) {
 | 
				
			||||||
 | 
					      Navigator.pop(context);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,92 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/ui/entity_details.dart';
 | 
				
			||||||
 | 
					import '../Form_d_viewModel/Form_d_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'Form_d_update_entity_screen.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Form_dDetailsScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					  final Map<String, dynamic> entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const Form_dDetailsScreen({
 | 
				
			||||||
 | 
					    super.key,
 | 
				
			||||||
 | 
					    required this.entity,
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  State<Form_dDetailsScreen> createState() => _Form_dDetailsScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _Form_dDetailsScreenState extends State<Form_dDetailsScreen> {
 | 
				
			||||||
 | 
					  void _navigateToUpdateScreen(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => Form_dViewModelScreen(),
 | 
				
			||||||
 | 
					          child: Form_dUpdateEntityScreen(entity: entity),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ).then((_) {
 | 
				
			||||||
 | 
					      // Refresh the details screen with updated data
 | 
				
			||||||
 | 
					      setState(() {});
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _showDeleteDialog(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    showDialog(
 | 
				
			||||||
 | 
					      context: context,
 | 
				
			||||||
 | 
					      builder: (BuildContext context) {
 | 
				
			||||||
 | 
					        return AlertDialog(
 | 
				
			||||||
 | 
					          title: const Text('Confirm Deletion'),
 | 
				
			||||||
 | 
					          content: const Text('Are you sure you want to delete this Form_d?'),
 | 
				
			||||||
 | 
					          actions: [
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Cancel'),
 | 
				
			||||||
 | 
					              onPressed: () {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Delete'),
 | 
				
			||||||
 | 
					              onPressed: () async {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                final vm =
 | 
				
			||||||
 | 
					                    Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					                final success = await vm.deleteEntity(entity['id']);
 | 
				
			||||||
 | 
					                if (success && mounted) {
 | 
				
			||||||
 | 
					                  Navigator.pop(context); // Go back to list
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<Form_dViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					        return EntityDetails(
 | 
				
			||||||
 | 
					          entity: widget.entity,
 | 
				
			||||||
 | 
					          onEdit: (entity) => _navigateToUpdateScreen(entity),
 | 
				
			||||||
 | 
					          onDelete: (entity) => _showDeleteDialog(entity),
 | 
				
			||||||
 | 
					          title: 'Form_d',
 | 
				
			||||||
 | 
					          displayFields: [
 | 
				
			||||||
 | 
					  {'key': 'namek', 'label': 'Namek', 'type': 'text'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'number_field_a', 'label': 'Number Field a', 'type': 'number'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'number_field_b', 'label': 'Number Field b', 'type': 'number'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'calculated_add', 'label': 'calculated add', 'type': 'calculated_field'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,151 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/ui/entity_list.dart';
 | 
				
			||||||
 | 
					import 'Form_d_create_entity_screen.dart';
 | 
				
			||||||
 | 
					import 'Form_d_update_entity_screen.dart';
 | 
				
			||||||
 | 
					import '../Form_d_viewModel/Form_d_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'Form_d_details_screen.dart';import 'package:flutter/services.dart';
 | 
				
			||||||
 | 
					import 'package:speech_to_text/speech_to_text.dart' as stt;
 | 
				
			||||||
 | 
					import '../../../../theme/app_style.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/size_utils.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_icon_button.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/image_constant.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_image.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_title.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/custom_app_bar.dart';
 | 
				
			||||||
 | 
					import '../../../../theme/app_decoration.dart';
 | 
				
			||||||
 | 
					import 'package:multi_select_flutter/multi_select_flutter.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_text_field.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/toast_messages/toast_message_util.dart';
 | 
				
			||||||
 | 
					import 'package:fluttertoast/fluttertoast.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Form_d_entity_list_screen extends StatefulWidget {
 | 
				
			||||||
 | 
					  static const String routeName = '/entity-list';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _Form_d_entity_list_screenState createState() => _Form_d_entity_list_screenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _Form_d_entity_list_screenState extends State<Form_d_entity_list_screen> {
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    _loadData();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _loadData() {
 | 
				
			||||||
 | 
					    WidgetsBinding.instance.addPostFrameCallback((_) {
 | 
				
			||||||
 | 
					      if (mounted) {
 | 
				
			||||||
 | 
					        final vm = Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					        vm.getAllWithPagination(refresh: true);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _navigateToCreateScreen() {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => Form_dViewModelScreen(),
 | 
				
			||||||
 | 
					          child: const Form_dCreateEntityScreen(),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ).then((_) {
 | 
				
			||||||
 | 
					      final vm = Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					      vm.refreshData();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _navigateToUpdateScreen(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => Form_dViewModelScreen(),
 | 
				
			||||||
 | 
					          child: Form_dUpdateEntityScreen(entity: entity),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ).then((_) {
 | 
				
			||||||
 | 
					      final vm = Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					      vm.refreshData();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _navigateToDetailsScreen(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => Form_dViewModelScreen(),
 | 
				
			||||||
 | 
					          child: Form_dDetailsScreen(entity: entity),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _showDeleteDialog(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    showDialog(
 | 
				
			||||||
 | 
					      context: context,
 | 
				
			||||||
 | 
					      builder: (BuildContext context) {
 | 
				
			||||||
 | 
					        return AlertDialog(
 | 
				
			||||||
 | 
					          title: const Text('Confirm Deletion'),
 | 
				
			||||||
 | 
					          content: const Text('Are you sure you want to delete this Form_d?'),
 | 
				
			||||||
 | 
					          actions: [
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Cancel'),
 | 
				
			||||||
 | 
					              onPressed: () {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Delete'),
 | 
				
			||||||
 | 
					              onPressed: () async {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                final vm =
 | 
				
			||||||
 | 
					                    Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					                await vm.deleteEntity(entity['id']);
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<Form_dViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					        return EntityList(
 | 
				
			||||||
 | 
					          entities: viewModel.filteredList,
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					          errorMessage:
 | 
				
			||||||
 | 
					              viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null,
 | 
				
			||||||
 | 
					          hasMoreData: viewModel.hasMoreData,
 | 
				
			||||||
 | 
					          searchQuery: viewModel.searchQuery,
 | 
				
			||||||
 | 
					          onSearchChanged: (query) => viewModel.searchform_d(query),
 | 
				
			||||||
 | 
					          onEdit: (entity) => _navigateToUpdateScreen(entity),
 | 
				
			||||||
 | 
					          onDelete: (entity) => _showDeleteDialog(entity),
 | 
				
			||||||
 | 
					          onTap: (entity) => _navigateToDetailsScreen(entity),
 | 
				
			||||||
 | 
					          onRefresh: () => viewModel.refreshData(),
 | 
				
			||||||
 | 
					          onLoadMore: () => viewModel.getAllWithPagination(),
 | 
				
			||||||
 | 
					          title: 'Form_d',
 | 
				
			||||||
 | 
					          onAddNew: _navigateToCreateScreen,
 | 
				
			||||||
 | 
					          displayFields: [
 | 
				
			||||||
 | 
					  {'key': 'namek', 'label': 'Namek', 'type': 'text'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'number_field_a', 'label': 'Number Field a', 'type': 'number'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'number_field_b', 'label': 'Number Field b', 'type': 'number'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'calculated_add', 'label': 'calculated add', 'type': 'calculated_field'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/number_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/password_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/phone_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/custom_text_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/base_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/date_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/datetime_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/email_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/url_field.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/custom_text_field.dart' as shared_text;
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/calculated_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/one_to_many_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/value_list_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/captcha_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/switch_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/url_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/audio_upload_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/checkbox_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/file_upload_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/image_upload_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/radio_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/video_upload_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/autocomplete_dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/autocomplete_multiselect_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/data_grid_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/static_multiselect_field.dart';import '../Form_d_viewModel/Form_d_view_model_screen.dart';/// Field definitions for Form_d entity
 | 
				
			||||||
 | 
					/// This defines the structure and validation for Form_d forms
 | 
				
			||||||
 | 
					class Form_dFields {
 | 
				
			||||||
 | 
					  /// Get field definitions for Form_d entity
 | 
				
			||||||
 | 
					  static List<BaseField> getFields(BuildContext context) {
 | 
				
			||||||
 | 
					    final viewModel =
 | 
				
			||||||
 | 
					        Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    return [
 | 
				
			||||||
 | 
					      // Basic Information
 | 
				
			||||||
 | 
					 CustomTextField(
 | 
				
			||||||
 | 
					        fieldKey: 'namek',
 | 
				
			||||||
 | 
					        label: 'Namek',
 | 
				
			||||||
 | 
					        hint: 'Enter Namek',
 | 
				
			||||||
 | 
					        isRequired: true,
 | 
				
			||||||
 | 
					        maxLength: 50,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Number Fields
 | 
				
			||||||
 | 
					      NumberField(
 | 
				
			||||||
 | 
					        fieldKey: 'number_field_a',
 | 
				
			||||||
 | 
					        label: 'Number Field a',
 | 
				
			||||||
 | 
					        hint: 'Enter Number Field a',
 | 
				
			||||||
 | 
					        isRequired: false,
 | 
				
			||||||
 | 
					        min: 0,
 | 
				
			||||||
 | 
					        decimalPlaces: 0,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Number Fields
 | 
				
			||||||
 | 
					      NumberField(
 | 
				
			||||||
 | 
					        fieldKey: 'number_field_b',
 | 
				
			||||||
 | 
					        label: 'Number Field b',
 | 
				
			||||||
 | 
					        hint: 'Enter Number Field b',
 | 
				
			||||||
 | 
					        isRequired: false,
 | 
				
			||||||
 | 
					        min: 0,
 | 
				
			||||||
 | 
					        decimalPlaces: 0,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 CalculatedField(
 | 
				
			||||||
 | 
					        fieldKey: 'calculated_add',
 | 
				
			||||||
 | 
					        label: 'calculated add',
 | 
				
			||||||
 | 
					        hint: '',
 | 
				
			||||||
 | 
					        sourceKeys: const [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					'number_field_a',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					'number_field_b',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					],
 | 
				
			||||||
 | 
					        operation: 'Multiplication',
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,79 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../Form_d_viewModel/Form_d_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/ui/entity_screens.dart';
 | 
				
			||||||
 | 
					import 'Form_d_fields.dart';import '../../../../utils/image_constant.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/size_utils.dart';
 | 
				
			||||||
 | 
					import '../../../../theme/app_style.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_image.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_title.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/custom_app_bar.dart';
 | 
				
			||||||
 | 
					import 'package:barcode_widget/barcode_widget.dart';
 | 
				
			||||||
 | 
					import 'package:fluttertoast/fluttertoast.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_button.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_text_form_field.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:autocomplete_textfield/autocomplete_textfield.dart';
 | 
				
			||||||
 | 
					import 'package:qr_flutter/qr_flutter.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'dart:math';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_text_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_time_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_dropdown_field.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/services.dart';
 | 
				
			||||||
 | 
					class Form_dUpdateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					    final Map<String, dynamic> entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Form_dUpdateEntityScreen({required this.entity});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _Form_dUpdateEntityScreenState createState() => _Form_dUpdateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _Form_dUpdateEntityScreenState extends State<Form_dUpdateEntityScreen> {
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<Form_dViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					// Start with all fields, then remove upload fields (generic filter by keys)
 | 
				
			||||||
 | 
					        final Set<String> hiddenKeys = { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					        final fields = Form_dFields.getFields(context)
 | 
				
			||||||
 | 
					            .where((f) => !hiddenKeys.contains(f.fieldKey))
 | 
				
			||||||
 | 
					            .toList();        return EntityUpdateScreen(
 | 
				
			||||||
 | 
					          fields: fields,
 | 
				
			||||||
 | 
					          initialData: widget.entity,
 | 
				
			||||||
 | 
					          onSubmit: (data) => _handleSubmit(data),
 | 
				
			||||||
 | 
					          title: 'Form_d',
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					          errorMessage:
 | 
				
			||||||
 | 
					              viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> _handleSubmit(Map<String, dynamic> formData) async {
 | 
				
			||||||
 | 
					    final provider =
 | 
				
			||||||
 | 
					        Provider.of<Form_dViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    final success = await provider.updateEntity(widget.entity['id'], formData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (success && mounted) {
 | 
				
			||||||
 | 
					      Navigator.pop(context);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					import 'package:dio/dio.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/base_network_service.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/network_api_service.dart';
 | 
				
			||||||
 | 
					import '../../../../resources/api_constants.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/data/response/api_response.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Form_dRepoScreen {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					  final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					  final String _endpointPath = '/Form_d/Form_d';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<List<Map<String, dynamic>>>> getEntities() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response =
 | 
				
			||||||
 | 
					          await _helper.getGetApiResponse('$baseUrl$_endpointPath');
 | 
				
			||||||
 | 
					      return ApiResponse.success(response as List<Map<String, dynamic>>);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to get all entities: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination(
 | 
				
			||||||
 | 
					      int page, int size) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getGetApiResponse(
 | 
				
			||||||
 | 
					          '$baseUrl$_endpointPath/getall/page?page=$page&size=$size');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response is Map<String, dynamic> && response['content'] is List) {
 | 
				
			||||||
 | 
					        final List<Map<String, dynamic>> entities =
 | 
				
			||||||
 | 
					            (response['content'] as List).cast<Map<String, dynamic>>().toList();
 | 
				
			||||||
 | 
					        return ApiResponse.success(entities);
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        return ApiResponse.error('Invalid response format');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to get all without pagination: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<Map<String, dynamic>>> createEntity(
 | 
				
			||||||
 | 
					      Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      print("in post api$entity");
 | 
				
			||||||
 | 
					      final response =
 | 
				
			||||||
 | 
					          await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity);
 | 
				
			||||||
 | 
					      return ApiResponse.success(response as Map<String, dynamic>);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to create entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<Map<String, dynamic>>> updateEntity(
 | 
				
			||||||
 | 
					      int entityId, Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getPutApiResponse(
 | 
				
			||||||
 | 
					          '$baseUrl$_endpointPath/$entityId', entity);
 | 
				
			||||||
 | 
					      return ApiResponse.success(response as Map<String, dynamic>);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<void>> deleteEntity(int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await _helper.getDeleteApiResponse('$baseUrl$_endpointPath/$entityId');
 | 
				
			||||||
 | 
					      return ApiResponse.success(null);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,320 @@
 | 
				
			|||||||
 | 
					import 'package:base_project/data/response/status.dart';
 | 
				
			||||||
 | 
					import 'dart:typed_data';
 | 
				
			||||||
 | 
					import 'package:dio/dio.dart';
 | 
				
			||||||
 | 
					import 'package:http_parser/http_parser.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/toast_messages/toast_message_util.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/utils/entity_field_store.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import '../Form_d_Repo/Form_d_repo_screen.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Form_dViewModelScreen extends ChangeNotifier{
 | 
				
			||||||
 | 
					  final Form_dRepoScreen repo = Form_dRepoScreen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  // State variables
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> _form_dList = [];
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> _filteredList = [];
 | 
				
			||||||
 | 
					  bool _isLoading = false;
 | 
				
			||||||
 | 
					  String _errorMessage = '';
 | 
				
			||||||
 | 
					  int _currentPage = 0;
 | 
				
			||||||
 | 
					  int _pageSize = 10;
 | 
				
			||||||
 | 
					  bool _hasMoreData = true;
 | 
				
			||||||
 | 
					  String _searchQuery = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Getters
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> get form_dList => _form_dList;
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> get filteredList => _filteredList;
 | 
				
			||||||
 | 
					  bool get isLoading => _isLoading;
 | 
				
			||||||
 | 
					  String get errorMessage => _errorMessage;
 | 
				
			||||||
 | 
					  bool get hasMoreData => _hasMoreData;
 | 
				
			||||||
 | 
					  String get searchQuery => _searchQuery;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Set loading state
 | 
				
			||||||
 | 
					  void _setLoading(bool loading) {
 | 
				
			||||||
 | 
					    _isLoading = loading;
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Set error message
 | 
				
			||||||
 | 
					  void _setError(String error) {
 | 
				
			||||||
 | 
					    _errorMessage = error;
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Clear error
 | 
				
			||||||
 | 
					  void clearError() {
 | 
				
			||||||
 | 
					    _errorMessage = '';
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Get form_d list
 | 
				
			||||||
 | 
					  Future<void> getEntities() async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.getEntities();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        _form_dList = response.data ?? [];
 | 
				
			||||||
 | 
					        _filteredList = List.from(_form_dList);
 | 
				
			||||||
 | 
					        _currentPage = 0;
 | 
				
			||||||
 | 
					        _hasMoreData = true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to fetch form_d list');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to fetch form_d list: $e');
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Get form_d list with pagination
 | 
				
			||||||
 | 
					  Future<void> getAllWithPagination({bool refresh = false}) async {
 | 
				
			||||||
 | 
					    if (refresh) {
 | 
				
			||||||
 | 
					      _currentPage = 0;
 | 
				
			||||||
 | 
					      _form_dList.clear();
 | 
				
			||||||
 | 
					      _filteredList.clear();
 | 
				
			||||||
 | 
					      _hasMoreData = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!_hasMoreData || _isLoading) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.getAllWithPagination(_currentPage, _pageSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        final newItems = response.data ?? [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (refresh) {
 | 
				
			||||||
 | 
					          _form_dList = newItems;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          _form_dList.addAll(newItems);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _filteredList = List.from(_form_dList);
 | 
				
			||||||
 | 
					        _currentPage++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Check if we have more data
 | 
				
			||||||
 | 
					        _hasMoreData = newItems.length == _pageSize;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to fetch Form_d list');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to fetch form_d list: $e');
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Create Form_d
 | 
				
			||||||
 | 
					  Future<bool> createEntity(Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final response = await repo.createEntity(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					// Get the response ID for image upload
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final responseId = response.data!['id'].toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: 'form_d created successfully',
 | 
				
			||||||
 | 
					          toastType: ToastType.success,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Refresh the list
 | 
				
			||||||
 | 
					        await getEntities();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to create Form_d');
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: response.message ?? 'Failed to create Form_d',
 | 
				
			||||||
 | 
					          toastType: ToastType.error,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to create form_d: $e');
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					        message: 'Failed to create Form_d: $e',
 | 
				
			||||||
 | 
					        toastType: ToastType.error,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Update form_d
 | 
				
			||||||
 | 
					  Future<bool> updateEntity(int id, Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.updateEntity(id, entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: 'Form_d updated successfully',
 | 
				
			||||||
 | 
					          toastType: ToastType.success,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Update the item in the list
 | 
				
			||||||
 | 
					        final index = _form_dList.indexWhere((item) => item['id'] == id);
 | 
				
			||||||
 | 
					        if (index != -1) {
 | 
				
			||||||
 | 
					          _form_dList[index] = response.data!;
 | 
				
			||||||
 | 
					          _filteredList = List.from(_form_dList);
 | 
				
			||||||
 | 
					          notifyListeners();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to update Form_d');
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: response.message ?? 'Failed to update Form_d',
 | 
				
			||||||
 | 
					          toastType: ToastType.error,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to update form_d: $e');
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					        message: 'Failed to update Form_d: $e',
 | 
				
			||||||
 | 
					        toastType: ToastType.error,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Delete form_d
 | 
				
			||||||
 | 
					  Future<bool> deleteEntity(int id) async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.deleteEntity(id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: 'Form_d deleted successfully',
 | 
				
			||||||
 | 
					          toastType: ToastType.success,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Remove the item from the list
 | 
				
			||||||
 | 
					        _form_dList.removeWhere((item) => item['id'] == id);
 | 
				
			||||||
 | 
					        _filteredList = List.from(_form_dList);
 | 
				
			||||||
 | 
					        notifyListeners();
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to delete Form_d');
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: response.message ?? 'Failed to delete Form_d',
 | 
				
			||||||
 | 
					          toastType: ToastType.error,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to delete form_d: $e');
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					        message: 'Failed to delete Form_d: $e',
 | 
				
			||||||
 | 
					        toastType: ToastType.error,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Search form_d
 | 
				
			||||||
 | 
					  void searchform_d(String query) {
 | 
				
			||||||
 | 
					    _searchQuery = query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (query.isEmpty) {
 | 
				
			||||||
 | 
					      _filteredList = List.from(_form_dList);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      _filteredList = _form_dList.where((item) {
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					(item['namek']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					(item['number_field_a']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					(item['number_field_b']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					      }).toList();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Clear search
 | 
				
			||||||
 | 
					  void clearSearch() {
 | 
				
			||||||
 | 
					    _searchQuery = '';
 | 
				
			||||||
 | 
					    _filteredList = List.from(_form_dList);
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Refresh data
 | 
				
			||||||
 | 
					  Future<void> refreshData() async {
 | 
				
			||||||
 | 
					    await getAllWithPagination(refresh: true);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					import 'dart:typed_data';
 | 
				
			||||||
 | 
					import 'package:dio/dio.dart';
 | 
				
			||||||
 | 
					import 'package:http_parser/http_parser.dart';
 | 
				
			||||||
 | 
					import '../../../../resources/api_constants.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/base_network_service.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/network_api_service.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestlistApiService {
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Future<List<Map<String, dynamic>>> getEntities() async {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getGetApiResponse('$baseUrl/Testlist/Testlist');
 | 
				
			||||||
 | 
					      final entities = (response as List).cast<Map<String, dynamic>>();
 | 
				
			||||||
 | 
					      return entities;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to get all entities: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					Future<List<Map<String, dynamic>>> getAllWithPagination(
 | 
				
			||||||
 | 
					       int page, int size) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					            final response =
 | 
				
			||||||
 | 
					          await _helper.getGetApiResponse('$baseUrl/Testlist/Testlist/getall/page?page=$page&size=$size');
 | 
				
			||||||
 | 
					      final entities =
 | 
				
			||||||
 | 
					          (response['content'] as List).cast<Map<String, dynamic>>();
 | 
				
			||||||
 | 
					      return entities;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to get all without pagination: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  Future<Map<String, dynamic>> createEntity(
 | 
				
			||||||
 | 
					       Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					            print("in post api$entity");
 | 
				
			||||||
 | 
					      final response =
 | 
				
			||||||
 | 
					          await _helper.getPostApiResponse('$baseUrl/Testlist/Testlist', entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      print(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // Assuming the response is a Map<String, dynamic>
 | 
				
			||||||
 | 
					      Map<String, dynamic> responseData = response;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return responseData;
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to create entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> updateEntity( int entityId, Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					     await _helper.getPutApiResponse('$baseUrl/Testlist/Testlist/$entityId',
 | 
				
			||||||
 | 
					      entity);                print(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> deleteEntity( int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					 await _helper.getDeleteApiResponse('$baseUrl/Testlist/Testlist/$entityId');
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      throw Exception('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:file_picker/file_picker.dart';
 | 
				
			||||||
 | 
					import 'package:image_picker/image_picker.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../Testlist_viewModel/Testlist_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'Testlist_fields.dart';import 'package:base_project/BuilderField/shared/ui/entity_screens.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/image_constant.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/size_utils.dart';
 | 
				
			||||||
 | 
					import '../../../../theme/app_style.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_image.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_title.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/custom_app_bar.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_button.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_text_form_field.dart'; 
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_dropdown_field.dart';
 | 
				
			||||||
 | 
					import 'dart:math';
 | 
				
			||||||
 | 
					import 'package:qr_flutter/qr_flutter.dart';
 | 
				
			||||||
 | 
					import 'package:barcode_widget/barcode_widget.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					import 'package:autocomplete_textfield/autocomplete_textfield.dart';
 | 
				
			||||||
 | 
					import 'package:http/http.dart' as http;
 | 
				
			||||||
 | 
					import 'package:flutter/services.dart';
 | 
				
			||||||
 | 
					import 'package:image_picker/image_picker.dart';
 | 
				
			||||||
 | 
					import 'package:fluttertoast/fluttertoast.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_time_picker_field.dart'
 | 
				
			||||||
 | 
					;import 'package:multi_select_flutter/multi_select_flutter.dart';
 | 
				
			||||||
 | 
					import 'package:just_audio/just_audio.dart';
 | 
				
			||||||
 | 
					import 'package:video_player/video_player.dart';
 | 
				
			||||||
 | 
					import 'package:google_fonts/google_fonts.dart';
 | 
				
			||||||
 | 
					import 'package:lottie/lottie.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/toast_messages/toast_message_util.dart';
 | 
				
			||||||
 | 
					import 'dart:io';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_text_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_dropdown_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestlistCreateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					  const TestlistCreateEntityScreen({super.key});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _TestlistCreateEntityScreenState createState() => _TestlistCreateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _TestlistCreateEntityScreenState extends State<TestlistCreateEntityScreen> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Map<String, dynamic> formData = {};
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<TestlistViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					        return EntityCreateScreen(
 | 
				
			||||||
 | 
					          fields: TestlistFields.getFields(context),
 | 
				
			||||||
 | 
					          onSubmit: (data) => _handleSubmit(data),
 | 
				
			||||||
 | 
					          title: 'Testlist',
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					          errorMessage:
 | 
				
			||||||
 | 
					              viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> _handleSubmit(Map<String, dynamic> formData) async {
 | 
				
			||||||
 | 
					    final provider =
 | 
				
			||||||
 | 
					        Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    final success = await provider.createEntity(formData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (success && mounted) {
 | 
				
			||||||
 | 
					      Navigator.pop(context);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/ui/entity_details.dart';
 | 
				
			||||||
 | 
					import '../Testlist_viewModel/Testlist_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'Testlist_update_entity_screen.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestlistDetailsScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					  final Map<String, dynamic> entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const TestlistDetailsScreen({
 | 
				
			||||||
 | 
					    super.key,
 | 
				
			||||||
 | 
					    required this.entity,
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  State<TestlistDetailsScreen> createState() => _TestlistDetailsScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _TestlistDetailsScreenState extends State<TestlistDetailsScreen> {
 | 
				
			||||||
 | 
					  void _navigateToUpdateScreen(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => TestlistViewModelScreen(),
 | 
				
			||||||
 | 
					          child: TestlistUpdateEntityScreen(entity: entity),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ).then((_) {
 | 
				
			||||||
 | 
					      // Refresh the details screen with updated data
 | 
				
			||||||
 | 
					      setState(() {});
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _showDeleteDialog(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    showDialog(
 | 
				
			||||||
 | 
					      context: context,
 | 
				
			||||||
 | 
					      builder: (BuildContext context) {
 | 
				
			||||||
 | 
					        return AlertDialog(
 | 
				
			||||||
 | 
					          title: const Text('Confirm Deletion'),
 | 
				
			||||||
 | 
					          content: const Text('Are you sure you want to delete this Testlist?'),
 | 
				
			||||||
 | 
					          actions: [
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Cancel'),
 | 
				
			||||||
 | 
					              onPressed: () {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Delete'),
 | 
				
			||||||
 | 
					              onPressed: () async {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                final vm =
 | 
				
			||||||
 | 
					                    Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					                final success = await vm.deleteEntity(entity['id']);
 | 
				
			||||||
 | 
					                if (success && mounted) {
 | 
				
			||||||
 | 
					                  Navigator.pop(context); // Go back to list
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<TestlistViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					        return EntityDetails(
 | 
				
			||||||
 | 
					          entity: widget.entity,
 | 
				
			||||||
 | 
					          onEdit: (entity) => _navigateToUpdateScreen(entity),
 | 
				
			||||||
 | 
					          onDelete: (entity) => _showDeleteDialog(entity),
 | 
				
			||||||
 | 
					          title: 'Testlist',
 | 
				
			||||||
 | 
					          displayFields: [
 | 
				
			||||||
 | 
					  {'key': 'name', 'label': 'Name', 'type': 'text'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'description', 'label': 'Description', 'type': 'textarea'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,149 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/ui/entity_list.dart';
 | 
				
			||||||
 | 
					import 'Testlist_create_entity_screen.dart';
 | 
				
			||||||
 | 
					import 'Testlist_update_entity_screen.dart';
 | 
				
			||||||
 | 
					import '../Testlist_viewModel/Testlist_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'Testlist_details_screen.dart';import 'package:flutter/services.dart';
 | 
				
			||||||
 | 
					import 'package:speech_to_text/speech_to_text.dart' as stt;
 | 
				
			||||||
 | 
					import '../../../../theme/app_style.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/size_utils.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_icon_button.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/image_constant.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_image.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_title.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/custom_app_bar.dart';
 | 
				
			||||||
 | 
					import '../../../../theme/app_decoration.dart';
 | 
				
			||||||
 | 
					import 'package:multi_select_flutter/multi_select_flutter.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_text_field.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/toast_messages/toast_message_util.dart';
 | 
				
			||||||
 | 
					import 'package:fluttertoast/fluttertoast.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Testlist_entity_list_screen extends StatefulWidget {
 | 
				
			||||||
 | 
					  static const String routeName = '/entity-list';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _Testlist_entity_list_screenState createState() => _Testlist_entity_list_screenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _Testlist_entity_list_screenState extends State<Testlist_entity_list_screen> {
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    _loadData();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _loadData() {
 | 
				
			||||||
 | 
					    WidgetsBinding.instance.addPostFrameCallback((_) {
 | 
				
			||||||
 | 
					      if (mounted) {
 | 
				
			||||||
 | 
					        final vm = Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					        vm.getAllWithPagination(refresh: true);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _navigateToCreateScreen() {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => TestlistViewModelScreen(),
 | 
				
			||||||
 | 
					          child: const TestlistCreateEntityScreen(),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ).then((_) {
 | 
				
			||||||
 | 
					      final vm = Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					      vm.refreshData();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _navigateToUpdateScreen(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => TestlistViewModelScreen(),
 | 
				
			||||||
 | 
					          child: TestlistUpdateEntityScreen(entity: entity),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ).then((_) {
 | 
				
			||||||
 | 
					      final vm = Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					      vm.refreshData();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _navigateToDetailsScreen(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => ChangeNotifierProvider(
 | 
				
			||||||
 | 
					          create: (context) => TestlistViewModelScreen(),
 | 
				
			||||||
 | 
					          child: TestlistDetailsScreen(entity: entity),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void _showDeleteDialog(Map<String, dynamic> entity) {
 | 
				
			||||||
 | 
					    showDialog(
 | 
				
			||||||
 | 
					      context: context,
 | 
				
			||||||
 | 
					      builder: (BuildContext context) {
 | 
				
			||||||
 | 
					        return AlertDialog(
 | 
				
			||||||
 | 
					          title: const Text('Confirm Deletion'),
 | 
				
			||||||
 | 
					          content: const Text('Are you sure you want to delete this Testlist?'),
 | 
				
			||||||
 | 
					          actions: [
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Cancel'),
 | 
				
			||||||
 | 
					              onPressed: () {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            TextButton(
 | 
				
			||||||
 | 
					              child: const Text('Delete'),
 | 
				
			||||||
 | 
					              onPressed: () async {
 | 
				
			||||||
 | 
					                Navigator.of(context).pop();
 | 
				
			||||||
 | 
					                final vm =
 | 
				
			||||||
 | 
					                    Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					                await vm.deleteEntity(entity['id']);
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<TestlistViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					        return EntityList(
 | 
				
			||||||
 | 
					          entities: viewModel.filteredList,
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					          errorMessage:
 | 
				
			||||||
 | 
					              viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null,
 | 
				
			||||||
 | 
					          hasMoreData: viewModel.hasMoreData,
 | 
				
			||||||
 | 
					          searchQuery: viewModel.searchQuery,
 | 
				
			||||||
 | 
					          onSearchChanged: (query) => viewModel.searchtestlist(query),
 | 
				
			||||||
 | 
					          onEdit: (entity) => _navigateToUpdateScreen(entity),
 | 
				
			||||||
 | 
					          onDelete: (entity) => _showDeleteDialog(entity),
 | 
				
			||||||
 | 
					          onTap: (entity) => _navigateToDetailsScreen(entity),
 | 
				
			||||||
 | 
					          onRefresh: () => viewModel.refreshData(),
 | 
				
			||||||
 | 
					          onLoadMore: () => viewModel.getAllWithPagination(),
 | 
				
			||||||
 | 
					          title: 'Testlist',
 | 
				
			||||||
 | 
					          onAddNew: _navigateToCreateScreen,
 | 
				
			||||||
 | 
					          displayFields: [
 | 
				
			||||||
 | 
					  {'key': 'name', 'label': 'Name', 'type': 'text'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'description', 'label': 'Description', 'type': 'textarea'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {'key': 'active', 'label': 'Active', 'type': 'toggle_switch'},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/number_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/password_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/phone_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/custom_text_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/base_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/date_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/datetime_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/email_field.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/fields/url_field.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/custom_text_field.dart' as shared_text;
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/calculated_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/one_to_many_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/value_list_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/captcha_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/switch_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/url_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/audio_upload_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/checkbox_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/file_upload_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/image_upload_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/radio_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/video_upload_field.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/autocomplete_dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/autocomplete_multiselect_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/one_to_one_relation_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/data_grid_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/dynamic_dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/dynamic_multiselect_dropdown_field.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/fields/static_multiselect_field.dart';import '../Testlist_viewModel/Testlist_view_model_screen.dart';/// Field definitions for Testlist entity
 | 
				
			||||||
 | 
					/// This defines the structure and validation for Testlist forms
 | 
				
			||||||
 | 
					class TestlistFields {
 | 
				
			||||||
 | 
					  /// Get field definitions for Testlist entity
 | 
				
			||||||
 | 
					  static List<BaseField> getFields(BuildContext context) {
 | 
				
			||||||
 | 
					    final viewModel =
 | 
				
			||||||
 | 
					        Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    return [
 | 
				
			||||||
 | 
					      // Basic Information
 | 
				
			||||||
 | 
					 CustomTextField(
 | 
				
			||||||
 | 
					        fieldKey: 'name',
 | 
				
			||||||
 | 
					        label: 'Name',
 | 
				
			||||||
 | 
					        hint: 'Enter Name',
 | 
				
			||||||
 | 
					        isRequired: true,
 | 
				
			||||||
 | 
					        maxLength: 50,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CustomTextField(
 | 
				
			||||||
 | 
					        fieldKey: 'description',
 | 
				
			||||||
 | 
					        label: 'Description',
 | 
				
			||||||
 | 
					        hint: 'Enter Description',
 | 
				
			||||||
 | 
					        isRequired: false,
 | 
				
			||||||
 | 
					        maxLength: 1000,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 SwitchField(
 | 
				
			||||||
 | 
					        fieldKey: 'active',
 | 
				
			||||||
 | 
					        label: 'Active',
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,77 @@
 | 
				
			|||||||
 | 
					// ignore_for_file: use_build_context_synchronously
 | 
				
			||||||
 | 
					import 'dart:convert';
 | 
				
			||||||
 | 
					import 'package:provider/provider.dart';
 | 
				
			||||||
 | 
					import '../Testlist_viewModel/Testlist_view_model_screen.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/BuilderField/shared/ui/entity_screens.dart';
 | 
				
			||||||
 | 
					import 'Testlist_fields.dart';import '../../../../utils/image_constant.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/size_utils.dart';
 | 
				
			||||||
 | 
					import '../../../../theme/app_style.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_image.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/appbar_title.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/app_bar/custom_app_bar.dart';
 | 
				
			||||||
 | 
					import 'package:barcode_widget/barcode_widget.dart';
 | 
				
			||||||
 | 
					import 'package:fluttertoast/fluttertoast.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_button.dart';
 | 
				
			||||||
 | 
					import '../../../../widgets/custom_text_form_field.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:autocomplete_textfield/autocomplete_textfield.dart';
 | 
				
			||||||
 | 
					import 'package:qr_flutter/qr_flutter.dart';
 | 
				
			||||||
 | 
					import 'package:intl/intl.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'dart:math';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_text_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_date_time_picker_field.dart';
 | 
				
			||||||
 | 
					import '../../../../Reuseable/reusable_dropdown_field.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/services.dart';
 | 
				
			||||||
 | 
					class TestlistUpdateEntityScreen extends StatefulWidget {
 | 
				
			||||||
 | 
					    final Map<String, dynamic> entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TestlistUpdateEntityScreen({required this.entity});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  _TestlistUpdateEntityScreenState createState() => _TestlistUpdateEntityScreenState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _TestlistUpdateEntityScreenState extends State<TestlistUpdateEntityScreen> {
 | 
				
			||||||
 | 
					  final _formKey = GlobalKey<FormState>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Consumer<TestlistViewModelScreen>(
 | 
				
			||||||
 | 
					      builder: (context, viewModel, child) {
 | 
				
			||||||
 | 
					// Start with all fields, then remove upload fields (generic filter by keys)
 | 
				
			||||||
 | 
					        final Set<String> hiddenKeys = { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					        final fields = TestlistFields.getFields(context)
 | 
				
			||||||
 | 
					            .where((f) => !hiddenKeys.contains(f.fieldKey))
 | 
				
			||||||
 | 
					            .toList();        return EntityUpdateScreen(
 | 
				
			||||||
 | 
					          fields: fields,
 | 
				
			||||||
 | 
					          initialData: widget.entity,
 | 
				
			||||||
 | 
					          onSubmit: (data) => _handleSubmit(data),
 | 
				
			||||||
 | 
					          title: 'Testlist',
 | 
				
			||||||
 | 
					          isLoading: viewModel.isLoading,
 | 
				
			||||||
 | 
					          errorMessage:
 | 
				
			||||||
 | 
					              viewModel.errorMessage.isNotEmpty ? viewModel.errorMessage : null,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> _handleSubmit(Map<String, dynamic> formData) async {
 | 
				
			||||||
 | 
					    final provider =
 | 
				
			||||||
 | 
					        Provider.of<TestlistViewModelScreen>(context, listen: false);
 | 
				
			||||||
 | 
					    final success = await provider.updateEntity(widget.entity['id'], formData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (success && mounted) {
 | 
				
			||||||
 | 
					      Navigator.pop(context);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					import 'package:dio/dio.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/base_network_service.dart';
 | 
				
			||||||
 | 
					import '../../../../data/network/network_api_service.dart';
 | 
				
			||||||
 | 
					import '../../../../resources/api_constants.dart';
 | 
				
			||||||
 | 
					import 'package:base_project/data/response/api_response.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestlistRepoScreen {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final String baseUrl = ApiConstants.baseUrl;
 | 
				
			||||||
 | 
					  final BaseNetworkService _helper = NetworkApiService();
 | 
				
			||||||
 | 
					  final String _endpointPath = '/Testlist/Testlist';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<List<Map<String, dynamic>>>> getEntities() async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response =
 | 
				
			||||||
 | 
					          await _helper.getGetApiResponse('$baseUrl$_endpointPath');
 | 
				
			||||||
 | 
					      return ApiResponse.success(response as List<Map<String, dynamic>>);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to get all entities: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<List<Map<String, dynamic>>>> getAllWithPagination(
 | 
				
			||||||
 | 
					      int page, int size) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getGetApiResponse(
 | 
				
			||||||
 | 
					          '$baseUrl$_endpointPath/getall/page?page=$page&size=$size');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response is Map<String, dynamic> && response['content'] is List) {
 | 
				
			||||||
 | 
					        final List<Map<String, dynamic>> entities =
 | 
				
			||||||
 | 
					            (response['content'] as List).cast<Map<String, dynamic>>().toList();
 | 
				
			||||||
 | 
					        return ApiResponse.success(entities);
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        return ApiResponse.error('Invalid response format');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to get all without pagination: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<Map<String, dynamic>>> createEntity(
 | 
				
			||||||
 | 
					      Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      print("in post api$entity");
 | 
				
			||||||
 | 
					      final response =
 | 
				
			||||||
 | 
					          await _helper.getPostApiResponse('$baseUrl$_endpointPath', entity);
 | 
				
			||||||
 | 
					      return ApiResponse.success(response as Map<String, dynamic>);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to create entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<Map<String, dynamic>>> updateEntity(
 | 
				
			||||||
 | 
					      int entityId, Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await _helper.getPutApiResponse(
 | 
				
			||||||
 | 
					          '$baseUrl$_endpointPath/$entityId', entity);
 | 
				
			||||||
 | 
					      return ApiResponse.success(response as Map<String, dynamic>);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to update entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<ApiResponse<void>> deleteEntity(int entityId) async {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await _helper.getDeleteApiResponse('$baseUrl$_endpointPath/$entityId');
 | 
				
			||||||
 | 
					      return ApiResponse.success(null);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      return ApiResponse.error('Failed to delete entity: $e');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,305 @@
 | 
				
			|||||||
 | 
					import 'package:base_project/data/response/status.dart';
 | 
				
			||||||
 | 
					import 'dart:typed_data';
 | 
				
			||||||
 | 
					import 'package:dio/dio.dart';
 | 
				
			||||||
 | 
					import 'package:http_parser/http_parser.dart';
 | 
				
			||||||
 | 
					import '../../../../utils/toast_messages/toast_message_util.dart';
 | 
				
			||||||
 | 
					import '../../../../BuilderField/shared/utils/entity_field_store.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import '../Testlist_Repo/Testlist_repo_screen.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestlistViewModelScreen extends ChangeNotifier{
 | 
				
			||||||
 | 
					  final TestlistRepoScreen repo = TestlistRepoScreen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  // State variables
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> _testlistList = [];
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> _filteredList = [];
 | 
				
			||||||
 | 
					  bool _isLoading = false;
 | 
				
			||||||
 | 
					  String _errorMessage = '';
 | 
				
			||||||
 | 
					  int _currentPage = 0;
 | 
				
			||||||
 | 
					  int _pageSize = 10;
 | 
				
			||||||
 | 
					  bool _hasMoreData = true;
 | 
				
			||||||
 | 
					  String _searchQuery = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Getters
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> get testlistList => _testlistList;
 | 
				
			||||||
 | 
					  List<Map<String, dynamic>> get filteredList => _filteredList;
 | 
				
			||||||
 | 
					  bool get isLoading => _isLoading;
 | 
				
			||||||
 | 
					  String get errorMessage => _errorMessage;
 | 
				
			||||||
 | 
					  bool get hasMoreData => _hasMoreData;
 | 
				
			||||||
 | 
					  String get searchQuery => _searchQuery;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Set loading state
 | 
				
			||||||
 | 
					  void _setLoading(bool loading) {
 | 
				
			||||||
 | 
					    _isLoading = loading;
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Set error message
 | 
				
			||||||
 | 
					  void _setError(String error) {
 | 
				
			||||||
 | 
					    _errorMessage = error;
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Clear error
 | 
				
			||||||
 | 
					  void clearError() {
 | 
				
			||||||
 | 
					    _errorMessage = '';
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Get testlist list
 | 
				
			||||||
 | 
					  Future<void> getEntities() async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.getEntities();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        _testlistList = response.data ?? [];
 | 
				
			||||||
 | 
					        _filteredList = List.from(_testlistList);
 | 
				
			||||||
 | 
					        _currentPage = 0;
 | 
				
			||||||
 | 
					        _hasMoreData = true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to fetch testlist list');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to fetch testlist list: $e');
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Get testlist list with pagination
 | 
				
			||||||
 | 
					  Future<void> getAllWithPagination({bool refresh = false}) async {
 | 
				
			||||||
 | 
					    if (refresh) {
 | 
				
			||||||
 | 
					      _currentPage = 0;
 | 
				
			||||||
 | 
					      _testlistList.clear();
 | 
				
			||||||
 | 
					      _filteredList.clear();
 | 
				
			||||||
 | 
					      _hasMoreData = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!_hasMoreData || _isLoading) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.getAllWithPagination(_currentPage, _pageSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        final newItems = response.data ?? [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (refresh) {
 | 
				
			||||||
 | 
					          _testlistList = newItems;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          _testlistList.addAll(newItems);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _filteredList = List.from(_testlistList);
 | 
				
			||||||
 | 
					        _currentPage++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Check if we have more data
 | 
				
			||||||
 | 
					        _hasMoreData = newItems.length == _pageSize;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to fetch Testlist list');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to fetch testlist list: $e');
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Create Testlist
 | 
				
			||||||
 | 
					  Future<bool> createEntity(Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      final response = await repo.createEntity(entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					// Get the response ID for image upload
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final responseId = response.data!['id'].toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: 'testlist created successfully',
 | 
				
			||||||
 | 
					          toastType: ToastType.success,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Refresh the list
 | 
				
			||||||
 | 
					        await getEntities();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to create Testlist');
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: response.message ?? 'Failed to create Testlist',
 | 
				
			||||||
 | 
					          toastType: ToastType.error,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to create testlist: $e');
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					        message: 'Failed to create Testlist: $e',
 | 
				
			||||||
 | 
					        toastType: ToastType.error,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Update testlist
 | 
				
			||||||
 | 
					  Future<bool> updateEntity(int id, Map<String, dynamic> entity) async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.updateEntity(id, entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: 'Testlist updated successfully',
 | 
				
			||||||
 | 
					          toastType: ToastType.success,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Update the item in the list
 | 
				
			||||||
 | 
					        final index = _testlistList.indexWhere((item) => item['id'] == id);
 | 
				
			||||||
 | 
					        if (index != -1) {
 | 
				
			||||||
 | 
					          _testlistList[index] = response.data!;
 | 
				
			||||||
 | 
					          _filteredList = List.from(_testlistList);
 | 
				
			||||||
 | 
					          notifyListeners();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to update Testlist');
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: response.message ?? 'Failed to update Testlist',
 | 
				
			||||||
 | 
					          toastType: ToastType.error,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to update testlist: $e');
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					        message: 'Failed to update Testlist: $e',
 | 
				
			||||||
 | 
					        toastType: ToastType.error,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Delete testlist
 | 
				
			||||||
 | 
					  Future<bool> deleteEntity(int id) async {
 | 
				
			||||||
 | 
					    _setLoading(true);
 | 
				
			||||||
 | 
					    _setError('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      final response = await repo.deleteEntity(id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (response.status == Status.SUCCESS) {
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: 'Testlist deleted successfully',
 | 
				
			||||||
 | 
					          toastType: ToastType.success,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Remove the item from the list
 | 
				
			||||||
 | 
					        _testlistList.removeWhere((item) => item['id'] == id);
 | 
				
			||||||
 | 
					        _filteredList = List.from(_testlistList);
 | 
				
			||||||
 | 
					        notifyListeners();
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        _setError(response.message ?? 'Failed to delete Testlist');
 | 
				
			||||||
 | 
					        ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					          message: response.message ?? 'Failed to delete Testlist',
 | 
				
			||||||
 | 
					          toastType: ToastType.error,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      _setError('Failed to delete testlist: $e');
 | 
				
			||||||
 | 
					      ToastMessageUtil.showToast(
 | 
				
			||||||
 | 
					        message: 'Failed to delete Testlist: $e',
 | 
				
			||||||
 | 
					        toastType: ToastType.error,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      _setLoading(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Search testlist
 | 
				
			||||||
 | 
					  void searchtestlist(String query) {
 | 
				
			||||||
 | 
					    _searchQuery = query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (query.isEmpty) {
 | 
				
			||||||
 | 
					      _filteredList = List.from(_testlistList);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      _filteredList = _testlistList.where((item) {
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					(item['name']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					(item['description']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(item['active']?.toString().toLowerCase().contains(query.toLowerCase()) ??false) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					      }).toList();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Clear search
 | 
				
			||||||
 | 
					  void clearSearch() {
 | 
				
			||||||
 | 
					    _searchQuery = '';
 | 
				
			||||||
 | 
					    _filteredList = List.from(_testlistList);
 | 
				
			||||||
 | 
					    notifyListeners();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Refresh data
 | 
				
			||||||
 | 
					  Future<void> refreshData() async {
 | 
				
			||||||
 | 
					    await getAllWithPagination(refresh: true);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										4
									
								
								test028cal-testfldb-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								test028cal-testfldb-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					CREATE TABLE testfldb.Testlist(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400),  PRIMARY KEY (id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE testfldb.Form_d(id BIGINT NOT NULL AUTO_INCREMENT, namek VARCHAR(400), calculated_add VARCHAR(400), number_field_a int, number_field_b int,  PRIMARY KEY (id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user