build_app
This commit is contained in:
		
							parent
							
								
									cddf24e51b
								
							
						
					
					
						commit
						dbe1ca9935
					
				| @ -69,6 +69,9 @@ public class BuilderService { | |||||||
| 		executeDump(true); | 		executeDump(true); | ||||||
| 
 | 
 | ||||||
| 		// ADD OTHER SERVICE | 		// ADD OTHER SERVICE | ||||||
|  | addCustomMenu( "Kirantest","Kirantest",  "Transcations");  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 		System.out.println("dashboard and menu inserted..."); | 		System.out.println("dashboard and menu inserted..."); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -0,0 +1,91 @@ | |||||||
|  | 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.Kirantest; | ||||||
|  | import com.realnet.basic1.Services.KirantestService ; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @RequestMapping(value = "/Kirantest") | ||||||
|  |  @CrossOrigin("*")  | ||||||
|  | @RestController | ||||||
|  | public class KirantestController { | ||||||
|  | 	@Autowired | ||||||
|  | 	private KirantestService Service; | ||||||
|  | 
 | ||||||
|  | @Value("${projectPath}") | ||||||
|  | 	private String projectPath; | ||||||
|  |   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	@PostMapping("/Kirantest") | ||||||
|  | 		  public Kirantest Savedata(@RequestBody Kirantest data) { | ||||||
|  | 		Kirantest save = Service.Savedata(data)	; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		System.out.println("data saved..." + save); | ||||||
|  | 
 | ||||||
|  |  return save; | ||||||
|  | 	  } | ||||||
|  | @PutMapping("/Kirantest/{id}") | ||||||
|  | 	public  Kirantest update(@RequestBody Kirantest data,@PathVariable Integer id ) { | ||||||
|  | 		Kirantest update = Service.update(data,id); | ||||||
|  | 		System.out.println("data update..." + update); | ||||||
|  | 		return update; | ||||||
|  | 	}	  | ||||||
|  | //	get all with pagination | ||||||
|  | 	@GetMapping("/Kirantest/getall/page") | ||||||
|  | 	public Page<Kirantest> getall(@RequestParam(value = "page", required = false) Integer page, | ||||||
|  | 			@RequestParam(value = "size", required = false) Integer size) { | ||||||
|  | 		Pageable paging = PageRequest.of(page, size); | ||||||
|  | 		Page<Kirantest> get = Service.getAllWithPagination(paging); | ||||||
|  | 
 | ||||||
|  | 		return get; | ||||||
|  | 
 | ||||||
|  | 	}	 | ||||||
|  | 	@GetMapping("/Kirantest") | ||||||
|  | 	public List<Kirantest> getdetails() { | ||||||
|  | 		 List<Kirantest> get = Service.getdetails();		 | ||||||
|  | 		return get; | ||||||
|  | } | ||||||
|  | // get all without authentication  | ||||||
|  | 
 | ||||||
|  | 	@GetMapping("/token/Kirantest") | ||||||
|  | 	public List<Kirantest> getallwioutsec() { | ||||||
|  | 		 List<Kirantest> get = Service.getdetails();		 | ||||||
|  | 		return get; | ||||||
|  | } | ||||||
|  | @GetMapping("/Kirantest/{id}") | ||||||
|  | 	public  Kirantest  getdetailsbyId(@PathVariable Integer id ) { | ||||||
|  | 		Kirantest  get = Service.getdetailsbyId(id); | ||||||
|  | 		return get; | ||||||
|  | 	} | ||||||
|  | @DeleteMapping("/Kirantest/{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,91 @@ | |||||||
|  | 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.Kirantest; | ||||||
|  | import com.realnet.basic1.Services.KirantestService ; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @RequestMapping(value = "/token/Kirantest") | ||||||
|  |  @CrossOrigin("*")  | ||||||
|  | @RestController | ||||||
|  | public class tokenFree_KirantestController { | ||||||
|  | 	@Autowired | ||||||
|  | 	private KirantestService Service; | ||||||
|  | 
 | ||||||
|  | @Value("${projectPath}") | ||||||
|  | 	private String projectPath; | ||||||
|  |   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	@PostMapping("/Kirantest") | ||||||
|  | 		  public Kirantest Savedata(@RequestBody Kirantest data) { | ||||||
|  | 		Kirantest save = Service.Savedata(data)	; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		System.out.println("data saved..." + save); | ||||||
|  | 
 | ||||||
|  |  return save; | ||||||
|  | 	  } | ||||||
|  | @PutMapping("/Kirantest/{id}") | ||||||
|  | 	public  Kirantest update(@RequestBody Kirantest data,@PathVariable Integer id ) { | ||||||
|  | 		Kirantest update = Service.update(data,id); | ||||||
|  | 		System.out.println("data update..." + update); | ||||||
|  | 		return update; | ||||||
|  | 	}	  | ||||||
|  | //	get all with pagination | ||||||
|  | 	@GetMapping("/Kirantest/getall/page") | ||||||
|  | 	public Page<Kirantest> getall(@RequestParam(value = "page", required = false) Integer page, | ||||||
|  | 			@RequestParam(value = "size", required = false) Integer size) { | ||||||
|  | 		Pageable paging = PageRequest.of(page, size); | ||||||
|  | 		Page<Kirantest> get = Service.getAllWithPagination(paging); | ||||||
|  | 
 | ||||||
|  | 		return get; | ||||||
|  | 
 | ||||||
|  | 	}	 | ||||||
|  | 	@GetMapping("/Kirantest") | ||||||
|  | 	public List<Kirantest> getdetails() { | ||||||
|  | 		 List<Kirantest> get = Service.getdetails();		 | ||||||
|  | 		return get; | ||||||
|  | } | ||||||
|  | // get all without authentication  | ||||||
|  | 
 | ||||||
|  | 	@GetMapping("/token/Kirantest") | ||||||
|  | 	public List<Kirantest> getallwioutsec() { | ||||||
|  | 		 List<Kirantest> get = Service.getdetails();		 | ||||||
|  | 		return get; | ||||||
|  | } | ||||||
|  | @GetMapping("/Kirantest/{id}") | ||||||
|  | 	public  Kirantest  getdetailsbyId(@PathVariable Integer id ) { | ||||||
|  | 		Kirantest  get = Service.getdetailsbyId(id); | ||||||
|  | 		return get; | ||||||
|  | 	} | ||||||
|  | @DeleteMapping("/Kirantest/{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,29 @@ | |||||||
|  | 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    Kirantest 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; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -0,0 +1,28 @@ | |||||||
|  | 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.Kirantest; | ||||||
|  | 
 | ||||||
|  | @Repository | ||||||
|  | public interface  KirantestRepository  extends  JpaRepository<Kirantest, Integer>  {  | ||||||
|  | 
 | ||||||
|  | @Query(value = "select * from kirantest where  created_by=?1", nativeQuery = true) | ||||||
|  | 	List<Kirantest> findAll(Long creayedBy); | ||||||
|  | 
 | ||||||
|  | @Query(value = "select * from kirantest where  created_by=?1", nativeQuery = true) | ||||||
|  | 	Page<Kirantest> findAll(Pageable page, Long creayedBy); | ||||||
|  | } | ||||||
| @ -0,0 +1,83 @@ | |||||||
|  | package com.realnet.basic1.Services; | ||||||
|  | import com.realnet.basic1.Repository.KirantestRepository; | ||||||
|  | import com.realnet.basic1.Entity.Kirantest | ||||||
|  | ;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 KirantestService { | ||||||
|  | @Autowired | ||||||
|  | private KirantestRepository Repository; | ||||||
|  | 	@Autowired | ||||||
|  | 	private AppUserServiceImpl userService;  | ||||||
|  | @Autowired | ||||||
|  | 	private RealmService realmService; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public Kirantest Savedata(Kirantest data) { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	data.setUpdatedBy(getUser().getUserId()); | ||||||
|  | 		data.setCreatedBy(getUser().getUserId()); | ||||||
|  | 		data.setAccountId(getUser().getAccount().getAccount_id()); | ||||||
|  | Kirantest save = Repository.save(data); | ||||||
|  | 				return save;	 | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //	get all with pagination | ||||||
|  | 	public Page<Kirantest> getAllWithPagination(Pageable page) { | ||||||
|  | 		return Repository.findAll(page, getUser().getUserId()); | ||||||
|  | 	}			 | ||||||
|  | public List<Kirantest> getdetails() {   | ||||||
|  | 		List<Realm> realm = realmService.findByUserId(getUser().getUserId()); | ||||||
|  | List<Kirantest> all = Repository.findAll(getUser().getUserId()); | ||||||
|  | 		 | ||||||
|  | 		return all ;		} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public Kirantest getdetailsbyId(Integer id) { | ||||||
|  | 	return Repository.findById(id).get(); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	public void delete_by_id(Integer id) { | ||||||
|  |  Repository.deleteById(id); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public Kirantest update(Kirantest data,Integer id) { | ||||||
|  | 	Kirantest old = Repository.findById(id).get(); | ||||||
|  | old.setName(data.getName()); | ||||||
|  | 
 | ||||||
|  | old.setDescription(data.getDescription()); | ||||||
|  | 
 | ||||||
|  | final Kirantest test = Repository.save(old); | ||||||
|  | 		data.setUpdatedBy(getUser().getUserId()); | ||||||
|  |   return test;}  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  public AppUser getUser() { | ||||||
|  | 		AppUser user = userService.getLoggedInUser(); | ||||||
|  | 		return user; | ||||||
|  | 
 | ||||||
|  | 	}} | ||||||
							
								
								
									
										2
									
								
								test40rb-da-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								test40rb-da-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | CREATE TABLE da.Kirantest(id BIGINT NOT NULL AUTO_INCREMENT, description VARCHAR(400), name VARCHAR(400),  PRIMARY KEY (id)); | ||||||
|  | 
 | ||||||
| @ -1,3 +1,5 @@ | |||||||
|  | import Kirantest from "./components/BuilderComponents/basic1/Kirantest/Kirantest"; | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| import React from "react"; | import React from "react"; | ||||||
| @ -139,6 +141,9 @@ const App = () => { | |||||||
|             <Route path="dashrunner/:id" element={<DashboardRunner/>}/> |             <Route path="dashrunner/:id" element={<DashboardRunner/>}/> | ||||||
|             {/* <Route path="test" element={<Regform />} /> */} |             {/* <Route path="test" element={<Regform />} /> */} | ||||||
|              {/* buildercomponents */} |              {/* buildercomponents */} | ||||||
|  |         <Route path="/Kirantest" element={<Kirantest />} /> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|                |                | ||||||
|             |             | ||||||
|                |                | ||||||
| @ -156,4 +161,3 @@ const App = () => { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default App; | export default App; | ||||||
| 
 |  | ||||||
|  | |||||||
| @ -0,0 +1,483 @@ | |||||||
|  | import React, { useEffect, useState , useRef } from "react"; | ||||||
|  | import QRCode from "qrcode.react"; | ||||||
|  | import Barcode from "react-barcode"; | ||||||
|  | import html2canvas from "html2canvas"; | ||||||
|  | import Select from "react-select"; | ||||||
|  | import ReCAPTCHA from "react-google-recaptcha"; | ||||||
|  | import axios from "axios"; | ||||||
|  | import { FaTrash } from "react-icons/fa"; | ||||||
|  | import { Modal, Button, Form, Pagination,Container, Row, Col, Image , ProgressBar , } from "react-bootstrap"; | ||||||
|  | import { ToastContainer, toast } from "react-toastify"; | ||||||
|  | import "react-toastify/dist/ReactToastify.css"; | ||||||
|  | import { getToken } from '../../../../utils/tokenService';import Table from "react-bootstrap/Table"; | ||||||
|  | const FILE_API_URL = `${process.env.REACT_APP_API_URL}/FileUpload/Uploadeddocs`;  | ||||||
|  | const API_URL = `${process.env.REACT_APP_API_URL}/Kirantest/Kirantest`; | ||||||
|  | const REACT_APP_API_TOKEN = localStorage.getItem("authToken") | ||||||
|  | 
 | ||||||
|  | const EntityTable = () => { | ||||||
|  |   const [data, setData] = useState([]); | ||||||
|  |   const [filteredData, setFilteredData] = useState([]); | ||||||
|  |   const [newEntity, setNewEntity] = useState({ | ||||||
|  |     name: "", | ||||||
|  | 
 | ||||||
|  |     description: "", | ||||||
|  | 
 | ||||||
|  |   }); | ||||||
|  |   const [editEntity, setEditEntity] = useState(null); | ||||||
|  |   const [showEditModal, setShowEditModal] = useState(false); | ||||||
|  |   const [showAddModal, setShowAddModal] = useState(false); | ||||||
|  |   const [showDeleteModal, setShowDeleteModal] = useState(false); | ||||||
|  |   const [deleteEntityId, setDeleteEntityId] = useState(null); | ||||||
|  |   const [currentPage, setCurrentPage] = useState(1); | ||||||
|  |   const [itemsPerPage] = useState(5); // Adjust this value as needed
 | ||||||
|  |   const [searchQuery, setSearchQuery] = useState(""); | ||||||
|  |   const [loading, setLoading] = useState(true); | ||||||
|  |   const [options, setOptions] = useState([]); | ||||||
|  |   const [filteredOptions, setFilteredOptions] = useState([]); | ||||||
|  |   const [error, setError] = useState(null); | ||||||
|  |  const [uploadProgress, setUploadProgress] = useState(0); | ||||||
|  |  const [showModal, setShowModal] = useState(false); | ||||||
|  |   const [showValulistModal, setShowValulistModal] = useState(false); | ||||||
|  |  const barcodeRef = useRef(null); | ||||||
|  |   const [serverData, setServerData] = useState([]); | ||||||
|  |   const recaptchaRef = useRef(null); | ||||||
|  |  const editBarcodeRef = useRef(null); | ||||||
|  |   useEffect(() => { | ||||||
|  |     fetchData(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   }, []); | ||||||
|  | 
 | ||||||
|  |   useEffect(() => { | ||||||
|  |     handleSearch(); | ||||||
|  |   }, [searchQuery, data]); | ||||||
|  |   const fetchData = async () => { | ||||||
|  |     try { | ||||||
|  | const token = getToken(); | ||||||
|  |       const response = await axios.get(API_URL, { | ||||||
|  |         headers: { Authorization: `Bearer ${token}` }, | ||||||
|  |       }); | ||||||
|  |       setData(response.data); | ||||||
|  |     } catch (error) { | ||||||
|  |       console.error("Error fetching data:", error); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleDelete = async () => { | ||||||
|  |     try { | ||||||
|  |  const token = getToken(); | ||||||
|  |       await axios.delete(`${API_URL}/${deleteEntityId}`, { | ||||||
|  |         headers: { Authorization: `Bearer ${token}` }, | ||||||
|  |       }); | ||||||
|  |       fetchData(); | ||||||
|  |       toast.success("Successfully deleted!"); | ||||||
|  |       setShowDeleteModal(false); | ||||||
|  |     } catch (error) { | ||||||
|  |       console.error("Error deleting data:", error); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleAdd = async () => { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     try { | ||||||
|  |  const token = getToken(); | ||||||
|  |       await axios.post(API_URL, newEntity, { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         headers: { Authorization: `Bearer ${token}` }, | ||||||
|  |       }); | ||||||
|  |       fetchData(); | ||||||
|  |       setNewEntity({ | ||||||
|  |     name: "", | ||||||
|  | 
 | ||||||
|  |     description: "", | ||||||
|  | 
 | ||||||
|  |       }); | ||||||
|  |       setShowAddModal(false); | ||||||
|  |       toast.success("Successfully added!"); | ||||||
|  |     } catch (error) { | ||||||
|  |       console.error("Error adding data:", error); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleChange = (e) => { | ||||||
|  |     const { name, value } = e.target; | ||||||
|  |     setNewEntity({ ...newEntity, [name]: value }); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleEditChange = (e) => { | ||||||
|  |     const { name, value } = e.target; | ||||||
|  |     setEditEntity({ ...editEntity, [name]: value }); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleEdit = (entity) => { | ||||||
|  |     setEditEntity(entity); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     setShowEditModal(true); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const formatCurrency = (value) => { | ||||||
|  |    if (value && !value.startsWith('₹')) { | ||||||
|  |     return `₹${value}`; | ||||||
|  |   } | ||||||
|  |   return value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    const handleUpdate = async () => { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     try { | ||||||
|  | const token = getToken(); | ||||||
|  |       await axios.put(`${API_URL}/${editEntity.id}`, editEntity, { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         headers: { Authorization: `Bearer ${token}` }, | ||||||
|  |       }); | ||||||
|  |       fetchData(); | ||||||
|  |       setShowEditModal(false); | ||||||
|  |       toast.success("Successfully updated!"); | ||||||
|  |     } catch (error) { | ||||||
|  |       console.error("Error updating data:", error); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleSearch = () => { | ||||||
|  |     const filtered = data.filter( | ||||||
|  |       (entity) => | ||||||
|  | 
 | ||||||
|  |       entity.name.toLowerCase().includes(searchQuery.toLowerCase()) || | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |       entity.description.toLowerCase().includes(searchQuery.toLowerCase())     ); | ||||||
|  |     setFilteredData(filtered); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handlePageChange = (pageNumber) => { | ||||||
|  |     setCurrentPage(pageNumber); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const generateBarcodeImage = async (ref) => { | ||||||
|  |     if (ref.current) { | ||||||
|  |       const canvas = await html2canvas(ref.current); | ||||||
|  |       const imgData = canvas.toDataURL("image/png"); | ||||||
|  |       const link = document.createElement("a"); | ||||||
|  |       link.href = imgData; | ||||||
|  |       link.download = "barcode.png"; | ||||||
|  |       link.click(); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   // Calculate items for current page
 | ||||||
|  |   const indexOfLastItem = currentPage * itemsPerPage; | ||||||
|  |   const indexOfFirstItem = indexOfLastItem - itemsPerPage; | ||||||
|  |   const currentItems = filteredData.slice(indexOfFirstItem, indexOfLastItem); | ||||||
|  | 
 | ||||||
|  |   return ( | ||||||
|  |     <div className="container mt-5"> | ||||||
|  |       <ToastContainer /> | ||||||
|  |       <h1 className="mb-4">Entity Table</h1> | ||||||
|  |       <div className="d-flex justify-content-between mb-3"> | ||||||
|  |         <Button variant="primary" onClick={() => setShowAddModal(true)}> | ||||||
|  |           Add Entity | ||||||
|  |         </Button> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   | ||||||
|  |         <Form.Control | ||||||
|  |           type="text" | ||||||
|  |           className="w-25" | ||||||
|  |           placeholder="Search..." | ||||||
|  |           value={searchQuery} | ||||||
|  |           onChange={(e) => setSearchQuery(e.target.value)} | ||||||
|  |         /> | ||||||
|  |       </div> | ||||||
|  |       <Table striped bordered hover responsive variant="grey"> | ||||||
|  |         <thead> | ||||||
|  |           <tr> | ||||||
|  |   <th>name</th> | ||||||
|  | 
 | ||||||
|  |   <th>description</th> | ||||||
|  | 
 | ||||||
|  | <th>Action</th> | ||||||
|  |           </tr> | ||||||
|  |         </thead> | ||||||
|  |         <tbody > | ||||||
|  |           {currentItems.map((entity) => ( | ||||||
|  |             <tr key={entity.id}> | ||||||
|  | 
 | ||||||
|  |               <td>{entity.name}</td> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |               <td>{entity.description}</td> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |               <td> | ||||||
|  |                 <Button | ||||||
|  |                   variant="warning" | ||||||
|  |                   size="sm" | ||||||
|  |                   className="me-2" | ||||||
|  |                   onClick={() => handleEdit(entity)} | ||||||
|  |                 > | ||||||
|  |                   Update | ||||||
|  |                 </Button> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   	 | ||||||
|  |                 <Button | ||||||
|  |                   variant="danger" | ||||||
|  |                   size="sm" | ||||||
|  |                   onClick={() => { | ||||||
|  |                     setDeleteEntityId(entity.id); | ||||||
|  |                     setShowDeleteModal(true); | ||||||
|  |                   }} | ||||||
|  |                 > | ||||||
|  |                   Delete | ||||||
|  |                 </Button> | ||||||
|  |               </td> | ||||||
|  |             </tr> | ||||||
|  |           ))} | ||||||
|  |         </tbody> | ||||||
|  |       </Table> | ||||||
|  |       <Pagination className="d-flex justify-content-center mt-4"> | ||||||
|  |         {Array.from( | ||||||
|  |           { length: Math.ceil(filteredData.length / itemsPerPage) }, | ||||||
|  |           (_, index) => ( | ||||||
|  |             <Pagination.Item | ||||||
|  |               key={index + 1} | ||||||
|  |               active={index + 1 === currentPage} | ||||||
|  |               onClick={() => handlePageChange(index + 1)} | ||||||
|  |             > | ||||||
|  |               {index + 1} | ||||||
|  |             </Pagination.Item> | ||||||
|  |           ) | ||||||
|  |         )} | ||||||
|  |       </Pagination> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |        <Modal show={showEditModal} onHide={() => setShowEditModal(false)}> | ||||||
|  |         <Modal.Header closeButton> | ||||||
|  |           <Modal.Title>Edit Entity</Modal.Title> | ||||||
|  |         </Modal.Header> | ||||||
|  |         <Modal.Body> | ||||||
|  |           {editEntity && ( | ||||||
|  |             <Form> | ||||||
|  | <div className="form-group"> | ||||||
|  |   <div className="container mt-4" style={{ width: '100%' }}> | ||||||
|  |     <div className="card p-4 shadow-sm rounded"> | ||||||
|  |       <div className="row align-items-center"> | ||||||
|  |         <div className="col-md-3"> | ||||||
|  |         </div> | ||||||
|  | <label htmlFor="name" className="form-label">Name</label> | ||||||
|  |         | ||||||
|  |         <div className="col-md-9"> | ||||||
|  |           <input | ||||||
|  |             type="text" | ||||||
|  |             className="form-control" | ||||||
|  |             id="name" | ||||||
|  |             name="name" | ||||||
|  |             value={editEntity.name} | ||||||
|  |             onChange={handleEditChange} | ||||||
|  |             required | ||||||
|  |             style={{ | ||||||
|  |               backgroundColor: '#f7f9fc', | ||||||
|  |               border: '1px solid #ced4da', | ||||||
|  |               borderRadius: '8px', | ||||||
|  |               padding: '10px', | ||||||
|  |               transition: 'border-color 0.3s ease, box-shadow 0.3s ease', | ||||||
|  |             }} | ||||||
|  |             onFocus={(e) => { | ||||||
|  |               e.target.style.borderColor = '#007bff'; | ||||||
|  |               e.target.style.boxShadow = '0 0 8px rgba(0, 123, 255, 0.25)'; | ||||||
|  |             }} | ||||||
|  |             onBlur={(e) => { | ||||||
|  |               e.target.style.borderColor = '#ced4da'; | ||||||
|  |               e.target.style.boxShadow = 'none'; | ||||||
|  |             }} | ||||||
|  |           /> | ||||||
|  |         </div> | ||||||
|  | 
 | ||||||
|  |  <Form.Group className="mb-3"> | ||||||
|  |           <Form.Label>Description</Form.Label> | ||||||
|  |           <Form.Control | ||||||
|  |             as="textarea" | ||||||
|  |             name="description" | ||||||
|  |             value={editEntity.description} | ||||||
|  |             onChange={handleEditChange} | ||||||
|  |             rows={5} | ||||||
|  |             placeholder="Enter description" | ||||||
|  | style={{ | ||||||
|  |               backgroundColor: '#f7f9fc', | ||||||
|  |               border: '1px solid #ced4da', | ||||||
|  |               borderRadius: '8px', | ||||||
|  |               padding: '10px', | ||||||
|  |               transition: 'border-color 0.3s ease, box-shadow 0.3s ease', | ||||||
|  |             }} | ||||||
|  |             onFocus={(e) => { | ||||||
|  |               e.target.style.borderColor = '#007bff'; | ||||||
|  |               e.target.style.boxShadow = '0 0 8px rgba(0, 123, 255, 0.25)'; | ||||||
|  |             }} | ||||||
|  |             onBlur={(e) => { | ||||||
|  |               e.target.style.borderColor = '#ced4da'; | ||||||
|  |               e.target.style.boxShadow = 'none'; | ||||||
|  |             }} | ||||||
|  |           /> | ||||||
|  |         </Form.Group> | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |           </Form> | ||||||
|  |            | ||||||
|  |           )} | ||||||
|  |         </Modal.Body> | ||||||
|  |         <Modal.Footer> | ||||||
|  |           <Button variant="secondary" onClick={() => setShowEditModal(false)}> | ||||||
|  |             Close | ||||||
|  |           </Button> | ||||||
|  |           <Button variant="primary" onClick={handleUpdate}> | ||||||
|  |             Save changes | ||||||
|  |           </Button> | ||||||
|  |         </Modal.Footer> | ||||||
|  |       </Modal> | ||||||
|  |       <Modal show={showAddModal} onHide={() => setShowAddModal(false)}> | ||||||
|  |         <Modal.Header closeButton> | ||||||
|  |           <Modal.Title>Add New Entity</Modal.Title> | ||||||
|  |         </Modal.Header> | ||||||
|  |         <Modal.Body> | ||||||
|  |         <Form> | ||||||
|  |       <div className="form-group"> | ||||||
|  |   <div className="container mt-4" style={{ width: '100%' }}> | ||||||
|  |     <div className="card p-4 shadow-sm rounded"> | ||||||
|  |       <div className="row align-items-center"> | ||||||
|  |         <div className="col-md-3"> | ||||||
|  |         </div> | ||||||
|  | <label htmlFor="name" className="form-label">name</label> | ||||||
|  |           | ||||||
|  |         <div className="col-md-9"> | ||||||
|  |           <input | ||||||
|  |             type="text" | ||||||
|  |             className="form-control" | ||||||
|  |             id="name" | ||||||
|  |             name="name" | ||||||
|  |             value={newEntity.name} | ||||||
|  |             onChange={handleChange} | ||||||
|  |             required | ||||||
|  |             style={{ | ||||||
|  |               backgroundColor: '#f7f9fc', | ||||||
|  |               border: '1px solid #ced4da', | ||||||
|  |               borderRadius: '8px', | ||||||
|  |               padding: '10px', | ||||||
|  |               transition: 'border-color 0.3s ease, box-shadow 0.3s ease', | ||||||
|  |             }} | ||||||
|  |             onFocus={(e) => { | ||||||
|  |               e.target.style.borderColor = '#007bff'; | ||||||
|  |               e.target.style.boxShadow = '0 0 8px rgba(0, 123, 255, 0.25)'; | ||||||
|  |             }} | ||||||
|  |             onBlur={(e) => { | ||||||
|  |               e.target.style.borderColor = '#ced4da'; | ||||||
|  |               e.target.style.boxShadow = 'none'; | ||||||
|  |             }} | ||||||
|  |           /> | ||||||
|  |         </div> | ||||||
|  | 
 | ||||||
|  | <div className="form-group"> | ||||||
|  |           <label htmlFor="description">Description</label> | ||||||
|  |           <textarea | ||||||
|  |             className="form-control" | ||||||
|  |             id="description" | ||||||
|  |             name="description" | ||||||
|  |             rows="3" | ||||||
|  |             value={newEntity.description} | ||||||
|  |             onChange={handleChange} | ||||||
|  |             required | ||||||
|  | style={{ | ||||||
|  |               backgroundColor: '#f7f9fc', | ||||||
|  |               border: '1px solid #ced4da', | ||||||
|  |               borderRadius: '8px', | ||||||
|  |               padding: '10px', | ||||||
|  |               transition: 'border-color 0.3s ease, box-shadow 0.3s ease', | ||||||
|  |             }} | ||||||
|  |             onFocus={(e) => { | ||||||
|  |               e.target.style.borderColor = '#007bff'; | ||||||
|  |               e.target.style.boxShadow = '0 0 8px rgba(0, 123, 255, 0.25)'; | ||||||
|  |             }} | ||||||
|  |             onBlur={(e) => { | ||||||
|  |               e.target.style.borderColor = '#ced4da'; | ||||||
|  |               e.target.style.boxShadow = 'none'; | ||||||
|  |             }} | ||||||
|  |           ></textarea> | ||||||
|  |         </div> | ||||||
|  | 
 | ||||||
|  |  </div> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  | </Form> | ||||||
|  | 
 | ||||||
|  |         </Modal.Body> | ||||||
|  |         <Modal.Footer> | ||||||
|  |           <Button variant="secondary" onClick={() => setShowAddModal(false)}> | ||||||
|  |             Close | ||||||
|  |           </Button> | ||||||
|  |           <Button variant="primary" onClick={handleAdd | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | }> | ||||||
|  |             Add Entity | ||||||
|  |           </Button> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         </Modal.Footer> | ||||||
|  |       </Modal> | ||||||
|  |       <Modal show={showDeleteModal} onHide={() => setShowDeleteModal(false)}> | ||||||
|  |         <Modal.Header closeButton> | ||||||
|  |           <Modal.Title>Confirm Delete</Modal.Title> | ||||||
|  |         </Modal.Header> | ||||||
|  |         <Modal.Body>Are you sure you want to delete this entity?</Modal.Body> | ||||||
|  |         <Modal.Footer> | ||||||
|  |           <Button variant="secondary" onClick={() => setShowDeleteModal(false)}> | ||||||
|  |             Cancel | ||||||
|  |           </Button> | ||||||
|  |           <Button variant="danger" onClick={handleDelete}> | ||||||
|  |             Delete | ||||||
|  |           </Button> | ||||||
|  |         </Modal.Footer> | ||||||
|  |       </Modal> | ||||||
|  |     </div> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export default EntityTable; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user